fix(tools): make schema traversal stack-safe

This commit is contained in:
Tianyi Cui
2026-07-22 20:51:13 +08:00
parent c05b684d52
commit 34194f0cd5
15 changed files with 1143 additions and 344 deletions

View File

@@ -773,10 +773,14 @@ export class ToolRegistry extends Service {
/** Project one definition onto the model-facing schema fields. */
private schemaOf(definition: ToolDefinition, detachParameters: boolean): ToolSchema {
const { name, description, parameters } = definition
const detached = detachParameters ? snapshotJsonValue(parameters) : parameters
if (detached === undefined) {
throw new Error(`tool "${name}" parameters must be lossless JSON before schema projection`)
}
return {
name,
description,
parameters: detachParameters ? structuredClone(parameters) : parameters,
parameters: detached,
}
}