58 lines · 2.3 KB · TypeScript
RawDownload
import type { ConnectionName, IntegrationSlug, Owner, ToolAddress, ToolName } from "./ids"; /* Tools belong to a connection and are PERSISTED, like v1 — not resolved live on * every list. A plugin produces them at create/refresh (openapi from the * integration's spec; mcp by dialing the connection's server), the SDK stamps * each with its address and stores it per-connection (option C), and `tools.list` * is a read. */ /** Default-policy hints a plugin attaches to a tool — enforced by the executor *  before the handler runs. */export interface ToolAnnotations {  readonly requiresApproval?: boolean;  readonly approvalDescription?: string;  readonly mayElicit?: boolean;} /** A tool as produced by a plugin — the definition, no address yet (the SDK *  stamps that from the owning connection). */export interface ToolDef {  readonly name: ToolName;  readonly description?: string;  readonly inputSchema?: unknown;  readonly outputSchema?: unknown;  readonly annotations?: ToolAnnotations;} /** A persisted, addressable tool as returned by `tools.list`. */export interface Tool {  readonly address: ToolAddress;  readonly owner: Owner;  readonly integration: IntegrationSlug;  readonly connection: ConnectionName;  readonly name: ToolName;  /** The plugin that owns the connection's integration. */  readonly pluginId: string;  readonly description: string;  readonly inputSchema?: unknown;  readonly outputSchema?: unknown;  readonly annotations?: ToolAnnotations;  /** True for plugin-contributed static tools (for example Executor's own   *  configuration tools). Static tools have no backing connection even though   *  they carry owner/connection metadata for UI grouping. */  readonly static?: boolean;} /** Narrow `tools.list` to a subset; omit for the whole catalog. */export interface ToolListFilter {  readonly integration?: IntegrationSlug;  readonly owner?: Owner;  readonly connection?: ConnectionName;  /** Case-insensitive substring match against `name` OR `description`. */  readonly query?: string;  /** Resolve plugin-derived annotations. Defaults to true. */  readonly includeAnnotations?: boolean;  /** Include tools whose effective `tool_policy` is `block`. Defaults to `false`   *  so agent-facing surfaces silently omit blocked tools. */  readonly includeBlocked?: boolean;}