@execbox/core 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -7
- package/dist/{errors-DlbJQYs7.d.ts → errors-BIWv-QIC.d.ts} +2 -2
- package/dist/{errors-DlbJQYs7.d.ts.map → errors-BIWv-QIC.d.ts.map} +1 -1
- package/dist/{errors-B9ADBuDH.d.cts → errors-y4C-EIWT.d.cts} +2 -2
- package/dist/{errors-B9ADBuDH.d.cts.map → errors-y4C-EIWT.d.cts.map} +1 -1
- package/dist/{executor-B7q7K_27.d.ts → executor-BOTd9xNK.d.ts} +2 -2
- package/dist/{executor-B7q7K_27.d.ts.map → executor-BOTd9xNK.d.ts.map} +1 -1
- package/dist/{executor-BsE5nF-j.d.cts → executor-CtbrvTQ_.d.cts} +2 -2
- package/dist/{executor-BsE5nF-j.d.cts.map → executor-CtbrvTQ_.d.cts.map} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/mcp/index.cjs +101 -34
- package/dist/mcp/index.cjs.map +1 -1
- package/dist/mcp/index.d.cts +24 -4
- package/dist/mcp/index.d.cts.map +1 -1
- package/dist/mcp/index.d.ts +24 -4
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +101 -34
- package/dist/mcp/index.js.map +1 -1
- package/dist/protocol/index.cjs +6 -2
- package/dist/protocol/index.cjs.map +1 -1
- package/dist/protocol/index.d.cts +2 -2
- package/dist/protocol/index.d.cts.map +1 -1
- package/dist/protocol/index.d.ts +2 -2
- package/dist/protocol/index.d.ts.map +1 -1
- package/dist/protocol/index.js +6 -2
- package/dist/protocol/index.js.map +1 -1
- package/dist/{resolveProvider-Bfj27oYs.js → resolveProvider-CMrXPuTx.js} +12 -1
- package/dist/resolveProvider-CMrXPuTx.js.map +1 -0
- package/dist/{resolveProvider-CszBWDOY.cjs → resolveProvider-DFAg6No5.cjs} +12 -1
- package/dist/resolveProvider-DFAg6No5.cjs.map +1 -0
- package/dist/{runner-CsrfDub-.cjs → runner-BEY9nWc7.cjs} +2 -1
- package/dist/runner-BEY9nWc7.cjs.map +1 -0
- package/dist/{runner-BqYkAnOm.js → runner-BWAVLBi6.js} +2 -1
- package/dist/runner-BWAVLBi6.js.map +1 -0
- package/dist/{runner-ClFrFnz9.d.ts → runner-Cy18Z0u0.d.cts} +26 -2
- package/dist/runner-Cy18Z0u0.d.cts.map +1 -0
- package/dist/{runner-DSgvu6Ad.d.cts → runner-DXLu0eJV.d.ts} +26 -2
- package/dist/runner-DXLu0eJV.d.ts.map +1 -0
- package/dist/runtime.cjs +2 -2
- package/dist/runtime.d.cts +4 -4
- package/dist/runtime.d.ts +4 -4
- package/dist/runtime.js +1 -1
- package/package.json +1 -1
- package/dist/resolveProvider-Bfj27oYs.js.map +0 -1
- package/dist/resolveProvider-CszBWDOY.cjs.map +0 -1
- package/dist/runner-BqYkAnOm.js.map +0 -1
- package/dist/runner-ClFrFnz9.d.ts.map +0 -1
- package/dist/runner-CsrfDub-.cjs.map +0 -1
- package/dist/runner-DSgvu6Ad.d.cts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["getExecutionTimeoutMessage","createToolCallDispatcher","forceTerminateTimer: NodeJS.Timeout | undefined","extractProviderManifests","available: PoolEntry<T>[]","waiters: Array<{\n reject: (error: Error) => void;\n resolve: (lease: ResourcePoolLease<T>) => void;\n }>"],"sources":["../../src/protocol/messages.ts","../../src/protocol/hostSession.ts","../../src/protocol/nodeBootstrap.ts","../../src/protocol/resourcePool.ts"],"sourcesContent":["import type {\n ExecutorRuntimeOptions,\n ProviderManifest,\n ToolCall,\n ToolCallResult,\n} from \"../runner.ts\";\nimport type { ExecuteResult } from \"../types.ts\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction isFiniteNumber(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value);\n}\n\nfunction isRuntimeOptions(value: unknown): value is ExecutorRuntimeOptions {\n if (!isRecord(value)) {\n return false;\n }\n\n return (\n isFiniteNumber(value.maxLogChars) &&\n isFiniteNumber(value.maxLogLines) &&\n isFiniteNumber(value.memoryLimitBytes) &&\n isFiniteNumber(value.timeoutMs)\n );\n}\n\nfunction isProviderManifest(value: unknown): value is ProviderManifest {\n if (!isRecord(value) || typeof value.name !== \"string\") {\n return false;\n }\n\n if (!isRecord(value.tools) || typeof value.types !== \"string\") {\n return false;\n }\n\n return Object.values(value.tools).every(\n (tool) =>\n isRecord(tool) &&\n typeof tool.originalName === \"string\" &&\n typeof tool.safeName === \"string\" &&\n (tool.description === undefined || typeof tool.description === \"string\"),\n );\n}\n\nfunction isExecuteError(\n value: unknown,\n): value is { code: string; message: string } {\n return (\n isRecord(value) &&\n typeof value.code === \"string\" &&\n typeof value.message === \"string\"\n );\n}\n\nfunction isDonePayload(value: unknown): value is DoneMessage {\n if (!isRecord(value) || !isFiniteNumber(value.durationMs)) {\n return false;\n }\n\n if (\n !Array.isArray(value.logs) ||\n !value.logs.every((log) => typeof log === \"string\")\n ) {\n return false;\n }\n\n if (typeof value.ok !== \"boolean\") {\n return false;\n }\n\n return value.ok ? true : isExecuteError(value.error);\n}\n\n/**\n * Message sent from dispatcher to runner to start one execution session.\n */\nexport interface ExecuteMessage {\n code: string;\n id: string;\n options: ExecutorRuntimeOptions;\n providers: ProviderManifest[];\n type: \"execute\";\n}\n\n/**\n * Message sent from dispatcher to request prompt cancellation.\n */\nexport interface CancelMessage {\n id: string;\n type: \"cancel\";\n}\n\n/**\n * Message sent from a runner when guest code invokes a host tool.\n */\nexport interface ToolCallMessage extends ToolCall {\n callId: string;\n type: \"tool_call\";\n}\n\n/**\n * Message carrying a trusted host tool result back to the runner.\n */\nexport type ToolResultMessage = {\n callId: string;\n type: \"tool_result\";\n} & ToolCallResult;\n\n/**\n * Message indicating the runner has finished bootstrapping guest execution timing.\n */\nexport interface StartedMessage {\n id: string;\n type: \"started\";\n}\n\n/**\n * Final successful execution result returned by a runner.\n *\n * Node IPC can omit `undefined` fields during serialization, so `result`\n * remains optional at the protocol boundary and is normalized by the host.\n */\nexport type DoneSuccessMessage<T = unknown> = {\n durationMs: number;\n id: string;\n logs: string[];\n ok: true;\n result?: T;\n type: \"done\";\n};\n\n/**\n * Final failed execution result returned by a runner.\n */\nexport type DoneFailureMessage = {\n id: string;\n type: \"done\";\n} & Extract<ExecuteResult, { ok: false }>;\n\n/**\n * Final execution result returned by a runner.\n */\nexport type DoneMessage = DoneSuccessMessage | DoneFailureMessage;\n\n/**\n * Messages accepted by a runner transport endpoint.\n */\nexport type DispatcherMessage =\n | CancelMessage\n | ExecuteMessage\n | ToolResultMessage;\n\n/**\n * Messages emitted by a runner transport endpoint.\n */\nexport type RunnerMessage = DoneMessage | StartedMessage | ToolCallMessage;\n\n/**\n * Returns whether an unknown value is a dispatcher-to-runner message.\n */\nexport function isDispatcherMessage(\n value: unknown,\n): value is DispatcherMessage {\n if (!isRecord(value) || typeof value.type !== \"string\") {\n return false;\n }\n\n switch (value.type) {\n case \"cancel\":\n return typeof value.id === \"string\";\n case \"execute\":\n return (\n typeof value.code === \"string\" &&\n typeof value.id === \"string\" &&\n isRuntimeOptions(value.options) &&\n Array.isArray(value.providers) &&\n value.providers.every(isProviderManifest)\n );\n case \"tool_result\":\n if (typeof value.callId !== \"string\" || typeof value.ok !== \"boolean\") {\n return false;\n }\n\n if (value.ok) {\n return \"result\" in value;\n }\n\n return isExecuteError(value.error);\n default:\n return false;\n }\n}\n\n/**\n * Returns whether an unknown value is a runner-to-dispatcher message.\n */\nexport function isRunnerMessage(value: unknown): value is RunnerMessage {\n if (!isRecord(value) || typeof value.type !== \"string\") {\n return false;\n }\n\n switch (value.type) {\n case \"started\":\n return typeof value.id === \"string\";\n case \"tool_call\":\n return (\n typeof value.callId === \"string\" &&\n typeof value.providerName === \"string\" &&\n typeof value.safeToolName === \"string\" &&\n \"input\" in value\n );\n case \"done\":\n return typeof value.id === \"string\" && isDonePayload(value);\n default:\n return false;\n }\n}\n","import {\n createToolCallDispatcher,\n extractProviderManifests,\n type ExecutorRuntimeOptions,\n} from \"../runner.ts\";\nimport { getExecutionTimeoutMessage } from \"../executor/shared.ts\";\nimport type { ExecuteResult, ResolvedToolProvider } from \"../types.ts\";\n\nimport type {\n DispatcherMessage,\n DoneMessage,\n RunnerMessage,\n ToolCallMessage,\n} from \"./messages.ts\";\nimport { isRunnerMessage } from \"./messages.ts\";\n\nconst DEFAULT_CANCEL_GRACE_MS = 25;\nconst HOST_TIMEOUT_BACKSTOP_MS = 100;\n\n/**\n * Describes an unexpected transport shutdown reported to the host session.\n */\nexport interface TransportCloseReason {\n code?: number | null;\n message: string;\n signal?: NodeJS.Signals | null;\n}\n\n/**\n * Minimal parent-side transport contract for transport-backed execution.\n */\nexport interface HostTransport {\n dispose(): Promise<void> | void;\n onClose(handler: (reason?: TransportCloseReason) => void): () => void;\n onError(handler: (error: Error) => void): () => void;\n onMessage(handler: (message: RunnerMessage) => void): () => void;\n send(message: DispatcherMessage): Promise<void> | void;\n terminate(): Promise<void> | void;\n}\n\n/**\n * Configuration for one transport-backed execution session.\n */\nexport interface HostTransportSessionOptions {\n cancelGraceMs?: number;\n code: string;\n executionId: string;\n onSettled?: (result: ExecuteResult) => Promise<void> | void;\n providers: ResolvedToolProvider[];\n runtimeOptions: Required<ExecutorRuntimeOptions>;\n signal?: AbortSignal;\n transport: HostTransport;\n}\n\nfunction toFailureResult(\n startedAt: number,\n timeoutTriggered: boolean,\n message: string,\n): ExecuteResult {\n return {\n durationMs: Date.now() - startedAt,\n error: {\n code: timeoutTriggered ? \"timeout\" : \"internal_error\",\n message: timeoutTriggered ? getExecutionTimeoutMessage() : message,\n },\n logs: [],\n ok: false,\n };\n}\n\nfunction normalizeDoneMessage(message: DoneMessage): ExecuteResult {\n if (!message.ok) {\n return {\n durationMs: message.durationMs,\n error: message.error,\n logs: message.logs,\n ok: false,\n };\n }\n\n return {\n durationMs: message.durationMs,\n logs: message.logs,\n ok: true,\n result: message.result,\n };\n}\n\n/**\n * Runs one host-side transport session, including timeout, cancellation,\n * tool-call dispatch, and result settlement.\n */\nexport async function runHostTransportSession(\n options: HostTransportSessionOptions,\n): Promise<ExecuteResult> {\n const startedAt = Date.now();\n const abortController = new AbortController();\n const dispatchToolCall = createToolCallDispatcher(\n options.providers,\n abortController.signal,\n );\n const abortSignal = options.signal;\n\n return await new Promise<ExecuteResult>((resolve) => {\n let finished = false;\n let timeoutTriggered = false;\n let cancellationStarted = false;\n let forceTerminateTimer: NodeJS.Timeout | undefined;\n const cancelGraceMs = options.cancelGraceMs ?? DEFAULT_CANCEL_GRACE_MS;\n\n const cleanup = () => {\n finished = true;\n abortController.abort();\n if (timeoutTimer) {\n clearTimeout(timeoutTimer);\n }\n if (forceTerminateTimer) {\n clearTimeout(forceTerminateTimer);\n }\n offClose();\n offError();\n offMessage();\n abortSignal?.removeEventListener(\"abort\", onAbortSignal);\n };\n\n const finish = (result: ExecuteResult) => {\n if (finished) {\n return;\n }\n\n cleanup();\n void Promise.resolve(options.onSettled?.(result))\n .catch(() => {})\n .finally(() => {\n void Promise.resolve(options.transport.dispose()).catch(() => {});\n });\n resolve(result);\n };\n\n const fail = (message: string) => {\n finish(toFailureResult(startedAt, timeoutTriggered, message));\n };\n\n const send = (message: DispatcherMessage) => {\n if (finished) {\n return;\n }\n\n try {\n const pendingSend = options.transport.send(message);\n void Promise.resolve(pendingSend).catch((error) => {\n if (finished) {\n return;\n }\n\n fail(error instanceof Error ? error.message : String(error));\n });\n } catch (error) {\n fail(error instanceof Error ? error.message : String(error));\n }\n };\n\n const startCancellation = () => {\n if (finished || cancellationStarted) {\n return;\n }\n\n cancellationStarted = true;\n timeoutTriggered = true;\n abortController.abort();\n send({\n id: options.executionId,\n type: \"cancel\",\n });\n forceTerminateTimer = setTimeout(() => {\n if (finished) {\n return;\n }\n\n void Promise.resolve(options.transport.terminate())\n .catch(() => {})\n .finally(() => {\n if (finished) {\n return;\n }\n\n finish(\n toFailureResult(startedAt, true, getExecutionTimeoutMessage()),\n );\n });\n }, cancelGraceMs);\n };\n\n const timeoutTimer = setTimeout(() => {\n startCancellation();\n }, options.runtimeOptions.timeoutMs + HOST_TIMEOUT_BACKSTOP_MS);\n\n const onMessage = (message: RunnerMessage) => {\n if (finished) {\n return;\n }\n\n if (!isRunnerMessage(message)) {\n return;\n }\n\n if (\"id\" in message && message.id !== options.executionId) {\n return;\n }\n\n if (message.type === \"started\") {\n return;\n }\n\n if (message.type === \"tool_call\") {\n void dispatchToolCall(message as ToolCallMessage)\n .then((result) => {\n send({\n ...result,\n callId: message.callId,\n type: \"tool_result\",\n });\n })\n .catch((error) => {\n send({\n callId: message.callId,\n error: {\n code: \"internal_error\",\n message: error instanceof Error ? error.message : String(error),\n },\n ok: false,\n type: \"tool_result\",\n });\n });\n return;\n }\n\n finish(normalizeDoneMessage(message));\n };\n\n const onError = (error: Error) => {\n fail(error.message);\n };\n\n const onClose = (reason?: TransportCloseReason) => {\n fail(reason?.message ?? \"Transport closed unexpectedly\");\n };\n\n const onAbortSignal = () => {\n startCancellation();\n };\n\n const offMessage = options.transport.onMessage(onMessage);\n const offError = options.transport.onError(onError);\n const offClose = options.transport.onClose(onClose);\n abortSignal?.addEventListener(\"abort\", onAbortSignal, { once: true });\n\n if (abortSignal?.aborted) {\n startCancellation();\n return;\n }\n\n send({\n code: options.code,\n id: options.executionId,\n options: options.runtimeOptions,\n providers: extractProviderManifests(options.providers),\n type: \"execute\",\n });\n });\n}\n","const SOURCE_MODE_EXEC_ARGV = [\"--conditions=source\", \"--import\", \"tsx\"];\n\n/**\n * Returns the extra Node flags needed to launch transport-backed worker entries\n * directly from source during local development and tests.\n */\nexport function getNodeTransportExecArgv(\n moduleUrl: string,\n): string[] | undefined {\n return moduleUrl.endsWith(\".ts\") ? [...SOURCE_MODE_EXEC_ARGV] : undefined;\n}\n","/**\n * One checked-out pooled resource plus its release hook.\n */\nexport interface ResourcePoolLease<T> {\n release(reusable?: boolean): Promise<void>;\n value: T;\n}\n\n/**\n * Configuration for a reusable async resource pool.\n */\nexport interface ResourcePoolOptions<T> {\n create: () => Promise<T> | T;\n destroy: (value: T) => Promise<void> | void;\n idleTimeoutMs?: number;\n maxSize: number;\n minSize?: number;\n}\n\n/**\n * Minimal async pool contract used by the pooled executors.\n */\nexport interface ResourcePool<T> {\n acquire(): Promise<ResourcePoolLease<T>>;\n dispose(): Promise<void>;\n prewarm(count?: number): Promise<void>;\n}\n\ninterface PoolEntry<T> {\n idleTimer: NodeJS.Timeout | undefined;\n value: T;\n}\n\nfunction clampTarget(value: number, maxSize: number): number {\n return Math.max(0, Math.min(value, maxSize));\n}\n\n/**\n * Creates a bounded async resource pool with optional idle eviction.\n */\nexport function createResourcePool<T>(\n options: ResourcePoolOptions<T>,\n): ResourcePool<T> {\n const available: PoolEntry<T>[] = [];\n const waiters: Array<{\n reject: (error: Error) => void;\n resolve: (lease: ResourcePoolLease<T>) => void;\n }> = [];\n const inUse = new Set<PoolEntry<T>>();\n let disposed = false;\n let totalSize = 0;\n\n const minSize = clampTarget(options.minSize ?? 0, options.maxSize);\n\n const createEntry = async (): Promise<PoolEntry<T>> => {\n totalSize += 1;\n\n try {\n return {\n idleTimer: undefined,\n value: await options.create(),\n };\n } catch (error) {\n totalSize -= 1;\n throw error;\n }\n };\n\n const removeAvailableEntry = (entry: PoolEntry<T>): void => {\n const index = available.indexOf(entry);\n\n if (index >= 0) {\n available.splice(index, 1);\n }\n };\n\n const clearIdleTimer = (entry: PoolEntry<T>): void => {\n if (entry.idleTimer) {\n clearTimeout(entry.idleTimer);\n entry.idleTimer = undefined;\n }\n };\n\n const queueAvailableEntry = (entry: PoolEntry<T>): void => {\n available.push(entry);\n\n if ((options.idleTimeoutMs ?? 0) > 0) {\n entry.idleTimer = setTimeout(() => {\n if (disposed) {\n return;\n }\n\n if (available.includes(entry) && totalSize > minSize) {\n void destroyEntry(entry);\n }\n }, options.idleTimeoutMs);\n }\n };\n\n const destroyEntry = async (entry: PoolEntry<T>): Promise<void> => {\n clearIdleTimer(entry);\n removeAvailableEntry(entry);\n inUse.delete(entry);\n totalSize -= 1;\n await options.destroy(entry.value);\n };\n\n const leaseEntry = (entry: PoolEntry<T>): ResourcePoolLease<T> => {\n clearIdleTimer(entry);\n removeAvailableEntry(entry);\n inUse.add(entry);\n\n return {\n release: async (reusable = true) => {\n if (!inUse.has(entry)) {\n return;\n }\n\n inUse.delete(entry);\n\n if (disposed || !reusable) {\n await destroyEntry(entry);\n await fillWaiters();\n return;\n }\n\n const waiter = waiters.shift();\n if (waiter) {\n waiter.resolve(leaseEntry(entry));\n return;\n }\n\n queueAvailableEntry(entry);\n },\n value: entry.value,\n };\n };\n\n const fillWaiters = async (): Promise<void> => {\n while (!disposed && waiters.length > 0 && totalSize < options.maxSize) {\n const waiter = waiters.shift();\n if (!waiter) {\n return;\n }\n\n try {\n waiter.resolve(leaseEntry(await createEntry()));\n } catch (error) {\n waiter.reject(\n error instanceof Error ? error : new Error(String(error)),\n );\n }\n }\n };\n\n return {\n acquire: async () => {\n if (disposed) {\n throw new Error(\"Resource pool is disposed\");\n }\n\n const entry = available.pop();\n if (entry) {\n return leaseEntry(entry);\n }\n\n if (totalSize < options.maxSize) {\n return leaseEntry(await createEntry());\n }\n\n return await new Promise<ResourcePoolLease<T>>((resolve, reject) => {\n waiters.push({ reject, resolve });\n });\n },\n dispose: async () => {\n if (disposed) {\n return;\n }\n\n disposed = true;\n\n while (waiters.length > 0) {\n waiters.shift()?.reject(new Error(\"Resource pool is disposed\"));\n }\n\n const idleEntries = [...available];\n available.length = 0;\n await Promise.all(idleEntries.map((entry) => destroyEntry(entry)));\n },\n prewarm: async (count) => {\n if (disposed) {\n throw new Error(\"Resource pool is disposed\");\n }\n\n const target = clampTarget(count ?? minSize, options.maxSize);\n const missing = target - totalSize;\n\n if (missing <= 0) {\n return;\n }\n\n const created = await Promise.all(\n Array.from({ length: missing }, async () => await createEntry()),\n );\n\n for (const entry of created) {\n queueAvailableEntry(entry);\n }\n },\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["getExecutionTimeoutMessage","createToolCallDispatcher","forceTerminateTimer: NodeJS.Timeout | undefined","extractProviderManifests","available: PoolEntry<T>[]","waiters: Array<{\n reject: (error: Error) => void;\n resolve: (lease: ResourcePoolLease<T>) => void;\n }>"],"sources":["../../src/protocol/messages.ts","../../src/protocol/hostSession.ts","../../src/protocol/nodeBootstrap.ts","../../src/protocol/resourcePool.ts"],"sourcesContent":["import type {\n ExecutorRuntimeOptions,\n ProviderManifest,\n ToolCall,\n ToolCallResult,\n} from \"../runner.ts\";\nimport type { ExecuteResult } from \"../types.ts\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction isFiniteNumber(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value);\n}\n\nfunction isToolAnnotations(value: unknown): boolean {\n if (!isRecord(value)) {\n return false;\n }\n\n return (\n (value.title === undefined || typeof value.title === \"string\") &&\n (value.readOnlyHint === undefined ||\n typeof value.readOnlyHint === \"boolean\") &&\n (value.destructiveHint === undefined ||\n typeof value.destructiveHint === \"boolean\") &&\n (value.idempotentHint === undefined ||\n typeof value.idempotentHint === \"boolean\") &&\n (value.openWorldHint === undefined ||\n typeof value.openWorldHint === \"boolean\")\n );\n}\n\nfunction isRuntimeOptions(value: unknown): value is ExecutorRuntimeOptions {\n if (!isRecord(value)) {\n return false;\n }\n\n return (\n isFiniteNumber(value.maxLogChars) &&\n isFiniteNumber(value.maxLogLines) &&\n isFiniteNumber(value.memoryLimitBytes) &&\n isFiniteNumber(value.timeoutMs)\n );\n}\n\nfunction isProviderManifest(value: unknown): value is ProviderManifest {\n if (!isRecord(value) || typeof value.name !== \"string\") {\n return false;\n }\n\n if (!isRecord(value.tools) || typeof value.types !== \"string\") {\n return false;\n }\n\n return Object.values(value.tools).every(\n (tool) =>\n isRecord(tool) &&\n typeof tool.originalName === \"string\" &&\n typeof tool.safeName === \"string\" &&\n (tool.annotations === undefined || isToolAnnotations(tool.annotations)) &&\n (tool.description === undefined || typeof tool.description === \"string\"),\n );\n}\n\nfunction isExecuteError(\n value: unknown,\n): value is { code: string; message: string } {\n return (\n isRecord(value) &&\n typeof value.code === \"string\" &&\n typeof value.message === \"string\"\n );\n}\n\nfunction isDonePayload(value: unknown): value is DoneMessage {\n if (!isRecord(value) || !isFiniteNumber(value.durationMs)) {\n return false;\n }\n\n if (\n !Array.isArray(value.logs) ||\n !value.logs.every((log) => typeof log === \"string\")\n ) {\n return false;\n }\n\n if (typeof value.ok !== \"boolean\") {\n return false;\n }\n\n return value.ok ? true : isExecuteError(value.error);\n}\n\n/**\n * Message sent from dispatcher to runner to start one execution session.\n */\nexport interface ExecuteMessage {\n code: string;\n id: string;\n options: ExecutorRuntimeOptions;\n providers: ProviderManifest[];\n type: \"execute\";\n}\n\n/**\n * Message sent from dispatcher to request prompt cancellation.\n */\nexport interface CancelMessage {\n id: string;\n type: \"cancel\";\n}\n\n/**\n * Message sent from a runner when guest code invokes a host tool.\n */\nexport interface ToolCallMessage extends ToolCall {\n callId: string;\n type: \"tool_call\";\n}\n\n/**\n * Message carrying a trusted host tool result back to the runner.\n */\nexport type ToolResultMessage = {\n callId: string;\n type: \"tool_result\";\n} & ToolCallResult;\n\n/**\n * Message indicating the runner has finished bootstrapping guest execution timing.\n */\nexport interface StartedMessage {\n id: string;\n type: \"started\";\n}\n\n/**\n * Final successful execution result returned by a runner.\n *\n * Node IPC can omit `undefined` fields during serialization, so `result`\n * remains optional at the protocol boundary and is normalized by the host.\n */\nexport type DoneSuccessMessage<T = unknown> = {\n durationMs: number;\n id: string;\n logs: string[];\n ok: true;\n result?: T;\n type: \"done\";\n};\n\n/**\n * Final failed execution result returned by a runner.\n */\nexport type DoneFailureMessage = {\n id: string;\n type: \"done\";\n} & Extract<ExecuteResult, { ok: false }>;\n\n/**\n * Final execution result returned by a runner.\n */\nexport type DoneMessage = DoneSuccessMessage | DoneFailureMessage;\n\n/**\n * Messages accepted by a runner transport endpoint.\n */\nexport type DispatcherMessage =\n | CancelMessage\n | ExecuteMessage\n | ToolResultMessage;\n\n/**\n * Messages emitted by a runner transport endpoint.\n */\nexport type RunnerMessage = DoneMessage | StartedMessage | ToolCallMessage;\n\n/**\n * Returns whether an unknown value is a dispatcher-to-runner message.\n */\nexport function isDispatcherMessage(\n value: unknown,\n): value is DispatcherMessage {\n if (!isRecord(value) || typeof value.type !== \"string\") {\n return false;\n }\n\n switch (value.type) {\n case \"cancel\":\n return typeof value.id === \"string\";\n case \"execute\":\n return (\n typeof value.code === \"string\" &&\n typeof value.id === \"string\" &&\n isRuntimeOptions(value.options) &&\n Array.isArray(value.providers) &&\n value.providers.every(isProviderManifest)\n );\n case \"tool_result\":\n if (typeof value.callId !== \"string\" || typeof value.ok !== \"boolean\") {\n return false;\n }\n\n if (value.ok) {\n return \"result\" in value;\n }\n\n return isExecuteError(value.error);\n default:\n return false;\n }\n}\n\n/**\n * Returns whether an unknown value is a runner-to-dispatcher message.\n */\nexport function isRunnerMessage(value: unknown): value is RunnerMessage {\n if (!isRecord(value) || typeof value.type !== \"string\") {\n return false;\n }\n\n switch (value.type) {\n case \"started\":\n return typeof value.id === \"string\";\n case \"tool_call\":\n return (\n typeof value.callId === \"string\" &&\n typeof value.providerName === \"string\" &&\n typeof value.safeToolName === \"string\" &&\n \"input\" in value\n );\n case \"done\":\n return typeof value.id === \"string\" && isDonePayload(value);\n default:\n return false;\n }\n}\n","import {\n createToolCallDispatcher,\n extractProviderManifests,\n type ExecutorRuntimeOptions,\n} from \"../runner.ts\";\nimport { getExecutionTimeoutMessage } from \"../executor/shared.ts\";\nimport type { ExecuteResult, ResolvedToolProvider } from \"../types.ts\";\n\nimport type {\n DispatcherMessage,\n DoneMessage,\n RunnerMessage,\n ToolCallMessage,\n} from \"./messages.ts\";\nimport { isRunnerMessage } from \"./messages.ts\";\n\nconst DEFAULT_CANCEL_GRACE_MS = 25;\nconst HOST_TIMEOUT_BACKSTOP_MS = 100;\n\n/**\n * Describes an unexpected transport shutdown reported to the host session.\n */\nexport interface TransportCloseReason {\n code?: number | null;\n message: string;\n signal?: NodeJS.Signals | null;\n}\n\n/**\n * Minimal parent-side transport contract for transport-backed execution.\n */\nexport interface HostTransport {\n dispose(): Promise<void> | void;\n onClose(handler: (reason?: TransportCloseReason) => void): () => void;\n onError(handler: (error: Error) => void): () => void;\n onMessage(handler: (message: RunnerMessage) => void): () => void;\n send(message: DispatcherMessage): Promise<void> | void;\n terminate(): Promise<void> | void;\n}\n\n/**\n * Configuration for one transport-backed execution session.\n */\nexport interface HostTransportSessionOptions {\n cancelGraceMs?: number;\n code: string;\n executionId: string;\n onSettled?: (result: ExecuteResult) => Promise<void> | void;\n providers: ResolvedToolProvider[];\n runtimeOptions: Required<ExecutorRuntimeOptions>;\n signal?: AbortSignal;\n transport: HostTransport;\n}\n\nfunction toFailureResult(\n startedAt: number,\n timeoutTriggered: boolean,\n message: string,\n): ExecuteResult {\n return {\n durationMs: Date.now() - startedAt,\n error: {\n code: timeoutTriggered ? \"timeout\" : \"internal_error\",\n message: timeoutTriggered ? getExecutionTimeoutMessage() : message,\n },\n logs: [],\n ok: false,\n };\n}\n\nfunction normalizeDoneMessage(message: DoneMessage): ExecuteResult {\n if (!message.ok) {\n return {\n durationMs: message.durationMs,\n error: message.error,\n logs: message.logs,\n ok: false,\n };\n }\n\n return {\n durationMs: message.durationMs,\n logs: message.logs,\n ok: true,\n result: message.result,\n };\n}\n\n/**\n * Runs one host-side transport session, including timeout, cancellation,\n * tool-call dispatch, and result settlement.\n */\nexport async function runHostTransportSession(\n options: HostTransportSessionOptions,\n): Promise<ExecuteResult> {\n const startedAt = Date.now();\n const abortController = new AbortController();\n const dispatchToolCall = createToolCallDispatcher(\n options.providers,\n abortController.signal,\n );\n const abortSignal = options.signal;\n\n return await new Promise<ExecuteResult>((resolve) => {\n let finished = false;\n let timeoutTriggered = false;\n let cancellationStarted = false;\n let forceTerminateTimer: NodeJS.Timeout | undefined;\n const cancelGraceMs = options.cancelGraceMs ?? DEFAULT_CANCEL_GRACE_MS;\n\n const cleanup = () => {\n finished = true;\n abortController.abort();\n if (timeoutTimer) {\n clearTimeout(timeoutTimer);\n }\n if (forceTerminateTimer) {\n clearTimeout(forceTerminateTimer);\n }\n offClose();\n offError();\n offMessage();\n abortSignal?.removeEventListener(\"abort\", onAbortSignal);\n };\n\n const finish = (result: ExecuteResult) => {\n if (finished) {\n return;\n }\n\n cleanup();\n void Promise.resolve(options.onSettled?.(result))\n .catch(() => {})\n .finally(() => {\n void Promise.resolve(options.transport.dispose()).catch(() => {});\n });\n resolve(result);\n };\n\n const fail = (message: string) => {\n finish(toFailureResult(startedAt, timeoutTriggered, message));\n };\n\n const send = (message: DispatcherMessage) => {\n if (finished) {\n return;\n }\n\n try {\n const pendingSend = options.transport.send(message);\n void Promise.resolve(pendingSend).catch((error) => {\n if (finished) {\n return;\n }\n\n fail(error instanceof Error ? error.message : String(error));\n });\n } catch (error) {\n fail(error instanceof Error ? error.message : String(error));\n }\n };\n\n const startCancellation = () => {\n if (finished || cancellationStarted) {\n return;\n }\n\n cancellationStarted = true;\n timeoutTriggered = true;\n abortController.abort();\n send({\n id: options.executionId,\n type: \"cancel\",\n });\n forceTerminateTimer = setTimeout(() => {\n if (finished) {\n return;\n }\n\n void Promise.resolve(options.transport.terminate())\n .catch(() => {})\n .finally(() => {\n if (finished) {\n return;\n }\n\n finish(\n toFailureResult(startedAt, true, getExecutionTimeoutMessage()),\n );\n });\n }, cancelGraceMs);\n };\n\n const timeoutTimer = setTimeout(() => {\n startCancellation();\n }, options.runtimeOptions.timeoutMs + HOST_TIMEOUT_BACKSTOP_MS);\n\n const onMessage = (message: RunnerMessage) => {\n if (finished) {\n return;\n }\n\n if (!isRunnerMessage(message)) {\n return;\n }\n\n if (\"id\" in message && message.id !== options.executionId) {\n return;\n }\n\n if (message.type === \"started\") {\n return;\n }\n\n if (message.type === \"tool_call\") {\n void dispatchToolCall(message as ToolCallMessage)\n .then((result) => {\n send({\n ...result,\n callId: message.callId,\n type: \"tool_result\",\n });\n })\n .catch((error) => {\n send({\n callId: message.callId,\n error: {\n code: \"internal_error\",\n message: error instanceof Error ? error.message : String(error),\n },\n ok: false,\n type: \"tool_result\",\n });\n });\n return;\n }\n\n finish(normalizeDoneMessage(message));\n };\n\n const onError = (error: Error) => {\n fail(error.message);\n };\n\n const onClose = (reason?: TransportCloseReason) => {\n fail(reason?.message ?? \"Transport closed unexpectedly\");\n };\n\n const onAbortSignal = () => {\n startCancellation();\n };\n\n const offMessage = options.transport.onMessage(onMessage);\n const offError = options.transport.onError(onError);\n const offClose = options.transport.onClose(onClose);\n abortSignal?.addEventListener(\"abort\", onAbortSignal, { once: true });\n\n if (abortSignal?.aborted) {\n startCancellation();\n return;\n }\n\n send({\n code: options.code,\n id: options.executionId,\n options: options.runtimeOptions,\n providers: extractProviderManifests(options.providers),\n type: \"execute\",\n });\n });\n}\n","const SOURCE_MODE_EXEC_ARGV = [\"--conditions=source\", \"--import\", \"tsx\"];\n\n/**\n * Returns the extra Node flags needed to launch transport-backed worker entries\n * directly from source during local development and tests.\n */\nexport function getNodeTransportExecArgv(\n moduleUrl: string,\n): string[] | undefined {\n return moduleUrl.endsWith(\".ts\") ? [...SOURCE_MODE_EXEC_ARGV] : undefined;\n}\n","/**\n * One checked-out pooled resource plus its release hook.\n */\nexport interface ResourcePoolLease<T> {\n release(reusable?: boolean): Promise<void>;\n value: T;\n}\n\n/**\n * Configuration for a reusable async resource pool.\n */\nexport interface ResourcePoolOptions<T> {\n create: () => Promise<T> | T;\n destroy: (value: T) => Promise<void> | void;\n idleTimeoutMs?: number;\n maxSize: number;\n minSize?: number;\n}\n\n/**\n * Minimal async pool contract used by the pooled executors.\n */\nexport interface ResourcePool<T> {\n acquire(): Promise<ResourcePoolLease<T>>;\n dispose(): Promise<void>;\n prewarm(count?: number): Promise<void>;\n}\n\ninterface PoolEntry<T> {\n idleTimer: NodeJS.Timeout | undefined;\n value: T;\n}\n\nfunction clampTarget(value: number, maxSize: number): number {\n return Math.max(0, Math.min(value, maxSize));\n}\n\n/**\n * Creates a bounded async resource pool with optional idle eviction.\n */\nexport function createResourcePool<T>(\n options: ResourcePoolOptions<T>,\n): ResourcePool<T> {\n const available: PoolEntry<T>[] = [];\n const waiters: Array<{\n reject: (error: Error) => void;\n resolve: (lease: ResourcePoolLease<T>) => void;\n }> = [];\n const inUse = new Set<PoolEntry<T>>();\n let disposed = false;\n let totalSize = 0;\n\n const minSize = clampTarget(options.minSize ?? 0, options.maxSize);\n\n const createEntry = async (): Promise<PoolEntry<T>> => {\n totalSize += 1;\n\n try {\n return {\n idleTimer: undefined,\n value: await options.create(),\n };\n } catch (error) {\n totalSize -= 1;\n throw error;\n }\n };\n\n const removeAvailableEntry = (entry: PoolEntry<T>): void => {\n const index = available.indexOf(entry);\n\n if (index >= 0) {\n available.splice(index, 1);\n }\n };\n\n const clearIdleTimer = (entry: PoolEntry<T>): void => {\n if (entry.idleTimer) {\n clearTimeout(entry.idleTimer);\n entry.idleTimer = undefined;\n }\n };\n\n const queueAvailableEntry = (entry: PoolEntry<T>): void => {\n available.push(entry);\n\n if ((options.idleTimeoutMs ?? 0) > 0) {\n entry.idleTimer = setTimeout(() => {\n if (disposed) {\n return;\n }\n\n if (available.includes(entry) && totalSize > minSize) {\n void destroyEntry(entry);\n }\n }, options.idleTimeoutMs);\n }\n };\n\n const destroyEntry = async (entry: PoolEntry<T>): Promise<void> => {\n clearIdleTimer(entry);\n removeAvailableEntry(entry);\n inUse.delete(entry);\n totalSize -= 1;\n await options.destroy(entry.value);\n };\n\n const leaseEntry = (entry: PoolEntry<T>): ResourcePoolLease<T> => {\n clearIdleTimer(entry);\n removeAvailableEntry(entry);\n inUse.add(entry);\n\n return {\n release: async (reusable = true) => {\n if (!inUse.has(entry)) {\n return;\n }\n\n inUse.delete(entry);\n\n if (disposed || !reusable) {\n await destroyEntry(entry);\n await fillWaiters();\n return;\n }\n\n const waiter = waiters.shift();\n if (waiter) {\n waiter.resolve(leaseEntry(entry));\n return;\n }\n\n queueAvailableEntry(entry);\n },\n value: entry.value,\n };\n };\n\n const fillWaiters = async (): Promise<void> => {\n while (!disposed && waiters.length > 0 && totalSize < options.maxSize) {\n const waiter = waiters.shift();\n if (!waiter) {\n return;\n }\n\n try {\n waiter.resolve(leaseEntry(await createEntry()));\n } catch (error) {\n waiter.reject(\n error instanceof Error ? error : new Error(String(error)),\n );\n }\n }\n };\n\n return {\n acquire: async () => {\n if (disposed) {\n throw new Error(\"Resource pool is disposed\");\n }\n\n const entry = available.pop();\n if (entry) {\n return leaseEntry(entry);\n }\n\n if (totalSize < options.maxSize) {\n return leaseEntry(await createEntry());\n }\n\n return await new Promise<ResourcePoolLease<T>>((resolve, reject) => {\n waiters.push({ reject, resolve });\n });\n },\n dispose: async () => {\n if (disposed) {\n return;\n }\n\n disposed = true;\n\n while (waiters.length > 0) {\n waiters.shift()?.reject(new Error(\"Resource pool is disposed\"));\n }\n\n const idleEntries = [...available];\n available.length = 0;\n await Promise.all(idleEntries.map((entry) => destroyEntry(entry)));\n },\n prewarm: async (count) => {\n if (disposed) {\n throw new Error(\"Resource pool is disposed\");\n }\n\n const target = clampTarget(count ?? minSize, options.maxSize);\n const missing = target - totalSize;\n\n if (missing <= 0) {\n return;\n }\n\n const created = await Promise.all(\n Array.from({ length: missing }, async () => await createEntry()),\n );\n\n for (const entry of created) {\n queueAvailableEntry(entry);\n }\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @packageDocumentation
|
|
3
3
|
* Public TypeScript declarations for this package entrypoint.
|
|
4
4
|
*/
|
|
5
|
-
import { a as ToolCall, d as ExecuteResult, f as JsonSchema,
|
|
5
|
+
import { _ as ToolExecutionContext, a as ToolCall, d as ExecuteResult, f as JsonSchema, h as ToolAnnotations, i as ProviderToolManifest, l as ExecuteError, m as ResolvedToolProvider, n as ExecutorRuntimeOptions, o as ToolCallResult, p as ResolvedToolDescriptor, r as ProviderManifest, u as ExecuteErrorCode } from "../runner-Cy18Z0u0.cjs";
|
|
6
6
|
|
|
7
7
|
//#region src/protocol/messages.d.ts
|
|
8
8
|
|
|
@@ -165,5 +165,5 @@ interface ResourcePool<T> {
|
|
|
165
165
|
*/
|
|
166
166
|
declare function createResourcePool<T>(options: ResourcePoolOptions<T>): ResourcePool<T>;
|
|
167
167
|
//#endregion
|
|
168
|
-
export { type CancelMessage, type DispatcherMessage, type DoneFailureMessage, type DoneMessage, type DoneSuccessMessage, type ExecuteError, type ExecuteErrorCode, type ExecuteMessage, type ExecuteResult, type ExecutorRuntimeOptions, type HostTransport, type HostTransportSessionOptions, type JsonSchema, type ProviderManifest, type ProviderToolManifest, type ResolvedToolDescriptor, type ResolvedToolProvider, type ResourcePool, type ResourcePoolLease, type ResourcePoolOptions, type RunnerMessage, type StartedMessage, type ToolCall, type ToolCallMessage, type ToolCallResult, type ToolExecutionContext, type ToolResultMessage, type TransportCloseReason, createResourcePool, getNodeTransportExecArgv, isDispatcherMessage, isRunnerMessage, runHostTransportSession };
|
|
168
|
+
export { type CancelMessage, type DispatcherMessage, type DoneFailureMessage, type DoneMessage, type DoneSuccessMessage, type ExecuteError, type ExecuteErrorCode, type ExecuteMessage, type ExecuteResult, type ExecutorRuntimeOptions, type HostTransport, type HostTransportSessionOptions, type JsonSchema, type ProviderManifest, type ProviderToolManifest, type ResolvedToolDescriptor, type ResolvedToolProvider, type ResourcePool, type ResourcePoolLease, type ResourcePoolOptions, type RunnerMessage, type StartedMessage, type ToolAnnotations, type ToolCall, type ToolCallMessage, type ToolCallResult, type ToolExecutionContext, type ToolResultMessage, type TransportCloseReason, createResourcePool, getNodeTransportExecArgv, isDispatcherMessage, isRunnerMessage, runHostTransportSession };
|
|
169
169
|
//# sourceMappingURL=index.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/protocol/messages.ts","../../src/protocol/hostSession.ts","../../src/protocol/nodeBootstrap.ts","../../src/protocol/resourcePool.ts"],"sourcesContent":[],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/protocol/messages.ts","../../src/protocol/hostSession.ts","../../src/protocol/nodeBootstrap.ts","../../src/protocol/resourcePool.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/protocol/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @packageDocumentation
|
|
3
3
|
* Public TypeScript declarations for this package entrypoint.
|
|
4
4
|
*/
|
|
5
|
-
import { a as ToolCall, d as ExecuteResult, f as JsonSchema,
|
|
5
|
+
import { _ as ToolExecutionContext, a as ToolCall, d as ExecuteResult, f as JsonSchema, h as ToolAnnotations, i as ProviderToolManifest, l as ExecuteError, m as ResolvedToolProvider, n as ExecutorRuntimeOptions, o as ToolCallResult, p as ResolvedToolDescriptor, r as ProviderManifest, u as ExecuteErrorCode } from "../runner-DXLu0eJV.js";
|
|
6
6
|
|
|
7
7
|
//#region src/protocol/messages.d.ts
|
|
8
8
|
|
|
@@ -165,5 +165,5 @@ interface ResourcePool<T> {
|
|
|
165
165
|
*/
|
|
166
166
|
declare function createResourcePool<T>(options: ResourcePoolOptions<T>): ResourcePool<T>;
|
|
167
167
|
//#endregion
|
|
168
|
-
export { type CancelMessage, type DispatcherMessage, type DoneFailureMessage, type DoneMessage, type DoneSuccessMessage, type ExecuteError, type ExecuteErrorCode, type ExecuteMessage, type ExecuteResult, type ExecutorRuntimeOptions, type HostTransport, type HostTransportSessionOptions, type JsonSchema, type ProviderManifest, type ProviderToolManifest, type ResolvedToolDescriptor, type ResolvedToolProvider, type ResourcePool, type ResourcePoolLease, type ResourcePoolOptions, type RunnerMessage, type StartedMessage, type ToolCall, type ToolCallMessage, type ToolCallResult, type ToolExecutionContext, type ToolResultMessage, type TransportCloseReason, createResourcePool, getNodeTransportExecArgv, isDispatcherMessage, isRunnerMessage, runHostTransportSession };
|
|
168
|
+
export { type CancelMessage, type DispatcherMessage, type DoneFailureMessage, type DoneMessage, type DoneSuccessMessage, type ExecuteError, type ExecuteErrorCode, type ExecuteMessage, type ExecuteResult, type ExecutorRuntimeOptions, type HostTransport, type HostTransportSessionOptions, type JsonSchema, type ProviderManifest, type ProviderToolManifest, type ResolvedToolDescriptor, type ResolvedToolProvider, type ResourcePool, type ResourcePoolLease, type ResourcePoolOptions, type RunnerMessage, type StartedMessage, type ToolAnnotations, type ToolCall, type ToolCallMessage, type ToolCallResult, type ToolExecutionContext, type ToolResultMessage, type TransportCloseReason, createResourcePool, getNodeTransportExecArgv, isDispatcherMessage, isRunnerMessage, runHostTransportSession };
|
|
169
169
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/protocol/messages.ts","../../src/protocol/hostSession.ts","../../src/protocol/nodeBootstrap.ts","../../src/protocol/resourcePool.ts"],"sourcesContent":[],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/protocol/messages.ts","../../src/protocol/hostSession.ts","../../src/protocol/nodeBootstrap.ts","../../src/protocol/resourcePool.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/protocol/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "../errors-DdWVEGU8.js";
|
|
2
|
-
import { n as extractProviderManifests, o as getExecutionTimeoutMessage, t as createToolCallDispatcher } from "../runner-
|
|
2
|
+
import { n as extractProviderManifests, o as getExecutionTimeoutMessage, t as createToolCallDispatcher } from "../runner-BWAVLBi6.js";
|
|
3
3
|
|
|
4
4
|
//#region src/protocol/messages.ts
|
|
5
5
|
function isRecord(value) {
|
|
@@ -8,6 +8,10 @@ function isRecord(value) {
|
|
|
8
8
|
function isFiniteNumber(value) {
|
|
9
9
|
return typeof value === "number" && Number.isFinite(value);
|
|
10
10
|
}
|
|
11
|
+
function isToolAnnotations(value) {
|
|
12
|
+
if (!isRecord(value)) return false;
|
|
13
|
+
return (value.title === void 0 || typeof value.title === "string") && (value.readOnlyHint === void 0 || typeof value.readOnlyHint === "boolean") && (value.destructiveHint === void 0 || typeof value.destructiveHint === "boolean") && (value.idempotentHint === void 0 || typeof value.idempotentHint === "boolean") && (value.openWorldHint === void 0 || typeof value.openWorldHint === "boolean");
|
|
14
|
+
}
|
|
11
15
|
function isRuntimeOptions(value) {
|
|
12
16
|
if (!isRecord(value)) return false;
|
|
13
17
|
return isFiniteNumber(value.maxLogChars) && isFiniteNumber(value.maxLogLines) && isFiniteNumber(value.memoryLimitBytes) && isFiniteNumber(value.timeoutMs);
|
|
@@ -15,7 +19,7 @@ function isRuntimeOptions(value) {
|
|
|
15
19
|
function isProviderManifest(value) {
|
|
16
20
|
if (!isRecord(value) || typeof value.name !== "string") return false;
|
|
17
21
|
if (!isRecord(value.tools) || typeof value.types !== "string") return false;
|
|
18
|
-
return Object.values(value.tools).every((tool) => isRecord(tool) && typeof tool.originalName === "string" && typeof tool.safeName === "string" && (tool.description === void 0 || typeof tool.description === "string"));
|
|
22
|
+
return Object.values(value.tools).every((tool) => isRecord(tool) && typeof tool.originalName === "string" && typeof tool.safeName === "string" && (tool.annotations === void 0 || isToolAnnotations(tool.annotations)) && (tool.description === void 0 || typeof tool.description === "string"));
|
|
19
23
|
}
|
|
20
24
|
function isExecuteError(value) {
|
|
21
25
|
return isRecord(value) && typeof value.code === "string" && typeof value.message === "string";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["forceTerminateTimer: NodeJS.Timeout | undefined","available: PoolEntry<T>[]","waiters: Array<{\n reject: (error: Error) => void;\n resolve: (lease: ResourcePoolLease<T>) => void;\n }>"],"sources":["../../src/protocol/messages.ts","../../src/protocol/hostSession.ts","../../src/protocol/nodeBootstrap.ts","../../src/protocol/resourcePool.ts"],"sourcesContent":["import type {\n ExecutorRuntimeOptions,\n ProviderManifest,\n ToolCall,\n ToolCallResult,\n} from \"../runner.ts\";\nimport type { ExecuteResult } from \"../types.ts\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction isFiniteNumber(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value);\n}\n\nfunction isRuntimeOptions(value: unknown): value is ExecutorRuntimeOptions {\n if (!isRecord(value)) {\n return false;\n }\n\n return (\n isFiniteNumber(value.maxLogChars) &&\n isFiniteNumber(value.maxLogLines) &&\n isFiniteNumber(value.memoryLimitBytes) &&\n isFiniteNumber(value.timeoutMs)\n );\n}\n\nfunction isProviderManifest(value: unknown): value is ProviderManifest {\n if (!isRecord(value) || typeof value.name !== \"string\") {\n return false;\n }\n\n if (!isRecord(value.tools) || typeof value.types !== \"string\") {\n return false;\n }\n\n return Object.values(value.tools).every(\n (tool) =>\n isRecord(tool) &&\n typeof tool.originalName === \"string\" &&\n typeof tool.safeName === \"string\" &&\n (tool.description === undefined || typeof tool.description === \"string\"),\n );\n}\n\nfunction isExecuteError(\n value: unknown,\n): value is { code: string; message: string } {\n return (\n isRecord(value) &&\n typeof value.code === \"string\" &&\n typeof value.message === \"string\"\n );\n}\n\nfunction isDonePayload(value: unknown): value is DoneMessage {\n if (!isRecord(value) || !isFiniteNumber(value.durationMs)) {\n return false;\n }\n\n if (\n !Array.isArray(value.logs) ||\n !value.logs.every((log) => typeof log === \"string\")\n ) {\n return false;\n }\n\n if (typeof value.ok !== \"boolean\") {\n return false;\n }\n\n return value.ok ? true : isExecuteError(value.error);\n}\n\n/**\n * Message sent from dispatcher to runner to start one execution session.\n */\nexport interface ExecuteMessage {\n code: string;\n id: string;\n options: ExecutorRuntimeOptions;\n providers: ProviderManifest[];\n type: \"execute\";\n}\n\n/**\n * Message sent from dispatcher to request prompt cancellation.\n */\nexport interface CancelMessage {\n id: string;\n type: \"cancel\";\n}\n\n/**\n * Message sent from a runner when guest code invokes a host tool.\n */\nexport interface ToolCallMessage extends ToolCall {\n callId: string;\n type: \"tool_call\";\n}\n\n/**\n * Message carrying a trusted host tool result back to the runner.\n */\nexport type ToolResultMessage = {\n callId: string;\n type: \"tool_result\";\n} & ToolCallResult;\n\n/**\n * Message indicating the runner has finished bootstrapping guest execution timing.\n */\nexport interface StartedMessage {\n id: string;\n type: \"started\";\n}\n\n/**\n * Final successful execution result returned by a runner.\n *\n * Node IPC can omit `undefined` fields during serialization, so `result`\n * remains optional at the protocol boundary and is normalized by the host.\n */\nexport type DoneSuccessMessage<T = unknown> = {\n durationMs: number;\n id: string;\n logs: string[];\n ok: true;\n result?: T;\n type: \"done\";\n};\n\n/**\n * Final failed execution result returned by a runner.\n */\nexport type DoneFailureMessage = {\n id: string;\n type: \"done\";\n} & Extract<ExecuteResult, { ok: false }>;\n\n/**\n * Final execution result returned by a runner.\n */\nexport type DoneMessage = DoneSuccessMessage | DoneFailureMessage;\n\n/**\n * Messages accepted by a runner transport endpoint.\n */\nexport type DispatcherMessage =\n | CancelMessage\n | ExecuteMessage\n | ToolResultMessage;\n\n/**\n * Messages emitted by a runner transport endpoint.\n */\nexport type RunnerMessage = DoneMessage | StartedMessage | ToolCallMessage;\n\n/**\n * Returns whether an unknown value is a dispatcher-to-runner message.\n */\nexport function isDispatcherMessage(\n value: unknown,\n): value is DispatcherMessage {\n if (!isRecord(value) || typeof value.type !== \"string\") {\n return false;\n }\n\n switch (value.type) {\n case \"cancel\":\n return typeof value.id === \"string\";\n case \"execute\":\n return (\n typeof value.code === \"string\" &&\n typeof value.id === \"string\" &&\n isRuntimeOptions(value.options) &&\n Array.isArray(value.providers) &&\n value.providers.every(isProviderManifest)\n );\n case \"tool_result\":\n if (typeof value.callId !== \"string\" || typeof value.ok !== \"boolean\") {\n return false;\n }\n\n if (value.ok) {\n return \"result\" in value;\n }\n\n return isExecuteError(value.error);\n default:\n return false;\n }\n}\n\n/**\n * Returns whether an unknown value is a runner-to-dispatcher message.\n */\nexport function isRunnerMessage(value: unknown): value is RunnerMessage {\n if (!isRecord(value) || typeof value.type !== \"string\") {\n return false;\n }\n\n switch (value.type) {\n case \"started\":\n return typeof value.id === \"string\";\n case \"tool_call\":\n return (\n typeof value.callId === \"string\" &&\n typeof value.providerName === \"string\" &&\n typeof value.safeToolName === \"string\" &&\n \"input\" in value\n );\n case \"done\":\n return typeof value.id === \"string\" && isDonePayload(value);\n default:\n return false;\n }\n}\n","import {\n createToolCallDispatcher,\n extractProviderManifests,\n type ExecutorRuntimeOptions,\n} from \"../runner.ts\";\nimport { getExecutionTimeoutMessage } from \"../executor/shared.ts\";\nimport type { ExecuteResult, ResolvedToolProvider } from \"../types.ts\";\n\nimport type {\n DispatcherMessage,\n DoneMessage,\n RunnerMessage,\n ToolCallMessage,\n} from \"./messages.ts\";\nimport { isRunnerMessage } from \"./messages.ts\";\n\nconst DEFAULT_CANCEL_GRACE_MS = 25;\nconst HOST_TIMEOUT_BACKSTOP_MS = 100;\n\n/**\n * Describes an unexpected transport shutdown reported to the host session.\n */\nexport interface TransportCloseReason {\n code?: number | null;\n message: string;\n signal?: NodeJS.Signals | null;\n}\n\n/**\n * Minimal parent-side transport contract for transport-backed execution.\n */\nexport interface HostTransport {\n dispose(): Promise<void> | void;\n onClose(handler: (reason?: TransportCloseReason) => void): () => void;\n onError(handler: (error: Error) => void): () => void;\n onMessage(handler: (message: RunnerMessage) => void): () => void;\n send(message: DispatcherMessage): Promise<void> | void;\n terminate(): Promise<void> | void;\n}\n\n/**\n * Configuration for one transport-backed execution session.\n */\nexport interface HostTransportSessionOptions {\n cancelGraceMs?: number;\n code: string;\n executionId: string;\n onSettled?: (result: ExecuteResult) => Promise<void> | void;\n providers: ResolvedToolProvider[];\n runtimeOptions: Required<ExecutorRuntimeOptions>;\n signal?: AbortSignal;\n transport: HostTransport;\n}\n\nfunction toFailureResult(\n startedAt: number,\n timeoutTriggered: boolean,\n message: string,\n): ExecuteResult {\n return {\n durationMs: Date.now() - startedAt,\n error: {\n code: timeoutTriggered ? \"timeout\" : \"internal_error\",\n message: timeoutTriggered ? getExecutionTimeoutMessage() : message,\n },\n logs: [],\n ok: false,\n };\n}\n\nfunction normalizeDoneMessage(message: DoneMessage): ExecuteResult {\n if (!message.ok) {\n return {\n durationMs: message.durationMs,\n error: message.error,\n logs: message.logs,\n ok: false,\n };\n }\n\n return {\n durationMs: message.durationMs,\n logs: message.logs,\n ok: true,\n result: message.result,\n };\n}\n\n/**\n * Runs one host-side transport session, including timeout, cancellation,\n * tool-call dispatch, and result settlement.\n */\nexport async function runHostTransportSession(\n options: HostTransportSessionOptions,\n): Promise<ExecuteResult> {\n const startedAt = Date.now();\n const abortController = new AbortController();\n const dispatchToolCall = createToolCallDispatcher(\n options.providers,\n abortController.signal,\n );\n const abortSignal = options.signal;\n\n return await new Promise<ExecuteResult>((resolve) => {\n let finished = false;\n let timeoutTriggered = false;\n let cancellationStarted = false;\n let forceTerminateTimer: NodeJS.Timeout | undefined;\n const cancelGraceMs = options.cancelGraceMs ?? DEFAULT_CANCEL_GRACE_MS;\n\n const cleanup = () => {\n finished = true;\n abortController.abort();\n if (timeoutTimer) {\n clearTimeout(timeoutTimer);\n }\n if (forceTerminateTimer) {\n clearTimeout(forceTerminateTimer);\n }\n offClose();\n offError();\n offMessage();\n abortSignal?.removeEventListener(\"abort\", onAbortSignal);\n };\n\n const finish = (result: ExecuteResult) => {\n if (finished) {\n return;\n }\n\n cleanup();\n void Promise.resolve(options.onSettled?.(result))\n .catch(() => {})\n .finally(() => {\n void Promise.resolve(options.transport.dispose()).catch(() => {});\n });\n resolve(result);\n };\n\n const fail = (message: string) => {\n finish(toFailureResult(startedAt, timeoutTriggered, message));\n };\n\n const send = (message: DispatcherMessage) => {\n if (finished) {\n return;\n }\n\n try {\n const pendingSend = options.transport.send(message);\n void Promise.resolve(pendingSend).catch((error) => {\n if (finished) {\n return;\n }\n\n fail(error instanceof Error ? error.message : String(error));\n });\n } catch (error) {\n fail(error instanceof Error ? error.message : String(error));\n }\n };\n\n const startCancellation = () => {\n if (finished || cancellationStarted) {\n return;\n }\n\n cancellationStarted = true;\n timeoutTriggered = true;\n abortController.abort();\n send({\n id: options.executionId,\n type: \"cancel\",\n });\n forceTerminateTimer = setTimeout(() => {\n if (finished) {\n return;\n }\n\n void Promise.resolve(options.transport.terminate())\n .catch(() => {})\n .finally(() => {\n if (finished) {\n return;\n }\n\n finish(\n toFailureResult(startedAt, true, getExecutionTimeoutMessage()),\n );\n });\n }, cancelGraceMs);\n };\n\n const timeoutTimer = setTimeout(() => {\n startCancellation();\n }, options.runtimeOptions.timeoutMs + HOST_TIMEOUT_BACKSTOP_MS);\n\n const onMessage = (message: RunnerMessage) => {\n if (finished) {\n return;\n }\n\n if (!isRunnerMessage(message)) {\n return;\n }\n\n if (\"id\" in message && message.id !== options.executionId) {\n return;\n }\n\n if (message.type === \"started\") {\n return;\n }\n\n if (message.type === \"tool_call\") {\n void dispatchToolCall(message as ToolCallMessage)\n .then((result) => {\n send({\n ...result,\n callId: message.callId,\n type: \"tool_result\",\n });\n })\n .catch((error) => {\n send({\n callId: message.callId,\n error: {\n code: \"internal_error\",\n message: error instanceof Error ? error.message : String(error),\n },\n ok: false,\n type: \"tool_result\",\n });\n });\n return;\n }\n\n finish(normalizeDoneMessage(message));\n };\n\n const onError = (error: Error) => {\n fail(error.message);\n };\n\n const onClose = (reason?: TransportCloseReason) => {\n fail(reason?.message ?? \"Transport closed unexpectedly\");\n };\n\n const onAbortSignal = () => {\n startCancellation();\n };\n\n const offMessage = options.transport.onMessage(onMessage);\n const offError = options.transport.onError(onError);\n const offClose = options.transport.onClose(onClose);\n abortSignal?.addEventListener(\"abort\", onAbortSignal, { once: true });\n\n if (abortSignal?.aborted) {\n startCancellation();\n return;\n }\n\n send({\n code: options.code,\n id: options.executionId,\n options: options.runtimeOptions,\n providers: extractProviderManifests(options.providers),\n type: \"execute\",\n });\n });\n}\n","const SOURCE_MODE_EXEC_ARGV = [\"--conditions=source\", \"--import\", \"tsx\"];\n\n/**\n * Returns the extra Node flags needed to launch transport-backed worker entries\n * directly from source during local development and tests.\n */\nexport function getNodeTransportExecArgv(\n moduleUrl: string,\n): string[] | undefined {\n return moduleUrl.endsWith(\".ts\") ? [...SOURCE_MODE_EXEC_ARGV] : undefined;\n}\n","/**\n * One checked-out pooled resource plus its release hook.\n */\nexport interface ResourcePoolLease<T> {\n release(reusable?: boolean): Promise<void>;\n value: T;\n}\n\n/**\n * Configuration for a reusable async resource pool.\n */\nexport interface ResourcePoolOptions<T> {\n create: () => Promise<T> | T;\n destroy: (value: T) => Promise<void> | void;\n idleTimeoutMs?: number;\n maxSize: number;\n minSize?: number;\n}\n\n/**\n * Minimal async pool contract used by the pooled executors.\n */\nexport interface ResourcePool<T> {\n acquire(): Promise<ResourcePoolLease<T>>;\n dispose(): Promise<void>;\n prewarm(count?: number): Promise<void>;\n}\n\ninterface PoolEntry<T> {\n idleTimer: NodeJS.Timeout | undefined;\n value: T;\n}\n\nfunction clampTarget(value: number, maxSize: number): number {\n return Math.max(0, Math.min(value, maxSize));\n}\n\n/**\n * Creates a bounded async resource pool with optional idle eviction.\n */\nexport function createResourcePool<T>(\n options: ResourcePoolOptions<T>,\n): ResourcePool<T> {\n const available: PoolEntry<T>[] = [];\n const waiters: Array<{\n reject: (error: Error) => void;\n resolve: (lease: ResourcePoolLease<T>) => void;\n }> = [];\n const inUse = new Set<PoolEntry<T>>();\n let disposed = false;\n let totalSize = 0;\n\n const minSize = clampTarget(options.minSize ?? 0, options.maxSize);\n\n const createEntry = async (): Promise<PoolEntry<T>> => {\n totalSize += 1;\n\n try {\n return {\n idleTimer: undefined,\n value: await options.create(),\n };\n } catch (error) {\n totalSize -= 1;\n throw error;\n }\n };\n\n const removeAvailableEntry = (entry: PoolEntry<T>): void => {\n const index = available.indexOf(entry);\n\n if (index >= 0) {\n available.splice(index, 1);\n }\n };\n\n const clearIdleTimer = (entry: PoolEntry<T>): void => {\n if (entry.idleTimer) {\n clearTimeout(entry.idleTimer);\n entry.idleTimer = undefined;\n }\n };\n\n const queueAvailableEntry = (entry: PoolEntry<T>): void => {\n available.push(entry);\n\n if ((options.idleTimeoutMs ?? 0) > 0) {\n entry.idleTimer = setTimeout(() => {\n if (disposed) {\n return;\n }\n\n if (available.includes(entry) && totalSize > minSize) {\n void destroyEntry(entry);\n }\n }, options.idleTimeoutMs);\n }\n };\n\n const destroyEntry = async (entry: PoolEntry<T>): Promise<void> => {\n clearIdleTimer(entry);\n removeAvailableEntry(entry);\n inUse.delete(entry);\n totalSize -= 1;\n await options.destroy(entry.value);\n };\n\n const leaseEntry = (entry: PoolEntry<T>): ResourcePoolLease<T> => {\n clearIdleTimer(entry);\n removeAvailableEntry(entry);\n inUse.add(entry);\n\n return {\n release: async (reusable = true) => {\n if (!inUse.has(entry)) {\n return;\n }\n\n inUse.delete(entry);\n\n if (disposed || !reusable) {\n await destroyEntry(entry);\n await fillWaiters();\n return;\n }\n\n const waiter = waiters.shift();\n if (waiter) {\n waiter.resolve(leaseEntry(entry));\n return;\n }\n\n queueAvailableEntry(entry);\n },\n value: entry.value,\n };\n };\n\n const fillWaiters = async (): Promise<void> => {\n while (!disposed && waiters.length > 0 && totalSize < options.maxSize) {\n const waiter = waiters.shift();\n if (!waiter) {\n return;\n }\n\n try {\n waiter.resolve(leaseEntry(await createEntry()));\n } catch (error) {\n waiter.reject(\n error instanceof Error ? error : new Error(String(error)),\n );\n }\n }\n };\n\n return {\n acquire: async () => {\n if (disposed) {\n throw new Error(\"Resource pool is disposed\");\n }\n\n const entry = available.pop();\n if (entry) {\n return leaseEntry(entry);\n }\n\n if (totalSize < options.maxSize) {\n return leaseEntry(await createEntry());\n }\n\n return await new Promise<ResourcePoolLease<T>>((resolve, reject) => {\n waiters.push({ reject, resolve });\n });\n },\n dispose: async () => {\n if (disposed) {\n return;\n }\n\n disposed = true;\n\n while (waiters.length > 0) {\n waiters.shift()?.reject(new Error(\"Resource pool is disposed\"));\n }\n\n const idleEntries = [...available];\n available.length = 0;\n await Promise.all(idleEntries.map((entry) => destroyEntry(entry)));\n },\n prewarm: async (count) => {\n if (disposed) {\n throw new Error(\"Resource pool is disposed\");\n }\n\n const target = clampTarget(count ?? minSize, options.maxSize);\n const missing = target - totalSize;\n\n if (missing <= 0) {\n return;\n }\n\n const created = await Promise.all(\n Array.from({ length: missing }, async () => await createEntry()),\n );\n\n for (const entry of created) {\n queueAvailableEntry(entry);\n }\n },\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["forceTerminateTimer: NodeJS.Timeout | undefined","available: PoolEntry<T>[]","waiters: Array<{\n reject: (error: Error) => void;\n resolve: (lease: ResourcePoolLease<T>) => void;\n }>"],"sources":["../../src/protocol/messages.ts","../../src/protocol/hostSession.ts","../../src/protocol/nodeBootstrap.ts","../../src/protocol/resourcePool.ts"],"sourcesContent":["import type {\n ExecutorRuntimeOptions,\n ProviderManifest,\n ToolCall,\n ToolCallResult,\n} from \"../runner.ts\";\nimport type { ExecuteResult } from \"../types.ts\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction isFiniteNumber(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value);\n}\n\nfunction isToolAnnotations(value: unknown): boolean {\n if (!isRecord(value)) {\n return false;\n }\n\n return (\n (value.title === undefined || typeof value.title === \"string\") &&\n (value.readOnlyHint === undefined ||\n typeof value.readOnlyHint === \"boolean\") &&\n (value.destructiveHint === undefined ||\n typeof value.destructiveHint === \"boolean\") &&\n (value.idempotentHint === undefined ||\n typeof value.idempotentHint === \"boolean\") &&\n (value.openWorldHint === undefined ||\n typeof value.openWorldHint === \"boolean\")\n );\n}\n\nfunction isRuntimeOptions(value: unknown): value is ExecutorRuntimeOptions {\n if (!isRecord(value)) {\n return false;\n }\n\n return (\n isFiniteNumber(value.maxLogChars) &&\n isFiniteNumber(value.maxLogLines) &&\n isFiniteNumber(value.memoryLimitBytes) &&\n isFiniteNumber(value.timeoutMs)\n );\n}\n\nfunction isProviderManifest(value: unknown): value is ProviderManifest {\n if (!isRecord(value) || typeof value.name !== \"string\") {\n return false;\n }\n\n if (!isRecord(value.tools) || typeof value.types !== \"string\") {\n return false;\n }\n\n return Object.values(value.tools).every(\n (tool) =>\n isRecord(tool) &&\n typeof tool.originalName === \"string\" &&\n typeof tool.safeName === \"string\" &&\n (tool.annotations === undefined || isToolAnnotations(tool.annotations)) &&\n (tool.description === undefined || typeof tool.description === \"string\"),\n );\n}\n\nfunction isExecuteError(\n value: unknown,\n): value is { code: string; message: string } {\n return (\n isRecord(value) &&\n typeof value.code === \"string\" &&\n typeof value.message === \"string\"\n );\n}\n\nfunction isDonePayload(value: unknown): value is DoneMessage {\n if (!isRecord(value) || !isFiniteNumber(value.durationMs)) {\n return false;\n }\n\n if (\n !Array.isArray(value.logs) ||\n !value.logs.every((log) => typeof log === \"string\")\n ) {\n return false;\n }\n\n if (typeof value.ok !== \"boolean\") {\n return false;\n }\n\n return value.ok ? true : isExecuteError(value.error);\n}\n\n/**\n * Message sent from dispatcher to runner to start one execution session.\n */\nexport interface ExecuteMessage {\n code: string;\n id: string;\n options: ExecutorRuntimeOptions;\n providers: ProviderManifest[];\n type: \"execute\";\n}\n\n/**\n * Message sent from dispatcher to request prompt cancellation.\n */\nexport interface CancelMessage {\n id: string;\n type: \"cancel\";\n}\n\n/**\n * Message sent from a runner when guest code invokes a host tool.\n */\nexport interface ToolCallMessage extends ToolCall {\n callId: string;\n type: \"tool_call\";\n}\n\n/**\n * Message carrying a trusted host tool result back to the runner.\n */\nexport type ToolResultMessage = {\n callId: string;\n type: \"tool_result\";\n} & ToolCallResult;\n\n/**\n * Message indicating the runner has finished bootstrapping guest execution timing.\n */\nexport interface StartedMessage {\n id: string;\n type: \"started\";\n}\n\n/**\n * Final successful execution result returned by a runner.\n *\n * Node IPC can omit `undefined` fields during serialization, so `result`\n * remains optional at the protocol boundary and is normalized by the host.\n */\nexport type DoneSuccessMessage<T = unknown> = {\n durationMs: number;\n id: string;\n logs: string[];\n ok: true;\n result?: T;\n type: \"done\";\n};\n\n/**\n * Final failed execution result returned by a runner.\n */\nexport type DoneFailureMessage = {\n id: string;\n type: \"done\";\n} & Extract<ExecuteResult, { ok: false }>;\n\n/**\n * Final execution result returned by a runner.\n */\nexport type DoneMessage = DoneSuccessMessage | DoneFailureMessage;\n\n/**\n * Messages accepted by a runner transport endpoint.\n */\nexport type DispatcherMessage =\n | CancelMessage\n | ExecuteMessage\n | ToolResultMessage;\n\n/**\n * Messages emitted by a runner transport endpoint.\n */\nexport type RunnerMessage = DoneMessage | StartedMessage | ToolCallMessage;\n\n/**\n * Returns whether an unknown value is a dispatcher-to-runner message.\n */\nexport function isDispatcherMessage(\n value: unknown,\n): value is DispatcherMessage {\n if (!isRecord(value) || typeof value.type !== \"string\") {\n return false;\n }\n\n switch (value.type) {\n case \"cancel\":\n return typeof value.id === \"string\";\n case \"execute\":\n return (\n typeof value.code === \"string\" &&\n typeof value.id === \"string\" &&\n isRuntimeOptions(value.options) &&\n Array.isArray(value.providers) &&\n value.providers.every(isProviderManifest)\n );\n case \"tool_result\":\n if (typeof value.callId !== \"string\" || typeof value.ok !== \"boolean\") {\n return false;\n }\n\n if (value.ok) {\n return \"result\" in value;\n }\n\n return isExecuteError(value.error);\n default:\n return false;\n }\n}\n\n/**\n * Returns whether an unknown value is a runner-to-dispatcher message.\n */\nexport function isRunnerMessage(value: unknown): value is RunnerMessage {\n if (!isRecord(value) || typeof value.type !== \"string\") {\n return false;\n }\n\n switch (value.type) {\n case \"started\":\n return typeof value.id === \"string\";\n case \"tool_call\":\n return (\n typeof value.callId === \"string\" &&\n typeof value.providerName === \"string\" &&\n typeof value.safeToolName === \"string\" &&\n \"input\" in value\n );\n case \"done\":\n return typeof value.id === \"string\" && isDonePayload(value);\n default:\n return false;\n }\n}\n","import {\n createToolCallDispatcher,\n extractProviderManifests,\n type ExecutorRuntimeOptions,\n} from \"../runner.ts\";\nimport { getExecutionTimeoutMessage } from \"../executor/shared.ts\";\nimport type { ExecuteResult, ResolvedToolProvider } from \"../types.ts\";\n\nimport type {\n DispatcherMessage,\n DoneMessage,\n RunnerMessage,\n ToolCallMessage,\n} from \"./messages.ts\";\nimport { isRunnerMessage } from \"./messages.ts\";\n\nconst DEFAULT_CANCEL_GRACE_MS = 25;\nconst HOST_TIMEOUT_BACKSTOP_MS = 100;\n\n/**\n * Describes an unexpected transport shutdown reported to the host session.\n */\nexport interface TransportCloseReason {\n code?: number | null;\n message: string;\n signal?: NodeJS.Signals | null;\n}\n\n/**\n * Minimal parent-side transport contract for transport-backed execution.\n */\nexport interface HostTransport {\n dispose(): Promise<void> | void;\n onClose(handler: (reason?: TransportCloseReason) => void): () => void;\n onError(handler: (error: Error) => void): () => void;\n onMessage(handler: (message: RunnerMessage) => void): () => void;\n send(message: DispatcherMessage): Promise<void> | void;\n terminate(): Promise<void> | void;\n}\n\n/**\n * Configuration for one transport-backed execution session.\n */\nexport interface HostTransportSessionOptions {\n cancelGraceMs?: number;\n code: string;\n executionId: string;\n onSettled?: (result: ExecuteResult) => Promise<void> | void;\n providers: ResolvedToolProvider[];\n runtimeOptions: Required<ExecutorRuntimeOptions>;\n signal?: AbortSignal;\n transport: HostTransport;\n}\n\nfunction toFailureResult(\n startedAt: number,\n timeoutTriggered: boolean,\n message: string,\n): ExecuteResult {\n return {\n durationMs: Date.now() - startedAt,\n error: {\n code: timeoutTriggered ? \"timeout\" : \"internal_error\",\n message: timeoutTriggered ? getExecutionTimeoutMessage() : message,\n },\n logs: [],\n ok: false,\n };\n}\n\nfunction normalizeDoneMessage(message: DoneMessage): ExecuteResult {\n if (!message.ok) {\n return {\n durationMs: message.durationMs,\n error: message.error,\n logs: message.logs,\n ok: false,\n };\n }\n\n return {\n durationMs: message.durationMs,\n logs: message.logs,\n ok: true,\n result: message.result,\n };\n}\n\n/**\n * Runs one host-side transport session, including timeout, cancellation,\n * tool-call dispatch, and result settlement.\n */\nexport async function runHostTransportSession(\n options: HostTransportSessionOptions,\n): Promise<ExecuteResult> {\n const startedAt = Date.now();\n const abortController = new AbortController();\n const dispatchToolCall = createToolCallDispatcher(\n options.providers,\n abortController.signal,\n );\n const abortSignal = options.signal;\n\n return await new Promise<ExecuteResult>((resolve) => {\n let finished = false;\n let timeoutTriggered = false;\n let cancellationStarted = false;\n let forceTerminateTimer: NodeJS.Timeout | undefined;\n const cancelGraceMs = options.cancelGraceMs ?? DEFAULT_CANCEL_GRACE_MS;\n\n const cleanup = () => {\n finished = true;\n abortController.abort();\n if (timeoutTimer) {\n clearTimeout(timeoutTimer);\n }\n if (forceTerminateTimer) {\n clearTimeout(forceTerminateTimer);\n }\n offClose();\n offError();\n offMessage();\n abortSignal?.removeEventListener(\"abort\", onAbortSignal);\n };\n\n const finish = (result: ExecuteResult) => {\n if (finished) {\n return;\n }\n\n cleanup();\n void Promise.resolve(options.onSettled?.(result))\n .catch(() => {})\n .finally(() => {\n void Promise.resolve(options.transport.dispose()).catch(() => {});\n });\n resolve(result);\n };\n\n const fail = (message: string) => {\n finish(toFailureResult(startedAt, timeoutTriggered, message));\n };\n\n const send = (message: DispatcherMessage) => {\n if (finished) {\n return;\n }\n\n try {\n const pendingSend = options.transport.send(message);\n void Promise.resolve(pendingSend).catch((error) => {\n if (finished) {\n return;\n }\n\n fail(error instanceof Error ? error.message : String(error));\n });\n } catch (error) {\n fail(error instanceof Error ? error.message : String(error));\n }\n };\n\n const startCancellation = () => {\n if (finished || cancellationStarted) {\n return;\n }\n\n cancellationStarted = true;\n timeoutTriggered = true;\n abortController.abort();\n send({\n id: options.executionId,\n type: \"cancel\",\n });\n forceTerminateTimer = setTimeout(() => {\n if (finished) {\n return;\n }\n\n void Promise.resolve(options.transport.terminate())\n .catch(() => {})\n .finally(() => {\n if (finished) {\n return;\n }\n\n finish(\n toFailureResult(startedAt, true, getExecutionTimeoutMessage()),\n );\n });\n }, cancelGraceMs);\n };\n\n const timeoutTimer = setTimeout(() => {\n startCancellation();\n }, options.runtimeOptions.timeoutMs + HOST_TIMEOUT_BACKSTOP_MS);\n\n const onMessage = (message: RunnerMessage) => {\n if (finished) {\n return;\n }\n\n if (!isRunnerMessage(message)) {\n return;\n }\n\n if (\"id\" in message && message.id !== options.executionId) {\n return;\n }\n\n if (message.type === \"started\") {\n return;\n }\n\n if (message.type === \"tool_call\") {\n void dispatchToolCall(message as ToolCallMessage)\n .then((result) => {\n send({\n ...result,\n callId: message.callId,\n type: \"tool_result\",\n });\n })\n .catch((error) => {\n send({\n callId: message.callId,\n error: {\n code: \"internal_error\",\n message: error instanceof Error ? error.message : String(error),\n },\n ok: false,\n type: \"tool_result\",\n });\n });\n return;\n }\n\n finish(normalizeDoneMessage(message));\n };\n\n const onError = (error: Error) => {\n fail(error.message);\n };\n\n const onClose = (reason?: TransportCloseReason) => {\n fail(reason?.message ?? \"Transport closed unexpectedly\");\n };\n\n const onAbortSignal = () => {\n startCancellation();\n };\n\n const offMessage = options.transport.onMessage(onMessage);\n const offError = options.transport.onError(onError);\n const offClose = options.transport.onClose(onClose);\n abortSignal?.addEventListener(\"abort\", onAbortSignal, { once: true });\n\n if (abortSignal?.aborted) {\n startCancellation();\n return;\n }\n\n send({\n code: options.code,\n id: options.executionId,\n options: options.runtimeOptions,\n providers: extractProviderManifests(options.providers),\n type: \"execute\",\n });\n });\n}\n","const SOURCE_MODE_EXEC_ARGV = [\"--conditions=source\", \"--import\", \"tsx\"];\n\n/**\n * Returns the extra Node flags needed to launch transport-backed worker entries\n * directly from source during local development and tests.\n */\nexport function getNodeTransportExecArgv(\n moduleUrl: string,\n): string[] | undefined {\n return moduleUrl.endsWith(\".ts\") ? [...SOURCE_MODE_EXEC_ARGV] : undefined;\n}\n","/**\n * One checked-out pooled resource plus its release hook.\n */\nexport interface ResourcePoolLease<T> {\n release(reusable?: boolean): Promise<void>;\n value: T;\n}\n\n/**\n * Configuration for a reusable async resource pool.\n */\nexport interface ResourcePoolOptions<T> {\n create: () => Promise<T> | T;\n destroy: (value: T) => Promise<void> | void;\n idleTimeoutMs?: number;\n maxSize: number;\n minSize?: number;\n}\n\n/**\n * Minimal async pool contract used by the pooled executors.\n */\nexport interface ResourcePool<T> {\n acquire(): Promise<ResourcePoolLease<T>>;\n dispose(): Promise<void>;\n prewarm(count?: number): Promise<void>;\n}\n\ninterface PoolEntry<T> {\n idleTimer: NodeJS.Timeout | undefined;\n value: T;\n}\n\nfunction clampTarget(value: number, maxSize: number): number {\n return Math.max(0, Math.min(value, maxSize));\n}\n\n/**\n * Creates a bounded async resource pool with optional idle eviction.\n */\nexport function createResourcePool<T>(\n options: ResourcePoolOptions<T>,\n): ResourcePool<T> {\n const available: PoolEntry<T>[] = [];\n const waiters: Array<{\n reject: (error: Error) => void;\n resolve: (lease: ResourcePoolLease<T>) => void;\n }> = [];\n const inUse = new Set<PoolEntry<T>>();\n let disposed = false;\n let totalSize = 0;\n\n const minSize = clampTarget(options.minSize ?? 0, options.maxSize);\n\n const createEntry = async (): Promise<PoolEntry<T>> => {\n totalSize += 1;\n\n try {\n return {\n idleTimer: undefined,\n value: await options.create(),\n };\n } catch (error) {\n totalSize -= 1;\n throw error;\n }\n };\n\n const removeAvailableEntry = (entry: PoolEntry<T>): void => {\n const index = available.indexOf(entry);\n\n if (index >= 0) {\n available.splice(index, 1);\n }\n };\n\n const clearIdleTimer = (entry: PoolEntry<T>): void => {\n if (entry.idleTimer) {\n clearTimeout(entry.idleTimer);\n entry.idleTimer = undefined;\n }\n };\n\n const queueAvailableEntry = (entry: PoolEntry<T>): void => {\n available.push(entry);\n\n if ((options.idleTimeoutMs ?? 0) > 0) {\n entry.idleTimer = setTimeout(() => {\n if (disposed) {\n return;\n }\n\n if (available.includes(entry) && totalSize > minSize) {\n void destroyEntry(entry);\n }\n }, options.idleTimeoutMs);\n }\n };\n\n const destroyEntry = async (entry: PoolEntry<T>): Promise<void> => {\n clearIdleTimer(entry);\n removeAvailableEntry(entry);\n inUse.delete(entry);\n totalSize -= 1;\n await options.destroy(entry.value);\n };\n\n const leaseEntry = (entry: PoolEntry<T>): ResourcePoolLease<T> => {\n clearIdleTimer(entry);\n removeAvailableEntry(entry);\n inUse.add(entry);\n\n return {\n release: async (reusable = true) => {\n if (!inUse.has(entry)) {\n return;\n }\n\n inUse.delete(entry);\n\n if (disposed || !reusable) {\n await destroyEntry(entry);\n await fillWaiters();\n return;\n }\n\n const waiter = waiters.shift();\n if (waiter) {\n waiter.resolve(leaseEntry(entry));\n return;\n }\n\n queueAvailableEntry(entry);\n },\n value: entry.value,\n };\n };\n\n const fillWaiters = async (): Promise<void> => {\n while (!disposed && waiters.length > 0 && totalSize < options.maxSize) {\n const waiter = waiters.shift();\n if (!waiter) {\n return;\n }\n\n try {\n waiter.resolve(leaseEntry(await createEntry()));\n } catch (error) {\n waiter.reject(\n error instanceof Error ? error : new Error(String(error)),\n );\n }\n }\n };\n\n return {\n acquire: async () => {\n if (disposed) {\n throw new Error(\"Resource pool is disposed\");\n }\n\n const entry = available.pop();\n if (entry) {\n return leaseEntry(entry);\n }\n\n if (totalSize < options.maxSize) {\n return leaseEntry(await createEntry());\n }\n\n return await new Promise<ResourcePoolLease<T>>((resolve, reject) => {\n waiters.push({ reject, resolve });\n });\n },\n dispose: async () => {\n if (disposed) {\n return;\n }\n\n disposed = true;\n\n while (waiters.length > 0) {\n waiters.shift()?.reject(new Error(\"Resource pool is disposed\"));\n }\n\n const idleEntries = [...available];\n available.length = 0;\n await Promise.all(idleEntries.map((entry) => destroyEntry(entry)));\n },\n prewarm: async (count) => {\n if (disposed) {\n throw new Error(\"Resource pool is disposed\");\n }\n\n const target = clampTarget(count ?? minSize, options.maxSize);\n const missing = target - totalSize;\n\n if (missing <= 0) {\n return;\n }\n\n const created = await Promise.all(\n Array.from({ length: missing }, async () => await createEntry()),\n );\n\n for (const entry of created) {\n queueAvailableEntry(entry);\n }\n },\n };\n}\n"],"mappings":";;;;AAQA,SAAS,SAAS,OAAkD;AAClE,QAAO,OAAO,UAAU,YAAY,UAAU;;AAGhD,SAAS,eAAe,OAAiC;AACvD,QAAO,OAAO,UAAU,YAAY,OAAO,SAAS,MAAM;;AAG5D,SAAS,kBAAkB,OAAyB;AAClD,KAAI,CAAC,SAAS,MAAM,CAClB,QAAO;AAGT,SACG,MAAM,UAAU,UAAa,OAAO,MAAM,UAAU,cACpD,MAAM,iBAAiB,UACtB,OAAO,MAAM,iBAAiB,eAC/B,MAAM,oBAAoB,UACzB,OAAO,MAAM,oBAAoB,eAClC,MAAM,mBAAmB,UACxB,OAAO,MAAM,mBAAmB,eACjC,MAAM,kBAAkB,UACvB,OAAO,MAAM,kBAAkB;;AAIrC,SAAS,iBAAiB,OAAiD;AACzE,KAAI,CAAC,SAAS,MAAM,CAClB,QAAO;AAGT,QACE,eAAe,MAAM,YAAY,IACjC,eAAe,MAAM,YAAY,IACjC,eAAe,MAAM,iBAAiB,IACtC,eAAe,MAAM,UAAU;;AAInC,SAAS,mBAAmB,OAA2C;AACrE,KAAI,CAAC,SAAS,MAAM,IAAI,OAAO,MAAM,SAAS,SAC5C,QAAO;AAGT,KAAI,CAAC,SAAS,MAAM,MAAM,IAAI,OAAO,MAAM,UAAU,SACnD,QAAO;AAGT,QAAO,OAAO,OAAO,MAAM,MAAM,CAAC,OAC/B,SACC,SAAS,KAAK,IACd,OAAO,KAAK,iBAAiB,YAC7B,OAAO,KAAK,aAAa,aACxB,KAAK,gBAAgB,UAAa,kBAAkB,KAAK,YAAY,MACrE,KAAK,gBAAgB,UAAa,OAAO,KAAK,gBAAgB,UAClE;;AAGH,SAAS,eACP,OAC4C;AAC5C,QACE,SAAS,MAAM,IACf,OAAO,MAAM,SAAS,YACtB,OAAO,MAAM,YAAY;;AAI7B,SAAS,cAAc,OAAsC;AAC3D,KAAI,CAAC,SAAS,MAAM,IAAI,CAAC,eAAe,MAAM,WAAW,CACvD,QAAO;AAGT,KACE,CAAC,MAAM,QAAQ,MAAM,KAAK,IAC1B,CAAC,MAAM,KAAK,OAAO,QAAQ,OAAO,QAAQ,SAAS,CAEnD,QAAO;AAGT,KAAI,OAAO,MAAM,OAAO,UACtB,QAAO;AAGT,QAAO,MAAM,KAAK,OAAO,eAAe,MAAM,MAAM;;;;;AA0FtD,SAAgB,oBACd,OAC4B;AAC5B,KAAI,CAAC,SAAS,MAAM,IAAI,OAAO,MAAM,SAAS,SAC5C,QAAO;AAGT,SAAQ,MAAM,MAAd;EACE,KAAK,SACH,QAAO,OAAO,MAAM,OAAO;EAC7B,KAAK,UACH,QACE,OAAO,MAAM,SAAS,YACtB,OAAO,MAAM,OAAO,YACpB,iBAAiB,MAAM,QAAQ,IAC/B,MAAM,QAAQ,MAAM,UAAU,IAC9B,MAAM,UAAU,MAAM,mBAAmB;EAE7C,KAAK;AACH,OAAI,OAAO,MAAM,WAAW,YAAY,OAAO,MAAM,OAAO,UAC1D,QAAO;AAGT,OAAI,MAAM,GACR,QAAO,YAAY;AAGrB,UAAO,eAAe,MAAM,MAAM;EACpC,QACE,QAAO;;;;;;AAOb,SAAgB,gBAAgB,OAAwC;AACtE,KAAI,CAAC,SAAS,MAAM,IAAI,OAAO,MAAM,SAAS,SAC5C,QAAO;AAGT,SAAQ,MAAM,MAAd;EACE,KAAK,UACH,QAAO,OAAO,MAAM,OAAO;EAC7B,KAAK,YACH,QACE,OAAO,MAAM,WAAW,YACxB,OAAO,MAAM,iBAAiB,YAC9B,OAAO,MAAM,iBAAiB,YAC9B,WAAW;EAEf,KAAK,OACH,QAAO,OAAO,MAAM,OAAO,YAAY,cAAc,MAAM;EAC7D,QACE,QAAO;;;;;;AC5Nb,MAAM,0BAA0B;AAChC,MAAM,2BAA2B;AAqCjC,SAAS,gBACP,WACA,kBACA,SACe;AACf,QAAO;EACL,YAAY,KAAK,KAAK,GAAG;EACzB,OAAO;GACL,MAAM,mBAAmB,YAAY;GACrC,SAAS,mBAAmB,4BAA4B,GAAG;GAC5D;EACD,MAAM,EAAE;EACR,IAAI;EACL;;AAGH,SAAS,qBAAqB,SAAqC;AACjE,KAAI,CAAC,QAAQ,GACX,QAAO;EACL,YAAY,QAAQ;EACpB,OAAO,QAAQ;EACf,MAAM,QAAQ;EACd,IAAI;EACL;AAGH,QAAO;EACL,YAAY,QAAQ;EACpB,MAAM,QAAQ;EACd,IAAI;EACJ,QAAQ,QAAQ;EACjB;;;;;;AAOH,eAAsB,wBACpB,SACwB;CACxB,MAAM,YAAY,KAAK,KAAK;CAC5B,MAAM,kBAAkB,IAAI,iBAAiB;CAC7C,MAAM,mBAAmB,yBACvB,QAAQ,WACR,gBAAgB,OACjB;CACD,MAAM,cAAc,QAAQ;AAE5B,QAAO,MAAM,IAAI,SAAwB,YAAY;EACnD,IAAI,WAAW;EACf,IAAI,mBAAmB;EACvB,IAAI,sBAAsB;EAC1B,IAAIA;EACJ,MAAM,gBAAgB,QAAQ,iBAAiB;EAE/C,MAAM,gBAAgB;AACpB,cAAW;AACX,mBAAgB,OAAO;AACvB,OAAI,aACF,cAAa,aAAa;AAE5B,OAAI,oBACF,cAAa,oBAAoB;AAEnC,aAAU;AACV,aAAU;AACV,eAAY;AACZ,gBAAa,oBAAoB,SAAS,cAAc;;EAG1D,MAAM,UAAU,WAA0B;AACxC,OAAI,SACF;AAGF,YAAS;AACT,GAAK,QAAQ,QAAQ,QAAQ,YAAY,OAAO,CAAC,CAC9C,YAAY,GAAG,CACf,cAAc;AACb,IAAK,QAAQ,QAAQ,QAAQ,UAAU,SAAS,CAAC,CAAC,YAAY,GAAG;KACjE;AACJ,WAAQ,OAAO;;EAGjB,MAAM,QAAQ,YAAoB;AAChC,UAAO,gBAAgB,WAAW,kBAAkB,QAAQ,CAAC;;EAG/D,MAAM,QAAQ,YAA+B;AAC3C,OAAI,SACF;AAGF,OAAI;IACF,MAAM,cAAc,QAAQ,UAAU,KAAK,QAAQ;AACnD,IAAK,QAAQ,QAAQ,YAAY,CAAC,OAAO,UAAU;AACjD,SAAI,SACF;AAGF,UAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,CAAC;MAC5D;YACK,OAAO;AACd,SAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,CAAC;;;EAIhE,MAAM,0BAA0B;AAC9B,OAAI,YAAY,oBACd;AAGF,yBAAsB;AACtB,sBAAmB;AACnB,mBAAgB,OAAO;AACvB,QAAK;IACH,IAAI,QAAQ;IACZ,MAAM;IACP,CAAC;AACF,yBAAsB,iBAAiB;AACrC,QAAI,SACF;AAGF,IAAK,QAAQ,QAAQ,QAAQ,UAAU,WAAW,CAAC,CAChD,YAAY,GAAG,CACf,cAAc;AACb,SAAI,SACF;AAGF,YACE,gBAAgB,WAAW,MAAM,4BAA4B,CAAC,CAC/D;MACD;MACH,cAAc;;EAGnB,MAAM,eAAe,iBAAiB;AACpC,sBAAmB;KAClB,QAAQ,eAAe,YAAY,yBAAyB;EAE/D,MAAM,aAAa,YAA2B;AAC5C,OAAI,SACF;AAGF,OAAI,CAAC,gBAAgB,QAAQ,CAC3B;AAGF,OAAI,QAAQ,WAAW,QAAQ,OAAO,QAAQ,YAC5C;AAGF,OAAI,QAAQ,SAAS,UACnB;AAGF,OAAI,QAAQ,SAAS,aAAa;AAChC,IAAK,iBAAiB,QAA2B,CAC9C,MAAM,WAAW;AAChB,UAAK;MACH,GAAG;MACH,QAAQ,QAAQ;MAChB,MAAM;MACP,CAAC;MACF,CACD,OAAO,UAAU;AAChB,UAAK;MACH,QAAQ,QAAQ;MAChB,OAAO;OACL,MAAM;OACN,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;OAChE;MACD,IAAI;MACJ,MAAM;MACP,CAAC;MACF;AACJ;;AAGF,UAAO,qBAAqB,QAAQ,CAAC;;EAGvC,MAAM,WAAW,UAAiB;AAChC,QAAK,MAAM,QAAQ;;EAGrB,MAAM,WAAW,WAAkC;AACjD,QAAK,QAAQ,WAAW,gCAAgC;;EAG1D,MAAM,sBAAsB;AAC1B,sBAAmB;;EAGrB,MAAM,aAAa,QAAQ,UAAU,UAAU,UAAU;EACzD,MAAM,WAAW,QAAQ,UAAU,QAAQ,QAAQ;EACnD,MAAM,WAAW,QAAQ,UAAU,QAAQ,QAAQ;AACnD,eAAa,iBAAiB,SAAS,eAAe,EAAE,MAAM,MAAM,CAAC;AAErE,MAAI,aAAa,SAAS;AACxB,sBAAmB;AACnB;;AAGF,OAAK;GACH,MAAM,QAAQ;GACd,IAAI,QAAQ;GACZ,SAAS,QAAQ;GACjB,WAAW,yBAAyB,QAAQ,UAAU;GACtD,MAAM;GACP,CAAC;GACF;;;;;AC7QJ,MAAM,wBAAwB;CAAC;CAAuB;CAAY;CAAM;;;;;AAMxE,SAAgB,yBACd,WACsB;AACtB,QAAO,UAAU,SAAS,MAAM,GAAG,CAAC,GAAG,sBAAsB,GAAG;;;;;ACwBlE,SAAS,YAAY,OAAe,SAAyB;AAC3D,QAAO,KAAK,IAAI,GAAG,KAAK,IAAI,OAAO,QAAQ,CAAC;;;;;AAM9C,SAAgB,mBACd,SACiB;CACjB,MAAMC,YAA4B,EAAE;CACpC,MAAMC,UAGD,EAAE;CACP,MAAM,wBAAQ,IAAI,KAAmB;CACrC,IAAI,WAAW;CACf,IAAI,YAAY;CAEhB,MAAM,UAAU,YAAY,QAAQ,WAAW,GAAG,QAAQ,QAAQ;CAElE,MAAM,cAAc,YAAmC;AACrD,eAAa;AAEb,MAAI;AACF,UAAO;IACL,WAAW;IACX,OAAO,MAAM,QAAQ,QAAQ;IAC9B;WACM,OAAO;AACd,gBAAa;AACb,SAAM;;;CAIV,MAAM,wBAAwB,UAA8B;EAC1D,MAAM,QAAQ,UAAU,QAAQ,MAAM;AAEtC,MAAI,SAAS,EACX,WAAU,OAAO,OAAO,EAAE;;CAI9B,MAAM,kBAAkB,UAA8B;AACpD,MAAI,MAAM,WAAW;AACnB,gBAAa,MAAM,UAAU;AAC7B,SAAM,YAAY;;;CAItB,MAAM,uBAAuB,UAA8B;AACzD,YAAU,KAAK,MAAM;AAErB,OAAK,QAAQ,iBAAiB,KAAK,EACjC,OAAM,YAAY,iBAAiB;AACjC,OAAI,SACF;AAGF,OAAI,UAAU,SAAS,MAAM,IAAI,YAAY,QAC3C,CAAK,aAAa,MAAM;KAEzB,QAAQ,cAAc;;CAI7B,MAAM,eAAe,OAAO,UAAuC;AACjE,iBAAe,MAAM;AACrB,uBAAqB,MAAM;AAC3B,QAAM,OAAO,MAAM;AACnB,eAAa;AACb,QAAM,QAAQ,QAAQ,MAAM,MAAM;;CAGpC,MAAM,cAAc,UAA8C;AAChE,iBAAe,MAAM;AACrB,uBAAqB,MAAM;AAC3B,QAAM,IAAI,MAAM;AAEhB,SAAO;GACL,SAAS,OAAO,WAAW,SAAS;AAClC,QAAI,CAAC,MAAM,IAAI,MAAM,CACnB;AAGF,UAAM,OAAO,MAAM;AAEnB,QAAI,YAAY,CAAC,UAAU;AACzB,WAAM,aAAa,MAAM;AACzB,WAAM,aAAa;AACnB;;IAGF,MAAM,SAAS,QAAQ,OAAO;AAC9B,QAAI,QAAQ;AACV,YAAO,QAAQ,WAAW,MAAM,CAAC;AACjC;;AAGF,wBAAoB,MAAM;;GAE5B,OAAO,MAAM;GACd;;CAGH,MAAM,cAAc,YAA2B;AAC7C,SAAO,CAAC,YAAY,QAAQ,SAAS,KAAK,YAAY,QAAQ,SAAS;GACrE,MAAM,SAAS,QAAQ,OAAO;AAC9B,OAAI,CAAC,OACH;AAGF,OAAI;AACF,WAAO,QAAQ,WAAW,MAAM,aAAa,CAAC,CAAC;YACxC,OAAO;AACd,WAAO,OACL,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,MAAM,CAAC,CAC1D;;;;AAKP,QAAO;EACL,SAAS,YAAY;AACnB,OAAI,SACF,OAAM,IAAI,MAAM,4BAA4B;GAG9C,MAAM,QAAQ,UAAU,KAAK;AAC7B,OAAI,MACF,QAAO,WAAW,MAAM;AAG1B,OAAI,YAAY,QAAQ,QACtB,QAAO,WAAW,MAAM,aAAa,CAAC;AAGxC,UAAO,MAAM,IAAI,SAA+B,SAAS,WAAW;AAClE,YAAQ,KAAK;KAAE;KAAQ;KAAS,CAAC;KACjC;;EAEJ,SAAS,YAAY;AACnB,OAAI,SACF;AAGF,cAAW;AAEX,UAAO,QAAQ,SAAS,EACtB,SAAQ,OAAO,EAAE,uBAAO,IAAI,MAAM,4BAA4B,CAAC;GAGjE,MAAM,cAAc,CAAC,GAAG,UAAU;AAClC,aAAU,SAAS;AACnB,SAAM,QAAQ,IAAI,YAAY,KAAK,UAAU,aAAa,MAAM,CAAC,CAAC;;EAEpE,SAAS,OAAO,UAAU;AACxB,OAAI,SACF,OAAM,IAAI,MAAM,4BAA4B;GAI9C,MAAM,UADS,YAAY,SAAS,SAAS,QAAQ,QAAQ,GACpC;AAEzB,OAAI,WAAW,EACb;GAGF,MAAM,UAAU,MAAM,QAAQ,IAC5B,MAAM,KAAK,EAAE,QAAQ,SAAS,EAAE,YAAY,MAAM,aAAa,CAAC,CACjE;AAED,QAAK,MAAM,SAAS,QAClB,qBAAoB,MAAM;;EAG/B"}
|
|
@@ -213,6 +213,16 @@ const DEFAULT_PROVIDER_NAME = "codemode";
|
|
|
213
213
|
function assertValidNamespace(name) {
|
|
214
214
|
assertValidIdentifier(name, "provider namespace");
|
|
215
215
|
}
|
|
216
|
+
function cloneToolAnnotations(annotations) {
|
|
217
|
+
if (!annotations) return;
|
|
218
|
+
const clone = {};
|
|
219
|
+
if (annotations.title !== void 0) clone.title = annotations.title;
|
|
220
|
+
if (annotations.readOnlyHint !== void 0) clone.readOnlyHint = annotations.readOnlyHint;
|
|
221
|
+
if (annotations.destructiveHint !== void 0) clone.destructiveHint = annotations.destructiveHint;
|
|
222
|
+
if (annotations.idempotentHint !== void 0) clone.idempotentHint = annotations.idempotentHint;
|
|
223
|
+
if (annotations.openWorldHint !== void 0) clone.openWorldHint = annotations.openWorldHint;
|
|
224
|
+
return Object.keys(clone).length === 0 ? void 0 : clone;
|
|
225
|
+
}
|
|
216
226
|
function compileValidator(ajv, schema) {
|
|
217
227
|
return schema ? ajv.compile(schema) : void 0;
|
|
218
228
|
}
|
|
@@ -250,6 +260,7 @@ function resolveProvider(provider) {
|
|
|
250
260
|
const inputValidator = compileValidator(ajv, inputSchema);
|
|
251
261
|
const outputValidator = compileValidator(ajv, outputSchema);
|
|
252
262
|
resolvedTools[safeName] = {
|
|
263
|
+
annotations: cloneToolAnnotations(descriptor.annotations),
|
|
253
264
|
description: descriptor.description,
|
|
254
265
|
execute: async (input, context) => {
|
|
255
266
|
if (inputValidator && !inputValidator(input)) throw new ExecuteFailure("validation_error", formatValidationMessage(ajv, "input", originalName, inputValidator));
|
|
@@ -285,4 +296,4 @@ function resolveProvider(provider) {
|
|
|
285
296
|
|
|
286
297
|
//#endregion
|
|
287
298
|
export { renderNamespaceDeclaration as i, schemaToType as n, renderDocComment as r, resolveProvider as t };
|
|
288
|
-
//# sourceMappingURL=resolveProvider-
|
|
299
|
+
//# sourceMappingURL=resolveProvider-CMrXPuTx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveProvider-CMrXPuTx.js","names":["isRecord","lines: string[]","clone: ToolAnnotations","originalToSafeName: Record<string, string>","safeToOriginalName: Record<string, string>","resolvedTools: Record<string, ResolvedToolDescriptor>","typegenTools: Record<string, TypegenToolDescriptor>"],"sources":["../src/identifier.ts","../src/sanitize.ts","../src/schema/normalizeSchema.ts","../src/typegen/render.ts","../src/typegen/jsonSchema.ts","../src/provider/resolveProvider.ts"],"sourcesContent":["const RESERVED_WORDS = new Set([\n \"await\",\n \"break\",\n \"case\",\n \"catch\",\n \"class\",\n \"const\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"delete\",\n \"do\",\n \"else\",\n \"enum\",\n \"export\",\n \"extends\",\n \"false\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"import\",\n \"in\",\n \"instanceof\",\n \"new\",\n \"null\",\n \"return\",\n \"super\",\n \"switch\",\n \"this\",\n \"throw\",\n \"true\",\n \"try\",\n \"typeof\",\n \"var\",\n \"void\",\n \"while\",\n \"with\",\n \"yield\",\n]);\n\nconst UNDERSCORE_CHAR_CODE = 95;\n\nfunction trimEdgeUnderscores(value: string): string {\n let start = 0;\n let end = value.length;\n\n while (start < end && value.charCodeAt(start) === UNDERSCORE_CHAR_CODE) {\n start += 1;\n }\n\n while (end > start && value.charCodeAt(end - 1) === UNDERSCORE_CHAR_CODE) {\n end -= 1;\n }\n\n return value.slice(start, end);\n}\n\n/**\n * Returns whether the value is a valid JavaScript identifier.\n */\nexport function isValidIdentifier(value: string): boolean {\n return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(value);\n}\n\n/**\n * Returns whether the identifier is reserved in JavaScript source.\n */\nexport function isReservedWord(value: string): boolean {\n return RESERVED_WORDS.has(value);\n}\n\n/**\n * Throws when the value cannot be used as a bare JavaScript identifier.\n */\nexport function assertValidIdentifier(\n value: string,\n label = \"identifier\",\n): void {\n if (!isValidIdentifier(value) || isReservedWord(value)) {\n throw new Error(`Invalid ${label}: ${value}`);\n }\n}\n\n/**\n * Converts a raw identifier-like value into a safe JavaScript identifier.\n */\nexport function sanitizeIdentifier(value: string): string {\n const sanitized = value.trim().replace(/[^A-Za-z0-9_$]+/g, \"_\");\n\n const trimmed = trimEdgeUnderscores(sanitized);\n\n let safeName = trimmed.length > 0 ? trimmed : \"_\";\n\n if (/^[0-9]/.test(safeName)) {\n safeName = `_${safeName}`;\n }\n\n if (isReservedWord(safeName)) {\n safeName = `${safeName}_`;\n }\n\n return safeName;\n}\n\n/**\n * Renders the name as a bare identifier when possible, otherwise as a string literal.\n */\nexport function serializePropertyName(name: string): string {\n return isValidIdentifier(name) ? name : JSON.stringify(name);\n}\n","import { sanitizeIdentifier } from \"./identifier\";\n\n/**\n * Converts a raw tool name into a safe JavaScript identifier.\n */\nexport function sanitizeToolName(name: string): string {\n return sanitizeIdentifier(name);\n}\n","import * as zod from \"zod\";\nimport type { ZodRawShape, ZodTypeAny } from \"zod\";\n\nimport type { JsonSchema, ToolSchema } from \"../types\";\n\nconst z = \"z\" in zod && typeof zod.z === \"object\" ? zod.z : zod;\nconst toJsonSchema =\n (\"toJSONSchema\" in zod ? zod.toJSONSchema : undefined) ??\n (\"toJSONSchema\" in z ? z.toJSONSchema : undefined);\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction isZodSchema(value: unknown): value is ZodTypeAny {\n return isRecord(value) && typeof value.safeParse === \"function\";\n}\n\nfunction isZodRawShape(value: unknown): value is ZodRawShape {\n return (\n isRecord(value) &&\n Object.keys(value).length > 0 &&\n Object.values(value).every(isZodSchema)\n );\n}\n\nfunction normalizeZodSchema(schema: ZodTypeAny): JsonSchema {\n if (typeof toJsonSchema !== \"function\") {\n throw new Error(\"Installed zod package does not expose toJSONSchema\");\n }\n\n const jsonSchema = toJsonSchema(schema) as JsonSchema & {\n $schema?: string;\n };\n\n if (\"$schema\" in jsonSchema) {\n const { $schema: _ignored, ...rest } = jsonSchema;\n return rest;\n }\n\n return jsonSchema;\n}\n\n/**\n * Normalizes supported tool schema inputs to the JSON Schema form used internally.\n */\nexport function normalizeToolSchema(\n schema: ToolSchema | undefined,\n phase: \"input\" | \"output\",\n toolName: string,\n): JsonSchema | undefined {\n if (schema === undefined) {\n return undefined;\n }\n\n if (isZodSchema(schema)) {\n return normalizeZodSchema(schema);\n }\n\n if (isZodRawShape(schema)) {\n return normalizeZodSchema(z.object(schema));\n }\n\n if (isRecord(schema)) {\n return schema;\n }\n\n throw new Error(\n `Unsupported ${phase} schema for tool ${toolName}. Expected JSON Schema, a Zod schema, or an MCP-style Zod shape.`,\n );\n}\n","/**\n * Indents each line of the given string by a specified number of levels.\n */\nexport function indent(value: string, level = 1): string {\n return value\n .split(\"\\n\")\n .map((line) => `${\" \".repeat(level)}${line}`)\n .join(\"\\n\");\n}\n\n/**\n * Renders a short TSDoc-style block when documentation is available.\n */\nexport function renderDocComment(lines: string[]): string {\n if (lines.length === 0) {\n return \"\";\n }\n\n return [\"/**\", ...lines.map((line) => ` * ${line}`), \" */\"].join(\"\\n\");\n}\n\n/**\n * Renders a namespace declaration with optional members.\n */\nexport function renderNamespaceDeclaration(\n name: string,\n members: string[],\n): string {\n if (members.length === 0) {\n return `declare namespace ${name} {}`;\n }\n\n return `declare namespace ${name} {\\n${indent(members.join(\"\\n\\n\"))}\\n}`;\n}\n","import { isValidIdentifier, serializePropertyName } from \"../identifier\";\nimport type { JsonSchema, TypegenToolDescriptor } from \"../types\";\nimport { indent, renderDocComment, renderNamespaceDeclaration } from \"./render\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nexport { indent } from \"./render\";\n\n/**\n * Converts a supported JSON Schema fragment into a TypeScript type expression.\n */\nexport function schemaToType(\n schema: JsonSchema | undefined,\n level = 0,\n): string {\n if (!schema) {\n return \"unknown\";\n }\n\n if (\n \"allOf\" in schema ||\n \"anyOf\" in schema ||\n \"oneOf\" in schema ||\n \"$ref\" in schema ||\n Array.isArray(schema.type)\n ) {\n return \"unknown\";\n }\n\n switch (schema.type) {\n case \"string\":\n return \"string\";\n case \"number\":\n case \"integer\":\n return \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"null\":\n return \"null\";\n case \"array\": {\n const itemType = schemaToType(\n isRecord(schema.items) ? (schema.items as JsonSchema) : undefined,\n level + 1,\n );\n\n if (isValidIdentifier(itemType)) {\n return `${itemType}[]`;\n }\n\n return `Array<${itemType}>`;\n }\n case \"object\": {\n const properties = isRecord(schema.properties) ? schema.properties : {};\n const required = new Set(\n Array.isArray(schema.required)\n ? schema.required.filter(\n (value): value is string => typeof value === \"string\",\n )\n : [],\n );\n const entries = Object.entries(properties);\n\n if (entries.length === 0) {\n return \"Record<string, unknown>\";\n }\n\n const lines = entries.map(([name, propertySchema]) => {\n const propertyType = schemaToType(\n isRecord(propertySchema) ? (propertySchema as JsonSchema) : undefined,\n level + 1,\n );\n const optionalToken = required.has(name) ? \"\" : \"?\";\n return `${serializePropertyName(name)}${optionalToken}: ${propertyType};`;\n });\n\n return `{\\n${indent(lines.join(\"\\n\"), level + 1)}\\n${\" \".repeat(level)}}`;\n }\n default:\n return \"unknown\";\n }\n}\n\nfunction formatToolDeclaration(\n name: string,\n tool: TypegenToolDescriptor,\n): string {\n const lines: string[] = [];\n const comment = tool.description ? renderDocComment([tool.description]) : \"\";\n if (comment) {\n lines.push(comment);\n }\n\n const inputType = schemaToType(tool.inputSchema);\n const outputType = schemaToType(tool.outputSchema);\n lines.push(`function ${name}(input: ${inputType}): Promise<${outputType}>;`);\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Generates a namespace declaration for a provider's tool schemas.\n */\nexport function generateTypesFromJsonSchema(\n providerName: string,\n tools: Record<string, TypegenToolDescriptor>,\n): string {\n return renderNamespaceDeclaration(\n providerName,\n Object.entries(tools).map(([name, tool]) =>\n formatToolDeclaration(name, tool),\n ),\n );\n}\n","import Ajv from \"ajv\";\n\nimport {\n ExecuteFailure,\n isExecuteFailure,\n isJsonSerializable,\n} from \"../errors\";\nimport { assertValidIdentifier } from \"../identifier\";\nimport { sanitizeToolName } from \"../sanitize\";\nimport { normalizeToolSchema } from \"../schema/normalizeSchema\";\nimport { generateTypesFromJsonSchema } from \"../typegen/jsonSchema\";\nimport type {\n JsonSchema,\n ResolvedToolDescriptor,\n ResolvedToolProvider,\n ToolAnnotations,\n ToolExecutionContext,\n ToolProvider,\n TypegenToolDescriptor,\n} from \"../types\";\n\nconst DEFAULT_PROVIDER_NAME = \"codemode\";\ntype AjvInstance = InstanceType<typeof Ajv>;\ntype AjvValidateFunction = ReturnType<AjvInstance[\"compile\"]>;\n\nfunction assertValidNamespace(name: string): void {\n assertValidIdentifier(name, \"provider namespace\");\n}\n\nfunction cloneToolAnnotations(\n annotations: ToolAnnotations | undefined,\n): ToolAnnotations | undefined {\n if (!annotations) {\n return undefined;\n }\n\n const clone: ToolAnnotations = {};\n\n if (annotations.title !== undefined) {\n clone.title = annotations.title;\n }\n\n if (annotations.readOnlyHint !== undefined) {\n clone.readOnlyHint = annotations.readOnlyHint;\n }\n\n if (annotations.destructiveHint !== undefined) {\n clone.destructiveHint = annotations.destructiveHint;\n }\n\n if (annotations.idempotentHint !== undefined) {\n clone.idempotentHint = annotations.idempotentHint;\n }\n\n if (annotations.openWorldHint !== undefined) {\n clone.openWorldHint = annotations.openWorldHint;\n }\n\n return Object.keys(clone).length === 0 ? undefined : clone;\n}\n\nfunction compileValidator(\n ajv: AjvInstance,\n schema: JsonSchema | undefined,\n): AjvValidateFunction | undefined {\n return schema ? ajv.compile(schema as object) : undefined;\n}\n\nfunction formatValidationMessage(\n ajv: AjvInstance,\n phase: \"input\" | \"output\",\n toolName: string,\n validator: AjvValidateFunction,\n): string {\n return `Invalid ${phase} for tool ${toolName}: ${ajv.errorsText(validator.errors)}`;\n}\n\n/**\n * Resolves a tool provider into the validated, sanitized shape consumed by executors.\n */\nexport function resolveProvider(provider: ToolProvider): ResolvedToolProvider {\n const name = provider.name ?? DEFAULT_PROVIDER_NAME;\n assertValidNamespace(name);\n\n // Keep provider schemas permissive for generated schemas and extension keywords.\n const ajv = new Ajv({\n allErrors: true,\n strict: false,\n });\n\n const originalToSafeName: Record<string, string> = {};\n const safeToOriginalName: Record<string, string> = {};\n const usedSafeNames = new Set<string>();\n const resolvedTools: Record<string, ResolvedToolDescriptor> = {};\n const typegenTools: Record<string, TypegenToolDescriptor> = {};\n\n for (const [originalName, descriptor] of Object.entries(provider.tools)) {\n const baseSafeName = sanitizeToolName(originalName);\n let safeName = baseSafeName;\n let suffix = 2;\n\n while (usedSafeNames.has(safeName)) {\n safeName = `${baseSafeName}__${suffix}`;\n suffix += 1;\n }\n\n usedSafeNames.add(safeName);\n originalToSafeName[originalName] = safeName;\n safeToOriginalName[safeName] = originalName;\n\n const inputSchema = normalizeToolSchema(\n descriptor.inputSchema,\n \"input\",\n originalName,\n );\n const outputSchema = normalizeToolSchema(\n descriptor.outputSchema,\n \"output\",\n originalName,\n );\n const inputValidator = compileValidator(ajv, inputSchema);\n const outputValidator = compileValidator(ajv, outputSchema);\n\n resolvedTools[safeName] = {\n annotations: cloneToolAnnotations(descriptor.annotations),\n description: descriptor.description,\n execute: async (\n input: unknown,\n context: ToolExecutionContext,\n ): Promise<unknown> => {\n if (inputValidator && !inputValidator(input)) {\n throw new ExecuteFailure(\n \"validation_error\",\n formatValidationMessage(ajv, \"input\", originalName, inputValidator),\n );\n }\n\n try {\n const result = await descriptor.execute(input, context);\n\n if (!isJsonSerializable(result)) {\n throw new ExecuteFailure(\n \"serialization_error\",\n `Tool ${originalName} returned a non-serializable value`,\n );\n }\n\n if (outputValidator && !outputValidator(result)) {\n throw new ExecuteFailure(\n \"validation_error\",\n formatValidationMessage(\n ajv,\n \"output\",\n originalName,\n outputValidator,\n ),\n );\n }\n\n return result;\n } catch (error) {\n if (isExecuteFailure(error)) {\n throw error;\n }\n\n throw new ExecuteFailure(\n \"tool_error\",\n error instanceof Error\n ? error.message\n : `Tool ${originalName} failed`,\n );\n }\n },\n inputSchema,\n originalName,\n outputSchema,\n safeName,\n };\n\n typegenTools[safeName] = {\n description: descriptor.description,\n inputSchema,\n outputSchema,\n };\n }\n\n return {\n name,\n originalToSafeName,\n safeToOriginalName,\n tools: resolvedTools,\n types: provider.types ?? generateTypesFromJsonSchema(name, typegenTools),\n };\n}\n"],"mappings":"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"}
|
|
@@ -242,6 +242,16 @@ const DEFAULT_PROVIDER_NAME = "codemode";
|
|
|
242
242
|
function assertValidNamespace(name) {
|
|
243
243
|
assertValidIdentifier(name, "provider namespace");
|
|
244
244
|
}
|
|
245
|
+
function cloneToolAnnotations(annotations) {
|
|
246
|
+
if (!annotations) return;
|
|
247
|
+
const clone = {};
|
|
248
|
+
if (annotations.title !== void 0) clone.title = annotations.title;
|
|
249
|
+
if (annotations.readOnlyHint !== void 0) clone.readOnlyHint = annotations.readOnlyHint;
|
|
250
|
+
if (annotations.destructiveHint !== void 0) clone.destructiveHint = annotations.destructiveHint;
|
|
251
|
+
if (annotations.idempotentHint !== void 0) clone.idempotentHint = annotations.idempotentHint;
|
|
252
|
+
if (annotations.openWorldHint !== void 0) clone.openWorldHint = annotations.openWorldHint;
|
|
253
|
+
return Object.keys(clone).length === 0 ? void 0 : clone;
|
|
254
|
+
}
|
|
245
255
|
function compileValidator(ajv$1, schema) {
|
|
246
256
|
return schema ? ajv$1.compile(schema) : void 0;
|
|
247
257
|
}
|
|
@@ -279,6 +289,7 @@ function resolveProvider(provider) {
|
|
|
279
289
|
const inputValidator = compileValidator(ajv$1, inputSchema);
|
|
280
290
|
const outputValidator = compileValidator(ajv$1, outputSchema);
|
|
281
291
|
resolvedTools[safeName] = {
|
|
292
|
+
annotations: cloneToolAnnotations(descriptor.annotations),
|
|
282
293
|
description: descriptor.description,
|
|
283
294
|
execute: async (input, context) => {
|
|
284
295
|
if (inputValidator && !inputValidator(input)) throw new require_errors.ExecuteFailure("validation_error", formatValidationMessage(ajv$1, "input", originalName, inputValidator));
|
|
@@ -343,4 +354,4 @@ Object.defineProperty(exports, 'schemaToType', {
|
|
|
343
354
|
return schemaToType;
|
|
344
355
|
}
|
|
345
356
|
});
|
|
346
|
-
//# sourceMappingURL=resolveProvider-
|
|
357
|
+
//# sourceMappingURL=resolveProvider-DFAg6No5.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveProvider-DFAg6No5.cjs","names":["isRecord","lines: string[]","clone: ToolAnnotations","ajv","Ajv","originalToSafeName: Record<string, string>","safeToOriginalName: Record<string, string>","resolvedTools: Record<string, ResolvedToolDescriptor>","typegenTools: Record<string, TypegenToolDescriptor>","ExecuteFailure","isJsonSerializable","isExecuteFailure"],"sources":["../src/identifier.ts","../src/sanitize.ts","../src/schema/normalizeSchema.ts","../src/typegen/render.ts","../src/typegen/jsonSchema.ts","../src/provider/resolveProvider.ts"],"sourcesContent":["const RESERVED_WORDS = new Set([\n \"await\",\n \"break\",\n \"case\",\n \"catch\",\n \"class\",\n \"const\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"delete\",\n \"do\",\n \"else\",\n \"enum\",\n \"export\",\n \"extends\",\n \"false\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"import\",\n \"in\",\n \"instanceof\",\n \"new\",\n \"null\",\n \"return\",\n \"super\",\n \"switch\",\n \"this\",\n \"throw\",\n \"true\",\n \"try\",\n \"typeof\",\n \"var\",\n \"void\",\n \"while\",\n \"with\",\n \"yield\",\n]);\n\nconst UNDERSCORE_CHAR_CODE = 95;\n\nfunction trimEdgeUnderscores(value: string): string {\n let start = 0;\n let end = value.length;\n\n while (start < end && value.charCodeAt(start) === UNDERSCORE_CHAR_CODE) {\n start += 1;\n }\n\n while (end > start && value.charCodeAt(end - 1) === UNDERSCORE_CHAR_CODE) {\n end -= 1;\n }\n\n return value.slice(start, end);\n}\n\n/**\n * Returns whether the value is a valid JavaScript identifier.\n */\nexport function isValidIdentifier(value: string): boolean {\n return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(value);\n}\n\n/**\n * Returns whether the identifier is reserved in JavaScript source.\n */\nexport function isReservedWord(value: string): boolean {\n return RESERVED_WORDS.has(value);\n}\n\n/**\n * Throws when the value cannot be used as a bare JavaScript identifier.\n */\nexport function assertValidIdentifier(\n value: string,\n label = \"identifier\",\n): void {\n if (!isValidIdentifier(value) || isReservedWord(value)) {\n throw new Error(`Invalid ${label}: ${value}`);\n }\n}\n\n/**\n * Converts a raw identifier-like value into a safe JavaScript identifier.\n */\nexport function sanitizeIdentifier(value: string): string {\n const sanitized = value.trim().replace(/[^A-Za-z0-9_$]+/g, \"_\");\n\n const trimmed = trimEdgeUnderscores(sanitized);\n\n let safeName = trimmed.length > 0 ? trimmed : \"_\";\n\n if (/^[0-9]/.test(safeName)) {\n safeName = `_${safeName}`;\n }\n\n if (isReservedWord(safeName)) {\n safeName = `${safeName}_`;\n }\n\n return safeName;\n}\n\n/**\n * Renders the name as a bare identifier when possible, otherwise as a string literal.\n */\nexport function serializePropertyName(name: string): string {\n return isValidIdentifier(name) ? name : JSON.stringify(name);\n}\n","import { sanitizeIdentifier } from \"./identifier\";\n\n/**\n * Converts a raw tool name into a safe JavaScript identifier.\n */\nexport function sanitizeToolName(name: string): string {\n return sanitizeIdentifier(name);\n}\n","import * as zod from \"zod\";\nimport type { ZodRawShape, ZodTypeAny } from \"zod\";\n\nimport type { JsonSchema, ToolSchema } from \"../types\";\n\nconst z = \"z\" in zod && typeof zod.z === \"object\" ? zod.z : zod;\nconst toJsonSchema =\n (\"toJSONSchema\" in zod ? zod.toJSONSchema : undefined) ??\n (\"toJSONSchema\" in z ? z.toJSONSchema : undefined);\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction isZodSchema(value: unknown): value is ZodTypeAny {\n return isRecord(value) && typeof value.safeParse === \"function\";\n}\n\nfunction isZodRawShape(value: unknown): value is ZodRawShape {\n return (\n isRecord(value) &&\n Object.keys(value).length > 0 &&\n Object.values(value).every(isZodSchema)\n );\n}\n\nfunction normalizeZodSchema(schema: ZodTypeAny): JsonSchema {\n if (typeof toJsonSchema !== \"function\") {\n throw new Error(\"Installed zod package does not expose toJSONSchema\");\n }\n\n const jsonSchema = toJsonSchema(schema) as JsonSchema & {\n $schema?: string;\n };\n\n if (\"$schema\" in jsonSchema) {\n const { $schema: _ignored, ...rest } = jsonSchema;\n return rest;\n }\n\n return jsonSchema;\n}\n\n/**\n * Normalizes supported tool schema inputs to the JSON Schema form used internally.\n */\nexport function normalizeToolSchema(\n schema: ToolSchema | undefined,\n phase: \"input\" | \"output\",\n toolName: string,\n): JsonSchema | undefined {\n if (schema === undefined) {\n return undefined;\n }\n\n if (isZodSchema(schema)) {\n return normalizeZodSchema(schema);\n }\n\n if (isZodRawShape(schema)) {\n return normalizeZodSchema(z.object(schema));\n }\n\n if (isRecord(schema)) {\n return schema;\n }\n\n throw new Error(\n `Unsupported ${phase} schema for tool ${toolName}. Expected JSON Schema, a Zod schema, or an MCP-style Zod shape.`,\n );\n}\n","/**\n * Indents each line of the given string by a specified number of levels.\n */\nexport function indent(value: string, level = 1): string {\n return value\n .split(\"\\n\")\n .map((line) => `${\" \".repeat(level)}${line}`)\n .join(\"\\n\");\n}\n\n/**\n * Renders a short TSDoc-style block when documentation is available.\n */\nexport function renderDocComment(lines: string[]): string {\n if (lines.length === 0) {\n return \"\";\n }\n\n return [\"/**\", ...lines.map((line) => ` * ${line}`), \" */\"].join(\"\\n\");\n}\n\n/**\n * Renders a namespace declaration with optional members.\n */\nexport function renderNamespaceDeclaration(\n name: string,\n members: string[],\n): string {\n if (members.length === 0) {\n return `declare namespace ${name} {}`;\n }\n\n return `declare namespace ${name} {\\n${indent(members.join(\"\\n\\n\"))}\\n}`;\n}\n","import { isValidIdentifier, serializePropertyName } from \"../identifier\";\nimport type { JsonSchema, TypegenToolDescriptor } from \"../types\";\nimport { indent, renderDocComment, renderNamespaceDeclaration } from \"./render\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nexport { indent } from \"./render\";\n\n/**\n * Converts a supported JSON Schema fragment into a TypeScript type expression.\n */\nexport function schemaToType(\n schema: JsonSchema | undefined,\n level = 0,\n): string {\n if (!schema) {\n return \"unknown\";\n }\n\n if (\n \"allOf\" in schema ||\n \"anyOf\" in schema ||\n \"oneOf\" in schema ||\n \"$ref\" in schema ||\n Array.isArray(schema.type)\n ) {\n return \"unknown\";\n }\n\n switch (schema.type) {\n case \"string\":\n return \"string\";\n case \"number\":\n case \"integer\":\n return \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"null\":\n return \"null\";\n case \"array\": {\n const itemType = schemaToType(\n isRecord(schema.items) ? (schema.items as JsonSchema) : undefined,\n level + 1,\n );\n\n if (isValidIdentifier(itemType)) {\n return `${itemType}[]`;\n }\n\n return `Array<${itemType}>`;\n }\n case \"object\": {\n const properties = isRecord(schema.properties) ? schema.properties : {};\n const required = new Set(\n Array.isArray(schema.required)\n ? schema.required.filter(\n (value): value is string => typeof value === \"string\",\n )\n : [],\n );\n const entries = Object.entries(properties);\n\n if (entries.length === 0) {\n return \"Record<string, unknown>\";\n }\n\n const lines = entries.map(([name, propertySchema]) => {\n const propertyType = schemaToType(\n isRecord(propertySchema) ? (propertySchema as JsonSchema) : undefined,\n level + 1,\n );\n const optionalToken = required.has(name) ? \"\" : \"?\";\n return `${serializePropertyName(name)}${optionalToken}: ${propertyType};`;\n });\n\n return `{\\n${indent(lines.join(\"\\n\"), level + 1)}\\n${\" \".repeat(level)}}`;\n }\n default:\n return \"unknown\";\n }\n}\n\nfunction formatToolDeclaration(\n name: string,\n tool: TypegenToolDescriptor,\n): string {\n const lines: string[] = [];\n const comment = tool.description ? renderDocComment([tool.description]) : \"\";\n if (comment) {\n lines.push(comment);\n }\n\n const inputType = schemaToType(tool.inputSchema);\n const outputType = schemaToType(tool.outputSchema);\n lines.push(`function ${name}(input: ${inputType}): Promise<${outputType}>;`);\n\n return lines.join(\"\\n\");\n}\n\n/**\n * Generates a namespace declaration for a provider's tool schemas.\n */\nexport function generateTypesFromJsonSchema(\n providerName: string,\n tools: Record<string, TypegenToolDescriptor>,\n): string {\n return renderNamespaceDeclaration(\n providerName,\n Object.entries(tools).map(([name, tool]) =>\n formatToolDeclaration(name, tool),\n ),\n );\n}\n","import Ajv from \"ajv\";\n\nimport {\n ExecuteFailure,\n isExecuteFailure,\n isJsonSerializable,\n} from \"../errors\";\nimport { assertValidIdentifier } from \"../identifier\";\nimport { sanitizeToolName } from \"../sanitize\";\nimport { normalizeToolSchema } from \"../schema/normalizeSchema\";\nimport { generateTypesFromJsonSchema } from \"../typegen/jsonSchema\";\nimport type {\n JsonSchema,\n ResolvedToolDescriptor,\n ResolvedToolProvider,\n ToolAnnotations,\n ToolExecutionContext,\n ToolProvider,\n TypegenToolDescriptor,\n} from \"../types\";\n\nconst DEFAULT_PROVIDER_NAME = \"codemode\";\ntype AjvInstance = InstanceType<typeof Ajv>;\ntype AjvValidateFunction = ReturnType<AjvInstance[\"compile\"]>;\n\nfunction assertValidNamespace(name: string): void {\n assertValidIdentifier(name, \"provider namespace\");\n}\n\nfunction cloneToolAnnotations(\n annotations: ToolAnnotations | undefined,\n): ToolAnnotations | undefined {\n if (!annotations) {\n return undefined;\n }\n\n const clone: ToolAnnotations = {};\n\n if (annotations.title !== undefined) {\n clone.title = annotations.title;\n }\n\n if (annotations.readOnlyHint !== undefined) {\n clone.readOnlyHint = annotations.readOnlyHint;\n }\n\n if (annotations.destructiveHint !== undefined) {\n clone.destructiveHint = annotations.destructiveHint;\n }\n\n if (annotations.idempotentHint !== undefined) {\n clone.idempotentHint = annotations.idempotentHint;\n }\n\n if (annotations.openWorldHint !== undefined) {\n clone.openWorldHint = annotations.openWorldHint;\n }\n\n return Object.keys(clone).length === 0 ? undefined : clone;\n}\n\nfunction compileValidator(\n ajv: AjvInstance,\n schema: JsonSchema | undefined,\n): AjvValidateFunction | undefined {\n return schema ? ajv.compile(schema as object) : undefined;\n}\n\nfunction formatValidationMessage(\n ajv: AjvInstance,\n phase: \"input\" | \"output\",\n toolName: string,\n validator: AjvValidateFunction,\n): string {\n return `Invalid ${phase} for tool ${toolName}: ${ajv.errorsText(validator.errors)}`;\n}\n\n/**\n * Resolves a tool provider into the validated, sanitized shape consumed by executors.\n */\nexport function resolveProvider(provider: ToolProvider): ResolvedToolProvider {\n const name = provider.name ?? DEFAULT_PROVIDER_NAME;\n assertValidNamespace(name);\n\n // Keep provider schemas permissive for generated schemas and extension keywords.\n const ajv = new Ajv({\n allErrors: true,\n strict: false,\n });\n\n const originalToSafeName: Record<string, string> = {};\n const safeToOriginalName: Record<string, string> = {};\n const usedSafeNames = new Set<string>();\n const resolvedTools: Record<string, ResolvedToolDescriptor> = {};\n const typegenTools: Record<string, TypegenToolDescriptor> = {};\n\n for (const [originalName, descriptor] of Object.entries(provider.tools)) {\n const baseSafeName = sanitizeToolName(originalName);\n let safeName = baseSafeName;\n let suffix = 2;\n\n while (usedSafeNames.has(safeName)) {\n safeName = `${baseSafeName}__${suffix}`;\n suffix += 1;\n }\n\n usedSafeNames.add(safeName);\n originalToSafeName[originalName] = safeName;\n safeToOriginalName[safeName] = originalName;\n\n const inputSchema = normalizeToolSchema(\n descriptor.inputSchema,\n \"input\",\n originalName,\n );\n const outputSchema = normalizeToolSchema(\n descriptor.outputSchema,\n \"output\",\n originalName,\n );\n const inputValidator = compileValidator(ajv, inputSchema);\n const outputValidator = compileValidator(ajv, outputSchema);\n\n resolvedTools[safeName] = {\n annotations: cloneToolAnnotations(descriptor.annotations),\n description: descriptor.description,\n execute: async (\n input: unknown,\n context: ToolExecutionContext,\n ): Promise<unknown> => {\n if (inputValidator && !inputValidator(input)) {\n throw new ExecuteFailure(\n \"validation_error\",\n formatValidationMessage(ajv, \"input\", originalName, inputValidator),\n );\n }\n\n try {\n const result = await descriptor.execute(input, context);\n\n if (!isJsonSerializable(result)) {\n throw new ExecuteFailure(\n \"serialization_error\",\n `Tool ${originalName} returned a non-serializable value`,\n );\n }\n\n if (outputValidator && !outputValidator(result)) {\n throw new ExecuteFailure(\n \"validation_error\",\n formatValidationMessage(\n ajv,\n \"output\",\n originalName,\n outputValidator,\n ),\n );\n }\n\n return result;\n } catch (error) {\n if (isExecuteFailure(error)) {\n throw error;\n }\n\n throw new ExecuteFailure(\n \"tool_error\",\n error instanceof Error\n ? error.message\n : `Tool ${originalName} failed`,\n );\n }\n },\n inputSchema,\n originalName,\n outputSchema,\n safeName,\n };\n\n typegenTools[safeName] = {\n description: descriptor.description,\n inputSchema,\n outputSchema,\n };\n }\n\n return {\n name,\n originalToSafeName,\n safeToOriginalName,\n tools: resolvedTools,\n types: provider.types ?? generateTypesFromJsonSchema(name, typegenTools),\n };\n}\n"],"mappings":"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"}
|
|
@@ -126,6 +126,7 @@ function extractProviderManifests(providers) {
|
|
|
126
126
|
return providers.map((provider) => ({
|
|
127
127
|
name: provider.name,
|
|
128
128
|
tools: Object.fromEntries(Object.entries(provider.tools).map(([safeToolName, descriptor]) => [safeToolName, {
|
|
129
|
+
annotations: descriptor.annotations,
|
|
129
130
|
description: descriptor.description,
|
|
130
131
|
originalName: descriptor.originalName,
|
|
131
132
|
safeName: descriptor.safeName
|
|
@@ -232,4 +233,4 @@ Object.defineProperty(exports, 'truncateLogs', {
|
|
|
232
233
|
return truncateLogs;
|
|
233
234
|
}
|
|
234
235
|
});
|
|
235
|
-
//# sourceMappingURL=runner-
|
|
236
|
+
//# sourceMappingURL=runner-BEY9nWc7.cjs.map
|