33 lines · 1.1 KB · TypeScript
RawDownload
import type { EnvironmentId, ProviderInstanceId, ThreadId } from "@t3tools/contracts";import { PreviewAutomationUnavailableError } 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({      message: `MCP credential does not grant the ${capability} capability.`,    });  }  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