{"version":3,"file":"wrapper-protocol.mjs","names":[],"sources":["../src/wrapper-protocol.ts"],"sourcesContent":["import type { ToolDefinition, ToolRunContext } from '@deepseek-ai/dsh-tools'\n\nexport const TOOL_WRAPPER_PROTOCOL = Symbol.for('dsh.tool-wrapper.v1')\n\nexport interface WrapperContext {\n  readonly toolName: string\n}\n\nexport interface WrapperLayer {\n  readonly owner: string\n  readonly priority: number\n  projectDescription?(value: string, context: WrapperContext): string\n  projectParameters?(value: Record<string, unknown>, context: WrapperContext): Record<string, unknown>\n  execute?(args: unknown, exec: ToolRunContext, next: (args: unknown) => Promise<unknown>): Promise<unknown>\n}\n\nexport interface ToolWrapperProtocolV1 {\n  readonly version: 1\n  readonly owner: string\n  readonly name: string\n  contribute(layer: WrapperLayer): () => void\n}\n\nexport type CooperativeToolDefinition = ToolDefinition & {\n  readonly [TOOL_WRAPPER_PROTOCOL]?: ToolWrapperProtocolV1\n}\n\nexport function protocolOf(definition: ToolDefinition): ToolWrapperProtocolV1 | undefined {\n  const protocol = (definition as CooperativeToolDefinition)[TOOL_WRAPPER_PROTOCOL]\n  if (protocol === undefined) return undefined\n  if (protocol.version !== 1 || typeof protocol.owner !== 'string'\n    || typeof protocol.name !== 'string' || typeof protocol.contribute !== 'function') {\n    throw new Error(`dsh-sandbox-escalation-fix: tool \"${definition.name}\" exposes an invalid wrapper protocol`)\n  }\n  return protocol\n}\n"],"mappings":";AAEA,MAAa,wBAAwB,OAAO,IAAI,qBAAqB;AAyBrE,SAAgB,WAAW,YAA+D;CACxF,MAAM,WAAY,WAAyC;CAC3D,IAAI,aAAa,KAAA,GAAW,OAAO,KAAA;CACnC,IAAI,SAAS,YAAY,KAAK,OAAO,SAAS,UAAU,YACnD,OAAO,SAAS,SAAS,YAAY,OAAO,SAAS,eAAe,YACvE,MAAM,IAAI,MAAM,qCAAqC,WAAW,KAAK,sCAAsC;CAE7G,OAAO;AACT"}