@evalops/maestro 0.10.40 → 0.10.42
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/dist/agent/transport/reusable-tool-results.d.ts +3 -1
- package/dist/agent/transport/reusable-tool-results.d.ts.map +1 -1
- package/dist/agent/transport/reusable-tool-results.js +32 -4
- package/dist/agent/transport/reusable-tool-results.js.map +1 -1
- package/dist/agent/transport/tool-execution.d.ts.map +1 -1
- package/dist/agent/transport/tool-execution.js +38 -14
- package/dist/agent/transport/tool-execution.js.map +1 -1
- package/dist/agent/transport.d.ts.map +1 -1
- package/dist/agent/transport.js +6 -26
- package/dist/agent/transport.js.map +1 -1
- package/dist/cli.js +70 -46
- package/dist/node_modules/@evalops/contracts/package.json +1 -1
- package/dist/node_modules/@evalops/tui/package.json +1 -1
- package/dist/utils/document-extractor.d.ts.map +1 -1
- package/dist/utils/document-extractor.js +8 -1
- package/dist/utils/document-extractor.js.map +1 -1
- package/dist/version.json +2 -2
- package/package.json +1 -1
|
@@ -18,7 +18,9 @@ export type ToolMetadataCache = {
|
|
|
18
18
|
export declare function getReusableToolRegistrySignature(tools: readonly AgentTool[]): string;
|
|
19
19
|
export declare function createToolMetadataCache(tools: AgentTool[], reusableToolResultCwd?: string): ToolMetadataCache;
|
|
20
20
|
export declare function getReusableToolResultCacheKey(toolCall: ToolCall, tools: ToolDefinitionLookup | ToolMetadataCache): string | undefined;
|
|
21
|
-
export declare function cloneToolOutcomeForCall(outcome: ToolExecutionOutcome, toolCall: ToolCall, timestamp: number
|
|
21
|
+
export declare function cloneToolOutcomeForCall(outcome: ToolExecutionOutcome, toolCall: ToolCall, timestamp: number, metadata?: {
|
|
22
|
+
approvalRequestId?: string;
|
|
23
|
+
}): ToolExecutionOutcome;
|
|
22
24
|
export declare function resolvePlatformToolExecutionBridge(option: PlatformToolExecutionBridge | false | undefined): PlatformToolExecutionBridge | undefined;
|
|
23
25
|
export declare function recordReusableToolExecutionBridgeOutput({ bridge, plan, outcome, durationMs, signal, }: {
|
|
24
26
|
bridge?: PlatformToolExecutionBridge;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reusable-tool-results.d.ts","sourceRoot":"","sources":["../../../src/agent/transport/reusable-tool-results.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAEN,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,EAG5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACX,gBAAgB,EAChB,oBAAoB,EACpB,MAAM,wBAAwB,CAAC;AAIhC,MAAM,MAAM,uBAAuB,GAAG;IACrC,OAAO,EAAE,iBAAiB,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC/C,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AA2DF,wBAAgB,iCAAiC,CAChD,GAAG,EAAE,MAAM,GACT,MAAM,GAAG,SAAS,CA8BpB;AAmJD,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS,EAAE,CAAC;AAEhF,MAAM,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACrD,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;CAC7C,CAAC;AAwBF,wBAAgB,gCAAgC,CAC/C,KAAK,EAAE,SAAS,SAAS,EAAE,GACzB,MAAM,CA8BR;AAED,wBAAgB,uBAAuB,CACtC,KAAK,EAAE,SAAS,EAAE,EAClB,qBAAqB,SAAgB,GACnC,iBAAiB,CAWnB;AAYD,wBAAgB,6BAA6B,CAC5C,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,oBAAoB,GAAG,iBAAiB,GAC7C,MAAM,GAAG,SAAS,CA6BpB;
|
|
1
|
+
{"version":3,"file":"reusable-tool-results.d.ts","sourceRoot":"","sources":["../../../src/agent/transport/reusable-tool-results.ts"],"names":[],"mappings":"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"}
|
|
@@ -298,16 +298,42 @@ function cloneToolResultForCache(message) {
|
|
|
298
298
|
content: message.content.map((item) => ({ ...item })),
|
|
299
299
|
};
|
|
300
300
|
}
|
|
301
|
-
|
|
301
|
+
function localToolExecutionIdForCall(toolCall) {
|
|
302
|
+
return `local-tool-exec-${toolCall.id}`;
|
|
303
|
+
}
|
|
304
|
+
function attachToolExecutionMetadata(message, metadata, options = {}) {
|
|
305
|
+
const details = message.details && typeof message.details === "object"
|
|
306
|
+
? { ...message.details }
|
|
307
|
+
: {};
|
|
308
|
+
if (metadata.toolExecutionId) {
|
|
309
|
+
details.toolExecutionId = metadata.toolExecutionId;
|
|
310
|
+
}
|
|
311
|
+
if (metadata.approvalRequestId) {
|
|
312
|
+
details.approvalRequestId = metadata.approvalRequestId;
|
|
313
|
+
}
|
|
314
|
+
else if (options.replaceApprovalRequestId) {
|
|
315
|
+
delete details.approvalRequestId;
|
|
316
|
+
}
|
|
302
317
|
return {
|
|
303
|
-
message
|
|
318
|
+
...message,
|
|
319
|
+
details: details,
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
export function cloneToolOutcomeForCall(outcome, toolCall, timestamp, metadata = {}) {
|
|
323
|
+
const toolExecutionId = localToolExecutionIdForCall(toolCall);
|
|
324
|
+
return {
|
|
325
|
+
message: attachToolExecutionMetadata({
|
|
304
326
|
...outcome.message,
|
|
305
327
|
toolCallId: toolCall.id,
|
|
306
328
|
toolName: toolCall.name,
|
|
307
329
|
content: outcome.message.content.map((item) => ({ ...item })),
|
|
308
330
|
timestamp,
|
|
309
|
-
},
|
|
331
|
+
}, { toolExecutionId, approvalRequestId: metadata.approvalRequestId }, { replaceApprovalRequestId: true }),
|
|
310
332
|
isError: outcome.isError,
|
|
333
|
+
toolExecutionId,
|
|
334
|
+
...(metadata.approvalRequestId
|
|
335
|
+
? { approvalRequestId: metadata.approvalRequestId }
|
|
336
|
+
: {}),
|
|
311
337
|
};
|
|
312
338
|
}
|
|
313
339
|
export function resolvePlatformToolExecutionBridge(option) {
|
|
@@ -326,9 +352,11 @@ export async function recordReusableToolExecutionBridgeOutput({ bridge, plan, ou
|
|
|
326
352
|
const governedOutput = plan.kind === "governed"
|
|
327
353
|
? await bridge.recordGovernedOutput(plan, outcome.message, durationMs, signal)
|
|
328
354
|
: undefined;
|
|
355
|
+
const metadata = buildObservedResultMetadata(plan, observed ?? governedOutput);
|
|
329
356
|
return {
|
|
330
357
|
...outcome,
|
|
331
|
-
...
|
|
358
|
+
...metadata,
|
|
359
|
+
message: attachToolExecutionMetadata(outcome.message, metadata),
|
|
332
360
|
};
|
|
333
361
|
}
|
|
334
362
|
export function hasReusableToolResultState(cacheKey, cache, pending, policyCheckedKeys, pendingSafetyChecks) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reusable-tool-results.js","sourceRoot":"","sources":["../../../src/agent/transport/reusable-tool-results.ts"],"names":[],"mappings":"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","sourcesContent":["import { execFileSync } from \"node:child_process\";\nimport { createHash } from \"node:crypto\";\nimport { readFileSync } from \"node:fs\";\nimport { resolve as resolvePath } from \"node:path\";\nimport { isReadOnlyTool } from \"../../tools/parallel-execution.js\";\nimport type { AgentTool, ToolCall, ToolResultMessage } from \"../types.js\";\nimport { stableStringify } from \"./stable-stringify.js\";\nimport {\n\ttype ObserveToolExecutionPlan,\n\ttype PlatformToolExecutionBridge,\n\ttype ToolExecutionBridgePlan,\n\tbuildObservedResultMetadata,\n\tgetDefaultPlatformToolExecutionBridge,\n} from \"./tool-execution-bridge.js\";\nimport type {\n\tPendingExecution,\n\tToolExecutionOutcome,\n} from \"./tool-update-queue.js\";\n\nconst REUSABLE_TOOL_RESULT_GIT_SNAPSHOT_TIMEOUT_MS = 5_000;\n\nexport type ReusableToolResultEntry = {\n\tmessage: ToolResultMessage;\n};\n\nexport type ReusableToolResultCacheGeneration = {\n\tvalue: number;\n};\n\nfunction hashReusableToolResultSnapshot(value: string | Buffer): string {\n\treturn createHash(\"sha256\").update(value).digest(\"hex\");\n}\n\nfunction readGitSnapshotBuffer(cwd: string, args: string[]): Buffer {\n\treturn execFileSync(\"git\", args, {\n\t\tcwd,\n\t\tstdio: [\"ignore\", \"pipe\", \"ignore\"],\n\t\ttimeout: REUSABLE_TOOL_RESULT_GIT_SNAPSHOT_TIMEOUT_MS,\n\t});\n}\n\nfunction readGitSnapshotPart(cwd: string, args: string[]): string {\n\treturn readGitSnapshotBuffer(cwd, args).toString(\"utf8\").trim();\n}\n\nfunction hashGitSnapshotPart(cwd: string, args: string[]): string {\n\treturn hashReusableToolResultSnapshot(readGitSnapshotBuffer(cwd, args));\n}\n\nfunction hashUntrackedGitFiles(root: string): string {\n\tconst files = readGitSnapshotBuffer(root, [\n\t\t\"ls-files\",\n\t\t\"--others\",\n\t\t\"--exclude-standard\",\n\t\t\"-z\",\n\t])\n\t\t.toString(\"utf8\")\n\t\t.split(\"\\0\")\n\t\t.filter(Boolean)\n\t\t.sort();\n\tconst hash = createHash(\"sha256\");\n\tfor (const file of files) {\n\t\thash.update(file);\n\t\thash.update(\"\\0\");\n\t\thash.update(readFileSync(resolvePath(root, file)));\n\t\thash.update(\"\\0\");\n\t}\n\treturn hash.digest(\"hex\");\n}\n\nfunction hasDirtyGitSubmodules(root: string): boolean {\n\ttry {\n\t\treturn (\n\t\t\treadGitSnapshotPart(root, [\n\t\t\t\t\"submodule\",\n\t\t\t\t\"foreach\",\n\t\t\t\t\"--recursive\",\n\t\t\t\t\"--quiet\",\n\t\t\t\t\"git status --porcelain=v1 --untracked-files=all\",\n\t\t\t]).length > 0\n\t\t);\n\t} catch {\n\t\treturn true;\n\t}\n}\n\nexport function computeReusableToolResultSnapshot(\n\tcwd: string,\n): string | undefined {\n\ttry {\n\t\tconst root = readGitSnapshotPart(cwd, [\"rev-parse\", \"--show-toplevel\"]);\n\t\tconst head = readGitSnapshotPart(cwd, [\"rev-parse\", \"--verify\", \"HEAD\"]);\n\t\tconst status = readGitSnapshotPart(root, [\n\t\t\t\"status\",\n\t\t\t\"--porcelain=v1\",\n\t\t\t\"--untracked-files=all\",\n\t\t]);\n\t\tif (hasDirtyGitSubmodules(root)) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst unstagedDiff = hashGitSnapshotPart(root, [\n\t\t\t\"diff\",\n\t\t\t\"--no-ext-diff\",\n\t\t\t\"--binary\",\n\t\t]);\n\t\tconst stagedDiff = hashGitSnapshotPart(root, [\n\t\t\t\"diff\",\n\t\t\t\"--cached\",\n\t\t\t\"--no-ext-diff\",\n\t\t\t\"--binary\",\n\t\t]);\n\t\tconst untracked = hashUntrackedGitFiles(root);\n\t\treturn `git:${hashReusableToolResultSnapshot(\n\t\t\t`${root}\\n${head}\\n${status}\\n${unstagedDiff}\\n${stagedDiff}\\n${untracked}`,\n\t\t)}`;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nconst GIT_SNAPSHOT_REUSABLE_TOOL_NAMES = new Set([\n\t\"read\",\n\t\"ls\",\n\t\"list\",\n\t\"glob\",\n\t\"find\",\n\t\"grep\",\n\t\"search\",\n\t\"parallel_ripgrep\",\n\t\"diff\",\n\t\"status\",\n]);\n\nconst REPO_PATH_ARGUMENTS_BY_TOOL = new Map<string, string[]>([\n\t[\"read\", [\"path\", \"file_path\"]],\n\t[\"ls\", [\"path\", \"dir\", \"directory\"]],\n\t[\"list\", [\"path\", \"dir\", \"directory\"]],\n\t[\"glob\", [\"path\", \"cwd\", \"root\", \"glob\"]],\n\t[\"find\", [\"path\", \"cwd\", \"root\", \"glob\"]],\n\t[\"grep\", [\"path\", \"paths\", \"glob\"]],\n\t[\"search\", [\"path\", \"paths\", \"glob\"]],\n\t[\"parallel_ripgrep\", [\"path\", \"paths\", \"glob\"]],\n\t[\"diff\", [\"path\", \"paths\", \"cwd\"]],\n\t[\"status\", [\"path\", \"paths\", \"cwd\"]],\n]);\n\nconst GIT_SCOPED_REUSABLE_TOOL_RESULT_KEY_PREFIX = \"git:\";\nconst RUN_SCOPED_REUSABLE_TOOL_RESULT_KEY_PREFIX = \"run:\";\n// Keep network-backed READ_ONLY_TOOLS out of reusable caches even if metadata is absent.\nconst NETWORK_BACKED_REUSABLE_TOOL_DENYLIST = new Set([\"extract_document\"]);\n\nconst REQUIRED_REPO_PATH_ARGUMENT_TOOLS = new Set([\"read\", \"ls\", \"list\"]);\n\nfunction collectStringValues(value: unknown): string[] {\n\tif (typeof value === \"string\") {\n\t\treturn [value];\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.flatMap((item) => collectStringValues(item));\n\t}\n\treturn [];\n}\n\nfunction isRepoRelativePathArgument(value: string): boolean {\n\tconst trimmed = value.trim();\n\tif (trimmed.length === 0) {\n\t\treturn false;\n\t}\n\tif (\n\t\ttrimmed.startsWith(\"/\") ||\n\t\ttrimmed.startsWith(\"~\") ||\n\t\ttrimmed.startsWith(\"\\\\\\\\\") ||\n\t\t/^[A-Za-z]:[\\\\/]/.test(trimmed)\n\t) {\n\t\treturn false;\n\t}\n\treturn !trimmed.split(/[\\\\/]+/).includes(\"..\");\n}\n\nfunction isGitIgnoredRepoPath(cwd: string, repoPath: string): boolean {\n\ttry {\n\t\treadGitSnapshotPart(cwd, [\"check-ignore\", \"--quiet\", \"--\", repoPath]);\n\t\treturn true;\n\t} catch (error) {\n\t\tif (\n\t\t\ttypeof error === \"object\" &&\n\t\t\terror !== null &&\n\t\t\t\"status\" in error &&\n\t\t\terror.status === 1\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n}\n\nfunction isToolCallIncludingIgnoredPaths(toolCall: ToolCall): boolean {\n\tconst toolName = toolCall.name.toLowerCase();\n\tconst args = toolCall.arguments;\n\tif (!args || typeof args !== \"object\" || Array.isArray(args)) {\n\t\treturn false;\n\t}\n\tconst record = args as Record<string, unknown>;\n\tif (toolName === \"status\") {\n\t\treturn record.includeIgnored === true || record.include_ignored === true;\n\t}\n\tif (toolName === \"search\" || toolName === \"parallel_ripgrep\") {\n\t\treturn record.useGitIgnore === false || record.use_git_ignore === false;\n\t}\n\treturn false;\n}\n\nfunction hasRepoScopedReusableArguments(\n\ttoolCall: ToolCall,\n\tcwd: string,\n): boolean {\n\tconst toolName = toolCall.name.toLowerCase();\n\tif (isToolCallIncludingIgnoredPaths(toolCall)) {\n\t\treturn false;\n\t}\n\tconst argumentNames = REPO_PATH_ARGUMENTS_BY_TOOL.get(toolName) ?? [];\n\tif (argumentNames.length === 0) {\n\t\treturn true;\n\t}\n\tconst args = toolCall.arguments;\n\tif (!args || typeof args !== \"object\" || Array.isArray(args)) {\n\t\treturn !REQUIRED_REPO_PATH_ARGUMENT_TOOLS.has(toolName);\n\t}\n\tconst pathValues = argumentNames.flatMap((name) =>\n\t\tcollectStringValues((args as Record<string, unknown>)[name]),\n\t);\n\tif (\n\t\tpathValues.length === 0 &&\n\t\tREQUIRED_REPO_PATH_ARGUMENT_TOOLS.has(toolName)\n\t) {\n\t\treturn false;\n\t}\n\treturn pathValues.every(\n\t\t(pathValue) =>\n\t\t\tisRepoRelativePathArgument(pathValue) &&\n\t\t\t!isGitIgnoredRepoPath(cwd, pathValue),\n\t);\n}\n\nfunction isGitSnapshotReusableToolCall(\n\ttool: AgentTool,\n\ttoolCall: ToolCall,\n\tcwd: string,\n): boolean {\n\tif (\n\t\ttool.source !== undefined ||\n\t\ttool.annotations?.openWorldHint === true ||\n\t\ttool.executionLocation === \"client\"\n\t) {\n\t\treturn false;\n\t}\n\tif (!GIT_SNAPSHOT_REUSABLE_TOOL_NAMES.has(tool.name.toLowerCase())) {\n\t\treturn false;\n\t}\n\tif (!isReadOnlyTool(tool.name, tool.annotations, tool.source)) {\n\t\treturn false;\n\t}\n\treturn hasRepoScopedReusableArguments(toolCall, cwd);\n}\n\nexport type ToolDefinitionLookup = ReadonlyMap<string, AgentTool> | AgentTool[];\n\nexport type ToolMetadataCache = {\n\treadonly definitions: ReadonlyMap<string, AgentTool>;\n\treadonly reusableToolResultCwd: string;\n\tlookupCount: number;\n\tget(toolName: string): AgentTool | undefined;\n};\n\nconst reusableToolDefinitionIdentities = new WeakMap<object, number>();\nlet reusableToolDefinitionIdentityCounter = 0;\n\nfunction getReusableToolDefinitionIdentity(value: object): number {\n\tconst existing = reusableToolDefinitionIdentities.get(value);\n\tif (existing !== undefined) {\n\t\treturn existing;\n\t}\n\treusableToolDefinitionIdentityCounter += 1;\n\treusableToolDefinitionIdentities.set(\n\t\tvalue,\n\t\treusableToolDefinitionIdentityCounter,\n\t);\n\treturn reusableToolDefinitionIdentityCounter;\n}\n\nfunction getReusableToolFunctionIdentity(value: unknown): number | undefined {\n\treturn typeof value === \"function\"\n\t\t? getReusableToolDefinitionIdentity(value)\n\t\t: undefined;\n}\n\nexport function getReusableToolRegistrySignature(\n\ttools: readonly AgentTool[],\n): string {\n\treturn stableStringify(\n\t\ttools.map((tool) => ({\n\t\t\tallowedCallers: tool.allowedCallers,\n\t\t\tannotations: tool.annotations,\n\t\t\tdeferApiDefinition: tool.deferApiDefinition,\n\t\t\tdescription: tool.description,\n\t\t\texecuteIdentity: getReusableToolFunctionIdentity(tool.execute),\n\t\t\texecutionLocation: tool.executionLocation,\n\t\t\tgetActivityDescriptionIdentity: getReusableToolFunctionIdentity(\n\t\t\t\ttool.getActivityDescription,\n\t\t\t),\n\t\t\tgetDisplayNameIdentity: getReusableToolFunctionIdentity(\n\t\t\t\ttool.getDisplayName,\n\t\t\t),\n\t\t\tgetToolUseSummaryIdentity: getReusableToolFunctionIdentity(\n\t\t\t\ttool.getToolUseSummary,\n\t\t\t),\n\t\t\tinputExamples: tool.inputExamples,\n\t\t\tlabel: tool.label,\n\t\t\tmaxRetries: tool.maxRetries,\n\t\t\tname: tool.name,\n\t\t\tparameters: tool.parameters,\n\t\t\tretryDelayMs: tool.retryDelayMs,\n\t\t\tshouldRetryIdentity: getReusableToolFunctionIdentity(tool.shouldRetry),\n\t\t\tsource: tool.source,\n\t\t\ttoolIdentity: getReusableToolDefinitionIdentity(tool),\n\t\t\ttoolType: tool.toolType,\n\t\t})),\n\t);\n}\n\nexport function createToolMetadataCache(\n\ttools: AgentTool[],\n\treusableToolResultCwd = process.cwd(),\n): ToolMetadataCache {\n\tconst definitions = new Map(tools.map((tool) => [tool.name, tool]));\n\treturn {\n\t\tdefinitions,\n\t\treusableToolResultCwd,\n\t\tlookupCount: 0,\n\t\tget(toolName: string): AgentTool | undefined {\n\t\t\tthis.lookupCount += 1;\n\t\t\treturn definitions.get(toolName);\n\t\t},\n\t};\n}\n\nfunction getToolDefinition(\n\tlookup: ToolDefinitionLookup | ToolMetadataCache,\n\ttoolName: string,\n): AgentTool | undefined {\n\tif (\"get\" in lookup && !Array.isArray(lookup)) {\n\t\treturn lookup.get(toolName);\n\t}\n\treturn lookup.find((candidate) => candidate.name === toolName);\n}\n\nexport function getReusableToolResultCacheKey(\n\ttoolCall: ToolCall,\n\ttools: ToolDefinitionLookup | ToolMetadataCache,\n): string | undefined {\n\tconst tool = getToolDefinition(tools, toolCall.name);\n\tconst cwd =\n\t\t\"reusableToolResultCwd\" in tools\n\t\t\t? tools.reusableToolResultCwd\n\t\t\t: process.cwd();\n\tif (!tool || tool.annotations?.destructiveHint === true) {\n\t\treturn undefined;\n\t}\n\tif (!isReadOnlyTool(tool.name, tool.annotations, tool.source)) {\n\t\treturn undefined;\n\t}\n\tconst toolName = tool.name.toLowerCase();\n\tconst cacheKey = `${toolCall.name}:${stableStringify(toolCall.arguments)}`;\n\tif (NETWORK_BACKED_REUSABLE_TOOL_DENYLIST.has(toolName)) {\n\t\treturn undefined;\n\t}\n\tif (isGitSnapshotReusableToolCall(tool, toolCall, cwd)) {\n\t\treturn `${GIT_SCOPED_REUSABLE_TOOL_RESULT_KEY_PREFIX}${cacheKey}`;\n\t}\n\tif (\n\t\ttool.source !== undefined ||\n\t\tGIT_SNAPSHOT_REUSABLE_TOOL_NAMES.has(toolName) ||\n\t\ttool.annotations?.openWorldHint === true ||\n\t\ttool.executionLocation === \"client\"\n\t) {\n\t\treturn undefined;\n\t}\n\treturn `${RUN_SCOPED_REUSABLE_TOOL_RESULT_KEY_PREFIX}${cacheKey}`;\n}\n\nfunction isReadOnlyToolCallForCacheInvalidation(\n\ttoolCall: ToolCall,\n\ttools: ToolDefinitionLookup | ToolMetadataCache,\n): boolean {\n\tconst tool = getToolDefinition(tools, toolCall.name);\n\treturn tool\n\t\t? isReadOnlyTool(tool.name, tool.annotations, tool.source)\n\t\t: false;\n}\n\nfunction cloneToolResultForCache(\n\tmessage: ToolResultMessage,\n): ToolResultMessage {\n\treturn {\n\t\t...message,\n\t\tcontent: message.content.map((item) => ({ ...item })),\n\t};\n}\n\nexport function cloneToolOutcomeForCall(\n\toutcome: ToolExecutionOutcome,\n\ttoolCall: ToolCall,\n\ttimestamp: number,\n): ToolExecutionOutcome {\n\treturn {\n\t\tmessage: {\n\t\t\t...outcome.message,\n\t\t\ttoolCallId: toolCall.id,\n\t\t\ttoolName: toolCall.name,\n\t\t\tcontent: outcome.message.content.map((item) => ({ ...item })),\n\t\t\ttimestamp,\n\t\t},\n\t\tisError: outcome.isError,\n\t};\n}\n\nexport function resolvePlatformToolExecutionBridge(\n\toption: PlatformToolExecutionBridge | false | undefined,\n): PlatformToolExecutionBridge | undefined {\n\tif (option === false) {\n\t\treturn undefined;\n\t}\n\treturn option ?? getDefaultPlatformToolExecutionBridge();\n}\n\nexport async function recordReusableToolExecutionBridgeOutput({\n\tbridge,\n\tplan,\n\toutcome,\n\tdurationMs,\n\tsignal,\n}: {\n\tbridge?: PlatformToolExecutionBridge;\n\tplan?: ToolExecutionBridgePlan;\n\toutcome: ToolExecutionOutcome;\n\tdurationMs: number;\n\tsignal?: AbortSignal;\n}): Promise<ToolExecutionOutcome> {\n\tif (!bridge || !plan) {\n\t\treturn outcome;\n\t}\n\tconst observed =\n\t\tplan.kind === \"observe\"\n\t\t\t? await bridge.recordObservation(\n\t\t\t\t\tplan as ObserveToolExecutionPlan,\n\t\t\t\t\toutcome.message,\n\t\t\t\t\tsignal,\n\t\t\t\t)\n\t\t\t: undefined;\n\tconst governedOutput =\n\t\tplan.kind === \"governed\"\n\t\t\t? await bridge.recordGovernedOutput(\n\t\t\t\t\tplan,\n\t\t\t\t\toutcome.message,\n\t\t\t\t\tdurationMs,\n\t\t\t\t\tsignal,\n\t\t\t\t)\n\t\t\t: undefined;\n\treturn {\n\t\t...outcome,\n\t\t...buildObservedResultMetadata(plan, observed ?? governedOutput),\n\t};\n}\n\nexport function hasReusableToolResultState(\n\tcacheKey: string,\n\tcache: Map<string, ReusableToolResultEntry>,\n\tpending: Map<string, Promise<ToolExecutionOutcome>>,\n\tpolicyCheckedKeys: Set<string>,\n\tpendingSafetyChecks: Map<string, number>,\n): boolean {\n\treturn (\n\t\tcache.has(cacheKey) ||\n\t\tpending.has(cacheKey) ||\n\t\tpolicyCheckedKeys.has(cacheKey) ||\n\t\t(pendingSafetyChecks.get(cacheKey) ?? 0) > 0\n\t);\n}\n\nexport function incrementPendingReusableToolSafetyCheck(\n\tcacheKey: string | undefined,\n\tpendingSafetyChecks: Map<string, number>,\n): void {\n\tif (!cacheKey) {\n\t\treturn;\n\t}\n\tpendingSafetyChecks.set(\n\t\tcacheKey,\n\t\t(pendingSafetyChecks.get(cacheKey) ?? 0) + 1,\n\t);\n}\n\nexport function decrementPendingReusableToolSafetyCheck(\n\tcacheKey: string | undefined,\n\tpendingSafetyChecks: Map<string, number>,\n): void {\n\tif (!cacheKey) {\n\t\treturn;\n\t}\n\tconst nextCount = (pendingSafetyChecks.get(cacheKey) ?? 0) - 1;\n\tif (nextCount <= 0) {\n\t\tpendingSafetyChecks.delete(cacheKey);\n\t\treturn;\n\t}\n\tpendingSafetyChecks.set(cacheKey, nextCount);\n}\n\nexport function clearReusableToolResultState(\n\tcache: Map<string, ReusableToolResultEntry>,\n\tpending: Map<string, Promise<ToolExecutionOutcome>>,\n\tpolicyCheckedKeys: Set<string>,\n\tpendingSafetyChecks: Map<string, number>,\n\tcacheGeneration: ReusableToolResultCacheGeneration,\n): void {\n\tcache.clear();\n\tpending.clear();\n\tpolicyCheckedKeys.clear();\n\tpendingSafetyChecks.clear();\n\tcacheGeneration.value += 1;\n}\n\nexport function clearRunScopedReusableToolResultState(\n\tcache: Map<string, ReusableToolResultEntry>,\n\tpending: Map<string, Promise<ToolExecutionOutcome>>,\n\tpolicyCheckedKeys: Set<string>,\n\tpendingSafetyChecks: Map<string, number>,\n\tcacheGeneration: ReusableToolResultCacheGeneration,\n): void {\n\tlet cleared = false;\n\tfor (const key of cache.keys()) {\n\t\tif (key.startsWith(RUN_SCOPED_REUSABLE_TOOL_RESULT_KEY_PREFIX)) {\n\t\t\tcache.delete(key);\n\t\t\tcleared = true;\n\t\t}\n\t}\n\tfor (const key of pending.keys()) {\n\t\tif (key.startsWith(RUN_SCOPED_REUSABLE_TOOL_RESULT_KEY_PREFIX)) {\n\t\t\tpending.delete(key);\n\t\t\tcleared = true;\n\t\t}\n\t}\n\tfor (const key of policyCheckedKeys) {\n\t\tif (key.startsWith(RUN_SCOPED_REUSABLE_TOOL_RESULT_KEY_PREFIX)) {\n\t\t\tpolicyCheckedKeys.delete(key);\n\t\t\tcleared = true;\n\t\t}\n\t}\n\tfor (const key of pendingSafetyChecks.keys()) {\n\t\tif (key.startsWith(RUN_SCOPED_REUSABLE_TOOL_RESULT_KEY_PREFIX)) {\n\t\t\tpendingSafetyChecks.delete(key);\n\t\t\tcleared = true;\n\t\t}\n\t}\n\tif (cleared) {\n\t\tcacheGeneration.value += 1;\n\t}\n}\n\nexport function invalidateReusableToolResultsAfterMutation(\n\ttoolCall: ToolCall,\n\ttools: ToolDefinitionLookup | ToolMetadataCache,\n\tcache: Map<string, ReusableToolResultEntry>,\n\tpending: Map<string, Promise<ToolExecutionOutcome>>,\n\tpolicyCheckedKeys: Set<string>,\n\tpendingSafetyChecks: Map<string, number>,\n\tcacheGeneration: ReusableToolResultCacheGeneration,\n): void {\n\tif (isReadOnlyToolCallForCacheInvalidation(toolCall, tools)) {\n\t\treturn;\n\t}\n\tclearReusableToolResultState(\n\t\tcache,\n\t\tpending,\n\t\tpolicyCheckedKeys,\n\t\tpendingSafetyChecks,\n\t\tcacheGeneration,\n\t);\n}\n\nexport function hasPendingMutatingToolExecution(\n\tpendingExecutions: readonly PendingExecution[],\n\ttools: ToolDefinitionLookup | ToolMetadataCache,\n): boolean {\n\treturn pendingExecutions.some(\n\t\t(execution) =>\n\t\t\t!isReadOnlyToolCallForCacheInvalidation(execution.toolCall, tools),\n\t);\n}\n\nexport function trackReusableToolResult(\n\tcacheKey: string,\n\texecutionPromise: Promise<ToolExecutionOutcome>,\n\tcache: Map<string, ReusableToolResultEntry>,\n\tpending: Map<string, Promise<ToolExecutionOutcome>>,\n\tpolicyCheckedKeys?: Set<string>,\n\tcacheGeneration?: ReusableToolResultCacheGeneration,\n): Promise<ToolExecutionOutcome> {\n\tconst trackedGeneration = cacheGeneration?.value;\n\tconst trackedPromise = executionPromise\n\t\t.then((outcome) => {\n\t\t\tif (\n\t\t\t\t!outcome.isError &&\n\t\t\t\toutcome.message.isError !== true &&\n\t\t\t\t(cacheGeneration === undefined ||\n\t\t\t\t\tcacheGeneration.value === trackedGeneration)\n\t\t\t) {\n\t\t\t\tcache.set(cacheKey, {\n\t\t\t\t\tmessage: cloneToolResultForCache(outcome.message),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tpolicyCheckedKeys?.delete(cacheKey);\n\t\t\t}\n\t\t\treturn outcome;\n\t\t})\n\t\t.catch((error) => {\n\t\t\tpolicyCheckedKeys?.delete(cacheKey);\n\t\t\tthrow error;\n\t\t})\n\t\t.finally(() => {\n\t\t\tif (pending.get(cacheKey) === trackedPromise) {\n\t\t\t\tpending.delete(cacheKey);\n\t\t\t}\n\t\t});\n\tpending.set(cacheKey, trackedPromise);\n\treturn trackedPromise;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"reusable-tool-results.js","sourceRoot":"","sources":["../../../src/agent/transport/reusable-tool-results.ts"],"names":[],"mappings":"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","sourcesContent":["import { execFileSync } from \"node:child_process\";\nimport { createHash } from \"node:crypto\";\nimport { readFileSync } from \"node:fs\";\nimport { resolve as resolvePath } from \"node:path\";\nimport { isReadOnlyTool } from \"../../tools/parallel-execution.js\";\nimport type { AgentTool, ToolCall, ToolResultMessage } from \"../types.js\";\nimport { stableStringify } from \"./stable-stringify.js\";\nimport {\n\ttype ObserveToolExecutionPlan,\n\ttype PlatformToolExecutionBridge,\n\ttype ToolExecutionBridgePlan,\n\tbuildObservedResultMetadata,\n\tgetDefaultPlatformToolExecutionBridge,\n} from \"./tool-execution-bridge.js\";\nimport type {\n\tPendingExecution,\n\tToolExecutionOutcome,\n} from \"./tool-update-queue.js\";\n\nconst REUSABLE_TOOL_RESULT_GIT_SNAPSHOT_TIMEOUT_MS = 5_000;\n\nexport type ReusableToolResultEntry = {\n\tmessage: ToolResultMessage;\n};\n\nexport type ReusableToolResultCacheGeneration = {\n\tvalue: number;\n};\n\nfunction hashReusableToolResultSnapshot(value: string | Buffer): string {\n\treturn createHash(\"sha256\").update(value).digest(\"hex\");\n}\n\nfunction readGitSnapshotBuffer(cwd: string, args: string[]): Buffer {\n\treturn execFileSync(\"git\", args, {\n\t\tcwd,\n\t\tstdio: [\"ignore\", \"pipe\", \"ignore\"],\n\t\ttimeout: REUSABLE_TOOL_RESULT_GIT_SNAPSHOT_TIMEOUT_MS,\n\t});\n}\n\nfunction readGitSnapshotPart(cwd: string, args: string[]): string {\n\treturn readGitSnapshotBuffer(cwd, args).toString(\"utf8\").trim();\n}\n\nfunction hashGitSnapshotPart(cwd: string, args: string[]): string {\n\treturn hashReusableToolResultSnapshot(readGitSnapshotBuffer(cwd, args));\n}\n\nfunction hashUntrackedGitFiles(root: string): string {\n\tconst files = readGitSnapshotBuffer(root, [\n\t\t\"ls-files\",\n\t\t\"--others\",\n\t\t\"--exclude-standard\",\n\t\t\"-z\",\n\t])\n\t\t.toString(\"utf8\")\n\t\t.split(\"\\0\")\n\t\t.filter(Boolean)\n\t\t.sort();\n\tconst hash = createHash(\"sha256\");\n\tfor (const file of files) {\n\t\thash.update(file);\n\t\thash.update(\"\\0\");\n\t\thash.update(readFileSync(resolvePath(root, file)));\n\t\thash.update(\"\\0\");\n\t}\n\treturn hash.digest(\"hex\");\n}\n\nfunction hasDirtyGitSubmodules(root: string): boolean {\n\ttry {\n\t\treturn (\n\t\t\treadGitSnapshotPart(root, [\n\t\t\t\t\"submodule\",\n\t\t\t\t\"foreach\",\n\t\t\t\t\"--recursive\",\n\t\t\t\t\"--quiet\",\n\t\t\t\t\"git status --porcelain=v1 --untracked-files=all\",\n\t\t\t]).length > 0\n\t\t);\n\t} catch {\n\t\treturn true;\n\t}\n}\n\nexport function computeReusableToolResultSnapshot(\n\tcwd: string,\n): string | undefined {\n\ttry {\n\t\tconst root = readGitSnapshotPart(cwd, [\"rev-parse\", \"--show-toplevel\"]);\n\t\tconst head = readGitSnapshotPart(cwd, [\"rev-parse\", \"--verify\", \"HEAD\"]);\n\t\tconst status = readGitSnapshotPart(root, [\n\t\t\t\"status\",\n\t\t\t\"--porcelain=v1\",\n\t\t\t\"--untracked-files=all\",\n\t\t]);\n\t\tif (hasDirtyGitSubmodules(root)) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst unstagedDiff = hashGitSnapshotPart(root, [\n\t\t\t\"diff\",\n\t\t\t\"--no-ext-diff\",\n\t\t\t\"--binary\",\n\t\t]);\n\t\tconst stagedDiff = hashGitSnapshotPart(root, [\n\t\t\t\"diff\",\n\t\t\t\"--cached\",\n\t\t\t\"--no-ext-diff\",\n\t\t\t\"--binary\",\n\t\t]);\n\t\tconst untracked = hashUntrackedGitFiles(root);\n\t\treturn `git:${hashReusableToolResultSnapshot(\n\t\t\t`${root}\\n${head}\\n${status}\\n${unstagedDiff}\\n${stagedDiff}\\n${untracked}`,\n\t\t)}`;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nconst GIT_SNAPSHOT_REUSABLE_TOOL_NAMES = new Set([\n\t\"read\",\n\t\"ls\",\n\t\"list\",\n\t\"glob\",\n\t\"find\",\n\t\"grep\",\n\t\"search\",\n\t\"parallel_ripgrep\",\n\t\"diff\",\n\t\"status\",\n]);\n\nconst REPO_PATH_ARGUMENTS_BY_TOOL = new Map<string, string[]>([\n\t[\"read\", [\"path\", \"file_path\"]],\n\t[\"ls\", [\"path\", \"dir\", \"directory\"]],\n\t[\"list\", [\"path\", \"dir\", \"directory\"]],\n\t[\"glob\", [\"path\", \"cwd\", \"root\", \"glob\"]],\n\t[\"find\", [\"path\", \"cwd\", \"root\", \"glob\"]],\n\t[\"grep\", [\"path\", \"paths\", \"glob\"]],\n\t[\"search\", [\"path\", \"paths\", \"glob\"]],\n\t[\"parallel_ripgrep\", [\"path\", \"paths\", \"glob\"]],\n\t[\"diff\", [\"path\", \"paths\", \"cwd\"]],\n\t[\"status\", [\"path\", \"paths\", \"cwd\"]],\n]);\n\nconst GIT_SCOPED_REUSABLE_TOOL_RESULT_KEY_PREFIX = \"git:\";\nconst RUN_SCOPED_REUSABLE_TOOL_RESULT_KEY_PREFIX = \"run:\";\n// Keep network-backed READ_ONLY_TOOLS out of reusable caches even if metadata is absent.\nconst NETWORK_BACKED_REUSABLE_TOOL_DENYLIST = new Set([\"extract_document\"]);\n\nconst REQUIRED_REPO_PATH_ARGUMENT_TOOLS = new Set([\"read\", \"ls\", \"list\"]);\n\nfunction collectStringValues(value: unknown): string[] {\n\tif (typeof value === \"string\") {\n\t\treturn [value];\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn value.flatMap((item) => collectStringValues(item));\n\t}\n\treturn [];\n}\n\nfunction isRepoRelativePathArgument(value: string): boolean {\n\tconst trimmed = value.trim();\n\tif (trimmed.length === 0) {\n\t\treturn false;\n\t}\n\tif (\n\t\ttrimmed.startsWith(\"/\") ||\n\t\ttrimmed.startsWith(\"~\") ||\n\t\ttrimmed.startsWith(\"\\\\\\\\\") ||\n\t\t/^[A-Za-z]:[\\\\/]/.test(trimmed)\n\t) {\n\t\treturn false;\n\t}\n\treturn !trimmed.split(/[\\\\/]+/).includes(\"..\");\n}\n\nfunction isGitIgnoredRepoPath(cwd: string, repoPath: string): boolean {\n\ttry {\n\t\treadGitSnapshotPart(cwd, [\"check-ignore\", \"--quiet\", \"--\", repoPath]);\n\t\treturn true;\n\t} catch (error) {\n\t\tif (\n\t\t\ttypeof error === \"object\" &&\n\t\t\terror !== null &&\n\t\t\t\"status\" in error &&\n\t\t\terror.status === 1\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n}\n\nfunction isToolCallIncludingIgnoredPaths(toolCall: ToolCall): boolean {\n\tconst toolName = toolCall.name.toLowerCase();\n\tconst args = toolCall.arguments;\n\tif (!args || typeof args !== \"object\" || Array.isArray(args)) {\n\t\treturn false;\n\t}\n\tconst record = args as Record<string, unknown>;\n\tif (toolName === \"status\") {\n\t\treturn record.includeIgnored === true || record.include_ignored === true;\n\t}\n\tif (toolName === \"search\" || toolName === \"parallel_ripgrep\") {\n\t\treturn record.useGitIgnore === false || record.use_git_ignore === false;\n\t}\n\treturn false;\n}\n\nfunction hasRepoScopedReusableArguments(\n\ttoolCall: ToolCall,\n\tcwd: string,\n): boolean {\n\tconst toolName = toolCall.name.toLowerCase();\n\tif (isToolCallIncludingIgnoredPaths(toolCall)) {\n\t\treturn false;\n\t}\n\tconst argumentNames = REPO_PATH_ARGUMENTS_BY_TOOL.get(toolName) ?? [];\n\tif (argumentNames.length === 0) {\n\t\treturn true;\n\t}\n\tconst args = toolCall.arguments;\n\tif (!args || typeof args !== \"object\" || Array.isArray(args)) {\n\t\treturn !REQUIRED_REPO_PATH_ARGUMENT_TOOLS.has(toolName);\n\t}\n\tconst pathValues = argumentNames.flatMap((name) =>\n\t\tcollectStringValues((args as Record<string, unknown>)[name]),\n\t);\n\tif (\n\t\tpathValues.length === 0 &&\n\t\tREQUIRED_REPO_PATH_ARGUMENT_TOOLS.has(toolName)\n\t) {\n\t\treturn false;\n\t}\n\treturn pathValues.every(\n\t\t(pathValue) =>\n\t\t\tisRepoRelativePathArgument(pathValue) &&\n\t\t\t!isGitIgnoredRepoPath(cwd, pathValue),\n\t);\n}\n\nfunction isGitSnapshotReusableToolCall(\n\ttool: AgentTool,\n\ttoolCall: ToolCall,\n\tcwd: string,\n): boolean {\n\tif (\n\t\ttool.source !== undefined ||\n\t\ttool.annotations?.openWorldHint === true ||\n\t\ttool.executionLocation === \"client\"\n\t) {\n\t\treturn false;\n\t}\n\tif (!GIT_SNAPSHOT_REUSABLE_TOOL_NAMES.has(tool.name.toLowerCase())) {\n\t\treturn false;\n\t}\n\tif (!isReadOnlyTool(tool.name, tool.annotations, tool.source)) {\n\t\treturn false;\n\t}\n\treturn hasRepoScopedReusableArguments(toolCall, cwd);\n}\n\nexport type ToolDefinitionLookup = ReadonlyMap<string, AgentTool> | AgentTool[];\n\nexport type ToolMetadataCache = {\n\treadonly definitions: ReadonlyMap<string, AgentTool>;\n\treadonly reusableToolResultCwd: string;\n\tlookupCount: number;\n\tget(toolName: string): AgentTool | undefined;\n};\n\nconst reusableToolDefinitionIdentities = new WeakMap<object, number>();\nlet reusableToolDefinitionIdentityCounter = 0;\n\nfunction getReusableToolDefinitionIdentity(value: object): number {\n\tconst existing = reusableToolDefinitionIdentities.get(value);\n\tif (existing !== undefined) {\n\t\treturn existing;\n\t}\n\treusableToolDefinitionIdentityCounter += 1;\n\treusableToolDefinitionIdentities.set(\n\t\tvalue,\n\t\treusableToolDefinitionIdentityCounter,\n\t);\n\treturn reusableToolDefinitionIdentityCounter;\n}\n\nfunction getReusableToolFunctionIdentity(value: unknown): number | undefined {\n\treturn typeof value === \"function\"\n\t\t? getReusableToolDefinitionIdentity(value)\n\t\t: undefined;\n}\n\nexport function getReusableToolRegistrySignature(\n\ttools: readonly AgentTool[],\n): string {\n\treturn stableStringify(\n\t\ttools.map((tool) => ({\n\t\t\tallowedCallers: tool.allowedCallers,\n\t\t\tannotations: tool.annotations,\n\t\t\tdeferApiDefinition: tool.deferApiDefinition,\n\t\t\tdescription: tool.description,\n\t\t\texecuteIdentity: getReusableToolFunctionIdentity(tool.execute),\n\t\t\texecutionLocation: tool.executionLocation,\n\t\t\tgetActivityDescriptionIdentity: getReusableToolFunctionIdentity(\n\t\t\t\ttool.getActivityDescription,\n\t\t\t),\n\t\t\tgetDisplayNameIdentity: getReusableToolFunctionIdentity(\n\t\t\t\ttool.getDisplayName,\n\t\t\t),\n\t\t\tgetToolUseSummaryIdentity: getReusableToolFunctionIdentity(\n\t\t\t\ttool.getToolUseSummary,\n\t\t\t),\n\t\t\tinputExamples: tool.inputExamples,\n\t\t\tlabel: tool.label,\n\t\t\tmaxRetries: tool.maxRetries,\n\t\t\tname: tool.name,\n\t\t\tparameters: tool.parameters,\n\t\t\tretryDelayMs: tool.retryDelayMs,\n\t\t\tshouldRetryIdentity: getReusableToolFunctionIdentity(tool.shouldRetry),\n\t\t\tsource: tool.source,\n\t\t\ttoolIdentity: getReusableToolDefinitionIdentity(tool),\n\t\t\ttoolType: tool.toolType,\n\t\t})),\n\t);\n}\n\nexport function createToolMetadataCache(\n\ttools: AgentTool[],\n\treusableToolResultCwd = process.cwd(),\n): ToolMetadataCache {\n\tconst definitions = new Map(tools.map((tool) => [tool.name, tool]));\n\treturn {\n\t\tdefinitions,\n\t\treusableToolResultCwd,\n\t\tlookupCount: 0,\n\t\tget(toolName: string): AgentTool | undefined {\n\t\t\tthis.lookupCount += 1;\n\t\t\treturn definitions.get(toolName);\n\t\t},\n\t};\n}\n\nfunction getToolDefinition(\n\tlookup: ToolDefinitionLookup | ToolMetadataCache,\n\ttoolName: string,\n): AgentTool | undefined {\n\tif (\"get\" in lookup && !Array.isArray(lookup)) {\n\t\treturn lookup.get(toolName);\n\t}\n\treturn lookup.find((candidate) => candidate.name === toolName);\n}\n\nexport function getReusableToolResultCacheKey(\n\ttoolCall: ToolCall,\n\ttools: ToolDefinitionLookup | ToolMetadataCache,\n): string | undefined {\n\tconst tool = getToolDefinition(tools, toolCall.name);\n\tconst cwd =\n\t\t\"reusableToolResultCwd\" in tools\n\t\t\t? tools.reusableToolResultCwd\n\t\t\t: process.cwd();\n\tif (!tool || tool.annotations?.destructiveHint === true) {\n\t\treturn undefined;\n\t}\n\tif (!isReadOnlyTool(tool.name, tool.annotations, tool.source)) {\n\t\treturn undefined;\n\t}\n\tconst toolName = tool.name.toLowerCase();\n\tconst cacheKey = `${toolCall.name}:${stableStringify(toolCall.arguments)}`;\n\tif (NETWORK_BACKED_REUSABLE_TOOL_DENYLIST.has(toolName)) {\n\t\treturn undefined;\n\t}\n\tif (isGitSnapshotReusableToolCall(tool, toolCall, cwd)) {\n\t\treturn `${GIT_SCOPED_REUSABLE_TOOL_RESULT_KEY_PREFIX}${cacheKey}`;\n\t}\n\tif (\n\t\ttool.source !== undefined ||\n\t\tGIT_SNAPSHOT_REUSABLE_TOOL_NAMES.has(toolName) ||\n\t\ttool.annotations?.openWorldHint === true ||\n\t\ttool.executionLocation === \"client\"\n\t) {\n\t\treturn undefined;\n\t}\n\treturn `${RUN_SCOPED_REUSABLE_TOOL_RESULT_KEY_PREFIX}${cacheKey}`;\n}\n\nfunction isReadOnlyToolCallForCacheInvalidation(\n\ttoolCall: ToolCall,\n\ttools: ToolDefinitionLookup | ToolMetadataCache,\n): boolean {\n\tconst tool = getToolDefinition(tools, toolCall.name);\n\treturn tool\n\t\t? isReadOnlyTool(tool.name, tool.annotations, tool.source)\n\t\t: false;\n}\n\nfunction cloneToolResultForCache(\n\tmessage: ToolResultMessage,\n): ToolResultMessage {\n\treturn {\n\t\t...message,\n\t\tcontent: message.content.map((item) => ({ ...item })),\n\t};\n}\n\nfunction localToolExecutionIdForCall(toolCall: ToolCall): string {\n\treturn `local-tool-exec-${toolCall.id}`;\n}\n\nfunction attachToolExecutionMetadata(\n\tmessage: ToolResultMessage,\n\tmetadata: {\n\t\ttoolExecutionId?: string;\n\t\tapprovalRequestId?: string;\n\t},\n\toptions: {\n\t\treplaceApprovalRequestId?: boolean;\n\t} = {},\n): ToolResultMessage {\n\tconst details =\n\t\tmessage.details && typeof message.details === \"object\"\n\t\t\t? { ...(message.details as Record<string, unknown>) }\n\t\t\t: {};\n\tif (metadata.toolExecutionId) {\n\t\tdetails.toolExecutionId = metadata.toolExecutionId;\n\t}\n\tif (metadata.approvalRequestId) {\n\t\tdetails.approvalRequestId = metadata.approvalRequestId;\n\t} else if (options.replaceApprovalRequestId) {\n\t\tdelete details.approvalRequestId;\n\t}\n\treturn {\n\t\t...message,\n\t\tdetails: details as typeof message.details,\n\t};\n}\n\nexport function cloneToolOutcomeForCall(\n\toutcome: ToolExecutionOutcome,\n\ttoolCall: ToolCall,\n\ttimestamp: number,\n\tmetadata: {\n\t\tapprovalRequestId?: string;\n\t} = {},\n): ToolExecutionOutcome {\n\tconst toolExecutionId = localToolExecutionIdForCall(toolCall);\n\treturn {\n\t\tmessage: attachToolExecutionMetadata(\n\t\t\t{\n\t\t\t\t...outcome.message,\n\t\t\t\ttoolCallId: toolCall.id,\n\t\t\t\ttoolName: toolCall.name,\n\t\t\t\tcontent: outcome.message.content.map((item) => ({ ...item })),\n\t\t\t\ttimestamp,\n\t\t\t},\n\t\t\t{ toolExecutionId, approvalRequestId: metadata.approvalRequestId },\n\t\t\t{ replaceApprovalRequestId: true },\n\t\t),\n\t\tisError: outcome.isError,\n\t\ttoolExecutionId,\n\t\t...(metadata.approvalRequestId\n\t\t\t? { approvalRequestId: metadata.approvalRequestId }\n\t\t\t: {}),\n\t};\n}\n\nexport function resolvePlatformToolExecutionBridge(\n\toption: PlatformToolExecutionBridge | false | undefined,\n): PlatformToolExecutionBridge | undefined {\n\tif (option === false) {\n\t\treturn undefined;\n\t}\n\treturn option ?? getDefaultPlatformToolExecutionBridge();\n}\n\nexport async function recordReusableToolExecutionBridgeOutput({\n\tbridge,\n\tplan,\n\toutcome,\n\tdurationMs,\n\tsignal,\n}: {\n\tbridge?: PlatformToolExecutionBridge;\n\tplan?: ToolExecutionBridgePlan;\n\toutcome: ToolExecutionOutcome;\n\tdurationMs: number;\n\tsignal?: AbortSignal;\n}): Promise<ToolExecutionOutcome> {\n\tif (!bridge || !plan) {\n\t\treturn outcome;\n\t}\n\tconst observed =\n\t\tplan.kind === \"observe\"\n\t\t\t? await bridge.recordObservation(\n\t\t\t\t\tplan as ObserveToolExecutionPlan,\n\t\t\t\t\toutcome.message,\n\t\t\t\t\tsignal,\n\t\t\t\t)\n\t\t\t: undefined;\n\tconst governedOutput =\n\t\tplan.kind === \"governed\"\n\t\t\t? await bridge.recordGovernedOutput(\n\t\t\t\t\tplan,\n\t\t\t\t\toutcome.message,\n\t\t\t\t\tdurationMs,\n\t\t\t\t\tsignal,\n\t\t\t\t)\n\t\t\t: undefined;\n\tconst metadata = buildObservedResultMetadata(\n\t\tplan,\n\t\tobserved ?? governedOutput,\n\t);\n\treturn {\n\t\t...outcome,\n\t\t...metadata,\n\t\tmessage: attachToolExecutionMetadata(outcome.message, metadata),\n\t};\n}\n\nexport function hasReusableToolResultState(\n\tcacheKey: string,\n\tcache: Map<string, ReusableToolResultEntry>,\n\tpending: Map<string, Promise<ToolExecutionOutcome>>,\n\tpolicyCheckedKeys: Set<string>,\n\tpendingSafetyChecks: Map<string, number>,\n): boolean {\n\treturn (\n\t\tcache.has(cacheKey) ||\n\t\tpending.has(cacheKey) ||\n\t\tpolicyCheckedKeys.has(cacheKey) ||\n\t\t(pendingSafetyChecks.get(cacheKey) ?? 0) > 0\n\t);\n}\n\nexport function incrementPendingReusableToolSafetyCheck(\n\tcacheKey: string | undefined,\n\tpendingSafetyChecks: Map<string, number>,\n): void {\n\tif (!cacheKey) {\n\t\treturn;\n\t}\n\tpendingSafetyChecks.set(\n\t\tcacheKey,\n\t\t(pendingSafetyChecks.get(cacheKey) ?? 0) + 1,\n\t);\n}\n\nexport function decrementPendingReusableToolSafetyCheck(\n\tcacheKey: string | undefined,\n\tpendingSafetyChecks: Map<string, number>,\n): void {\n\tif (!cacheKey) {\n\t\treturn;\n\t}\n\tconst nextCount = (pendingSafetyChecks.get(cacheKey) ?? 0) - 1;\n\tif (nextCount <= 0) {\n\t\tpendingSafetyChecks.delete(cacheKey);\n\t\treturn;\n\t}\n\tpendingSafetyChecks.set(cacheKey, nextCount);\n}\n\nexport function clearReusableToolResultState(\n\tcache: Map<string, ReusableToolResultEntry>,\n\tpending: Map<string, Promise<ToolExecutionOutcome>>,\n\tpolicyCheckedKeys: Set<string>,\n\tpendingSafetyChecks: Map<string, number>,\n\tcacheGeneration: ReusableToolResultCacheGeneration,\n): void {\n\tcache.clear();\n\tpending.clear();\n\tpolicyCheckedKeys.clear();\n\tpendingSafetyChecks.clear();\n\tcacheGeneration.value += 1;\n}\n\nexport function clearRunScopedReusableToolResultState(\n\tcache: Map<string, ReusableToolResultEntry>,\n\tpending: Map<string, Promise<ToolExecutionOutcome>>,\n\tpolicyCheckedKeys: Set<string>,\n\tpendingSafetyChecks: Map<string, number>,\n\tcacheGeneration: ReusableToolResultCacheGeneration,\n): void {\n\tlet cleared = false;\n\tfor (const key of cache.keys()) {\n\t\tif (key.startsWith(RUN_SCOPED_REUSABLE_TOOL_RESULT_KEY_PREFIX)) {\n\t\t\tcache.delete(key);\n\t\t\tcleared = true;\n\t\t}\n\t}\n\tfor (const key of pending.keys()) {\n\t\tif (key.startsWith(RUN_SCOPED_REUSABLE_TOOL_RESULT_KEY_PREFIX)) {\n\t\t\tpending.delete(key);\n\t\t\tcleared = true;\n\t\t}\n\t}\n\tfor (const key of policyCheckedKeys) {\n\t\tif (key.startsWith(RUN_SCOPED_REUSABLE_TOOL_RESULT_KEY_PREFIX)) {\n\t\t\tpolicyCheckedKeys.delete(key);\n\t\t\tcleared = true;\n\t\t}\n\t}\n\tfor (const key of pendingSafetyChecks.keys()) {\n\t\tif (key.startsWith(RUN_SCOPED_REUSABLE_TOOL_RESULT_KEY_PREFIX)) {\n\t\t\tpendingSafetyChecks.delete(key);\n\t\t\tcleared = true;\n\t\t}\n\t}\n\tif (cleared) {\n\t\tcacheGeneration.value += 1;\n\t}\n}\n\nexport function invalidateReusableToolResultsAfterMutation(\n\ttoolCall: ToolCall,\n\ttools: ToolDefinitionLookup | ToolMetadataCache,\n\tcache: Map<string, ReusableToolResultEntry>,\n\tpending: Map<string, Promise<ToolExecutionOutcome>>,\n\tpolicyCheckedKeys: Set<string>,\n\tpendingSafetyChecks: Map<string, number>,\n\tcacheGeneration: ReusableToolResultCacheGeneration,\n): void {\n\tif (isReadOnlyToolCallForCacheInvalidation(toolCall, tools)) {\n\t\treturn;\n\t}\n\tclearReusableToolResultState(\n\t\tcache,\n\t\tpending,\n\t\tpolicyCheckedKeys,\n\t\tpendingSafetyChecks,\n\t\tcacheGeneration,\n\t);\n}\n\nexport function hasPendingMutatingToolExecution(\n\tpendingExecutions: readonly PendingExecution[],\n\ttools: ToolDefinitionLookup | ToolMetadataCache,\n): boolean {\n\treturn pendingExecutions.some(\n\t\t(execution) =>\n\t\t\t!isReadOnlyToolCallForCacheInvalidation(execution.toolCall, tools),\n\t);\n}\n\nexport function trackReusableToolResult(\n\tcacheKey: string,\n\texecutionPromise: Promise<ToolExecutionOutcome>,\n\tcache: Map<string, ReusableToolResultEntry>,\n\tpending: Map<string, Promise<ToolExecutionOutcome>>,\n\tpolicyCheckedKeys?: Set<string>,\n\tcacheGeneration?: ReusableToolResultCacheGeneration,\n): Promise<ToolExecutionOutcome> {\n\tconst trackedGeneration = cacheGeneration?.value;\n\tconst trackedPromise = executionPromise\n\t\t.then((outcome) => {\n\t\t\tif (\n\t\t\t\t!outcome.isError &&\n\t\t\t\toutcome.message.isError !== true &&\n\t\t\t\t(cacheGeneration === undefined ||\n\t\t\t\t\tcacheGeneration.value === trackedGeneration)\n\t\t\t) {\n\t\t\t\tcache.set(cacheKey, {\n\t\t\t\t\tmessage: cloneToolResultForCache(outcome.message),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tpolicyCheckedKeys?.delete(cacheKey);\n\t\t\t}\n\t\t\treturn outcome;\n\t\t})\n\t\t.catch((error) => {\n\t\t\tpolicyCheckedKeys?.delete(cacheKey);\n\t\t\tthrow error;\n\t\t})\n\t\t.finally(() => {\n\t\t\tif (pending.get(cacheKey) === trackedPromise) {\n\t\t\t\tpending.delete(cacheKey);\n\t\t\t}\n\t\t});\n\tpending.set(cacheKey, trackedPromise);\n\treturn trackedPromise;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-execution.d.ts","sourceRoot":"","sources":["../../../src/agent/transport/tool-execution.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAGvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,KAAK,EACX,eAAe,EAGf,gBAAgB,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,KAAK,EACX,cAAc,EACd,SAAS,EACT,eAAe,EACf,QAAQ,EAER,MAAM,aAAa,CAAC;AACrB,OAAO,EAEN,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,EAE5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACX,oBAAoB,EACpB,eAAe,EACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,KAAK,eAAe,EAEpB,MAAM,sBAAsB,CAAC;AAM9B,MAAM,WAAW,oBAAoB;IACpC,QAAQ,EAAE,QAAQ,CAAC;IACnB,iBAAiB,EAAE,QAAQ,CAAC;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,GAAG,EAAE,cAAc,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB,KAAK,EAAE,KAAK,CAAC;IACb,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,WAAW,CAAC,EAAE,IAAI,CACjB,eAAe,EACf,qBAAqB,GAAG,kBAAkB,GAAG,4BAA4B,CACzE,CAAC;IACF,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,iBAAiB,CAAC,EAAE,0BAA0B,CAAC;IAC/C,mBAAmB,CAAC,EAAE,2BAA2B,CAAC;IAClD,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAClD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,eAAe,EAAE,eAAe,CAAC;IACjC,gEAAgE;IAChE,qBAAqB,CAAC,EAAE,OAAO,CAAC;QAC/B,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;QACpC,OAAO,EAAE,OAAO,CAAC;KACjB,CAAC,CAAC;CACH;AAuKD;;;;GAIG;AACH,wBAAgB,0BAA0B,CACzC,GAAG,EAAE,oBAAoB,GACvB,OAAO,CAAC,oBAAoB,CAAC,
|
|
1
|
+
{"version":3,"file":"tool-execution.d.ts","sourceRoot":"","sources":["../../../src/agent/transport/tool-execution.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAGvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,KAAK,EACX,eAAe,EAGf,gBAAgB,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,KAAK,EACX,cAAc,EACd,SAAS,EACT,eAAe,EACf,QAAQ,EAER,MAAM,aAAa,CAAC;AACrB,OAAO,EAEN,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,EAE5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACX,oBAAoB,EACpB,eAAe,EACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,KAAK,eAAe,EAEpB,MAAM,sBAAsB,CAAC;AAM9B,MAAM,WAAW,oBAAoB;IACpC,QAAQ,EAAE,QAAQ,CAAC;IACnB,iBAAiB,EAAE,QAAQ,CAAC;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,GAAG,EAAE,cAAc,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB,KAAK,EAAE,KAAK,CAAC;IACb,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,WAAW,CAAC,EAAE,IAAI,CACjB,eAAe,EACf,qBAAqB,GAAG,kBAAkB,GAAG,4BAA4B,CACzE,CAAC;IACF,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,iBAAiB,CAAC,EAAE,0BAA0B,CAAC;IAC/C,mBAAmB,CAAC,EAAE,2BAA2B,CAAC;IAClD,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAClD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,eAAe,EAAE,eAAe,CAAC;IACjC,gEAAgE;IAChE,qBAAqB,CAAC,EAAE,OAAO,CAAC;QAC/B,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;QACpC,OAAO,EAAE,OAAO,CAAC;KACjB,CAAC,CAAC;CACH;AAuKD;;;;GAIG;AACH,wBAAgB,0BAA0B,CACzC,GAAG,EAAE,oBAAoB,GACvB,OAAO,CAAC,oBAAoB,CAAC,CAyd/B"}
|
|
@@ -179,6 +179,7 @@ export function createToolExecutionPromise(ctx) {
|
|
|
179
179
|
? (tool.retryDelayMs ?? resolvedRetryConfig.initialDelayMs)
|
|
180
180
|
: resolvedRetryConfig.initialDelayMs;
|
|
181
181
|
const shouldRetryFn = tool.shouldRetry ?? isRetryableToolError;
|
|
182
|
+
const fallbackToolExecutionId = `local-tool-exec-${toolCall.id}`;
|
|
182
183
|
const context = cfg.sandbox ? { sandbox: cfg.sandbox } : undefined;
|
|
183
184
|
const onUpdate = (partialResult) => {
|
|
184
185
|
toolUpdateQueue.push({
|
|
@@ -206,24 +207,37 @@ export function createToolExecutionPromise(ctx) {
|
|
|
206
207
|
}
|
|
207
208
|
return runWithMcpClientToolService(clientToolService, () => tool.execute(toolCall.id, validatedArgs, signal, context, onUpdate));
|
|
208
209
|
};
|
|
209
|
-
const
|
|
210
|
-
if (!approvalRequestId) {
|
|
211
|
-
return;
|
|
212
|
-
}
|
|
210
|
+
const toolExecutionIdFromMessage = (message) => {
|
|
213
211
|
const details = message.details && typeof message.details === "object"
|
|
214
|
-
?
|
|
212
|
+
? message.details
|
|
215
213
|
: {};
|
|
216
|
-
|
|
217
|
-
details.
|
|
218
|
-
|
|
219
|
-
|
|
214
|
+
return typeof details.toolExecutionId === "string" &&
|
|
215
|
+
details.toolExecutionId.length > 0
|
|
216
|
+
? details.toolExecutionId
|
|
217
|
+
: undefined;
|
|
220
218
|
};
|
|
221
|
-
const
|
|
219
|
+
const withLocalExecutionMetadata = (metadata, message) => ({
|
|
222
220
|
...metadata,
|
|
221
|
+
toolExecutionId: metadata.toolExecutionId ??
|
|
222
|
+
(message ? toolExecutionIdFromMessage(message) : undefined) ??
|
|
223
|
+
fallbackToolExecutionId,
|
|
223
224
|
...(approvalRequestId && !metadata.approvalRequestId
|
|
224
225
|
? { approvalRequestId }
|
|
225
226
|
: {}),
|
|
226
227
|
});
|
|
228
|
+
const attachToolResultLinkage = (message, metadata) => {
|
|
229
|
+
const resolvedMetadata = withLocalExecutionMetadata(metadata, message);
|
|
230
|
+
const details = message.details && typeof message.details === "object"
|
|
231
|
+
? { ...message.details }
|
|
232
|
+
: {};
|
|
233
|
+
details.toolExecutionId = resolvedMetadata.toolExecutionId;
|
|
234
|
+
if (resolvedMetadata.approvalRequestId &&
|
|
235
|
+
typeof details.approvalRequestId !== "string") {
|
|
236
|
+
details.approvalRequestId = resolvedMetadata.approvalRequestId;
|
|
237
|
+
}
|
|
238
|
+
message.details = details;
|
|
239
|
+
return resolvedMetadata;
|
|
240
|
+
};
|
|
227
241
|
const executeWithRetry = async () => {
|
|
228
242
|
let totalAttempts = 0;
|
|
229
243
|
let userRetryRounds = 0;
|
|
@@ -325,7 +339,12 @@ export function createToolExecutionPromise(ctx) {
|
|
|
325
339
|
isError: result.isError || false,
|
|
326
340
|
timestamp: clock.now(),
|
|
327
341
|
};
|
|
328
|
-
|
|
342
|
+
attachToolResultLinkage(toolResultMsg, {
|
|
343
|
+
toolExecutionId: result.toolExecutionId ??
|
|
344
|
+
toolExecutionBridgePlan?.metadata.toolExecutionId,
|
|
345
|
+
approvalRequestId: result.approvalRequestId ??
|
|
346
|
+
toolExecutionBridgePlan?.metadata.approvalRequestId,
|
|
347
|
+
});
|
|
329
348
|
if (hookService && !result.isError) {
|
|
330
349
|
const postHookResult = await hookService.runPostToolUseHooks(effectiveToolCall, toolResultMsg, signal);
|
|
331
350
|
if (postHookResult.additionalContext) {
|
|
@@ -403,10 +422,11 @@ export function createToolExecutionPromise(ctx) {
|
|
|
403
422
|
const governedOutput = toolExecutionBridge && toolExecutionBridgePlan?.kind === "governed"
|
|
404
423
|
? await toolExecutionBridge.recordGovernedOutput(toolExecutionBridgePlan, toolResultMsg, clock.now() - startTime, signal)
|
|
405
424
|
: undefined;
|
|
425
|
+
const linkageMetadata = attachToolResultLinkage(toolResultMsg, buildObservedResultMetadata(toolExecutionBridgePlan, observed ?? governedOutput));
|
|
406
426
|
return {
|
|
407
427
|
message: toolResultMsg,
|
|
408
428
|
isError: toolResultMsg.isError,
|
|
409
|
-
...
|
|
429
|
+
...linkageMetadata,
|
|
410
430
|
};
|
|
411
431
|
}
|
|
412
432
|
catch (error) {
|
|
@@ -432,7 +452,10 @@ export function createToolExecutionPromise(ctx) {
|
|
|
432
452
|
isError: true,
|
|
433
453
|
timestamp: clock.now(),
|
|
434
454
|
};
|
|
435
|
-
|
|
455
|
+
attachToolResultLinkage(toolResultMsg, {
|
|
456
|
+
toolExecutionId: toolExecutionBridgePlan?.metadata.toolExecutionId,
|
|
457
|
+
approvalRequestId: toolExecutionBridgePlan?.metadata.approvalRequestId,
|
|
458
|
+
});
|
|
436
459
|
if (hookService) {
|
|
437
460
|
const failureHookResult = await hookService.runPostToolUseFailureHooks(effectiveToolCall, baseErrorMessage, signal);
|
|
438
461
|
if (failureHookResult.additionalContext) {
|
|
@@ -451,10 +474,11 @@ export function createToolExecutionPromise(ctx) {
|
|
|
451
474
|
const governedOutput = toolExecutionBridge && toolExecutionBridgePlan?.kind === "governed"
|
|
452
475
|
? await toolExecutionBridge.recordGovernedOutput(toolExecutionBridgePlan, toolResultMsg, clock.now() - startTime, signal)
|
|
453
476
|
: undefined;
|
|
477
|
+
const linkageMetadata = attachToolResultLinkage(toolResultMsg, buildObservedResultMetadata(toolExecutionBridgePlan, observed ?? governedOutput));
|
|
454
478
|
return {
|
|
455
479
|
message: toolResultMsg,
|
|
456
480
|
isError: true,
|
|
457
|
-
...
|
|
481
|
+
...linkageMetadata,
|
|
458
482
|
};
|
|
459
483
|
}
|
|
460
484
|
})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-execution.js","sourceRoot":"","sources":["../../../src/agent/transport/tool-execution.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Tool Execution\n * Creates the execution promise for a tool call, handling client/server dispatch,\n * audit logging, safety tracking, and hook lifecycle.\n */\n\nimport { getErrorMessage, isRetriableError } from \"../../errors/index.js\";\nimport type { ToolHookService } from \"../../hooks/tool-integration.js\";\nimport { runWithMcpClientToolService } from \"../../mcp/elicitation.js\";\nimport { METRICS } from \"../../safety/adaptive-thresholds.js\";\nimport type { AdaptiveThresholds } from \"../../safety/adaptive-thresholds.js\";\nimport type { SafetyMiddleware } from \"../../safety/safety-middleware.js\";\nimport { ToolError } from \"../../tools/tool-dsl.js\";\nimport type { Clock } from \"../../utils/clock.js\";\nimport { extractRetryHeaders, parseRetryAfter } from \"../../utils/retry.js\";\nimport type {\n\tToolRetryConfig,\n\tToolRetryDecision,\n\tToolRetryRequest,\n\tToolRetryService,\n} from \"../tool-retry.js\";\nimport type { ClientToolExecutionService } from \"../transport.js\";\nimport type {\n\tAgentRunConfig,\n\tAgentTool,\n\tAgentToolResult,\n\tToolCall,\n\tToolResultMessage,\n} from \"../types.js\";\nimport {\n\ttype ObserveToolExecutionPlan,\n\ttype PlatformToolExecutionBridge,\n\ttype ToolExecutionBridgePlan,\n\tbuildObservedResultMetadata,\n} from \"./tool-execution-bridge.js\";\nimport type {\n\tToolExecutionOutcome,\n\tToolUpdateQueue,\n} from \"./tool-update-queue.js\";\nimport {\n\ttype ToolAuditLogger,\n\tlogToolExecutionAudit,\n} from \"./transport-utils.js\";\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface ToolExecutionContext {\n\ttoolCall: ToolCall;\n\teffectiveToolCall: ToolCall;\n\ttool: AgentTool;\n\tvalidatedArgs: Record<string, unknown>;\n\tsanitizedExecutionArgs: Record<string, unknown>;\n\tcfg: AgentRunConfig;\n\tsignal?: AbortSignal;\n\t// Services\n\tclock: Clock;\n\tsafetyMiddleware: SafetyMiddleware;\n\tadaptiveThresholds: AdaptiveThresholds;\n\tauditLogger?: ToolAuditLogger;\n\thookService?: Pick<\n\t\tToolHookService,\n\t\t\"runPostToolUseHooks\" | \"runEvalGateHooks\" | \"runPostToolUseFailureHooks\"\n\t>;\n\ttoolRetryService?: ToolRetryService;\n\ttoolRetryConfig?: ToolRetryConfig;\n\tclientToolService?: ClientToolExecutionService;\n\ttoolExecutionBridge?: PlatformToolExecutionBridge;\n\ttoolExecutionBridgePlan?: ToolExecutionBridgePlan;\n\tapprovalRequestId?: string;\n\t// Concurrency\n\ttoolUpdateQueue: ToolUpdateQueue;\n\t/** Pre-created client tool execution promise (if applicable) */\n\tclientToolExecPromise?: Promise<{\n\t\tcontent: AgentToolResult[\"content\"];\n\t\tisError: boolean;\n\t}>;\n}\n\nconst DEFAULT_TOOL_RETRY_CONFIG: Required<ToolRetryConfig> = {\n\tmaxAutoRetries: 1,\n\tinitialDelayMs: 500,\n\tmaxDelayMs: 5_000,\n\tbackoffMultiplier: 2,\n};\n\n/** Hard cap on user-prompted retry rounds to prevent infinite loops. */\nconst MAX_USER_RETRY_ROUNDS = 10;\n\nconst RETRYABLE_MESSAGE_SNIPPETS = [\n\t\"timeout\",\n\t\"timed out\",\n\t\"rate limit\",\n\t\"too many requests\",\n\t\"temporarily\",\n\t\"overloaded\",\n\t\"network\",\n\t\"econnreset\",\n\t\"econnrefused\",\n\t\"enotfound\",\n];\n\nconst NON_RETRYABLE_MESSAGE_SNIPPETS = [\n\t\"invalid\",\n\t\"validation\",\n\t\"not found\",\n\t\"no such file\",\n\t\"permission\",\n\t\"denied\",\n\t\"unauthorized\",\n\t\"forbidden\",\n\t\"syntax\",\n];\n\nfunction resolveToolRetryConfig(\n\tconfig?: ToolRetryConfig,\n): Required<ToolRetryConfig> {\n\treturn {\n\t\tmaxAutoRetries:\n\t\t\tconfig?.maxAutoRetries ?? DEFAULT_TOOL_RETRY_CONFIG.maxAutoRetries,\n\t\tinitialDelayMs:\n\t\t\tconfig?.initialDelayMs ?? DEFAULT_TOOL_RETRY_CONFIG.initialDelayMs,\n\t\tmaxDelayMs: config?.maxDelayMs ?? DEFAULT_TOOL_RETRY_CONFIG.maxDelayMs,\n\t\tbackoffMultiplier:\n\t\t\tconfig?.backoffMultiplier ?? DEFAULT_TOOL_RETRY_CONFIG.backoffMultiplier,\n\t};\n}\n\nfunction isRetryableToolError(error: unknown): boolean {\n\tif (!error) return false;\n\tif (isRetriableError(error)) return true;\n\tif (error instanceof ToolError && error.code === \"VALIDATION_ERROR\") {\n\t\treturn false;\n\t}\n\tif (error instanceof Error && error.name === \"AbortError\") {\n\t\treturn false;\n\t}\n\tconst message =\n\t\terror instanceof Error\n\t\t\t? error.message.toLowerCase()\n\t\t\t: String(error).toLowerCase();\n\tif (\n\t\tNON_RETRYABLE_MESSAGE_SNIPPETS.some((snippet) => message.includes(snippet))\n\t) {\n\t\treturn false;\n\t}\n\tif (RETRYABLE_MESSAGE_SNIPPETS.some((snippet) => message.includes(snippet))) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction buildToolErrorHints(error: unknown, baseMessage: string): string[] {\n\tconst hints = new Set<string>();\n\tconst lower = baseMessage.toLowerCase();\n\n\tif (error instanceof ToolError && error.code === \"VALIDATION_ERROR\") {\n\t\thints.add(\"Check the tool arguments for missing or invalid values.\");\n\t}\n\tif (\n\t\tlower.includes(\"permission\") ||\n\t\tlower.includes(\"eacces\") ||\n\t\tlower.includes(\"denied\")\n\t) {\n\t\thints.add(\"Verify file permissions or access rights.\");\n\t}\n\tif (lower.includes(\"not found\") || lower.includes(\"no such file\")) {\n\t\thints.add(\"Confirm the target path exists and is spelled correctly.\");\n\t}\n\tif (lower.includes(\"timeout\") || lower.includes(\"timed out\")) {\n\t\thints.add(\"Check network connectivity and retry.\");\n\t}\n\tif (lower.includes(\"rate limit\") || lower.includes(\"too many requests\")) {\n\t\thints.add(\"Wait briefly before retrying the request.\");\n\t}\n\tif (\n\t\tlower.includes(\"unauthorized\") ||\n\t\tlower.includes(\"forbidden\") ||\n\t\tlower.includes(\"api key\") ||\n\t\tlower.includes(\"credential\")\n\t) {\n\t\thints.add(\"Verify API keys or credentials for this provider.\");\n\t}\n\tif (isRetriableError(error)) {\n\t\thints.add(\"This looks transient; retrying may succeed.\");\n\t}\n\n\treturn Array.from(hints);\n}\n\nfunction formatToolErrorMessage(error: unknown): string {\n\tconst baseMessage = getErrorMessage(error);\n\tconst hints = buildToolErrorHints(error, baseMessage);\n\tif (hints.length === 0) {\n\t\treturn baseMessage;\n\t}\n\treturn `${baseMessage}\\n\\nNext steps:\\n${hints\n\t\t.map((hint) => `- ${hint}`)\n\t\t.join(\"\\n\")}`;\n}\n\nfunction buildRetrySummary(errorMessage: string): string {\n\tconst firstLine = errorMessage.split(/\\r?\\n/)[0]?.trim();\n\tif (!firstLine) {\n\t\treturn \"Awaiting retry decision\";\n\t}\n\tconst shortened =\n\t\tfirstLine.length > 80 ? `${firstLine.slice(0, 77)}...` : firstLine;\n\treturn `Retry after error: ${shortened}`;\n}\n\nfunction sleepWithSignal(ms: number, signal?: AbortSignal): Promise<void> {\n\tif (ms <= 0) return Promise.resolve();\n\tif (!signal) {\n\t\treturn new Promise((resolve) => setTimeout(resolve, ms));\n\t}\n\tif (signal.aborted) {\n\t\tconst error = new Error(\"Operation aborted\");\n\t\terror.name = \"AbortError\";\n\t\treturn Promise.reject(error);\n\t}\n\treturn new Promise((resolve, reject) => {\n\t\tconst timer = setTimeout(() => {\n\t\t\tcleanup();\n\t\t\tresolve();\n\t\t}, ms);\n\t\tconst onAbort = () => {\n\t\t\tclearTimeout(timer);\n\t\t\tcleanup();\n\t\t\tconst error = new Error(\"Operation aborted\");\n\t\t\terror.name = \"AbortError\";\n\t\t\treject(error);\n\t\t};\n\t\tconst cleanup = () => {\n\t\t\tsignal.removeEventListener(\"abort\", onAbort);\n\t\t};\n\t\tsignal.addEventListener(\"abort\", onAbort, { once: true });\n\t});\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Execution Promise Factory\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Create a promise that executes the tool and returns the outcome.\n * Handles client vs server tool dispatch, audit logging, safety tracking,\n * and hook lifecycle (PostToolUse, EvalGate, PostToolUseFailure).\n */\nexport function createToolExecutionPromise(\n\tctx: ToolExecutionContext,\n): Promise<ToolExecutionOutcome> {\n\tconst {\n\t\ttoolCall,\n\t\teffectiveToolCall,\n\t\ttool,\n\t\tvalidatedArgs,\n\t\tsanitizedExecutionArgs,\n\t\tcfg,\n\t\tsignal,\n\t\tclock,\n\t\tsafetyMiddleware,\n\t\tadaptiveThresholds,\n\t\tauditLogger,\n\t\thookService,\n\t\ttoolUpdateQueue,\n\t\tclientToolExecPromise,\n\t\ttoolRetryService,\n\t\ttoolRetryConfig,\n\t\tclientToolService,\n\t\ttoolExecutionBridge,\n\t\ttoolExecutionBridgePlan,\n\t\tapprovalRequestId,\n\t} = ctx;\n\n\tconst startTime = clock.now();\n\tconst resolvedRetryConfig = resolveToolRetryConfig(toolRetryConfig);\n\tconst toolHasRetryConfig =\n\t\ttool.maxRetries !== undefined ||\n\t\ttool.retryDelayMs !== undefined ||\n\t\ttool.shouldRetry !== undefined;\n\tconst isClientTool = tool.executionLocation === \"client\";\n\tconst allowAutoRetries =\n\t\t!isClientTool &&\n\t\t!toolHasRetryConfig &&\n\t\tresolvedRetryConfig.maxAutoRetries > 0;\n\tconst autoMaxAttempts = isClientTool\n\t\t? 1\n\t\t: toolHasRetryConfig\n\t\t\t? (tool.maxRetries ?? resolvedRetryConfig.maxAutoRetries) + 1\n\t\t\t: allowAutoRetries\n\t\t\t\t? resolvedRetryConfig.maxAutoRetries + 1\n\t\t\t\t: 1;\n\tconst retryDelay = toolHasRetryConfig\n\t\t? (tool.retryDelayMs ?? resolvedRetryConfig.initialDelayMs)\n\t\t: resolvedRetryConfig.initialDelayMs;\n\tconst shouldRetryFn = tool.shouldRetry ?? isRetryableToolError;\n\n\tconst context = cfg.sandbox ? { sandbox: cfg.sandbox } : undefined;\n\tconst onUpdate = (partialResult: AgentToolResult) => {\n\t\ttoolUpdateQueue.push({\n\t\t\ttype: \"tool_execution_update\",\n\t\t\ttoolCallId: toolCall.id,\n\t\t\ttoolName: toolCall.name,\n\t\t\targs: sanitizedExecutionArgs,\n\t\t\tpartialResult,\n\t\t});\n\t};\n\n\tconst executeToolOnce = async (): Promise<AgentToolResult> => {\n\t\tif (tool.executionLocation === \"client\") {\n\t\t\tif (!clientToolExecPromise) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Client tool execution service not configured for tool \"${tool.name}\"`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst res = await clientToolExecPromise;\n\t\t\treturn {\n\t\t\t\tcontent: res.content,\n\t\t\t\tisError: res.isError,\n\t\t\t\tdetails: undefined,\n\t\t\t} as AgentToolResult;\n\t\t}\n\t\tif (!clientToolService) {\n\t\t\treturn Promise.resolve(\n\t\t\t\ttool.execute(toolCall.id, validatedArgs, signal, context, onUpdate),\n\t\t\t);\n\t\t}\n\t\treturn runWithMcpClientToolService(clientToolService, () =>\n\t\t\ttool.execute(toolCall.id, validatedArgs, signal, context, onUpdate),\n\t\t);\n\t};\n\n\tconst attachApprovalRequestId = (message: ToolResultMessage): void => {\n\t\tif (!approvalRequestId) {\n\t\t\treturn;\n\t\t}\n\t\tconst details =\n\t\t\tmessage.details && typeof message.details === \"object\"\n\t\t\t\t? { ...(message.details as Record<string, unknown>) }\n\t\t\t\t: {};\n\t\tif (typeof details.approvalRequestId !== \"string\") {\n\t\t\tdetails.approvalRequestId = approvalRequestId;\n\t\t}\n\t\tmessage.details = details as typeof message.details;\n\t};\n\n\tconst withLocalApprovalMetadata = (\n\t\tmetadata: ReturnType<typeof buildObservedResultMetadata>,\n\t): ReturnType<typeof buildObservedResultMetadata> => ({\n\t\t...metadata,\n\t\t...(approvalRequestId && !metadata.approvalRequestId\n\t\t\t? { approvalRequestId }\n\t\t\t: {}),\n\t});\n\n\tconst executeWithRetry = async (): Promise<AgentToolResult> => {\n\t\tlet totalAttempts = 0;\n\t\tlet userRetryRounds = 0;\n\t\twhile (userRetryRounds < MAX_USER_RETRY_ROUNDS) {\n\t\t\tlet attempt = 0;\n\t\t\tlet delayMs = retryDelay;\n\t\t\tlet lastError: unknown;\n\n\t\t\twhile (attempt < autoMaxAttempts) {\n\t\t\t\tattempt += 1;\n\t\t\t\ttotalAttempts += 1;\n\t\t\t\ttry {\n\t\t\t\t\treturn await executeToolOnce();\n\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\tlastError = error;\n\t\t\t\t\tif (signal?.aborted) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t\tconst retryable = shouldRetryFn(error);\n\t\t\t\t\tconst isFinalAttempt = attempt >= autoMaxAttempts;\n\t\t\t\t\tif (!retryable || isFinalAttempt) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (toolHasRetryConfig) {\n\t\t\t\t\t\t// Tool-level config: fixed delay\n\t\t\t\t\t\tawait sleepWithSignal(retryDelay, signal);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Transport-level config: exponential backoff\n\t\t\t\t\t\tconst retryAfter = parseRetryAfter(extractRetryHeaders(error));\n\t\t\t\t\t\tconst delay = Math.min(\n\t\t\t\t\t\t\tretryAfter ?? delayMs,\n\t\t\t\t\t\t\tresolvedRetryConfig.maxDelayMs,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdelayMs = retryAfter\n\t\t\t\t\t\t\t? resolvedRetryConfig.initialDelayMs\n\t\t\t\t\t\t\t: Math.min(\n\t\t\t\t\t\t\t\t\tdelayMs * resolvedRetryConfig.backoffMultiplier,\n\t\t\t\t\t\t\t\t\tresolvedRetryConfig.maxDelayMs,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\tawait sleepWithSignal(delay, signal);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!lastError) {\n\t\t\t\tthrow new Error(\"Tool execution failed without an error\");\n\t\t\t}\n\t\t\tif (!toolRetryService || !shouldRetryFn(lastError)) {\n\t\t\t\tthrow lastError;\n\t\t\t}\n\t\t\tconst errorMessage = getErrorMessage(lastError);\n\t\t\tconst request: ToolRetryRequest = {\n\t\t\t\tid: `${toolCall.id}:retry:${totalAttempts}`,\n\t\t\t\ttoolCallId: toolCall.id,\n\t\t\t\ttoolName: toolCall.name,\n\t\t\t\targs: sanitizedExecutionArgs,\n\t\t\t\terrorMessage,\n\t\t\t\tattempt: totalAttempts,\n\t\t\t\tsummary: buildRetrySummary(errorMessage),\n\t\t\t};\n\t\t\tif (toolRetryService.requiresUserInteraction()) {\n\t\t\t\ttoolUpdateQueue.push({\n\t\t\t\t\ttype: \"tool_retry_required\",\n\t\t\t\t\trequest,\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst decision: ToolRetryDecision =\n\t\t\t\tawait toolRetryService.requestDecision(request, signal);\n\t\t\tif (toolRetryService.requiresUserInteraction()) {\n\t\t\t\ttoolUpdateQueue.push({\n\t\t\t\t\ttype: \"tool_retry_resolved\",\n\t\t\t\t\trequest,\n\t\t\t\t\tdecision,\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (decision.action === \"retry\") {\n\t\t\t\tif (isClientTool) {\n\t\t\t\t\t// Client tools use a pre-created promise that can't be re-executed\n\t\t\t\t\t// from the transport layer. Throw so the client can handle re-dispatch.\n\t\t\t\t\tthrow lastError;\n\t\t\t\t}\n\t\t\t\tuserRetryRounds += 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (decision.action === \"abort\") {\n\t\t\t\tconst abortError = new Error(decision.reason ?? \"Tool retry aborted\");\n\t\t\t\tabortError.name = \"AbortError\";\n\t\t\t\tthrow abortError;\n\t\t\t}\n\t\t\tthrow lastError;\n\t\t}\n\t\tthrow new Error(\n\t\t\t`Tool \"${toolCall.name}\" failed after ${MAX_USER_RETRY_ROUNDS} retry rounds`,\n\t\t);\n\t};\n\n\treturn (async () => {\n\t\ttry {\n\t\t\tconst result = await executeWithRetry();\n\n\t\t\tawait logToolExecutionAudit(\n\t\t\t\tauditLogger,\n\t\t\t\ttoolCall.name,\n\t\t\t\tsanitizedExecutionArgs,\n\t\t\t\tresult.isError ? \"failure\" : \"success\",\n\t\t\t\tclock.now() - startTime,\n\t\t\t);\n\n\t\t\tsafetyMiddleware.postExecution(\n\t\t\t\ttoolCall.name,\n\t\t\t\tvalidatedArgs,\n\t\t\t\t!result.isError,\n\t\t\t\ttrue,\n\t\t\t);\n\n\t\t\tadaptiveThresholds.recordObservation(\n\t\t\t\tMETRICS.FAILURE_RATE,\n\t\t\t\tresult.isError ? 1 : 0,\n\t\t\t);\n\n\t\t\tconst toolResultMsg: ToolResultMessage = {\n\t\t\t\trole: \"toolResult\" as const,\n\t\t\t\ttoolCallId: toolCall.id,\n\t\t\t\ttoolName: toolCall.name,\n\t\t\t\tcontent: result.content,\n\t\t\t\tdetails: result.details,\n\t\t\t\tisError: result.isError || false,\n\t\t\t\ttimestamp: clock.now(),\n\t\t\t};\n\t\t\tattachApprovalRequestId(toolResultMsg);\n\n\t\t\tif (hookService && !result.isError) {\n\t\t\t\tconst postHookResult = await hookService.runPostToolUseHooks(\n\t\t\t\t\teffectiveToolCall,\n\t\t\t\t\ttoolResultMsg,\n\t\t\t\t\tsignal,\n\t\t\t\t);\n\t\t\t\tif (postHookResult.additionalContext) {\n\t\t\t\t\ttoolResultMsg.content = [\n\t\t\t\t\t\t...toolResultMsg.content,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\t\ttext: `\\n[Hook context]: ${postHookResult.additionalContext}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tif (postHookResult.preventContinuation) {\n\t\t\t\t\ttoolResultMsg.content = [\n\t\t\t\t\t\t...toolResultMsg.content,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\t\ttext: `\\n[Hook stop]: ${postHookResult.stopReason ?? \"Hook requested stop\"}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t\ttoolResultMsg.isError = true;\n\t\t\t\t}\n\t\t\t\tif (postHookResult.assertions?.length || postHookResult.evaluation) {\n\t\t\t\t\tconst mergedDetails: Record<string, unknown> =\n\t\t\t\t\t\ttoolResultMsg.details && typeof toolResultMsg.details === \"object\"\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...(toolResultMsg.details as Record<string, unknown>),\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: {};\n\t\t\t\t\tif (postHookResult.evaluation) {\n\t\t\t\t\t\tmergedDetails.evaluation = postHookResult.evaluation;\n\t\t\t\t\t}\n\t\t\t\t\tif (postHookResult.assertions?.length) {\n\t\t\t\t\t\tmergedDetails.assertions = postHookResult.assertions;\n\t\t\t\t\t}\n\t\t\t\t\ttoolResultMsg.details = mergedDetails as typeof toolResultMsg.details;\n\t\t\t\t}\n\n\t\t\t\tconst evalHookResult = await hookService.runEvalGateHooks(\n\t\t\t\t\teffectiveToolCall,\n\t\t\t\t\ttoolResultMsg,\n\t\t\t\t\tsignal,\n\t\t\t\t);\n\n\t\t\t\tif (evalHookResult.additionalContext) {\n\t\t\t\t\ttoolResultMsg.content = [\n\t\t\t\t\t\t...toolResultMsg.content,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\t\ttext: `\\n[Hook context]: ${evalHookResult.additionalContext}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\tif (evalHookResult.assertions?.length || evalHookResult.evaluation) {\n\t\t\t\t\tconst mergedDetails: Record<string, unknown> =\n\t\t\t\t\t\ttoolResultMsg.details && typeof toolResultMsg.details === \"object\"\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...(toolResultMsg.details as Record<string, unknown>),\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: {};\n\t\t\t\t\tif (\n\t\t\t\t\t\tevalHookResult.evaluation &&\n\t\t\t\t\t\tObject.keys(evalHookResult.evaluation).length > 0\n\t\t\t\t\t) {\n\t\t\t\t\t\tmergedDetails.evaluation = evalHookResult.evaluation;\n\t\t\t\t\t}\n\t\t\t\t\tif (evalHookResult.assertions?.length) {\n\t\t\t\t\t\tmergedDetails.assertions = evalHookResult.assertions;\n\t\t\t\t\t}\n\t\t\t\t\ttoolResultMsg.details = mergedDetails as typeof toolResultMsg.details;\n\t\t\t\t}\n\n\t\t\t\tif (evalHookResult.preventContinuation) {\n\t\t\t\t\ttoolResultMsg.content = [\n\t\t\t\t\t\t...toolResultMsg.content,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\t\ttext: `\\n[Hook stop]: ${evalHookResult.stopReason ?? \"Hook requested stop\"}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t\ttoolResultMsg.isError = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst observed =\n\t\t\t\ttoolExecutionBridge && toolExecutionBridgePlan?.kind === \"observe\"\n\t\t\t\t\t? await toolExecutionBridge.recordObservation(\n\t\t\t\t\t\t\ttoolExecutionBridgePlan as ObserveToolExecutionPlan,\n\t\t\t\t\t\t\ttoolResultMsg,\n\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t)\n\t\t\t\t\t: undefined;\n\t\t\tconst governedOutput =\n\t\t\t\ttoolExecutionBridge && toolExecutionBridgePlan?.kind === \"governed\"\n\t\t\t\t\t? await toolExecutionBridge.recordGovernedOutput(\n\t\t\t\t\t\t\ttoolExecutionBridgePlan,\n\t\t\t\t\t\t\ttoolResultMsg,\n\t\t\t\t\t\t\tclock.now() - startTime,\n\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t)\n\t\t\t\t\t: undefined;\n\n\t\t\treturn {\n\t\t\t\tmessage: toolResultMsg,\n\t\t\t\tisError: toolResultMsg.isError,\n\t\t\t\t...withLocalApprovalMetadata(\n\t\t\t\t\tbuildObservedResultMetadata(\n\t\t\t\t\t\ttoolExecutionBridgePlan,\n\t\t\t\t\t\tobserved ?? governedOutput,\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t};\n\t\t} catch (error: unknown) {\n\t\t\tif (error instanceof Error && error.name === \"AbortError\") {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tconst baseErrorMessage = getErrorMessage(error);\n\t\t\tconst formattedMessage = formatToolErrorMessage(error);\n\n\t\t\tawait logToolExecutionAudit(\n\t\t\t\tauditLogger,\n\t\t\t\ttoolCall.name,\n\t\t\t\tsafetyMiddleware.sanitizeForLogging(validatedArgs),\n\t\t\t\t\"failure\",\n\t\t\t\tclock.now() - startTime,\n\t\t\t\tbaseErrorMessage,\n\t\t\t);\n\n\t\t\tsafetyMiddleware.postExecution(toolCall.name, validatedArgs, false, true);\n\t\t\tadaptiveThresholds.recordObservation(METRICS.FAILURE_RATE, 1);\n\n\t\t\tconst toolResultMsg: ToolResultMessage = {\n\t\t\t\trole: \"toolResult\" as const,\n\t\t\t\ttoolCallId: toolCall.id,\n\t\t\t\ttoolName: toolCall.name,\n\t\t\t\tcontent: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\ttext: formattedMessage,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdetails: error instanceof ToolError ? error.details : undefined,\n\t\t\t\tisError: true,\n\t\t\t\ttimestamp: clock.now(),\n\t\t\t};\n\t\t\tattachApprovalRequestId(toolResultMsg);\n\n\t\t\tif (hookService) {\n\t\t\t\tconst failureHookResult = await hookService.runPostToolUseFailureHooks(\n\t\t\t\t\teffectiveToolCall,\n\t\t\t\t\tbaseErrorMessage,\n\t\t\t\t\tsignal,\n\t\t\t\t);\n\t\t\t\tif (failureHookResult.additionalContext) {\n\t\t\t\t\ttoolResultMsg.content = [\n\t\t\t\t\t\t...toolResultMsg.content,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\t\ttext: `\\n[Hook context]: ${failureHookResult.additionalContext}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst observed =\n\t\t\t\ttoolExecutionBridge && toolExecutionBridgePlan?.kind === \"observe\"\n\t\t\t\t\t? await toolExecutionBridge.recordObservation(\n\t\t\t\t\t\t\ttoolExecutionBridgePlan as ObserveToolExecutionPlan,\n\t\t\t\t\t\t\ttoolResultMsg,\n\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t)\n\t\t\t\t\t: undefined;\n\t\t\tconst governedOutput =\n\t\t\t\ttoolExecutionBridge && toolExecutionBridgePlan?.kind === \"governed\"\n\t\t\t\t\t? await toolExecutionBridge.recordGovernedOutput(\n\t\t\t\t\t\t\ttoolExecutionBridgePlan,\n\t\t\t\t\t\t\ttoolResultMsg,\n\t\t\t\t\t\t\tclock.now() - startTime,\n\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t)\n\t\t\t\t\t: undefined;\n\n\t\t\treturn {\n\t\t\t\tmessage: toolResultMsg,\n\t\t\t\tisError: true,\n\t\t\t\t...withLocalApprovalMetadata(\n\t\t\t\t\tbuildObservedResultMetadata(\n\t\t\t\t\t\ttoolExecutionBridgePlan,\n\t\t\t\t\t\tobserved ?? governedOutput,\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\t})();\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tool-execution.js","sourceRoot":"","sources":["../../../src/agent/transport/tool-execution.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Tool Execution\n * Creates the execution promise for a tool call, handling client/server dispatch,\n * audit logging, safety tracking, and hook lifecycle.\n */\n\nimport { getErrorMessage, isRetriableError } from \"../../errors/index.js\";\nimport type { ToolHookService } from \"../../hooks/tool-integration.js\";\nimport { runWithMcpClientToolService } from \"../../mcp/elicitation.js\";\nimport { METRICS } from \"../../safety/adaptive-thresholds.js\";\nimport type { AdaptiveThresholds } from \"../../safety/adaptive-thresholds.js\";\nimport type { SafetyMiddleware } from \"../../safety/safety-middleware.js\";\nimport { ToolError } from \"../../tools/tool-dsl.js\";\nimport type { Clock } from \"../../utils/clock.js\";\nimport { extractRetryHeaders, parseRetryAfter } from \"../../utils/retry.js\";\nimport type {\n\tToolRetryConfig,\n\tToolRetryDecision,\n\tToolRetryRequest,\n\tToolRetryService,\n} from \"../tool-retry.js\";\nimport type { ClientToolExecutionService } from \"../transport.js\";\nimport type {\n\tAgentRunConfig,\n\tAgentTool,\n\tAgentToolResult,\n\tToolCall,\n\tToolResultMessage,\n} from \"../types.js\";\nimport {\n\ttype ObserveToolExecutionPlan,\n\ttype PlatformToolExecutionBridge,\n\ttype ToolExecutionBridgePlan,\n\tbuildObservedResultMetadata,\n} from \"./tool-execution-bridge.js\";\nimport type {\n\tToolExecutionOutcome,\n\tToolUpdateQueue,\n} from \"./tool-update-queue.js\";\nimport {\n\ttype ToolAuditLogger,\n\tlogToolExecutionAudit,\n} from \"./transport-utils.js\";\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport interface ToolExecutionContext {\n\ttoolCall: ToolCall;\n\teffectiveToolCall: ToolCall;\n\ttool: AgentTool;\n\tvalidatedArgs: Record<string, unknown>;\n\tsanitizedExecutionArgs: Record<string, unknown>;\n\tcfg: AgentRunConfig;\n\tsignal?: AbortSignal;\n\t// Services\n\tclock: Clock;\n\tsafetyMiddleware: SafetyMiddleware;\n\tadaptiveThresholds: AdaptiveThresholds;\n\tauditLogger?: ToolAuditLogger;\n\thookService?: Pick<\n\t\tToolHookService,\n\t\t\"runPostToolUseHooks\" | \"runEvalGateHooks\" | \"runPostToolUseFailureHooks\"\n\t>;\n\ttoolRetryService?: ToolRetryService;\n\ttoolRetryConfig?: ToolRetryConfig;\n\tclientToolService?: ClientToolExecutionService;\n\ttoolExecutionBridge?: PlatformToolExecutionBridge;\n\ttoolExecutionBridgePlan?: ToolExecutionBridgePlan;\n\tapprovalRequestId?: string;\n\t// Concurrency\n\ttoolUpdateQueue: ToolUpdateQueue;\n\t/** Pre-created client tool execution promise (if applicable) */\n\tclientToolExecPromise?: Promise<{\n\t\tcontent: AgentToolResult[\"content\"];\n\t\tisError: boolean;\n\t}>;\n}\n\nconst DEFAULT_TOOL_RETRY_CONFIG: Required<ToolRetryConfig> = {\n\tmaxAutoRetries: 1,\n\tinitialDelayMs: 500,\n\tmaxDelayMs: 5_000,\n\tbackoffMultiplier: 2,\n};\n\n/** Hard cap on user-prompted retry rounds to prevent infinite loops. */\nconst MAX_USER_RETRY_ROUNDS = 10;\n\nconst RETRYABLE_MESSAGE_SNIPPETS = [\n\t\"timeout\",\n\t\"timed out\",\n\t\"rate limit\",\n\t\"too many requests\",\n\t\"temporarily\",\n\t\"overloaded\",\n\t\"network\",\n\t\"econnreset\",\n\t\"econnrefused\",\n\t\"enotfound\",\n];\n\nconst NON_RETRYABLE_MESSAGE_SNIPPETS = [\n\t\"invalid\",\n\t\"validation\",\n\t\"not found\",\n\t\"no such file\",\n\t\"permission\",\n\t\"denied\",\n\t\"unauthorized\",\n\t\"forbidden\",\n\t\"syntax\",\n];\n\nfunction resolveToolRetryConfig(\n\tconfig?: ToolRetryConfig,\n): Required<ToolRetryConfig> {\n\treturn {\n\t\tmaxAutoRetries:\n\t\t\tconfig?.maxAutoRetries ?? DEFAULT_TOOL_RETRY_CONFIG.maxAutoRetries,\n\t\tinitialDelayMs:\n\t\t\tconfig?.initialDelayMs ?? DEFAULT_TOOL_RETRY_CONFIG.initialDelayMs,\n\t\tmaxDelayMs: config?.maxDelayMs ?? DEFAULT_TOOL_RETRY_CONFIG.maxDelayMs,\n\t\tbackoffMultiplier:\n\t\t\tconfig?.backoffMultiplier ?? DEFAULT_TOOL_RETRY_CONFIG.backoffMultiplier,\n\t};\n}\n\nfunction isRetryableToolError(error: unknown): boolean {\n\tif (!error) return false;\n\tif (isRetriableError(error)) return true;\n\tif (error instanceof ToolError && error.code === \"VALIDATION_ERROR\") {\n\t\treturn false;\n\t}\n\tif (error instanceof Error && error.name === \"AbortError\") {\n\t\treturn false;\n\t}\n\tconst message =\n\t\terror instanceof Error\n\t\t\t? error.message.toLowerCase()\n\t\t\t: String(error).toLowerCase();\n\tif (\n\t\tNON_RETRYABLE_MESSAGE_SNIPPETS.some((snippet) => message.includes(snippet))\n\t) {\n\t\treturn false;\n\t}\n\tif (RETRYABLE_MESSAGE_SNIPPETS.some((snippet) => message.includes(snippet))) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction buildToolErrorHints(error: unknown, baseMessage: string): string[] {\n\tconst hints = new Set<string>();\n\tconst lower = baseMessage.toLowerCase();\n\n\tif (error instanceof ToolError && error.code === \"VALIDATION_ERROR\") {\n\t\thints.add(\"Check the tool arguments for missing or invalid values.\");\n\t}\n\tif (\n\t\tlower.includes(\"permission\") ||\n\t\tlower.includes(\"eacces\") ||\n\t\tlower.includes(\"denied\")\n\t) {\n\t\thints.add(\"Verify file permissions or access rights.\");\n\t}\n\tif (lower.includes(\"not found\") || lower.includes(\"no such file\")) {\n\t\thints.add(\"Confirm the target path exists and is spelled correctly.\");\n\t}\n\tif (lower.includes(\"timeout\") || lower.includes(\"timed out\")) {\n\t\thints.add(\"Check network connectivity and retry.\");\n\t}\n\tif (lower.includes(\"rate limit\") || lower.includes(\"too many requests\")) {\n\t\thints.add(\"Wait briefly before retrying the request.\");\n\t}\n\tif (\n\t\tlower.includes(\"unauthorized\") ||\n\t\tlower.includes(\"forbidden\") ||\n\t\tlower.includes(\"api key\") ||\n\t\tlower.includes(\"credential\")\n\t) {\n\t\thints.add(\"Verify API keys or credentials for this provider.\");\n\t}\n\tif (isRetriableError(error)) {\n\t\thints.add(\"This looks transient; retrying may succeed.\");\n\t}\n\n\treturn Array.from(hints);\n}\n\nfunction formatToolErrorMessage(error: unknown): string {\n\tconst baseMessage = getErrorMessage(error);\n\tconst hints = buildToolErrorHints(error, baseMessage);\n\tif (hints.length === 0) {\n\t\treturn baseMessage;\n\t}\n\treturn `${baseMessage}\\n\\nNext steps:\\n${hints\n\t\t.map((hint) => `- ${hint}`)\n\t\t.join(\"\\n\")}`;\n}\n\nfunction buildRetrySummary(errorMessage: string): string {\n\tconst firstLine = errorMessage.split(/\\r?\\n/)[0]?.trim();\n\tif (!firstLine) {\n\t\treturn \"Awaiting retry decision\";\n\t}\n\tconst shortened =\n\t\tfirstLine.length > 80 ? `${firstLine.slice(0, 77)}...` : firstLine;\n\treturn `Retry after error: ${shortened}`;\n}\n\nfunction sleepWithSignal(ms: number, signal?: AbortSignal): Promise<void> {\n\tif (ms <= 0) return Promise.resolve();\n\tif (!signal) {\n\t\treturn new Promise((resolve) => setTimeout(resolve, ms));\n\t}\n\tif (signal.aborted) {\n\t\tconst error = new Error(\"Operation aborted\");\n\t\terror.name = \"AbortError\";\n\t\treturn Promise.reject(error);\n\t}\n\treturn new Promise((resolve, reject) => {\n\t\tconst timer = setTimeout(() => {\n\t\t\tcleanup();\n\t\t\tresolve();\n\t\t}, ms);\n\t\tconst onAbort = () => {\n\t\t\tclearTimeout(timer);\n\t\t\tcleanup();\n\t\t\tconst error = new Error(\"Operation aborted\");\n\t\t\terror.name = \"AbortError\";\n\t\t\treject(error);\n\t\t};\n\t\tconst cleanup = () => {\n\t\t\tsignal.removeEventListener(\"abort\", onAbort);\n\t\t};\n\t\tsignal.addEventListener(\"abort\", onAbort, { once: true });\n\t});\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Execution Promise Factory\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Create a promise that executes the tool and returns the outcome.\n * Handles client vs server tool dispatch, audit logging, safety tracking,\n * and hook lifecycle (PostToolUse, EvalGate, PostToolUseFailure).\n */\nexport function createToolExecutionPromise(\n\tctx: ToolExecutionContext,\n): Promise<ToolExecutionOutcome> {\n\tconst {\n\t\ttoolCall,\n\t\teffectiveToolCall,\n\t\ttool,\n\t\tvalidatedArgs,\n\t\tsanitizedExecutionArgs,\n\t\tcfg,\n\t\tsignal,\n\t\tclock,\n\t\tsafetyMiddleware,\n\t\tadaptiveThresholds,\n\t\tauditLogger,\n\t\thookService,\n\t\ttoolUpdateQueue,\n\t\tclientToolExecPromise,\n\t\ttoolRetryService,\n\t\ttoolRetryConfig,\n\t\tclientToolService,\n\t\ttoolExecutionBridge,\n\t\ttoolExecutionBridgePlan,\n\t\tapprovalRequestId,\n\t} = ctx;\n\n\tconst startTime = clock.now();\n\tconst resolvedRetryConfig = resolveToolRetryConfig(toolRetryConfig);\n\tconst toolHasRetryConfig =\n\t\ttool.maxRetries !== undefined ||\n\t\ttool.retryDelayMs !== undefined ||\n\t\ttool.shouldRetry !== undefined;\n\tconst isClientTool = tool.executionLocation === \"client\";\n\tconst allowAutoRetries =\n\t\t!isClientTool &&\n\t\t!toolHasRetryConfig &&\n\t\tresolvedRetryConfig.maxAutoRetries > 0;\n\tconst autoMaxAttempts = isClientTool\n\t\t? 1\n\t\t: toolHasRetryConfig\n\t\t\t? (tool.maxRetries ?? resolvedRetryConfig.maxAutoRetries) + 1\n\t\t\t: allowAutoRetries\n\t\t\t\t? resolvedRetryConfig.maxAutoRetries + 1\n\t\t\t\t: 1;\n\tconst retryDelay = toolHasRetryConfig\n\t\t? (tool.retryDelayMs ?? resolvedRetryConfig.initialDelayMs)\n\t\t: resolvedRetryConfig.initialDelayMs;\n\tconst shouldRetryFn = tool.shouldRetry ?? isRetryableToolError;\n\tconst fallbackToolExecutionId = `local-tool-exec-${toolCall.id}`;\n\n\tconst context = cfg.sandbox ? { sandbox: cfg.sandbox } : undefined;\n\tconst onUpdate = (partialResult: AgentToolResult) => {\n\t\ttoolUpdateQueue.push({\n\t\t\ttype: \"tool_execution_update\",\n\t\t\ttoolCallId: toolCall.id,\n\t\t\ttoolName: toolCall.name,\n\t\t\targs: sanitizedExecutionArgs,\n\t\t\tpartialResult,\n\t\t});\n\t};\n\n\tconst executeToolOnce = async (): Promise<AgentToolResult> => {\n\t\tif (tool.executionLocation === \"client\") {\n\t\t\tif (!clientToolExecPromise) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Client tool execution service not configured for tool \"${tool.name}\"`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst res = await clientToolExecPromise;\n\t\t\treturn {\n\t\t\t\tcontent: res.content,\n\t\t\t\tisError: res.isError,\n\t\t\t\tdetails: undefined,\n\t\t\t} as AgentToolResult;\n\t\t}\n\t\tif (!clientToolService) {\n\t\t\treturn Promise.resolve(\n\t\t\t\ttool.execute(toolCall.id, validatedArgs, signal, context, onUpdate),\n\t\t\t);\n\t\t}\n\t\treturn runWithMcpClientToolService(clientToolService, () =>\n\t\t\ttool.execute(toolCall.id, validatedArgs, signal, context, onUpdate),\n\t\t);\n\t};\n\n\tconst toolExecutionIdFromMessage = (\n\t\tmessage: ToolResultMessage,\n\t): string | undefined => {\n\t\tconst details =\n\t\t\tmessage.details && typeof message.details === \"object\"\n\t\t\t\t? (message.details as Record<string, unknown>)\n\t\t\t\t: {};\n\t\treturn typeof details.toolExecutionId === \"string\" &&\n\t\t\tdetails.toolExecutionId.length > 0\n\t\t\t? details.toolExecutionId\n\t\t\t: undefined;\n\t};\n\n\tconst withLocalExecutionMetadata = (\n\t\tmetadata: ReturnType<typeof buildObservedResultMetadata>,\n\t\tmessage?: ToolResultMessage,\n\t): ReturnType<typeof buildObservedResultMetadata> => ({\n\t\t...metadata,\n\t\ttoolExecutionId:\n\t\t\tmetadata.toolExecutionId ??\n\t\t\t(message ? toolExecutionIdFromMessage(message) : undefined) ??\n\t\t\tfallbackToolExecutionId,\n\t\t...(approvalRequestId && !metadata.approvalRequestId\n\t\t\t? { approvalRequestId }\n\t\t\t: {}),\n\t});\n\n\tconst attachToolResultLinkage = (\n\t\tmessage: ToolResultMessage,\n\t\tmetadata: ReturnType<typeof buildObservedResultMetadata>,\n\t): ReturnType<typeof buildObservedResultMetadata> => {\n\t\tconst resolvedMetadata = withLocalExecutionMetadata(metadata, message);\n\t\tconst details =\n\t\t\tmessage.details && typeof message.details === \"object\"\n\t\t\t\t? { ...(message.details as Record<string, unknown>) }\n\t\t\t\t: {};\n\t\tdetails.toolExecutionId = resolvedMetadata.toolExecutionId;\n\t\tif (\n\t\t\tresolvedMetadata.approvalRequestId &&\n\t\t\ttypeof details.approvalRequestId !== \"string\"\n\t\t) {\n\t\t\tdetails.approvalRequestId = resolvedMetadata.approvalRequestId;\n\t\t}\n\t\tmessage.details = details as typeof message.details;\n\t\treturn resolvedMetadata;\n\t};\n\n\tconst executeWithRetry = async (): Promise<AgentToolResult> => {\n\t\tlet totalAttempts = 0;\n\t\tlet userRetryRounds = 0;\n\t\twhile (userRetryRounds < MAX_USER_RETRY_ROUNDS) {\n\t\t\tlet attempt = 0;\n\t\t\tlet delayMs = retryDelay;\n\t\t\tlet lastError: unknown;\n\n\t\t\twhile (attempt < autoMaxAttempts) {\n\t\t\t\tattempt += 1;\n\t\t\t\ttotalAttempts += 1;\n\t\t\t\ttry {\n\t\t\t\t\treturn await executeToolOnce();\n\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\tlastError = error;\n\t\t\t\t\tif (signal?.aborted) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t\tconst retryable = shouldRetryFn(error);\n\t\t\t\t\tconst isFinalAttempt = attempt >= autoMaxAttempts;\n\t\t\t\t\tif (!retryable || isFinalAttempt) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (toolHasRetryConfig) {\n\t\t\t\t\t\t// Tool-level config: fixed delay\n\t\t\t\t\t\tawait sleepWithSignal(retryDelay, signal);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Transport-level config: exponential backoff\n\t\t\t\t\t\tconst retryAfter = parseRetryAfter(extractRetryHeaders(error));\n\t\t\t\t\t\tconst delay = Math.min(\n\t\t\t\t\t\t\tretryAfter ?? delayMs,\n\t\t\t\t\t\t\tresolvedRetryConfig.maxDelayMs,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdelayMs = retryAfter\n\t\t\t\t\t\t\t? resolvedRetryConfig.initialDelayMs\n\t\t\t\t\t\t\t: Math.min(\n\t\t\t\t\t\t\t\t\tdelayMs * resolvedRetryConfig.backoffMultiplier,\n\t\t\t\t\t\t\t\t\tresolvedRetryConfig.maxDelayMs,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\tawait sleepWithSignal(delay, signal);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!lastError) {\n\t\t\t\tthrow new Error(\"Tool execution failed without an error\");\n\t\t\t}\n\t\t\tif (!toolRetryService || !shouldRetryFn(lastError)) {\n\t\t\t\tthrow lastError;\n\t\t\t}\n\t\t\tconst errorMessage = getErrorMessage(lastError);\n\t\t\tconst request: ToolRetryRequest = {\n\t\t\t\tid: `${toolCall.id}:retry:${totalAttempts}`,\n\t\t\t\ttoolCallId: toolCall.id,\n\t\t\t\ttoolName: toolCall.name,\n\t\t\t\targs: sanitizedExecutionArgs,\n\t\t\t\terrorMessage,\n\t\t\t\tattempt: totalAttempts,\n\t\t\t\tsummary: buildRetrySummary(errorMessage),\n\t\t\t};\n\t\t\tif (toolRetryService.requiresUserInteraction()) {\n\t\t\t\ttoolUpdateQueue.push({\n\t\t\t\t\ttype: \"tool_retry_required\",\n\t\t\t\t\trequest,\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst decision: ToolRetryDecision =\n\t\t\t\tawait toolRetryService.requestDecision(request, signal);\n\t\t\tif (toolRetryService.requiresUserInteraction()) {\n\t\t\t\ttoolUpdateQueue.push({\n\t\t\t\t\ttype: \"tool_retry_resolved\",\n\t\t\t\t\trequest,\n\t\t\t\t\tdecision,\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (decision.action === \"retry\") {\n\t\t\t\tif (isClientTool) {\n\t\t\t\t\t// Client tools use a pre-created promise that can't be re-executed\n\t\t\t\t\t// from the transport layer. Throw so the client can handle re-dispatch.\n\t\t\t\t\tthrow lastError;\n\t\t\t\t}\n\t\t\t\tuserRetryRounds += 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (decision.action === \"abort\") {\n\t\t\t\tconst abortError = new Error(decision.reason ?? \"Tool retry aborted\");\n\t\t\t\tabortError.name = \"AbortError\";\n\t\t\t\tthrow abortError;\n\t\t\t}\n\t\t\tthrow lastError;\n\t\t}\n\t\tthrow new Error(\n\t\t\t`Tool \"${toolCall.name}\" failed after ${MAX_USER_RETRY_ROUNDS} retry rounds`,\n\t\t);\n\t};\n\n\treturn (async () => {\n\t\ttry {\n\t\t\tconst result = await executeWithRetry();\n\n\t\t\tawait logToolExecutionAudit(\n\t\t\t\tauditLogger,\n\t\t\t\ttoolCall.name,\n\t\t\t\tsanitizedExecutionArgs,\n\t\t\t\tresult.isError ? \"failure\" : \"success\",\n\t\t\t\tclock.now() - startTime,\n\t\t\t);\n\n\t\t\tsafetyMiddleware.postExecution(\n\t\t\t\ttoolCall.name,\n\t\t\t\tvalidatedArgs,\n\t\t\t\t!result.isError,\n\t\t\t\ttrue,\n\t\t\t);\n\n\t\t\tadaptiveThresholds.recordObservation(\n\t\t\t\tMETRICS.FAILURE_RATE,\n\t\t\t\tresult.isError ? 1 : 0,\n\t\t\t);\n\n\t\t\tconst toolResultMsg: ToolResultMessage = {\n\t\t\t\trole: \"toolResult\" as const,\n\t\t\t\ttoolCallId: toolCall.id,\n\t\t\t\ttoolName: toolCall.name,\n\t\t\t\tcontent: result.content,\n\t\t\t\tdetails: result.details,\n\t\t\t\tisError: result.isError || false,\n\t\t\t\ttimestamp: clock.now(),\n\t\t\t};\n\t\t\tattachToolResultLinkage(toolResultMsg, {\n\t\t\t\ttoolExecutionId:\n\t\t\t\t\tresult.toolExecutionId ??\n\t\t\t\t\ttoolExecutionBridgePlan?.metadata.toolExecutionId,\n\t\t\t\tapprovalRequestId:\n\t\t\t\t\tresult.approvalRequestId ??\n\t\t\t\t\ttoolExecutionBridgePlan?.metadata.approvalRequestId,\n\t\t\t});\n\n\t\t\tif (hookService && !result.isError) {\n\t\t\t\tconst postHookResult = await hookService.runPostToolUseHooks(\n\t\t\t\t\teffectiveToolCall,\n\t\t\t\t\ttoolResultMsg,\n\t\t\t\t\tsignal,\n\t\t\t\t);\n\t\t\t\tif (postHookResult.additionalContext) {\n\t\t\t\t\ttoolResultMsg.content = [\n\t\t\t\t\t\t...toolResultMsg.content,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\t\ttext: `\\n[Hook context]: ${postHookResult.additionalContext}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tif (postHookResult.preventContinuation) {\n\t\t\t\t\ttoolResultMsg.content = [\n\t\t\t\t\t\t...toolResultMsg.content,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\t\ttext: `\\n[Hook stop]: ${postHookResult.stopReason ?? \"Hook requested stop\"}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t\ttoolResultMsg.isError = true;\n\t\t\t\t}\n\t\t\t\tif (postHookResult.assertions?.length || postHookResult.evaluation) {\n\t\t\t\t\tconst mergedDetails: Record<string, unknown> =\n\t\t\t\t\t\ttoolResultMsg.details && typeof toolResultMsg.details === \"object\"\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...(toolResultMsg.details as Record<string, unknown>),\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: {};\n\t\t\t\t\tif (postHookResult.evaluation) {\n\t\t\t\t\t\tmergedDetails.evaluation = postHookResult.evaluation;\n\t\t\t\t\t}\n\t\t\t\t\tif (postHookResult.assertions?.length) {\n\t\t\t\t\t\tmergedDetails.assertions = postHookResult.assertions;\n\t\t\t\t\t}\n\t\t\t\t\ttoolResultMsg.details = mergedDetails as typeof toolResultMsg.details;\n\t\t\t\t}\n\n\t\t\t\tconst evalHookResult = await hookService.runEvalGateHooks(\n\t\t\t\t\teffectiveToolCall,\n\t\t\t\t\ttoolResultMsg,\n\t\t\t\t\tsignal,\n\t\t\t\t);\n\n\t\t\t\tif (evalHookResult.additionalContext) {\n\t\t\t\t\ttoolResultMsg.content = [\n\t\t\t\t\t\t...toolResultMsg.content,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\t\ttext: `\\n[Hook context]: ${evalHookResult.additionalContext}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\tif (evalHookResult.assertions?.length || evalHookResult.evaluation) {\n\t\t\t\t\tconst mergedDetails: Record<string, unknown> =\n\t\t\t\t\t\ttoolResultMsg.details && typeof toolResultMsg.details === \"object\"\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t...(toolResultMsg.details as Record<string, unknown>),\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: {};\n\t\t\t\t\tif (\n\t\t\t\t\t\tevalHookResult.evaluation &&\n\t\t\t\t\t\tObject.keys(evalHookResult.evaluation).length > 0\n\t\t\t\t\t) {\n\t\t\t\t\t\tmergedDetails.evaluation = evalHookResult.evaluation;\n\t\t\t\t\t}\n\t\t\t\t\tif (evalHookResult.assertions?.length) {\n\t\t\t\t\t\tmergedDetails.assertions = evalHookResult.assertions;\n\t\t\t\t\t}\n\t\t\t\t\ttoolResultMsg.details = mergedDetails as typeof toolResultMsg.details;\n\t\t\t\t}\n\n\t\t\t\tif (evalHookResult.preventContinuation) {\n\t\t\t\t\ttoolResultMsg.content = [\n\t\t\t\t\t\t...toolResultMsg.content,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\t\ttext: `\\n[Hook stop]: ${evalHookResult.stopReason ?? \"Hook requested stop\"}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t\ttoolResultMsg.isError = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst observed =\n\t\t\t\ttoolExecutionBridge && toolExecutionBridgePlan?.kind === \"observe\"\n\t\t\t\t\t? await toolExecutionBridge.recordObservation(\n\t\t\t\t\t\t\ttoolExecutionBridgePlan as ObserveToolExecutionPlan,\n\t\t\t\t\t\t\ttoolResultMsg,\n\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t)\n\t\t\t\t\t: undefined;\n\t\t\tconst governedOutput =\n\t\t\t\ttoolExecutionBridge && toolExecutionBridgePlan?.kind === \"governed\"\n\t\t\t\t\t? await toolExecutionBridge.recordGovernedOutput(\n\t\t\t\t\t\t\ttoolExecutionBridgePlan,\n\t\t\t\t\t\t\ttoolResultMsg,\n\t\t\t\t\t\t\tclock.now() - startTime,\n\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t)\n\t\t\t\t\t: undefined;\n\n\t\t\tconst linkageMetadata = attachToolResultLinkage(\n\t\t\t\ttoolResultMsg,\n\t\t\t\tbuildObservedResultMetadata(\n\t\t\t\t\ttoolExecutionBridgePlan,\n\t\t\t\t\tobserved ?? governedOutput,\n\t\t\t\t),\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tmessage: toolResultMsg,\n\t\t\t\tisError: toolResultMsg.isError,\n\t\t\t\t...linkageMetadata,\n\t\t\t};\n\t\t} catch (error: unknown) {\n\t\t\tif (error instanceof Error && error.name === \"AbortError\") {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tconst baseErrorMessage = getErrorMessage(error);\n\t\t\tconst formattedMessage = formatToolErrorMessage(error);\n\n\t\t\tawait logToolExecutionAudit(\n\t\t\t\tauditLogger,\n\t\t\t\ttoolCall.name,\n\t\t\t\tsafetyMiddleware.sanitizeForLogging(validatedArgs),\n\t\t\t\t\"failure\",\n\t\t\t\tclock.now() - startTime,\n\t\t\t\tbaseErrorMessage,\n\t\t\t);\n\n\t\t\tsafetyMiddleware.postExecution(toolCall.name, validatedArgs, false, true);\n\t\t\tadaptiveThresholds.recordObservation(METRICS.FAILURE_RATE, 1);\n\n\t\t\tconst toolResultMsg: ToolResultMessage = {\n\t\t\t\trole: \"toolResult\" as const,\n\t\t\t\ttoolCallId: toolCall.id,\n\t\t\t\ttoolName: toolCall.name,\n\t\t\t\tcontent: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\ttext: formattedMessage,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdetails: error instanceof ToolError ? error.details : undefined,\n\t\t\t\tisError: true,\n\t\t\t\ttimestamp: clock.now(),\n\t\t\t};\n\t\t\tattachToolResultLinkage(toolResultMsg, {\n\t\t\t\ttoolExecutionId: toolExecutionBridgePlan?.metadata.toolExecutionId,\n\t\t\t\tapprovalRequestId: toolExecutionBridgePlan?.metadata.approvalRequestId,\n\t\t\t});\n\n\t\t\tif (hookService) {\n\t\t\t\tconst failureHookResult = await hookService.runPostToolUseFailureHooks(\n\t\t\t\t\teffectiveToolCall,\n\t\t\t\t\tbaseErrorMessage,\n\t\t\t\t\tsignal,\n\t\t\t\t);\n\t\t\t\tif (failureHookResult.additionalContext) {\n\t\t\t\t\ttoolResultMsg.content = [\n\t\t\t\t\t\t...toolResultMsg.content,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\t\ttext: `\\n[Hook context]: ${failureHookResult.additionalContext}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst observed =\n\t\t\t\ttoolExecutionBridge && toolExecutionBridgePlan?.kind === \"observe\"\n\t\t\t\t\t? await toolExecutionBridge.recordObservation(\n\t\t\t\t\t\t\ttoolExecutionBridgePlan as ObserveToolExecutionPlan,\n\t\t\t\t\t\t\ttoolResultMsg,\n\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t)\n\t\t\t\t\t: undefined;\n\t\t\tconst governedOutput =\n\t\t\t\ttoolExecutionBridge && toolExecutionBridgePlan?.kind === \"governed\"\n\t\t\t\t\t? await toolExecutionBridge.recordGovernedOutput(\n\t\t\t\t\t\t\ttoolExecutionBridgePlan,\n\t\t\t\t\t\t\ttoolResultMsg,\n\t\t\t\t\t\t\tclock.now() - startTime,\n\t\t\t\t\t\t\tsignal,\n\t\t\t\t\t\t)\n\t\t\t\t\t: undefined;\n\n\t\t\tconst linkageMetadata = attachToolResultLinkage(\n\t\t\t\ttoolResultMsg,\n\t\t\t\tbuildObservedResultMetadata(\n\t\t\t\t\ttoolExecutionBridgePlan,\n\t\t\t\t\tobserved ?? governedOutput,\n\t\t\t\t),\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tmessage: toolResultMsg,\n\t\t\t\tisError: true,\n\t\t\t\t...linkageMetadata,\n\t\t\t};\n\t\t}\n\t})();\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/agent/transport.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/agent/transport.ts"],"names":[],"mappings":"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"}
|