41 lines · 1.2 KB · TypeScript
RawDownload
import {  type EnvironmentId,  PreviewAutomationUnavailableError,  type ProviderInstanceId,  type ThreadId,} from "@t3tools/contracts";import * as Context from "effect/Context";import * as Effect from "effect/Effect"; export type McpCapability = "preview"; export interface McpInvocationScope {  readonly environmentId: EnvironmentId;  readonly threadId: ThreadId;  readonly providerSessionId: string;  readonly providerInstanceId: ProviderInstanceId;  readonly capabilities: ReadonlySet<McpCapability>;  readonly issuedAt: number;  readonly expiresAt: number;} export class McpInvocationContext extends Context.Service<  McpInvocationContext,  McpInvocationScope>()("t3/mcp/McpInvocationContext") {} export const requireMcpCapability = Effect.fn("mcp.requireCapability")(function* (  capability: McpCapability,) {  const invocation = yield* McpInvocationContext;  if (!invocation.capabilities.has(capability)) {    return yield* new PreviewAutomationUnavailableError({      capability,      environmentId: invocation.environmentId,      threadId: invocation.threadId,      providerSessionId: invocation.providerSessionId,      providerInstanceId: invocation.providerInstanceId,    });  }  return invocation;});

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t