@namzu/sdk 3.1.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/CHANGELOG.md +177 -0
  2. package/dist/advisory/__tests__/consultation-context.test.d.ts +2 -0
  3. package/dist/advisory/__tests__/consultation-context.test.d.ts.map +1 -0
  4. package/dist/advisory/__tests__/consultation-context.test.js +124 -0
  5. package/dist/advisory/__tests__/consultation-context.test.js.map +1 -0
  6. package/dist/advisory/context.d.ts +25 -0
  7. package/dist/advisory/context.d.ts.map +1 -1
  8. package/dist/advisory/context.js +18 -0
  9. package/dist/advisory/context.js.map +1 -1
  10. package/dist/advisory/executor.d.ts.map +1 -1
  11. package/dist/advisory/executor.js +25 -3
  12. package/dist/advisory/executor.js.map +1 -1
  13. package/dist/compaction/__tests__/context-reducer.test.d.ts +2 -0
  14. package/dist/compaction/__tests__/context-reducer.test.d.ts.map +1 -0
  15. package/dist/compaction/__tests__/context-reducer.test.js +197 -0
  16. package/dist/compaction/__tests__/context-reducer.test.js.map +1 -0
  17. package/dist/compaction/factory.d.ts +7 -0
  18. package/dist/compaction/factory.d.ts.map +1 -1
  19. package/dist/compaction/factory.js +7 -0
  20. package/dist/compaction/factory.js.map +1 -1
  21. package/dist/compaction/index.d.ts +2 -0
  22. package/dist/compaction/index.d.ts.map +1 -1
  23. package/dist/compaction/index.js +1 -0
  24. package/dist/compaction/index.js.map +1 -1
  25. package/dist/compaction/interface.d.ts +13 -0
  26. package/dist/compaction/interface.d.ts.map +1 -1
  27. package/dist/compaction/managers/null.d.ts +3 -0
  28. package/dist/compaction/managers/null.d.ts.map +1 -1
  29. package/dist/compaction/managers/null.js +3 -0
  30. package/dist/compaction/managers/null.js.map +1 -1
  31. package/dist/compaction/managers/slidingWindow.d.ts +6 -0
  32. package/dist/compaction/managers/slidingWindow.d.ts.map +1 -1
  33. package/dist/compaction/managers/slidingWindow.js +6 -0
  34. package/dist/compaction/managers/slidingWindow.js.map +1 -1
  35. package/dist/compaction/managers/structured.d.ts +10 -0
  36. package/dist/compaction/managers/structured.d.ts.map +1 -1
  37. package/dist/compaction/managers/structured.js +10 -0
  38. package/dist/compaction/managers/structured.js.map +1 -1
  39. package/dist/compaction/reducer.d.ts +86 -0
  40. package/dist/compaction/reducer.d.ts.map +1 -0
  41. package/dist/compaction/reducer.js +77 -0
  42. package/dist/compaction/reducer.js.map +1 -0
  43. package/dist/connector/builtins/__tests__/oauth2-auth.test.d.ts +2 -0
  44. package/dist/connector/builtins/__tests__/oauth2-auth.test.d.ts.map +1 -0
  45. package/dist/connector/builtins/__tests__/oauth2-auth.test.js +54 -0
  46. package/dist/connector/builtins/__tests__/oauth2-auth.test.js.map +1 -0
  47. package/dist/connector/builtins/http.d.ts.map +1 -1
  48. package/dist/connector/builtins/http.js +24 -2
  49. package/dist/connector/builtins/http.js.map +1 -1
  50. package/dist/connector/builtins/http.test.js +18 -2
  51. package/dist/connector/builtins/http.test.js.map +1 -1
  52. package/dist/connector/index.d.ts +2 -2
  53. package/dist/connector/index.d.ts.map +1 -1
  54. package/dist/connector/index.js +1 -1
  55. package/dist/connector/index.js.map +1 -1
  56. package/dist/connector/mcp/__tests__/prompts-and-lifecycle.test.d.ts +2 -0
  57. package/dist/connector/mcp/__tests__/prompts-and-lifecycle.test.d.ts.map +1 -0
  58. package/dist/connector/mcp/__tests__/prompts-and-lifecycle.test.js +214 -0
  59. package/dist/connector/mcp/__tests__/prompts-and-lifecycle.test.js.map +1 -0
  60. package/dist/connector/mcp/client.d.ts +52 -1
  61. package/dist/connector/mcp/client.d.ts.map +1 -1
  62. package/dist/connector/mcp/client.js +86 -0
  63. package/dist/connector/mcp/client.js.map +1 -1
  64. package/dist/connector/mcp/discovery.d.ts +12 -1
  65. package/dist/connector/mcp/discovery.d.ts.map +1 -1
  66. package/dist/connector/mcp/discovery.js +19 -4
  67. package/dist/connector/mcp/discovery.js.map +1 -1
  68. package/dist/connector/mcp/index.d.ts +2 -2
  69. package/dist/connector/mcp/index.d.ts.map +1 -1
  70. package/dist/connector/mcp/index.js +1 -1
  71. package/dist/connector/mcp/index.js.map +1 -1
  72. package/dist/connector/mcp/server.d.ts +42 -1
  73. package/dist/connector/mcp/server.d.ts.map +1 -1
  74. package/dist/connector/mcp/server.js +77 -4
  75. package/dist/connector/mcp/server.js.map +1 -1
  76. package/dist/manager/agent/__tests__/depth-limit-authority.test.d.ts +2 -0
  77. package/dist/manager/agent/__tests__/depth-limit-authority.test.d.ts.map +1 -0
  78. package/dist/manager/agent/__tests__/depth-limit-authority.test.js +58 -0
  79. package/dist/manager/agent/__tests__/depth-limit-authority.test.js.map +1 -0
  80. package/dist/plugin/__tests__/discovery-scopes.test.d.ts +2 -0
  81. package/dist/plugin/__tests__/discovery-scopes.test.d.ts.map +1 -0
  82. package/dist/plugin/__tests__/discovery-scopes.test.js +97 -0
  83. package/dist/plugin/__tests__/discovery-scopes.test.js.map +1 -0
  84. package/dist/plugin/__tests__/enable-contributions.test.js +5 -1
  85. package/dist/plugin/__tests__/enable-contributions.test.js.map +1 -1
  86. package/dist/plugin/__tests__/mcp-admission.test.d.ts +2 -0
  87. package/dist/plugin/__tests__/mcp-admission.test.d.ts.map +1 -0
  88. package/dist/plugin/__tests__/mcp-admission.test.js +192 -0
  89. package/dist/plugin/__tests__/mcp-admission.test.js.map +1 -0
  90. package/dist/plugin/lifecycle.d.ts +41 -0
  91. package/dist/plugin/lifecycle.d.ts.map +1 -1
  92. package/dist/plugin/lifecycle.js +29 -1
  93. package/dist/plugin/lifecycle.js.map +1 -1
  94. package/dist/plugin/loader.d.ts +39 -3
  95. package/dist/plugin/loader.d.ts.map +1 -1
  96. package/dist/plugin/loader.js +37 -4
  97. package/dist/plugin/loader.js.map +1 -1
  98. package/dist/public-runtime.d.ts +4 -2
  99. package/dist/public-runtime.d.ts.map +1 -1
  100. package/dist/public-runtime.js +5 -2
  101. package/dist/public-runtime.js.map +1 -1
  102. package/dist/public-types.d.ts +2 -2
  103. package/dist/public-types.d.ts.map +1 -1
  104. package/dist/rag/__tests__/namespace-isolation.test.d.ts +2 -0
  105. package/dist/rag/__tests__/namespace-isolation.test.d.ts.map +1 -0
  106. package/dist/rag/__tests__/namespace-isolation.test.js +80 -0
  107. package/dist/rag/__tests__/namespace-isolation.test.js.map +1 -0
  108. package/dist/rag/ingestion.d.ts.map +1 -1
  109. package/dist/rag/ingestion.js +1 -0
  110. package/dist/rag/ingestion.js.map +1 -1
  111. package/dist/rag/retriever.d.ts.map +1 -1
  112. package/dist/rag/retriever.js +2 -0
  113. package/dist/rag/retriever.js.map +1 -1
  114. package/dist/rag/vector-store.d.ts.map +1 -1
  115. package/dist/rag/vector-store.js +6 -0
  116. package/dist/rag/vector-store.js.map +1 -1
  117. package/dist/registry/tool/execute.d.ts.map +1 -1
  118. package/dist/registry/tool/execute.js +113 -109
  119. package/dist/registry/tool/execute.js.map +1 -1
  120. package/dist/runtime/query/__tests__/per-step-skills.test.d.ts +10 -0
  121. package/dist/runtime/query/__tests__/per-step-skills.test.d.ts.map +1 -0
  122. package/dist/runtime/query/__tests__/per-step-skills.test.js +122 -0
  123. package/dist/runtime/query/__tests__/per-step-skills.test.js.map +1 -0
  124. package/dist/runtime/query/__tests__/per-step-tool-choice.test.d.ts +2 -0
  125. package/dist/runtime/query/__tests__/per-step-tool-choice.test.d.ts.map +1 -0
  126. package/dist/runtime/query/__tests__/per-step-tool-choice.test.js +153 -0
  127. package/dist/runtime/query/__tests__/per-step-tool-choice.test.js.map +1 -0
  128. package/dist/runtime/query/__tests__/resume-run.test.d.ts +2 -0
  129. package/dist/runtime/query/__tests__/resume-run.test.d.ts.map +1 -0
  130. package/dist/runtime/query/__tests__/resume-run.test.js +211 -0
  131. package/dist/runtime/query/__tests__/resume-run.test.js.map +1 -0
  132. package/dist/runtime/query/index.d.ts +10 -0
  133. package/dist/runtime/query/index.d.ts.map +1 -1
  134. package/dist/runtime/query/index.js +26 -0
  135. package/dist/runtime/query/index.js.map +1 -1
  136. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  137. package/dist/runtime/query/iteration/index.js +96 -34
  138. package/dist/runtime/query/iteration/index.js.map +1 -1
  139. package/dist/runtime/query/iteration/phases/compaction-model-routing.test.d.ts +2 -0
  140. package/dist/runtime/query/iteration/phases/compaction-model-routing.test.d.ts.map +1 -0
  141. package/dist/runtime/query/iteration/phases/compaction-model-routing.test.js +96 -0
  142. package/dist/runtime/query/iteration/phases/compaction-model-routing.test.js.map +1 -0
  143. package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
  144. package/dist/runtime/query/iteration/phases/compaction.js +95 -5
  145. package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
  146. package/dist/runtime/query/iteration/phases/context-reducer-dispatch.test.d.ts +2 -0
  147. package/dist/runtime/query/iteration/phases/context-reducer-dispatch.test.d.ts.map +1 -0
  148. package/dist/runtime/query/iteration/phases/context-reducer-dispatch.test.js +180 -0
  149. package/dist/runtime/query/iteration/phases/context-reducer-dispatch.test.js.map +1 -0
  150. package/dist/runtime/query/iteration/phases/context.d.ts +9 -0
  151. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  152. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  153. package/dist/runtime/query/resume-run.d.ts +70 -0
  154. package/dist/runtime/query/resume-run.d.ts.map +1 -0
  155. package/dist/runtime/query/resume-run.js +46 -0
  156. package/dist/runtime/query/resume-run.js.map +1 -0
  157. package/dist/telemetry/__tests__/model-call-span.test.d.ts +2 -0
  158. package/dist/telemetry/__tests__/model-call-span.test.d.ts.map +1 -0
  159. package/dist/telemetry/__tests__/model-call-span.test.js +147 -0
  160. package/dist/telemetry/__tests__/model-call-span.test.js.map +1 -0
  161. package/dist/telemetry/__tests__/span-closure.test.d.ts +2 -0
  162. package/dist/telemetry/__tests__/span-closure.test.d.ts.map +1 -0
  163. package/dist/telemetry/__tests__/span-closure.test.js +124 -0
  164. package/dist/telemetry/__tests__/span-closure.test.js.map +1 -0
  165. package/dist/tools/advisory/index.js +1 -1
  166. package/dist/tools/advisory/index.js.map +1 -1
  167. package/dist/tools/coordinator/__tests__/plan-dependencies.test.d.ts +2 -0
  168. package/dist/tools/coordinator/__tests__/plan-dependencies.test.d.ts.map +1 -0
  169. package/dist/tools/coordinator/__tests__/plan-dependencies.test.js +126 -0
  170. package/dist/tools/coordinator/__tests__/plan-dependencies.test.js.map +1 -0
  171. package/dist/tools/coordinator/index.d.ts.map +1 -1
  172. package/dist/tools/coordinator/index.js +13 -1
  173. package/dist/tools/coordinator/index.js.map +1 -1
  174. package/dist/tools/coordinator/plan-dependencies.d.ts +43 -0
  175. package/dist/tools/coordinator/plan-dependencies.d.ts.map +1 -0
  176. package/dist/tools/coordinator/plan-dependencies.js +148 -0
  177. package/dist/tools/coordinator/plan-dependencies.js.map +1 -0
  178. package/dist/types/agent/supervisor.d.ts +15 -0
  179. package/dist/types/agent/supervisor.d.ts.map +1 -1
  180. package/dist/types/connector/core.d.ts +34 -0
  181. package/dist/types/connector/core.d.ts.map +1 -1
  182. package/dist/types/connector/definition.d.ts +10 -0
  183. package/dist/types/connector/definition.d.ts.map +1 -1
  184. package/dist/types/connector/mcp.d.ts +13 -0
  185. package/dist/types/connector/mcp.d.ts.map +1 -1
  186. package/dist/types/rag/retrieval.d.ts +16 -0
  187. package/dist/types/rag/retrieval.d.ts.map +1 -1
  188. package/dist/types/rag/storage.d.ts +9 -0
  189. package/dist/types/rag/storage.d.ts.map +1 -1
  190. package/dist/types/rag/vector.d.ts +11 -0
  191. package/dist/types/rag/vector.d.ts.map +1 -1
  192. package/dist/types/router/task-router.d.ts +19 -0
  193. package/dist/types/router/task-router.d.ts.map +1 -1
  194. package/dist/types/run/prepare-step.d.ts +56 -3
  195. package/dist/types/run/prepare-step.d.ts.map +1 -1
  196. package/dist/types/toolset/index.d.ts +22 -0
  197. package/dist/types/toolset/index.d.ts.map +1 -1
  198. package/package.json +1 -1
  199. package/src/advisory/__tests__/consultation-context.test.ts +191 -0
  200. package/src/advisory/context.ts +32 -0
  201. package/src/advisory/executor.ts +30 -3
  202. package/src/compaction/__tests__/context-reducer.test.ts +239 -0
  203. package/src/compaction/factory.ts +7 -0
  204. package/src/compaction/index.ts +8 -0
  205. package/src/compaction/interface.ts +13 -0
  206. package/src/compaction/managers/null.ts +3 -0
  207. package/src/compaction/managers/slidingWindow.ts +6 -0
  208. package/src/compaction/managers/structured.ts +10 -0
  209. package/src/compaction/reducer.ts +154 -0
  210. package/src/connector/builtins/__tests__/oauth2-auth.test.ts +73 -0
  211. package/src/connector/builtins/http.test.ts +28 -2
  212. package/src/connector/builtins/http.ts +26 -2
  213. package/src/connector/index.ts +6 -2
  214. package/src/connector/mcp/__tests__/prompts-and-lifecycle.test.ts +286 -0
  215. package/src/connector/mcp/client.ts +95 -0
  216. package/src/connector/mcp/discovery.ts +19 -4
  217. package/src/connector/mcp/index.ts +6 -2
  218. package/src/connector/mcp/server.ts +101 -3
  219. package/src/manager/agent/__tests__/depth-limit-authority.test.ts +74 -0
  220. package/src/plugin/__tests__/discovery-scopes.test.ts +133 -0
  221. package/src/plugin/__tests__/enable-contributions.test.ts +5 -1
  222. package/src/plugin/__tests__/mcp-admission.test.ts +242 -0
  223. package/src/plugin/lifecycle.ts +57 -1
  224. package/src/plugin/loader.ts +57 -3
  225. package/src/public-runtime.ts +8 -0
  226. package/src/public-types.ts +5 -0
  227. package/src/rag/__tests__/namespace-isolation.test.ts +109 -0
  228. package/src/rag/ingestion.ts +1 -0
  229. package/src/rag/retriever.ts +2 -0
  230. package/src/rag/vector-store.ts +5 -0
  231. package/src/registry/tool/execute.ts +123 -119
  232. package/src/runtime/query/__tests__/per-step-skills.test.ts +154 -0
  233. package/src/runtime/query/__tests__/per-step-tool-choice.test.ts +180 -0
  234. package/src/runtime/query/__tests__/resume-run.test.ts +262 -0
  235. package/src/runtime/query/index.ts +39 -0
  236. package/src/runtime/query/iteration/index.ts +103 -34
  237. package/src/runtime/query/iteration/phases/compaction-model-routing.test.ts +125 -0
  238. package/src/runtime/query/iteration/phases/compaction.ts +106 -5
  239. package/src/runtime/query/iteration/phases/context-reducer-dispatch.test.ts +238 -0
  240. package/src/runtime/query/iteration/phases/context.ts +11 -0
  241. package/src/runtime/query/resume-run.ts +93 -0
  242. package/src/telemetry/__tests__/model-call-span.test.ts +189 -0
  243. package/src/telemetry/__tests__/span-closure.test.ts +153 -0
  244. package/src/tools/advisory/index.ts +1 -1
  245. package/src/tools/coordinator/__tests__/plan-dependencies.test.ts +186 -0
  246. package/src/tools/coordinator/index.ts +14 -1
  247. package/src/tools/coordinator/plan-dependencies.ts +175 -0
  248. package/src/types/agent/supervisor.ts +15 -0
  249. package/src/types/connector/core.ts +34 -0
  250. package/src/types/connector/definition.ts +10 -0
  251. package/src/types/connector/mcp.ts +14 -0
  252. package/src/types/rag/retrieval.ts +16 -0
  253. package/src/types/rag/storage.ts +9 -0
  254. package/src/types/rag/vector.ts +11 -0
  255. package/src/types/router/task-router.ts +19 -0
  256. package/src/types/run/prepare-step.ts +58 -3
  257. package/src/types/toolset/index.ts +22 -0
@@ -312,132 +312,136 @@ Executable tool names, descriptions, and JSON input schemas are attached through
312
312
  ? trace.setSpan(otelContext.active(), context.parentSpan)
313
313
  : otelContext.active();
314
314
  return tracer.startActiveSpan(toolSpanName(toolName), {}, parentCtx, async (span) => {
315
- span.setAttributes({
316
- [GENAI.TOOL_NAME]: toolName,
317
- [GENAI.TOOL_TYPE]: 'function',
318
- });
319
- const tool = this.getOrThrow(toolName);
320
- const availability = this.getAvailability(toolName);
321
- if (availability !== 'active') {
322
- const msg = `Tool "${toolName}" is ${availability} and cannot be executed`;
323
- this.log.warn(msg);
315
+ try {
324
316
  span.setAttributes({
325
- [NAMZU.TOOL_SUCCESS]: false,
326
- [NAMZU.TOOL_ERROR]: msg,
317
+ [GENAI.TOOL_NAME]: toolName,
318
+ [GENAI.TOOL_TYPE]: 'function',
327
319
  });
328
- span.setStatus({ code: SpanStatusCode.ERROR, message: msg });
329
- span.end();
330
- return {
331
- success: false,
332
- output: '',
333
- error: msg,
334
- };
335
- }
336
- const mode = context.permissionContext?.mode ?? 'auto';
337
- if (mode === 'plan') {
338
- const isReadOnly = tool.isReadOnly ? tool.isReadOnly(rawInput) : false;
339
- if (!isReadOnly) {
340
- const msg = `plan mode: non-read-only tool "${toolName}" blocked`;
320
+ const tool = this.getOrThrow(toolName);
321
+ const availability = this.getAvailability(toolName);
322
+ if (availability !== 'active') {
323
+ const msg = `Tool "${toolName}" is ${availability} and cannot be executed`;
324
+ this.log.warn(msg);
341
325
  span.setAttributes({
342
326
  [NAMZU.TOOL_SUCCESS]: false,
343
327
  [NAMZU.TOOL_ERROR]: msg,
344
328
  });
345
329
  span.setStatus({ code: SpanStatusCode.ERROR, message: msg });
346
- span.end();
347
330
  return {
348
331
  success: false,
349
332
  output: '',
350
333
  error: msg,
351
- permissionDenied: true,
352
- permissionMessage: msg,
353
334
  };
354
335
  }
355
- }
356
- const parseResult = tool.inputSchema.safeParse(rawInput);
357
- if (!parseResult.success) {
358
- const errorMessage = parseResult.error.issues
359
- .map((i) => `${i.path.join('.')}: ${i.message}`)
360
- .join('; ');
361
- // Distinguish "model sent an empty/no-arg call" from
362
- // "model sent partial args" — the first is most often a
363
- // streaming hiccup or a definition-test ping (a provider
364
- // occasionally pings tool surfaces with `{}` while the
365
- // schema is still loading), the second is a genuine
366
- // programming mistake by the model. The model self-
367
- // corrects MUCH more reliably when the error tells it
368
- // (a) which fields are required, (b) their types, and
369
- // (c) a minimal example call. Without these hints the
370
- // downstream UI just shows a red "Failed" row and the
371
- // model rarely retries with the right args.
372
- const isEmptyInput = rawInput === null ||
373
- rawInput === undefined ||
374
- (typeof rawInput === 'object' &&
375
- !Array.isArray(rawInput) &&
376
- Object.keys(rawInput).length === 0);
377
- const requiredHint = describeRequiredInput(tool.inputSchema);
378
- // A conditional schema's required shape cannot be reconstructed
379
- // from JSON Schema's top-level `required`, so the author gets to
380
- // say what a valid retry looks like.
381
- const recoveryHint = tool.validationErrorHint?.trim()
382
- ? ` ${tool.validationErrorHint.trim()}`
383
- : '';
384
- const enrichedMessage = isEmptyInput
385
- ? `Tool "${toolName}" was called with no arguments. ${requiredHint}${recoveryHint} Retry the call with the required parameters populated.`
386
- : `Validation failed for "${toolName}": ${errorMessage}. ${requiredHint}${recoveryHint}`;
387
- this.log.error(`Tool input validation failed: ${toolName}`, {
388
- errors: errorMessage,
389
- empty: isEmptyInput,
390
- });
391
- span.setAttributes({
392
- [NAMZU.TOOL_SUCCESS]: false,
393
- [NAMZU.TOOL_ERROR]: `Validation: ${errorMessage}`,
394
- });
395
- span.setStatus({ code: SpanStatusCode.ERROR, message: errorMessage });
396
- span.end();
397
- return {
398
- success: false,
399
- output: '',
400
- error: enrichedMessage,
401
- };
402
- }
403
- const finalInput = parseResult.data;
404
- try {
405
- this.log.debug(`Executing tool: ${toolName}`);
406
- const startedAt = Date.now();
407
- const result = await tool.execute(finalInput, context);
408
- const durationMs = Date.now() - startedAt;
409
- this.log.debug(`Tool completed: ${toolName}`, {
410
- success: result.success,
411
- });
412
- span.setAttribute(NAMZU.TOOL_SUCCESS, result.success);
413
- recordToolCall(toolName, result.success, result.success ? undefined : result.error, durationMs);
414
- if (!result.success && result.error) {
415
- span.setAttribute(NAMZU.TOOL_ERROR, result.error);
416
- span.setStatus({ code: SpanStatusCode.ERROR, message: result.error });
336
+ const mode = context.permissionContext?.mode ?? 'auto';
337
+ if (mode === 'plan') {
338
+ const isReadOnly = tool.isReadOnly ? tool.isReadOnly(rawInput) : false;
339
+ if (!isReadOnly) {
340
+ const msg = `plan mode: non-read-only tool "${toolName}" blocked`;
341
+ span.setAttributes({
342
+ [NAMZU.TOOL_SUCCESS]: false,
343
+ [NAMZU.TOOL_ERROR]: msg,
344
+ });
345
+ span.setStatus({ code: SpanStatusCode.ERROR, message: msg });
346
+ return {
347
+ success: false,
348
+ output: '',
349
+ error: msg,
350
+ permissionDenied: true,
351
+ permissionMessage: msg,
352
+ };
353
+ }
417
354
  }
418
- else {
419
- span.setStatus({ code: SpanStatusCode.OK });
355
+ const parseResult = tool.inputSchema.safeParse(rawInput);
356
+ if (!parseResult.success) {
357
+ const errorMessage = parseResult.error.issues
358
+ .map((i) => `${i.path.join('.')}: ${i.message}`)
359
+ .join('; ');
360
+ // Distinguish "model sent an empty/no-arg call" from
361
+ // "model sent partial args" — the first is most often a
362
+ // streaming hiccup or a definition-test ping (a provider
363
+ // occasionally pings tool surfaces with `{}` while the
364
+ // schema is still loading), the second is a genuine
365
+ // programming mistake by the model. The model self-
366
+ // corrects MUCH more reliably when the error tells it
367
+ // (a) which fields are required, (b) their types, and
368
+ // (c) a minimal example call. Without these hints the
369
+ // downstream UI just shows a red "Failed" row and the
370
+ // model rarely retries with the right args.
371
+ const isEmptyInput = rawInput === null ||
372
+ rawInput === undefined ||
373
+ (typeof rawInput === 'object' &&
374
+ !Array.isArray(rawInput) &&
375
+ Object.keys(rawInput).length === 0);
376
+ const requiredHint = describeRequiredInput(tool.inputSchema);
377
+ // A conditional schema's required shape cannot be reconstructed
378
+ // from JSON Schema's top-level `required`, so the author gets to
379
+ // say what a valid retry looks like.
380
+ const recoveryHint = tool.validationErrorHint?.trim()
381
+ ? ` ${tool.validationErrorHint.trim()}`
382
+ : '';
383
+ const enrichedMessage = isEmptyInput
384
+ ? `Tool "${toolName}" was called with no arguments. ${requiredHint}${recoveryHint} Retry the call with the required parameters populated.`
385
+ : `Validation failed for "${toolName}": ${errorMessage}. ${requiredHint}${recoveryHint}`;
386
+ this.log.error(`Tool input validation failed: ${toolName}`, {
387
+ errors: errorMessage,
388
+ empty: isEmptyInput,
389
+ });
390
+ span.setAttributes({
391
+ [NAMZU.TOOL_SUCCESS]: false,
392
+ [NAMZU.TOOL_ERROR]: `Validation: ${errorMessage}`,
393
+ });
394
+ span.setStatus({ code: SpanStatusCode.ERROR, message: errorMessage });
395
+ return {
396
+ success: false,
397
+ output: '',
398
+ error: enrichedMessage,
399
+ };
400
+ }
401
+ const finalInput = parseResult.data;
402
+ try {
403
+ this.log.debug(`Executing tool: ${toolName}`);
404
+ const startedAt = Date.now();
405
+ const result = await tool.execute(finalInput, context);
406
+ const durationMs = Date.now() - startedAt;
407
+ this.log.debug(`Tool completed: ${toolName}`, {
408
+ success: result.success,
409
+ });
410
+ span.setAttribute(NAMZU.TOOL_SUCCESS, result.success);
411
+ recordToolCall(toolName, result.success, result.success ? undefined : result.error, durationMs);
412
+ if (!result.success && result.error) {
413
+ span.setAttribute(NAMZU.TOOL_ERROR, result.error);
414
+ span.setStatus({ code: SpanStatusCode.ERROR, message: result.error });
415
+ }
416
+ else {
417
+ span.setStatus({ code: SpanStatusCode.OK });
418
+ }
419
+ return result;
420
+ }
421
+ catch (err) {
422
+ const errorMessage = toErrorMessage(err);
423
+ this.log.error(`Tool execution error: ${toolName}`, {
424
+ error: errorMessage,
425
+ });
426
+ span.setAttributes({
427
+ [NAMZU.TOOL_SUCCESS]: false,
428
+ [NAMZU.TOOL_ERROR]: errorMessage,
429
+ });
430
+ span.setStatus({ code: SpanStatusCode.ERROR, message: errorMessage });
431
+ span.recordException(err instanceof Error ? err : new Error(errorMessage));
432
+ return {
433
+ success: false,
434
+ output: '',
435
+ error: `Tool "${toolName}" execution failed: ${errorMessage}`,
436
+ };
420
437
  }
421
- return result;
422
- }
423
- catch (err) {
424
- const errorMessage = toErrorMessage(err);
425
- this.log.error(`Tool execution error: ${toolName}`, {
426
- error: errorMessage,
427
- });
428
- span.setAttributes({
429
- [NAMZU.TOOL_SUCCESS]: false,
430
- [NAMZU.TOOL_ERROR]: errorMessage,
431
- });
432
- span.setStatus({ code: SpanStatusCode.ERROR, message: errorMessage });
433
- span.recordException(err instanceof Error ? err : new Error(errorMessage));
434
- return {
435
- success: false,
436
- output: '',
437
- error: `Tool "${toolName}" execution failed: ${errorMessage}`,
438
- };
439
438
  }
440
439
  finally {
440
+ // The only place this span ends. It used to be ended at three
441
+ // early returns and in a finally that opened below them, so
442
+ // anything throwing before that try — `getOrThrow` on a name the
443
+ // registry does not hold, for one — left the span open and the
444
+ // tool's trace unclosed.
441
445
  span.end();
442
446
  }
443
447
  });
@@ -1 +1 @@
1
- {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/registry/tool/execute.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/registry/tool/execute.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export {};
2
+ /**
3
+ * Sub-agents are deliberately NOT per-step, and this is the note rather than
4
+ * a test that would pretend otherwise. Which agents `create_task` can reach
5
+ * is baked into that tool's input schema, so varying it per step would
6
+ * rebuild the tool catalogue every turn — a worse prompt-cache trade than
7
+ * moving tools around, for a narrowing a step can already express by
8
+ * withholding `create_task` through `activeTools`.
9
+ */
10
+ //# sourceMappingURL=per-step-skills.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"per-step-skills.test.d.ts","sourceRoot":"","sources":["../../../../src/runtime/query/__tests__/per-step-skills.test.ts"],"names":[],"mappings":";AAkJA;;;;;;;GAOG"}
@@ -0,0 +1,122 @@
1
+ import { mkdtemp, rm } from 'node:fs/promises';
2
+ import { tmpdir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ import { afterEach, describe, expect, it } from 'vitest';
5
+ import { MockLLMProvider } from '../../../provider/mock.js';
6
+ import { ToolRegistry } from '../../../registry/tool/execute.js';
7
+ import { createUserMessage } from '../../../types/message/index.js';
8
+ import { drainQuery } from '../index.js';
9
+ /**
10
+ * A run's skills are fixed at `query()` time and rendered into the cached
11
+ * system prefix, so every skill a run might ever need is paid for on every
12
+ * turn. A phased agent rarely needs them all at once.
13
+ *
14
+ * A peer runtime resolves instructions, model, tools, skills and subagents
15
+ * from context at run time. namzu had the first three; this is the fourth.
16
+ * The fifth is deliberately absent — see the note at the bottom.
17
+ */
18
+ let workdirs = [];
19
+ afterEach(async () => {
20
+ await Promise.all(workdirs.map((d) => rm(d, { recursive: true, force: true })));
21
+ workdirs = [];
22
+ });
23
+ function skill(name, body) {
24
+ return {
25
+ metadata: { name, description: `${name} description` },
26
+ dirPath: `/skills/${name}`,
27
+ ...(body !== undefined ? { body } : {}),
28
+ };
29
+ }
30
+ async function run(provider, over = {}) {
31
+ const dir = await mkdtemp(join(tmpdir(), 'namzu-skills-'));
32
+ workdirs.push(dir);
33
+ await drainQuery({
34
+ provider,
35
+ tools: new ToolRegistry(),
36
+ runConfig: {
37
+ model: 'mock-model',
38
+ timeoutMs: 30_000,
39
+ tokenBudget: 100_000,
40
+ maxIterations: 4,
41
+ maxResponseTokens: 256,
42
+ },
43
+ agentId: 'agent_sk',
44
+ agentName: 'Skill Agent',
45
+ workingDirectory: dir,
46
+ sessionId: 'ses_sk',
47
+ threadId: 'thd_sk',
48
+ projectId: 'prj_sk',
49
+ tenantId: 'tnt_sk',
50
+ messages: [createUserMessage('go')],
51
+ ...over,
52
+ });
53
+ }
54
+ const sent = (provider, index = 0) => JSON.stringify(provider.requests.at(index)?.messages ?? []);
55
+ describe('a step can put a skill in front of the model', () => {
56
+ it('renders the skill it named', async () => {
57
+ const provider = new MockLLMProvider({ turns: [{ text: 'done' }] });
58
+ await run(provider, { prepareStep: () => ({ skills: [skill('search-the-web')] }) });
59
+ expect(sent(provider)).toContain('search-the-web');
60
+ });
61
+ it('sends nothing extra when the step names none', async () => {
62
+ const provider = new MockLLMProvider({ turns: [{ text: 'done' }] });
63
+ await run(provider);
64
+ expect(sent(provider)).not.toContain('Available Skills');
65
+ });
66
+ it('treats an empty list as naming none', async () => {
67
+ const provider = new MockLLMProvider({ turns: [{ text: 'done' }] });
68
+ await run(provider, { prepareStep: () => ({ skills: [] }) });
69
+ // An empty list is a caller saying "no skills this step", not a
70
+ // request for an empty section header.
71
+ expect(sent(provider)).not.toContain('Available Skills');
72
+ });
73
+ it('carries the step guidance alongside it', async () => {
74
+ const provider = new MockLLMProvider({ turns: [{ text: 'done' }] });
75
+ await run(provider, {
76
+ prepareStep: () => ({ system: 'You are researching.', skills: [skill('search-the-web')] }),
77
+ });
78
+ // Both ride the same ephemeral trailing message; neither should
79
+ // displace the other.
80
+ const body = sent(provider);
81
+ expect(body).toContain('You are researching.');
82
+ expect(body).toContain('search-the-web');
83
+ });
84
+ });
85
+ describe('a step skill does not outlive its step', () => {
86
+ it('is absent from the next step that does not ask for it', async () => {
87
+ const provider = new MockLLMProvider({
88
+ turns: [{ toolCalls: [], text: 'thinking' }, { text: 'done' }],
89
+ });
90
+ await run(provider, {
91
+ prepareStep: ({ stepNumber }) => stepNumber === 1 ? { skills: [skill('search-the-web')] } : {},
92
+ });
93
+ expect(sent(provider, 0)).toContain('search-the-web');
94
+ if (provider.requests.length > 1) {
95
+ expect(sent(provider, 1)).not.toContain('search-the-web');
96
+ }
97
+ });
98
+ it('does not accumulate across steps', async () => {
99
+ const provider = new MockLLMProvider({
100
+ turns: [{ text: 'still working' }, { text: 'done' }],
101
+ });
102
+ await run(provider, {
103
+ maxIterations: 2,
104
+ prepareStep: () => ({ skills: [skill('search-the-web')] }),
105
+ });
106
+ // Appended for the call, never retained. Were it written into the run's
107
+ // history the section would stack up turn after turn — the same
108
+ // message repeated, growing the prompt and invalidating the cached
109
+ // prefix every iteration.
110
+ const systemCounts = provider.requests.map((r) => (r.messages ?? []).filter((m) => m.role === 'system').length);
111
+ expect(new Set(systemCounts).size).toBe(1);
112
+ });
113
+ });
114
+ /**
115
+ * Sub-agents are deliberately NOT per-step, and this is the note rather than
116
+ * a test that would pretend otherwise. Which agents `create_task` can reach
117
+ * is baked into that tool's input schema, so varying it per step would
118
+ * rebuild the tool catalogue every turn — a worse prompt-cache trade than
119
+ * moving tools around, for a narrowing a step can already express by
120
+ * withholding `create_task` through `activeTools`.
121
+ */
122
+ //# sourceMappingURL=per-step-skills.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"per-step-skills.test.js","sourceRoot":"","sources":["../../../../src/runtime/query/__tests__/per-step-skills.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=per-step-tool-choice.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"per-step-tool-choice.test.d.ts","sourceRoot":"","sources":["../../../../src/runtime/query/__tests__/per-step-tool-choice.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,153 @@
1
+ import { mkdtemp, rm } from 'node:fs/promises';
2
+ import { tmpdir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ import { afterEach, describe, expect, it } from 'vitest';
5
+ import { z } from 'zod';
6
+ import { MockLLMProvider } from '../../../provider/mock.js';
7
+ import { ToolRegistry } from '../../../registry/tool/execute.js';
8
+ import { createUserMessage } from '../../../types/message/index.js';
9
+ import { drainQuery } from '../index.js';
10
+ /**
11
+ * Forcing a tool is the one step-shaping knob that can hang an agent.
12
+ *
13
+ * A forced choice that PERSISTS makes the model call a tool, read the
14
+ * result, and be forced again — forever. The peer SDK that puts
15
+ * `tool_choice` on persistent model settings carries three moving parts to
16
+ * undo that: a tool-use tracker, an opt-out flag, and a reset applied at
17
+ * two separate call sites. Its flag defaults to on precisely because
18
+ * turning it off hangs the agent.
19
+ *
20
+ * Putting the knob on `prepareStep` removes the failure instead of
21
+ * managing it: the next step is prepared from scratch, so a force cannot
22
+ * outlive the step that asked for it. There is no flag to get wrong.
23
+ */
24
+ let workdirs = [];
25
+ afterEach(async () => {
26
+ await Promise.all(workdirs.map((d) => rm(d, { recursive: true, force: true })));
27
+ workdirs = [];
28
+ });
29
+ async function mkWorkdir() {
30
+ const dir = await mkdtemp(join(tmpdir(), 'namzu-tool-choice-'));
31
+ workdirs.push(dir);
32
+ return dir;
33
+ }
34
+ function registerEcho(tools) {
35
+ tools.register({
36
+ name: 'echo',
37
+ description: 'Echo the text back.',
38
+ inputSchema: z.object({ text: z.string().optional() }),
39
+ execute: async () => ({ success: true, output: 'ok' }),
40
+ });
41
+ }
42
+ async function baseParams(provider, tools) {
43
+ return {
44
+ provider,
45
+ tools,
46
+ runConfig: {
47
+ model: 'mock-model',
48
+ timeoutMs: 30_000,
49
+ tokenBudget: 100_000,
50
+ maxIterations: 4,
51
+ maxResponseTokens: 256,
52
+ },
53
+ agentId: 'agent_tc',
54
+ agentName: 'Tool Choice Agent',
55
+ workingDirectory: await mkWorkdir(),
56
+ sessionId: 'ses_tc',
57
+ threadId: 'thd_tc',
58
+ projectId: 'prj_tc',
59
+ tenantId: 'tnt_tc',
60
+ messages: [createUserMessage('go')],
61
+ };
62
+ }
63
+ describe('a step can force the model to call a tool', () => {
64
+ it('puts the caller choice on that step request', async () => {
65
+ const provider = new MockLLMProvider({ turns: [{ text: 'done' }] });
66
+ const tools = new ToolRegistry();
67
+ registerEcho(tools);
68
+ await drainQuery({
69
+ ...(await baseParams(provider, tools)),
70
+ prepareStep: () => ({ toolChoice: 'required' }),
71
+ });
72
+ expect(provider.requests.at(0)?.toolChoice).toBe('required');
73
+ });
74
+ it('carries a named function through unchanged', async () => {
75
+ const provider = new MockLLMProvider({ turns: [{ text: 'done' }] });
76
+ const tools = new ToolRegistry();
77
+ registerEcho(tools);
78
+ await drainQuery({
79
+ ...(await baseParams(provider, tools)),
80
+ prepareStep: () => ({
81
+ toolChoice: { type: 'function', function: { name: 'echo' } },
82
+ }),
83
+ });
84
+ expect(provider.requests.at(0)?.toolChoice).toEqual({
85
+ type: 'function',
86
+ function: { name: 'echo' },
87
+ });
88
+ });
89
+ it('leaves the request alone when no step asks', async () => {
90
+ const provider = new MockLLMProvider({ turns: [{ text: 'done' }] });
91
+ const tools = new ToolRegistry();
92
+ registerEcho(tools);
93
+ await drainQuery(await baseParams(provider, tools));
94
+ expect(provider.requests.at(0)?.toolChoice).toBeUndefined();
95
+ });
96
+ it('says nothing when there are no tools to choose between', async () => {
97
+ const provider = new MockLLMProvider({ turns: [{ text: 'done' }] });
98
+ await drainQuery({
99
+ ...(await baseParams(provider, new ToolRegistry())),
100
+ prepareStep: () => ({ toolChoice: 'required' }),
101
+ });
102
+ // `tool_choice` alongside an absent tool list is rejected by the
103
+ // providers, so a forced choice with nothing registered has to drop.
104
+ expect(provider.requests.at(0)?.toolChoice).toBeUndefined();
105
+ });
106
+ });
107
+ /**
108
+ * NOT covered here, and deliberately not faked: the forced-final turn takes
109
+ * precedence over a step's choice (`forceFinalize` wins in
110
+ * `iteration/index.ts`), so a budget-exhausted run can still stop asking
111
+ * for tools and answer. Reaching that branch needs the guard to raise a
112
+ * budget warning, which needs real usage the mock provider does not report.
113
+ * The precedence is implemented and read in review; it is not pinned.
114
+ */
115
+ describe('a forced choice cannot outlive the step that asked for it', () => {
116
+ it('applies to the named step only, leaving later steps free', async () => {
117
+ const provider = new MockLLMProvider({
118
+ turns: [
119
+ { toolCalls: [{ id: 'c1', name: 'echo', rawArguments: '{}' }] },
120
+ { text: 'finished' },
121
+ ],
122
+ });
123
+ const tools = new ToolRegistry();
124
+ registerEcho(tools);
125
+ await drainQuery({
126
+ ...(await baseParams(provider, tools)),
127
+ // Only the first step is forced. Without per-step scoping this
128
+ // would keep forcing and the run would never reach a text answer.
129
+ prepareStep: ({ stepNumber }) => stepNumber === 1 ? { toolChoice: 'required' } : {},
130
+ });
131
+ expect(provider.requests.at(0)?.toolChoice).toBe('required');
132
+ expect(provider.requests.at(1)?.toolChoice).toBeUndefined();
133
+ });
134
+ it('a run whose every step forces a tool still ends, bounded by the loop', async () => {
135
+ const provider = new MockLLMProvider({
136
+ turns: [
137
+ { toolCalls: [{ id: 'c1', name: 'echo', rawArguments: '{}' }] },
138
+ { toolCalls: [{ id: 'c2', name: 'echo', rawArguments: '{}' }] },
139
+ { text: 'finished' },
140
+ ],
141
+ });
142
+ const tools = new ToolRegistry();
143
+ registerEcho(tools);
144
+ const run = await drainQuery({
145
+ ...(await baseParams(provider, tools)),
146
+ prepareStep: () => ({ toolChoice: 'required' }),
147
+ });
148
+ // The knob cannot hang a run on its own: the iteration cap is still
149
+ // the backstop, and it settles rather than spinning.
150
+ expect(['completed', 'failed']).toContain(run.status);
151
+ });
152
+ });
153
+ //# sourceMappingURL=per-step-tool-choice.test.js.map