@namzu/sdk 1.4.0 → 3.0.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 (1508) hide show
  1. package/CHANGELOG.md +2284 -0
  2. package/README.md +49 -53
  3. package/dist/__tests__/default-path-conformance.test.d.ts +2 -0
  4. package/dist/__tests__/default-path-conformance.test.d.ts.map +1 -0
  5. package/dist/__tests__/default-path-conformance.test.js +262 -0
  6. package/dist/__tests__/default-path-conformance.test.js.map +1 -0
  7. package/dist/__tests__/shipped-defaults.test.d.ts +2 -0
  8. package/dist/__tests__/shipped-defaults.test.d.ts.map +1 -0
  9. package/dist/__tests__/shipped-defaults.test.js +97 -0
  10. package/dist/__tests__/shipped-defaults.test.js.map +1 -0
  11. package/dist/advisory/__tests__/budget-enforcement.test.d.ts +2 -0
  12. package/dist/advisory/__tests__/budget-enforcement.test.d.ts.map +1 -0
  13. package/dist/advisory/__tests__/budget-enforcement.test.js +159 -0
  14. package/dist/advisory/__tests__/budget-enforcement.test.js.map +1 -0
  15. package/dist/advisory/__tests__/structured-response.test.d.ts +2 -0
  16. package/dist/advisory/__tests__/structured-response.test.d.ts.map +1 -0
  17. package/dist/advisory/__tests__/structured-response.test.js +99 -0
  18. package/dist/advisory/__tests__/structured-response.test.js.map +1 -0
  19. package/dist/advisory/budget.d.ts +15 -0
  20. package/dist/advisory/budget.d.ts.map +1 -0
  21. package/dist/advisory/budget.js +21 -0
  22. package/dist/advisory/budget.js.map +1 -0
  23. package/dist/advisory/context.d.ts +2 -0
  24. package/dist/advisory/context.d.ts.map +1 -1
  25. package/dist/advisory/context.js +16 -0
  26. package/dist/advisory/context.js.map +1 -1
  27. package/dist/advisory/executor.d.ts +14 -11
  28. package/dist/advisory/executor.d.ts.map +1 -1
  29. package/dist/advisory/executor.js +36 -24
  30. package/dist/advisory/executor.js.map +1 -1
  31. package/dist/advisory/executor.test.d.ts +8 -6
  32. package/dist/advisory/executor.test.d.ts.map +1 -1
  33. package/dist/advisory/executor.test.js +12 -8
  34. package/dist/advisory/executor.test.js.map +1 -1
  35. package/dist/advisory/index.d.ts +2 -0
  36. package/dist/advisory/index.d.ts.map +1 -1
  37. package/dist/advisory/index.js +2 -0
  38. package/dist/advisory/index.js.map +1 -1
  39. package/dist/advisory/parse.d.ts +23 -0
  40. package/dist/advisory/parse.d.ts.map +1 -0
  41. package/dist/advisory/parse.js +56 -0
  42. package/dist/advisory/parse.js.map +1 -0
  43. package/dist/agents/AbstractAgent.d.ts +48 -0
  44. package/dist/agents/AbstractAgent.d.ts.map +1 -1
  45. package/dist/agents/AbstractAgent.js +77 -0
  46. package/dist/agents/AbstractAgent.js.map +1 -1
  47. package/dist/agents/PipelineAgent.d.ts +10 -0
  48. package/dist/agents/PipelineAgent.d.ts.map +1 -1
  49. package/dist/agents/PipelineAgent.js +12 -0
  50. package/dist/agents/PipelineAgent.js.map +1 -1
  51. package/dist/agents/ReactiveAgent.d.ts +10 -0
  52. package/dist/agents/ReactiveAgent.d.ts.map +1 -1
  53. package/dist/agents/ReactiveAgent.js +40 -0
  54. package/dist/agents/ReactiveAgent.js.map +1 -1
  55. package/dist/agents/RouterAgent.d.ts +10 -0
  56. package/dist/agents/RouterAgent.d.ts.map +1 -1
  57. package/dist/agents/RouterAgent.js +23 -2
  58. package/dist/agents/RouterAgent.js.map +1 -1
  59. package/dist/agents/SupervisorAgent.d.ts +11 -1
  60. package/dist/agents/SupervisorAgent.d.ts.map +1 -1
  61. package/dist/agents/SupervisorAgent.js +23 -1
  62. package/dist/agents/SupervisorAgent.js.map +1 -1
  63. package/dist/agents/__tests__/idempotency-key.test.d.ts +2 -0
  64. package/dist/agents/__tests__/idempotency-key.test.d.ts.map +1 -0
  65. package/dist/agents/__tests__/idempotency-key.test.js +149 -0
  66. package/dist/agents/__tests__/idempotency-key.test.js.map +1 -0
  67. package/dist/agents/__tests__/invocation-lock.test.d.ts +2 -0
  68. package/dist/agents/__tests__/invocation-lock.test.d.ts.map +1 -0
  69. package/dist/agents/__tests__/invocation-lock.test.js +126 -0
  70. package/dist/agents/__tests__/invocation-lock.test.js.map +1 -0
  71. package/dist/agents/__tests__/reachability.test.d.ts +2 -0
  72. package/dist/agents/__tests__/reachability.test.d.ts.map +1 -0
  73. package/dist/agents/__tests__/reachability.test.js +173 -0
  74. package/dist/agents/__tests__/reachability.test.js.map +1 -0
  75. package/dist/agents/__tests__/supervisor-ledger.test.js +1 -1
  76. package/dist/agents/__tests__/supervisor-ledger.test.js.map +1 -1
  77. package/dist/agents/index.d.ts +1 -1
  78. package/dist/agents/index.d.ts.map +1 -1
  79. package/dist/agents/lock.d.ts +0 -1
  80. package/dist/agents/lock.d.ts.map +1 -1
  81. package/dist/agents/lock.js.map +1 -1
  82. package/dist/bridge/a2a/late-events.test.d.ts +2 -0
  83. package/dist/bridge/a2a/late-events.test.d.ts.map +1 -0
  84. package/dist/bridge/a2a/late-events.test.js +70 -0
  85. package/dist/bridge/a2a/late-events.test.js.map +1 -0
  86. package/dist/bridge/a2a/mapper.d.ts.map +1 -1
  87. package/dist/bridge/a2a/mapper.js +55 -3
  88. package/dist/bridge/a2a/mapper.js.map +1 -1
  89. package/dist/bridge/a2a/mapper.test.js +1 -1
  90. package/dist/bridge/a2a/mapper.test.js.map +1 -1
  91. package/dist/bridge/a2a/message.d.ts.map +1 -1
  92. package/dist/bridge/a2a/message.js +5 -1
  93. package/dist/bridge/a2a/message.js.map +1 -1
  94. package/dist/bridge/sse/late-events.test.d.ts +2 -0
  95. package/dist/bridge/sse/late-events.test.d.ts.map +1 -0
  96. package/dist/bridge/sse/late-events.test.js +163 -0
  97. package/dist/bridge/sse/late-events.test.js.map +1 -0
  98. package/dist/bridge/sse/mapper.d.ts.map +1 -1
  99. package/dist/bridge/sse/mapper.js +100 -0
  100. package/dist/bridge/sse/mapper.js.map +1 -1
  101. package/dist/compaction/__tests__/cleared-result-recovery.test.d.ts +2 -0
  102. package/dist/compaction/__tests__/cleared-result-recovery.test.d.ts.map +1 -0
  103. package/dist/compaction/__tests__/cleared-result-recovery.test.js +101 -0
  104. package/dist/compaction/__tests__/cleared-result-recovery.test.js.map +1 -0
  105. package/dist/compaction/__tests__/context-window.test.d.ts +2 -0
  106. package/dist/compaction/__tests__/context-window.test.d.ts.map +1 -0
  107. package/dist/compaction/__tests__/context-window.test.js +62 -0
  108. package/dist/compaction/__tests__/context-window.test.js.map +1 -0
  109. package/dist/compaction/__tests__/dangling.test.js +16 -5
  110. package/dist/compaction/__tests__/dangling.test.js.map +1 -1
  111. package/dist/compaction/__tests__/lossiness.test.d.ts +2 -0
  112. package/dist/compaction/__tests__/lossiness.test.d.ts.map +1 -0
  113. package/dist/compaction/__tests__/lossiness.test.js +163 -0
  114. package/dist/compaction/__tests__/lossiness.test.js.map +1 -0
  115. package/dist/compaction/__tests__/state-across-resume.test.d.ts +2 -0
  116. package/dist/compaction/__tests__/state-across-resume.test.d.ts.map +1 -0
  117. package/dist/compaction/__tests__/state-across-resume.test.js +88 -0
  118. package/dist/compaction/__tests__/state-across-resume.test.js.map +1 -0
  119. package/dist/compaction/__tests__/tool-result-editing.test.d.ts +2 -0
  120. package/dist/compaction/__tests__/tool-result-editing.test.d.ts.map +1 -0
  121. package/dist/compaction/__tests__/tool-result-editing.test.js +184 -0
  122. package/dist/compaction/__tests__/tool-result-editing.test.js.map +1 -0
  123. package/dist/compaction/__tests__/trim-opens-on-user.test.d.ts +2 -0
  124. package/dist/compaction/__tests__/trim-opens-on-user.test.d.ts.map +1 -0
  125. package/dist/compaction/__tests__/trim-opens-on-user.test.js +109 -0
  126. package/dist/compaction/__tests__/trim-opens-on-user.test.js.map +1 -0
  127. package/dist/compaction/__tests__/verifier-model.test.d.ts +2 -0
  128. package/dist/compaction/__tests__/verifier-model.test.d.ts.map +1 -0
  129. package/dist/compaction/__tests__/verifier-model.test.js +58 -0
  130. package/dist/compaction/__tests__/verifier-model.test.js.map +1 -0
  131. package/dist/compaction/context-window.d.ts +44 -0
  132. package/dist/compaction/context-window.d.ts.map +1 -0
  133. package/dist/compaction/context-window.js +97 -0
  134. package/dist/compaction/context-window.js.map +1 -0
  135. package/dist/compaction/dangling.js +48 -1
  136. package/dist/compaction/dangling.js.map +1 -1
  137. package/dist/compaction/extractor.d.ts.map +1 -1
  138. package/dist/compaction/extractor.js +55 -1
  139. package/dist/compaction/extractor.js.map +1 -1
  140. package/dist/compaction/index.d.ts +5 -0
  141. package/dist/compaction/index.d.ts.map +1 -1
  142. package/dist/compaction/index.js +3 -0
  143. package/dist/compaction/index.js.map +1 -1
  144. package/dist/compaction/manager.d.ts +25 -0
  145. package/dist/compaction/manager.d.ts.map +1 -1
  146. package/dist/compaction/manager.js +42 -8
  147. package/dist/compaction/manager.js.map +1 -1
  148. package/dist/compaction/managers/structured.d.ts.map +1 -1
  149. package/dist/compaction/managers/structured.js +7 -3
  150. package/dist/compaction/managers/structured.js.map +1 -1
  151. package/dist/compaction/retention.d.ts +15 -0
  152. package/dist/compaction/retention.d.ts.map +1 -0
  153. package/dist/compaction/retention.js +89 -0
  154. package/dist/compaction/retention.js.map +1 -0
  155. package/dist/compaction/serializer.d.ts.map +1 -1
  156. package/dist/compaction/serializer.js +28 -11
  157. package/dist/compaction/serializer.js.map +1 -1
  158. package/dist/compaction/tool-result-editing.d.ts +54 -0
  159. package/dist/compaction/tool-result-editing.d.ts.map +1 -0
  160. package/dist/compaction/tool-result-editing.js +164 -0
  161. package/dist/compaction/tool-result-editing.js.map +1 -0
  162. package/dist/compaction/types.d.ts +10 -0
  163. package/dist/compaction/types.d.ts.map +1 -1
  164. package/dist/compaction/verifier.d.ts +20 -1
  165. package/dist/compaction/verifier.d.ts.map +1 -1
  166. package/dist/compaction/verifier.js +11 -2
  167. package/dist/compaction/verifier.js.map +1 -1
  168. package/dist/compaction/wire.d.ts +54 -0
  169. package/dist/compaction/wire.d.ts.map +1 -0
  170. package/dist/compaction/wire.js +45 -0
  171. package/dist/compaction/wire.js.map +1 -0
  172. package/dist/config/runtime.d.ts +161 -45
  173. package/dist/config/runtime.d.ts.map +1 -1
  174. package/dist/config/runtime.js +61 -19
  175. package/dist/config/runtime.js.map +1 -1
  176. package/dist/connector/builtins/http.d.ts.map +1 -1
  177. package/dist/connector/builtins/http.js +14 -1
  178. package/dist/connector/builtins/http.js.map +1 -1
  179. package/dist/connector/builtins/http.test.js +12 -0
  180. package/dist/connector/builtins/http.test.js.map +1 -1
  181. package/dist/connector/mcp/__tests__/discovery-policy.test.d.ts +2 -0
  182. package/dist/connector/mcp/__tests__/discovery-policy.test.d.ts.map +1 -0
  183. package/dist/connector/mcp/__tests__/discovery-policy.test.js +109 -0
  184. package/dist/connector/mcp/__tests__/discovery-policy.test.js.map +1 -0
  185. package/dist/connector/mcp/__tests__/list-pagination.test.d.ts +2 -0
  186. package/dist/connector/mcp/__tests__/list-pagination.test.d.ts.map +1 -0
  187. package/dist/connector/mcp/__tests__/list-pagination.test.js +81 -0
  188. package/dist/connector/mcp/__tests__/list-pagination.test.js.map +1 -0
  189. package/dist/connector/mcp/__tests__/policy.test.d.ts +2 -0
  190. package/dist/connector/mcp/__tests__/policy.test.d.ts.map +1 -0
  191. package/dist/connector/mcp/__tests__/policy.test.js +86 -0
  192. package/dist/connector/mcp/__tests__/policy.test.js.map +1 -0
  193. package/dist/connector/mcp/__tests__/protocol-negotiation.test.d.ts +2 -0
  194. package/dist/connector/mcp/__tests__/protocol-negotiation.test.d.ts.map +1 -0
  195. package/dist/connector/mcp/__tests__/protocol-negotiation.test.js +81 -0
  196. package/dist/connector/mcp/__tests__/protocol-negotiation.test.js.map +1 -0
  197. package/dist/connector/mcp/__tests__/schema-fidelity.test.d.ts +2 -0
  198. package/dist/connector/mcp/__tests__/schema-fidelity.test.d.ts.map +1 -0
  199. package/dist/connector/mcp/__tests__/schema-fidelity.test.js +206 -0
  200. package/dist/connector/mcp/__tests__/schema-fidelity.test.js.map +1 -0
  201. package/dist/connector/mcp/__tests__/structured-result.test.d.ts +2 -0
  202. package/dist/connector/mcp/__tests__/structured-result.test.d.ts.map +1 -0
  203. package/dist/connector/mcp/__tests__/structured-result.test.js +112 -0
  204. package/dist/connector/mcp/__tests__/structured-result.test.js.map +1 -0
  205. package/dist/connector/mcp/adapter.d.ts +14 -0
  206. package/dist/connector/mcp/adapter.d.ts.map +1 -1
  207. package/dist/connector/mcp/adapter.js +292 -18
  208. package/dist/connector/mcp/adapter.js.map +1 -1
  209. package/dist/connector/mcp/client.d.ts +38 -0
  210. package/dist/connector/mcp/client.d.ts.map +1 -1
  211. package/dist/connector/mcp/client.js +138 -12
  212. package/dist/connector/mcp/client.js.map +1 -1
  213. package/dist/connector/mcp/client.test.d.ts +2 -0
  214. package/dist/connector/mcp/client.test.d.ts.map +1 -0
  215. package/dist/connector/mcp/client.test.js +105 -0
  216. package/dist/connector/mcp/client.test.js.map +1 -0
  217. package/dist/connector/mcp/discovery.d.ts +32 -1
  218. package/dist/connector/mcp/discovery.d.ts.map +1 -1
  219. package/dist/connector/mcp/discovery.js +41 -4
  220. package/dist/connector/mcp/discovery.js.map +1 -1
  221. package/dist/connector/mcp/http-sse.d.ts.map +1 -1
  222. package/dist/connector/mcp/http-sse.js +15 -1
  223. package/dist/connector/mcp/http-sse.js.map +1 -1
  224. package/dist/connector/mcp/index.d.ts +3 -0
  225. package/dist/connector/mcp/index.d.ts.map +1 -1
  226. package/dist/connector/mcp/index.js +1 -0
  227. package/dist/connector/mcp/index.js.map +1 -1
  228. package/dist/connector/mcp/policy.d.ts +57 -0
  229. package/dist/connector/mcp/policy.d.ts.map +1 -0
  230. package/dist/connector/mcp/policy.js +84 -0
  231. package/dist/connector/mcp/policy.js.map +1 -0
  232. package/dist/connector/mcp/schema-refs.d.ts +26 -0
  233. package/dist/connector/mcp/schema-refs.d.ts.map +1 -0
  234. package/dist/connector/mcp/schema-refs.js +111 -0
  235. package/dist/connector/mcp/schema-refs.js.map +1 -0
  236. package/dist/constants/agent/index.d.ts.map +1 -1
  237. package/dist/constants/agent/index.js +3 -0
  238. package/dist/constants/agent/index.js.map +1 -1
  239. package/dist/constants/compaction/index.js +1 -1
  240. package/dist/constants/compaction/index.js.map +1 -1
  241. package/dist/constants/continuation.d.ts +4 -4
  242. package/dist/constants/continuation.js +4 -4
  243. package/dist/constants/mcp/index.d.ts +31 -0
  244. package/dist/constants/mcp/index.d.ts.map +1 -1
  245. package/dist/constants/mcp/index.js +31 -0
  246. package/dist/constants/mcp/index.js.map +1 -1
  247. package/dist/constants/plugin/index.d.ts +23 -2
  248. package/dist/constants/plugin/index.d.ts.map +1 -1
  249. package/dist/constants/plugin/index.js +23 -2
  250. package/dist/constants/plugin/index.js.map +1 -1
  251. package/dist/constants/sandbox/index.d.ts +2 -3
  252. package/dist/constants/sandbox/index.d.ts.map +1 -1
  253. package/dist/constants/sandbox/index.js +6 -5
  254. package/dist/constants/sandbox/index.js.map +1 -1
  255. package/dist/constants/telemetry/index.d.ts +7 -0
  256. package/dist/constants/telemetry/index.d.ts.map +1 -1
  257. package/dist/constants/telemetry/index.js +7 -0
  258. package/dist/constants/telemetry/index.js.map +1 -1
  259. package/dist/constants/tools/index.d.ts +16 -0
  260. package/dist/constants/tools/index.d.ts.map +1 -1
  261. package/dist/constants/tools/index.js +16 -0
  262. package/dist/constants/tools/index.js.map +1 -1
  263. package/dist/contracts/a2a.d.ts +94 -94
  264. package/dist/contracts/api.d.ts +40 -2
  265. package/dist/contracts/api.d.ts.map +1 -1
  266. package/dist/contracts/run-status.d.ts +17 -0
  267. package/dist/contracts/run-status.d.ts.map +1 -0
  268. package/dist/contracts/run-status.js +41 -0
  269. package/dist/contracts/run-status.js.map +1 -0
  270. package/dist/contracts/schemas.d.ts +6 -6
  271. package/dist/eval/__tests__/case-deadline.test.d.ts +2 -0
  272. package/dist/eval/__tests__/case-deadline.test.d.ts.map +1 -0
  273. package/dist/eval/__tests__/case-deadline.test.js +128 -0
  274. package/dist/eval/__tests__/case-deadline.test.js.map +1 -0
  275. package/dist/eval/__tests__/end-to-end.test.d.ts +2 -0
  276. package/dist/eval/__tests__/end-to-end.test.d.ts.map +1 -0
  277. package/dist/eval/__tests__/end-to-end.test.js +223 -0
  278. package/dist/eval/__tests__/end-to-end.test.js.map +1 -0
  279. package/dist/eval/__tests__/harness-honesty.test.d.ts +2 -0
  280. package/dist/eval/__tests__/harness-honesty.test.d.ts.map +1 -0
  281. package/dist/eval/__tests__/harness-honesty.test.js +85 -0
  282. package/dist/eval/__tests__/harness-honesty.test.js.map +1 -0
  283. package/dist/eval/__tests__/harness.test.d.ts +2 -0
  284. package/dist/eval/__tests__/harness.test.d.ts.map +1 -0
  285. package/dist/eval/__tests__/harness.test.js +207 -0
  286. package/dist/eval/__tests__/harness.test.js.map +1 -0
  287. package/dist/eval/__tests__/judge.test.d.ts +2 -0
  288. package/dist/eval/__tests__/judge.test.d.ts.map +1 -0
  289. package/dist/eval/__tests__/judge.test.js +255 -0
  290. package/dist/eval/__tests__/judge.test.js.map +1 -0
  291. package/dist/eval/__tests__/scorer-gates.test.d.ts +2 -0
  292. package/dist/eval/__tests__/scorer-gates.test.d.ts.map +1 -0
  293. package/dist/eval/__tests__/scorer-gates.test.js +136 -0
  294. package/dist/eval/__tests__/scorer-gates.test.js.map +1 -0
  295. package/dist/eval/experiment.d.ts +54 -0
  296. package/dist/eval/experiment.d.ts.map +1 -0
  297. package/dist/eval/experiment.js +263 -0
  298. package/dist/eval/experiment.js.map +1 -0
  299. package/dist/eval/from-run.d.ts +30 -0
  300. package/dist/eval/from-run.d.ts.map +1 -0
  301. package/dist/eval/from-run.js +46 -0
  302. package/dist/eval/from-run.js.map +1 -0
  303. package/dist/eval/index.d.ts +8 -0
  304. package/dist/eval/index.d.ts.map +1 -0
  305. package/dist/eval/index.js +5 -0
  306. package/dist/eval/index.js.map +1 -0
  307. package/dist/eval/judge.d.ts +63 -0
  308. package/dist/eval/judge.d.ts.map +1 -0
  309. package/dist/eval/judge.js +136 -0
  310. package/dist/eval/judge.js.map +1 -0
  311. package/dist/eval/scorers.d.ts +40 -0
  312. package/dist/eval/scorers.d.ts.map +1 -0
  313. package/dist/eval/scorers.js +151 -0
  314. package/dist/eval/scorers.js.map +1 -0
  315. package/dist/eval/types.d.ts +150 -0
  316. package/dist/eval/types.d.ts.map +1 -0
  317. package/dist/eval/types.js +2 -0
  318. package/dist/eval/types.js.map +1 -0
  319. package/dist/execution/local.d.ts.map +1 -1
  320. package/dist/execution/local.js +6 -1
  321. package/dist/execution/local.js.map +1 -1
  322. package/dist/execution/local.test.d.ts +2 -0
  323. package/dist/execution/local.test.d.ts.map +1 -0
  324. package/dist/execution/local.test.js +37 -0
  325. package/dist/execution/local.test.js.map +1 -0
  326. package/dist/gateway/__tests__/list-survives-eviction.test.d.ts +2 -0
  327. package/dist/gateway/__tests__/list-survives-eviction.test.d.ts.map +1 -0
  328. package/dist/gateway/__tests__/list-survives-eviction.test.js +102 -0
  329. package/dist/gateway/__tests__/list-survives-eviction.test.js.map +1 -0
  330. package/dist/gateway/local.d.ts +42 -2
  331. package/dist/gateway/local.d.ts.map +1 -1
  332. package/dist/gateway/local.js +110 -3
  333. package/dist/gateway/local.js.map +1 -1
  334. package/dist/manager/agent/__tests__/dispose-cancels.test.d.ts +2 -0
  335. package/dist/manager/agent/__tests__/dispose-cancels.test.d.ts.map +1 -0
  336. package/dist/manager/agent/__tests__/dispose-cancels.test.js +88 -0
  337. package/dist/manager/agent/__tests__/dispose-cancels.test.js.map +1 -0
  338. package/dist/manager/agent/__tests__/lifecycle.test.js +230 -0
  339. package/dist/manager/agent/__tests__/lifecycle.test.js.map +1 -1
  340. package/dist/manager/agent/lifecycle.d.ts +35 -0
  341. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  342. package/dist/manager/agent/lifecycle.js +117 -7
  343. package/dist/manager/agent/lifecycle.js.map +1 -1
  344. package/dist/manager/run/persistence.d.ts +90 -1
  345. package/dist/manager/run/persistence.d.ts.map +1 -1
  346. package/dist/manager/run/persistence.js +120 -0
  347. package/dist/manager/run/persistence.js.map +1 -1
  348. package/dist/plugin/__tests__/enable-contributions.test.js +3 -3
  349. package/dist/plugin/__tests__/enable-contributions.test.js.map +1 -1
  350. package/dist/plugin/__tests__/hook-ordering.test.d.ts +2 -0
  351. package/dist/plugin/__tests__/hook-ordering.test.d.ts.map +1 -0
  352. package/dist/plugin/__tests__/hook-ordering.test.js +227 -0
  353. package/dist/plugin/__tests__/hook-ordering.test.js.map +1 -0
  354. package/dist/plugin/__tests__/install-time-refusal.test.d.ts +2 -0
  355. package/dist/plugin/__tests__/install-time-refusal.test.d.ts.map +1 -0
  356. package/dist/plugin/__tests__/install-time-refusal.test.js +49 -0
  357. package/dist/plugin/__tests__/install-time-refusal.test.js.map +1 -0
  358. package/dist/plugin/__tests__/lifecycle.test.js +95 -68
  359. package/dist/plugin/__tests__/lifecycle.test.js.map +1 -1
  360. package/dist/plugin/lifecycle.d.ts +15 -1
  361. package/dist/plugin/lifecycle.d.ts.map +1 -1
  362. package/dist/plugin/lifecycle.js +67 -20
  363. package/dist/plugin/lifecycle.js.map +1 -1
  364. package/dist/plugin/loader.d.ts +15 -0
  365. package/dist/plugin/loader.d.ts.map +1 -1
  366. package/dist/plugin/loader.js +33 -1
  367. package/dist/plugin/loader.js.map +1 -1
  368. package/dist/probe/registry.d.ts.map +1 -1
  369. package/dist/probe/registry.js +19 -1
  370. package/dist/probe/registry.js.map +1 -1
  371. package/dist/probe/registry.test.d.ts +9 -3
  372. package/dist/probe/registry.test.d.ts.map +1 -1
  373. package/dist/probe/registry.test.js +44 -6
  374. package/dist/probe/registry.test.js.map +1 -1
  375. package/dist/provider/__tests__/mock-script.test.d.ts +2 -0
  376. package/dist/provider/__tests__/mock-script.test.d.ts.map +1 -0
  377. package/dist/provider/__tests__/mock-script.test.js +151 -0
  378. package/dist/provider/__tests__/mock-script.test.js.map +1 -0
  379. package/dist/provider/__tests__/retry-visibility.test.d.ts +2 -0
  380. package/dist/provider/__tests__/retry-visibility.test.d.ts.map +1 -0
  381. package/dist/provider/__tests__/retry-visibility.test.js +137 -0
  382. package/dist/provider/__tests__/retry-visibility.test.js.map +1 -0
  383. package/dist/provider/__tests__/retry.test.d.ts +2 -0
  384. package/dist/provider/__tests__/retry.test.d.ts.map +1 -0
  385. package/dist/provider/__tests__/retry.test.js +259 -0
  386. package/dist/provider/__tests__/retry.test.js.map +1 -0
  387. package/dist/provider/capabilities.d.ts +1 -0
  388. package/dist/provider/capabilities.d.ts.map +1 -1
  389. package/dist/provider/capabilities.js +2 -0
  390. package/dist/provider/capabilities.js.map +1 -1
  391. package/dist/provider/collect.d.ts +1 -1
  392. package/dist/provider/collect.js +1 -1
  393. package/dist/provider/collect.test.d.ts +1 -1
  394. package/dist/provider/collect.test.js +1 -1
  395. package/dist/provider/index.d.ts +3 -0
  396. package/dist/provider/index.d.ts.map +1 -1
  397. package/dist/provider/index.js +2 -0
  398. package/dist/provider/index.js.map +1 -1
  399. package/dist/provider/mock-register.d.ts.map +1 -1
  400. package/dist/provider/mock-register.js +5 -2
  401. package/dist/provider/mock-register.js.map +1 -1
  402. package/dist/provider/mock.d.ts +35 -5
  403. package/dist/provider/mock.d.ts.map +1 -1
  404. package/dist/provider/mock.js +104 -32
  405. package/dist/provider/mock.js.map +1 -1
  406. package/dist/provider/retry.d.ts +42 -0
  407. package/dist/provider/retry.d.ts.map +1 -0
  408. package/dist/provider/retry.js +161 -0
  409. package/dist/provider/retry.js.map +1 -0
  410. package/dist/public-runtime.d.ts +26 -7
  411. package/dist/public-runtime.d.ts.map +1 -1
  412. package/dist/public-runtime.js +50 -7
  413. package/dist/public-runtime.js.map +1 -1
  414. package/dist/public-types.d.ts +5 -1
  415. package/dist/public-types.d.ts.map +1 -1
  416. package/dist/rag/__tests__/retrieval-math.test.d.ts +2 -0
  417. package/dist/rag/__tests__/retrieval-math.test.d.ts.map +1 -0
  418. package/dist/rag/__tests__/retrieval-math.test.js +46 -0
  419. package/dist/rag/__tests__/retrieval-math.test.js.map +1 -0
  420. package/dist/rag/chunking.d.ts +12 -0
  421. package/dist/rag/chunking.d.ts.map +1 -1
  422. package/dist/rag/chunking.js +32 -1
  423. package/dist/rag/chunking.js.map +1 -1
  424. package/dist/rag/embedding.d.ts +4 -4
  425. package/dist/rag/embedding.d.ts.map +1 -1
  426. package/dist/rag/embedding.js +23 -3
  427. package/dist/rag/embedding.js.map +1 -1
  428. package/dist/rag/embedding.test.d.ts +1 -1
  429. package/dist/rag/embedding.test.js +59 -10
  430. package/dist/rag/embedding.test.js.map +1 -1
  431. package/dist/rag/index.d.ts +1 -1
  432. package/dist/rag/index.d.ts.map +1 -1
  433. package/dist/rag/index.js +1 -1
  434. package/dist/rag/index.js.map +1 -1
  435. package/dist/rag/retriever.d.ts +0 -1
  436. package/dist/rag/retriever.d.ts.map +1 -1
  437. package/dist/rag/retriever.js +75 -22
  438. package/dist/rag/retriever.js.map +1 -1
  439. package/dist/rag/vector-store.test.d.ts +1 -1
  440. package/dist/rag/vector-store.test.js +2 -2
  441. package/dist/rag/vector-store.test.js.map +1 -1
  442. package/dist/registry/ManagedRegistry.test.d.ts +1 -1
  443. package/dist/registry/ManagedRegistry.test.js +1 -1
  444. package/dist/registry/Registry.test.d.ts +1 -1
  445. package/dist/registry/Registry.test.js +1 -1
  446. package/dist/registry/connector/definitions.test.d.ts +1 -1
  447. package/dist/registry/connector/definitions.test.js +1 -1
  448. package/dist/registry/tool/__tests__/schema.test.d.ts +2 -0
  449. package/dist/registry/tool/__tests__/schema.test.d.ts.map +1 -0
  450. package/dist/registry/tool/__tests__/schema.test.js +176 -0
  451. package/dist/registry/tool/__tests__/schema.test.js.map +1 -0
  452. package/dist/registry/tool/__tests__/tool-name-validation.test.d.ts +2 -0
  453. package/dist/registry/tool/__tests__/tool-name-validation.test.d.ts.map +1 -0
  454. package/dist/registry/tool/__tests__/tool-name-validation.test.js +70 -0
  455. package/dist/registry/tool/__tests__/tool-name-validation.test.js.map +1 -0
  456. package/dist/registry/tool/execute.d.ts +37 -0
  457. package/dist/registry/tool/execute.d.ts.map +1 -1
  458. package/dist/registry/tool/execute.js +116 -16
  459. package/dist/registry/tool/execute.js.map +1 -1
  460. package/dist/registry/tool/execute.test.js +93 -7
  461. package/dist/registry/tool/execute.test.js.map +1 -1
  462. package/dist/registry/tool/schema.d.ts +26 -0
  463. package/dist/registry/tool/schema.d.ts.map +1 -0
  464. package/dist/registry/tool/schema.js +77 -0
  465. package/dist/registry/tool/schema.js.map +1 -0
  466. package/dist/registry/toolset/catalog.d.ts.map +1 -1
  467. package/dist/registry/toolset/catalog.js +17 -5
  468. package/dist/registry/toolset/catalog.js.map +1 -1
  469. package/dist/registry/toolset/catalog.test.js +101 -1
  470. package/dist/registry/toolset/catalog.test.js.map +1 -1
  471. package/dist/run/reporter.d.ts.map +1 -1
  472. package/dist/run/reporter.js +76 -0
  473. package/dist/run/reporter.js.map +1 -1
  474. package/dist/runtime/bidi/__tests__/session.test.d.ts +2 -0
  475. package/dist/runtime/bidi/__tests__/session.test.d.ts.map +1 -0
  476. package/dist/runtime/bidi/__tests__/session.test.js +201 -0
  477. package/dist/runtime/bidi/__tests__/session.test.js.map +1 -0
  478. package/dist/runtime/bidi/index.d.ts +5 -0
  479. package/dist/runtime/bidi/index.d.ts.map +1 -0
  480. package/dist/runtime/bidi/index.js +3 -0
  481. package/dist/runtime/bidi/index.js.map +1 -0
  482. package/dist/runtime/bidi/mock.d.ts +34 -0
  483. package/dist/runtime/bidi/mock.d.ts.map +1 -0
  484. package/dist/runtime/bidi/mock.js +60 -0
  485. package/dist/runtime/bidi/mock.js.map +1 -0
  486. package/dist/runtime/bidi/session.d.ts +44 -0
  487. package/dist/runtime/bidi/session.d.ts.map +1 -0
  488. package/dist/runtime/bidi/session.js +154 -0
  489. package/dist/runtime/bidi/session.js.map +1 -0
  490. package/dist/runtime/decision/parser.d.ts.map +1 -1
  491. package/dist/runtime/decision/parser.js +8 -1
  492. package/dist/runtime/decision/parser.js.map +1 -1
  493. package/dist/runtime/decision/parser.test.d.ts +2 -0
  494. package/dist/runtime/decision/parser.test.d.ts.map +1 -0
  495. package/dist/runtime/decision/parser.test.js +37 -0
  496. package/dist/runtime/decision/parser.test.js.map +1 -0
  497. package/dist/runtime/query/__tests__/answer-review.test.d.ts +2 -0
  498. package/dist/runtime/query/__tests__/answer-review.test.d.ts.map +1 -0
  499. package/dist/runtime/query/__tests__/answer-review.test.js +141 -0
  500. package/dist/runtime/query/__tests__/answer-review.test.js.map +1 -0
  501. package/dist/runtime/query/__tests__/capability-negotiation.test.js +24 -32
  502. package/dist/runtime/query/__tests__/capability-negotiation.test.js.map +1 -1
  503. package/dist/runtime/query/__tests__/checkpoint-store.test.js +12 -44
  504. package/dist/runtime/query/__tests__/checkpoint-store.test.js.map +1 -1
  505. package/dist/runtime/query/__tests__/checkpoint.test.js +2 -10
  506. package/dist/runtime/query/__tests__/checkpoint.test.js.map +1 -1
  507. package/dist/runtime/query/__tests__/citations.test.d.ts +2 -0
  508. package/dist/runtime/query/__tests__/citations.test.d.ts.map +1 -0
  509. package/dist/runtime/query/__tests__/citations.test.js +85 -0
  510. package/dist/runtime/query/__tests__/citations.test.js.map +1 -0
  511. package/dist/runtime/query/__tests__/content-budget.test.d.ts +2 -0
  512. package/dist/runtime/query/__tests__/content-budget.test.d.ts.map +1 -0
  513. package/dist/runtime/query/__tests__/content-budget.test.js +69 -0
  514. package/dist/runtime/query/__tests__/content-budget.test.js.map +1 -0
  515. package/dist/runtime/query/__tests__/context.test.js +3 -2
  516. package/dist/runtime/query/__tests__/context.test.js.map +1 -1
  517. package/dist/runtime/query/__tests__/deferred-tools.test.js +21 -30
  518. package/dist/runtime/query/__tests__/deferred-tools.test.js.map +1 -1
  519. package/dist/runtime/query/__tests__/delegation-resume.test.d.ts +2 -0
  520. package/dist/runtime/query/__tests__/delegation-resume.test.d.ts.map +1 -0
  521. package/dist/runtime/query/__tests__/delegation-resume.test.js +111 -0
  522. package/dist/runtime/query/__tests__/delegation-resume.test.js.map +1 -0
  523. package/dist/runtime/query/__tests__/document-attachments.test.d.ts +2 -0
  524. package/dist/runtime/query/__tests__/document-attachments.test.d.ts.map +1 -0
  525. package/dist/runtime/query/__tests__/document-attachments.test.js +92 -0
  526. package/dist/runtime/query/__tests__/document-attachments.test.js.map +1 -0
  527. package/dist/runtime/query/__tests__/durable-park-and-trace.test.d.ts +2 -0
  528. package/dist/runtime/query/__tests__/durable-park-and-trace.test.d.ts.map +1 -0
  529. package/dist/runtime/query/__tests__/durable-park-and-trace.test.js +194 -0
  530. package/dist/runtime/query/__tests__/durable-park-and-trace.test.js.map +1 -0
  531. package/dist/runtime/query/__tests__/durable-question-park.test.d.ts +2 -0
  532. package/dist/runtime/query/__tests__/durable-question-park.test.d.ts.map +1 -0
  533. package/dist/runtime/query/__tests__/durable-question-park.test.js +253 -0
  534. package/dist/runtime/query/__tests__/durable-question-park.test.js.map +1 -0
  535. package/dist/runtime/query/__tests__/durable-run-state.test.d.ts +2 -0
  536. package/dist/runtime/query/__tests__/durable-run-state.test.d.ts.map +1 -0
  537. package/dist/runtime/query/__tests__/durable-run-state.test.js +158 -0
  538. package/dist/runtime/query/__tests__/durable-run-state.test.js.map +1 -0
  539. package/dist/runtime/query/__tests__/executor-plugin-hooks.test.js +24 -20
  540. package/dist/runtime/query/__tests__/executor-plugin-hooks.test.js.map +1 -1
  541. package/dist/runtime/query/__tests__/finish-reason-vs-tool-calls.test.d.ts +2 -0
  542. package/dist/runtime/query/__tests__/finish-reason-vs-tool-calls.test.d.ts.map +1 -0
  543. package/dist/runtime/query/__tests__/finish-reason-vs-tool-calls.test.js +187 -0
  544. package/dist/runtime/query/__tests__/finish-reason-vs-tool-calls.test.js.map +1 -0
  545. package/dist/runtime/query/__tests__/grant-cannot-overrule-the-gate.test.d.ts +2 -0
  546. package/dist/runtime/query/__tests__/grant-cannot-overrule-the-gate.test.d.ts.map +1 -0
  547. package/dist/runtime/query/__tests__/grant-cannot-overrule-the-gate.test.js +95 -0
  548. package/dist/runtime/query/__tests__/grant-cannot-overrule-the-gate.test.js.map +1 -0
  549. package/dist/runtime/query/__tests__/guardrails-e2e.test.d.ts +2 -0
  550. package/dist/runtime/query/__tests__/guardrails-e2e.test.d.ts.map +1 -0
  551. package/dist/runtime/query/__tests__/guardrails-e2e.test.js +132 -0
  552. package/dist/runtime/query/__tests__/guardrails-e2e.test.js.map +1 -0
  553. package/dist/runtime/query/__tests__/guardrails.test.d.ts +2 -0
  554. package/dist/runtime/query/__tests__/guardrails.test.d.ts.map +1 -0
  555. package/dist/runtime/query/__tests__/guardrails.test.js +163 -0
  556. package/dist/runtime/query/__tests__/guardrails.test.js.map +1 -0
  557. package/dist/runtime/query/__tests__/hook-model-visibility.test.d.ts +2 -0
  558. package/dist/runtime/query/__tests__/hook-model-visibility.test.d.ts.map +1 -0
  559. package/dist/runtime/query/__tests__/hook-model-visibility.test.js +119 -0
  560. package/dist/runtime/query/__tests__/hook-model-visibility.test.js.map +1 -0
  561. package/dist/runtime/query/__tests__/long-document-flow.test.js +21 -14
  562. package/dist/runtime/query/__tests__/long-document-flow.test.js.map +1 -1
  563. package/dist/runtime/query/__tests__/memory-promotion.test.d.ts +2 -0
  564. package/dist/runtime/query/__tests__/memory-promotion.test.d.ts.map +1 -0
  565. package/dist/runtime/query/__tests__/memory-promotion.test.js +119 -0
  566. package/dist/runtime/query/__tests__/memory-promotion.test.js.map +1 -0
  567. package/dist/runtime/query/__tests__/orphan-task-turn-end.test.js +5 -27
  568. package/dist/runtime/query/__tests__/orphan-task-turn-end.test.js.map +1 -1
  569. package/dist/runtime/query/__tests__/overflow-relief.test.d.ts +2 -0
  570. package/dist/runtime/query/__tests__/overflow-relief.test.d.ts.map +1 -0
  571. package/dist/runtime/query/__tests__/overflow-relief.test.js +119 -0
  572. package/dist/runtime/query/__tests__/overflow-relief.test.js.map +1 -0
  573. package/dist/runtime/query/__tests__/partial-batch-resume.test.d.ts +2 -0
  574. package/dist/runtime/query/__tests__/partial-batch-resume.test.d.ts.map +1 -0
  575. package/dist/runtime/query/__tests__/partial-batch-resume.test.js +205 -0
  576. package/dist/runtime/query/__tests__/partial-batch-resume.test.js.map +1 -0
  577. package/dist/runtime/query/__tests__/plugin-hooks.test.js +0 -1
  578. package/dist/runtime/query/__tests__/plugin-hooks.test.js.map +1 -1
  579. package/dist/runtime/query/__tests__/prepare-step-chain.test.d.ts +2 -0
  580. package/dist/runtime/query/__tests__/prepare-step-chain.test.d.ts.map +1 -0
  581. package/dist/runtime/query/__tests__/prepare-step-chain.test.js +104 -0
  582. package/dist/runtime/query/__tests__/prepare-step-chain.test.js.map +1 -0
  583. package/dist/runtime/query/__tests__/prepare-step.test.d.ts +2 -0
  584. package/dist/runtime/query/__tests__/prepare-step.test.d.ts.map +1 -0
  585. package/dist/runtime/query/__tests__/prepare-step.test.js +194 -0
  586. package/dist/runtime/query/__tests__/prepare-step.test.js.map +1 -0
  587. package/dist/runtime/query/__tests__/probe-veto-is-error.test.d.ts +2 -0
  588. package/dist/runtime/query/__tests__/probe-veto-is-error.test.d.ts.map +1 -0
  589. package/dist/runtime/query/__tests__/probe-veto-is-error.test.js +111 -0
  590. package/dist/runtime/query/__tests__/probe-veto-is-error.test.js.map +1 -0
  591. package/dist/runtime/query/__tests__/prompt.test.js +1 -1
  592. package/dist/runtime/query/__tests__/prompt.test.js.map +1 -1
  593. package/dist/runtime/query/__tests__/provider-fault-pauses.test.d.ts +2 -0
  594. package/dist/runtime/query/__tests__/provider-fault-pauses.test.d.ts.map +1 -0
  595. package/dist/runtime/query/__tests__/provider-fault-pauses.test.js +86 -0
  596. package/dist/runtime/query/__tests__/provider-fault-pauses.test.js.map +1 -0
  597. package/dist/runtime/query/__tests__/reasoning-stream.test.d.ts +2 -0
  598. package/dist/runtime/query/__tests__/reasoning-stream.test.d.ts.map +1 -0
  599. package/dist/runtime/query/__tests__/reasoning-stream.test.js +146 -0
  600. package/dist/runtime/query/__tests__/reasoning-stream.test.js.map +1 -0
  601. package/dist/runtime/query/__tests__/recoverable-settle.test.d.ts +2 -0
  602. package/dist/runtime/query/__tests__/recoverable-settle.test.d.ts.map +1 -0
  603. package/dist/runtime/query/__tests__/recoverable-settle.test.js +119 -0
  604. package/dist/runtime/query/__tests__/recoverable-settle.test.js.map +1 -0
  605. package/dist/runtime/query/__tests__/resume-budget.test.d.ts +2 -0
  606. package/dist/runtime/query/__tests__/resume-budget.test.d.ts.map +1 -0
  607. package/dist/runtime/query/__tests__/resume-budget.test.js +130 -0
  608. package/dist/runtime/query/__tests__/resume-budget.test.js.map +1 -0
  609. package/dist/runtime/query/__tests__/resume-pending.test.d.ts +2 -0
  610. package/dist/runtime/query/__tests__/resume-pending.test.d.ts.map +1 -0
  611. package/dist/runtime/query/__tests__/resume-pending.test.js +226 -0
  612. package/dist/runtime/query/__tests__/resume-pending.test.js.map +1 -0
  613. package/dist/runtime/query/__tests__/rich-content-budget-wiring.test.d.ts +2 -0
  614. package/dist/runtime/query/__tests__/rich-content-budget-wiring.test.d.ts.map +1 -0
  615. package/dist/runtime/query/__tests__/rich-content-budget-wiring.test.js +89 -0
  616. package/dist/runtime/query/__tests__/rich-content-budget-wiring.test.js.map +1 -0
  617. package/dist/runtime/query/__tests__/stop-condition.test.d.ts +2 -0
  618. package/dist/runtime/query/__tests__/stop-condition.test.d.ts.map +1 -0
  619. package/dist/runtime/query/__tests__/stop-condition.test.js +205 -0
  620. package/dist/runtime/query/__tests__/stop-condition.test.js.map +1 -0
  621. package/dist/runtime/query/__tests__/stream-recovery.test.js +1 -1
  622. package/dist/runtime/query/__tests__/stream-recovery.test.js.map +1 -1
  623. package/dist/runtime/query/__tests__/structured-output.test.d.ts +2 -0
  624. package/dist/runtime/query/__tests__/structured-output.test.d.ts.map +1 -0
  625. package/dist/runtime/query/__tests__/structured-output.test.js +219 -0
  626. package/dist/runtime/query/__tests__/structured-output.test.js.map +1 -0
  627. package/dist/runtime/query/__tests__/structured-run-failure.test.d.ts +2 -0
  628. package/dist/runtime/query/__tests__/structured-run-failure.test.d.ts.map +1 -0
  629. package/dist/runtime/query/__tests__/structured-run-failure.test.js +117 -0
  630. package/dist/runtime/query/__tests__/structured-run-failure.test.js.map +1 -0
  631. package/dist/runtime/query/__tests__/terminal-tool.test.d.ts +2 -0
  632. package/dist/runtime/query/__tests__/terminal-tool.test.d.ts.map +1 -0
  633. package/dist/runtime/query/__tests__/terminal-tool.test.js +119 -0
  634. package/dist/runtime/query/__tests__/terminal-tool.test.js.map +1 -0
  635. package/dist/runtime/query/__tests__/tool-grants.test.d.ts +2 -0
  636. package/dist/runtime/query/__tests__/tool-grants.test.d.ts.map +1 -0
  637. package/dist/runtime/query/__tests__/tool-grants.test.js +85 -0
  638. package/dist/runtime/query/__tests__/tool-grants.test.js.map +1 -0
  639. package/dist/runtime/query/__tests__/tool-output-budget.test.d.ts +2 -0
  640. package/dist/runtime/query/__tests__/tool-output-budget.test.d.ts.map +1 -0
  641. package/dist/runtime/query/__tests__/tool-output-budget.test.js +0 -0
  642. package/dist/runtime/query/__tests__/tool-output-budget.test.js.map +1 -0
  643. package/dist/runtime/query/__tests__/tool-pause.test.d.ts +2 -0
  644. package/dist/runtime/query/__tests__/tool-pause.test.d.ts.map +1 -0
  645. package/dist/runtime/query/__tests__/tool-pause.test.js +165 -0
  646. package/dist/runtime/query/__tests__/tool-pause.test.js.map +1 -0
  647. package/dist/runtime/query/__tests__/tool-progress.test.d.ts +2 -0
  648. package/dist/runtime/query/__tests__/tool-progress.test.d.ts.map +1 -0
  649. package/dist/runtime/query/__tests__/tool-progress.test.js +122 -0
  650. package/dist/runtime/query/__tests__/tool-progress.test.js.map +1 -0
  651. package/dist/runtime/query/__tests__/tool-repair-retry.test.d.ts +2 -0
  652. package/dist/runtime/query/__tests__/tool-repair-retry.test.d.ts.map +1 -0
  653. package/dist/runtime/query/__tests__/tool-repair-retry.test.js +196 -0
  654. package/dist/runtime/query/__tests__/tool-repair-retry.test.js.map +1 -0
  655. package/dist/runtime/query/__tests__/tool-result-wire.test.d.ts +2 -0
  656. package/dist/runtime/query/__tests__/tool-result-wire.test.d.ts.map +1 -0
  657. package/dist/runtime/query/__tests__/tool-result-wire.test.js +106 -0
  658. package/dist/runtime/query/__tests__/tool-result-wire.test.js.map +1 -0
  659. package/dist/runtime/query/__tests__/tool-timeout.test.d.ts +2 -0
  660. package/dist/runtime/query/__tests__/tool-timeout.test.d.ts.map +1 -0
  661. package/dist/runtime/query/__tests__/tool-timeout.test.js +184 -0
  662. package/dist/runtime/query/__tests__/tool-timeout.test.js.map +1 -0
  663. package/dist/runtime/query/__tests__/trace-parenting.test.d.ts +2 -0
  664. package/dist/runtime/query/__tests__/trace-parenting.test.d.ts.map +1 -0
  665. package/dist/runtime/query/__tests__/trace-parenting.test.js +111 -0
  666. package/dist/runtime/query/__tests__/trace-parenting.test.js.map +1 -0
  667. package/dist/runtime/query/__tests__/wiring-seams.test.d.ts +2 -0
  668. package/dist/runtime/query/__tests__/wiring-seams.test.d.ts.map +1 -0
  669. package/dist/runtime/query/__tests__/wiring-seams.test.js +237 -0
  670. package/dist/runtime/query/__tests__/wiring-seams.test.js.map +1 -0
  671. package/dist/runtime/query/checkpoint.d.ts +124 -6
  672. package/dist/runtime/query/checkpoint.d.ts.map +1 -1
  673. package/dist/runtime/query/checkpoint.js +207 -6
  674. package/dist/runtime/query/checkpoint.js.map +1 -1
  675. package/dist/runtime/query/events.js +2 -2
  676. package/dist/runtime/query/events.js.map +1 -1
  677. package/dist/runtime/query/executor.d.ts +224 -7
  678. package/dist/runtime/query/executor.d.ts.map +1 -1
  679. package/dist/runtime/query/executor.js +664 -37
  680. package/dist/runtime/query/executor.js.map +1 -1
  681. package/dist/runtime/query/guard.d.ts +18 -0
  682. package/dist/runtime/query/guard.d.ts.map +1 -1
  683. package/dist/runtime/query/guard.js +16 -1
  684. package/dist/runtime/query/guard.js.map +1 -1
  685. package/dist/runtime/query/guardrail-presets.d.ts +36 -0
  686. package/dist/runtime/query/guardrail-presets.d.ts.map +1 -0
  687. package/dist/runtime/query/guardrail-presets.js +96 -0
  688. package/dist/runtime/query/guardrail-presets.js.map +1 -0
  689. package/dist/runtime/query/guardrails.d.ts +35 -0
  690. package/dist/runtime/query/guardrails.d.ts.map +1 -0
  691. package/dist/runtime/query/guardrails.js +102 -0
  692. package/dist/runtime/query/guardrails.js.map +1 -0
  693. package/dist/runtime/query/index.d.ts +213 -2
  694. package/dist/runtime/query/index.d.ts.map +1 -1
  695. package/dist/runtime/query/index.js +458 -10
  696. package/dist/runtime/query/index.js.map +1 -1
  697. package/dist/runtime/query/iteration/__tests__/cancel-settles-turn.test.d.ts +2 -0
  698. package/dist/runtime/query/iteration/__tests__/cancel-settles-turn.test.d.ts.map +1 -0
  699. package/dist/runtime/query/iteration/__tests__/cancel-settles-turn.test.js +131 -0
  700. package/dist/runtime/query/iteration/__tests__/cancel-settles-turn.test.js.map +1 -0
  701. package/dist/runtime/query/iteration/index.d.ts +76 -1
  702. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  703. package/dist/runtime/query/iteration/index.js +578 -25
  704. package/dist/runtime/query/iteration/index.js.map +1 -1
  705. package/dist/runtime/query/iteration/phases/advisory.d.ts.map +1 -1
  706. package/dist/runtime/query/iteration/phases/advisory.js +14 -2
  707. package/dist/runtime/query/iteration/phases/advisory.js.map +1 -1
  708. package/dist/runtime/query/iteration/phases/advisory.test.d.ts +1 -1
  709. package/dist/runtime/query/iteration/phases/advisory.test.js +4 -1
  710. package/dist/runtime/query/iteration/phases/advisory.test.js.map +1 -1
  711. package/dist/runtime/query/iteration/phases/checkpoint.js +2 -2
  712. package/dist/runtime/query/iteration/phases/checkpoint.js.map +1 -1
  713. package/dist/runtime/query/iteration/phases/compaction-safe-cut.test.js +1 -1
  714. package/dist/runtime/query/iteration/phases/compaction-safe-cut.test.js.map +1 -1
  715. package/dist/runtime/query/iteration/phases/compaction.d.ts +22 -1
  716. package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
  717. package/dist/runtime/query/iteration/phases/compaction.js +297 -64
  718. package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
  719. package/dist/runtime/query/iteration/phases/context-measurement.test.d.ts +21 -0
  720. package/dist/runtime/query/iteration/phases/context-measurement.test.d.ts.map +1 -0
  721. package/dist/runtime/query/iteration/phases/context-measurement.test.js +161 -0
  722. package/dist/runtime/query/iteration/phases/context-measurement.test.js.map +1 -0
  723. package/dist/runtime/query/iteration/phases/context.d.ts +62 -2
  724. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  725. package/dist/runtime/query/iteration/phases/context.js +87 -0
  726. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  727. package/dist/runtime/query/iteration/phases/hitl-answer-question.test.js +3 -1
  728. package/dist/runtime/query/iteration/phases/hitl-answer-question.test.js.map +1 -1
  729. package/dist/runtime/query/iteration/phases/overflow-escalation.test.d.ts +15 -0
  730. package/dist/runtime/query/iteration/phases/overflow-escalation.test.d.ts.map +1 -0
  731. package/dist/runtime/query/iteration/phases/overflow-escalation.test.js +130 -0
  732. package/dist/runtime/query/iteration/phases/overflow-escalation.test.js.map +1 -0
  733. package/dist/runtime/query/iteration/phases/plan.d.ts.map +1 -1
  734. package/dist/runtime/query/iteration/phases/plan.js +8 -2
  735. package/dist/runtime/query/iteration/phases/plan.js.map +1 -1
  736. package/dist/runtime/query/iteration/phases/retained-messages.test.d.ts +2 -0
  737. package/dist/runtime/query/iteration/phases/retained-messages.test.d.ts.map +1 -0
  738. package/dist/runtime/query/iteration/phases/retained-messages.test.js +180 -0
  739. package/dist/runtime/query/iteration/phases/retained-messages.test.js.map +1 -0
  740. package/dist/runtime/query/iteration/phases/tool-review-denials.test.d.ts +2 -0
  741. package/dist/runtime/query/iteration/phases/tool-review-denials.test.d.ts.map +1 -0
  742. package/dist/runtime/query/iteration/phases/tool-review-denials.test.js +224 -0
  743. package/dist/runtime/query/iteration/phases/tool-review-denials.test.js.map +1 -0
  744. package/dist/runtime/query/iteration/phases/tool-review.d.ts +29 -1
  745. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  746. package/dist/runtime/query/iteration/phases/tool-review.js +114 -44
  747. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  748. package/dist/runtime/query/iteration/phases/working-memory-compaction.test.js +20 -9
  749. package/dist/runtime/query/iteration/phases/working-memory-compaction.test.js.map +1 -1
  750. package/dist/runtime/query/iteration/stream-turn.d.ts +2 -26
  751. package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
  752. package/dist/runtime/query/iteration/stream-turn.js +254 -16
  753. package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
  754. package/dist/runtime/query/plugin-hooks.d.ts.map +1 -1
  755. package/dist/runtime/query/plugin-hooks.js +6 -2
  756. package/dist/runtime/query/plugin-hooks.js.map +1 -1
  757. package/dist/runtime/query/prompt.d.ts.map +1 -1
  758. package/dist/runtime/query/prompt.js +25 -1
  759. package/dist/runtime/query/prompt.js.map +1 -1
  760. package/dist/runtime/query/question-park.d.ts +85 -0
  761. package/dist/runtime/query/question-park.d.ts.map +1 -0
  762. package/dist/runtime/query/question-park.js +71 -0
  763. package/dist/runtime/query/question-park.js.map +1 -0
  764. package/dist/runtime/query/result.d.ts +9 -0
  765. package/dist/runtime/query/result.d.ts.map +1 -1
  766. package/dist/runtime/query/result.js +49 -0
  767. package/dist/runtime/query/result.js.map +1 -1
  768. package/dist/runtime/query/resume-pending.d.ts +106 -0
  769. package/dist/runtime/query/resume-pending.d.ts.map +1 -0
  770. package/dist/runtime/query/resume-pending.js +312 -0
  771. package/dist/runtime/query/resume-pending.js.map +1 -0
  772. package/dist/runtime/query/run-state.d.ts +52 -0
  773. package/dist/runtime/query/run-state.d.ts.map +1 -0
  774. package/dist/runtime/query/run-state.js +87 -0
  775. package/dist/runtime/query/run-state.js.map +1 -0
  776. package/dist/runtime/query/tool-grants.d.ts +44 -0
  777. package/dist/runtime/query/tool-grants.d.ts.map +1 -0
  778. package/dist/runtime/query/tool-grants.js +63 -0
  779. package/dist/runtime/query/tool-grants.js.map +1 -0
  780. package/dist/runtime/query/tool-output-budget.d.ts +83 -0
  781. package/dist/runtime/query/tool-output-budget.d.ts.map +1 -0
  782. package/dist/runtime/query/tool-output-budget.js +147 -0
  783. package/dist/runtime/query/tool-output-budget.js.map +1 -0
  784. package/dist/runtime/query/tool-pause.d.ts +41 -0
  785. package/dist/runtime/query/tool-pause.d.ts.map +1 -0
  786. package/dist/runtime/query/tool-pause.js +94 -0
  787. package/dist/runtime/query/tool-pause.js.map +1 -0
  788. package/dist/runtime/query/tooling.d.ts +10 -1
  789. package/dist/runtime/query/tooling.d.ts.map +1 -1
  790. package/dist/runtime/query/tooling.js +13 -0
  791. package/dist/runtime/query/tooling.js.map +1 -1
  792. package/dist/sandbox/__tests__/isolation.test.d.ts +2 -0
  793. package/dist/sandbox/__tests__/isolation.test.d.ts.map +1 -0
  794. package/dist/sandbox/__tests__/isolation.test.js +139 -0
  795. package/dist/sandbox/__tests__/isolation.test.js.map +1 -0
  796. package/dist/sandbox/__tests__/output-truncation.test.d.ts +2 -0
  797. package/dist/sandbox/__tests__/output-truncation.test.d.ts.map +1 -0
  798. package/dist/sandbox/__tests__/output-truncation.test.js +88 -0
  799. package/dist/sandbox/__tests__/output-truncation.test.js.map +1 -0
  800. package/dist/sandbox/__tests__/resource-limits.test.d.ts +2 -0
  801. package/dist/sandbox/__tests__/resource-limits.test.d.ts.map +1 -0
  802. package/dist/sandbox/__tests__/resource-limits.test.js +86 -0
  803. package/dist/sandbox/__tests__/resource-limits.test.js.map +1 -0
  804. package/dist/sandbox/factory.js +1 -1
  805. package/dist/sandbox/factory.js.map +1 -1
  806. package/dist/sandbox/index.d.ts +2 -0
  807. package/dist/sandbox/index.d.ts.map +1 -1
  808. package/dist/sandbox/index.js +1 -0
  809. package/dist/sandbox/index.js.map +1 -1
  810. package/dist/sandbox/isolation.d.ts +15 -0
  811. package/dist/sandbox/isolation.d.ts.map +1 -0
  812. package/dist/sandbox/isolation.js +53 -0
  813. package/dist/sandbox/isolation.js.map +1 -0
  814. package/dist/sandbox/provider/local.d.ts +51 -2
  815. package/dist/sandbox/provider/local.d.ts.map +1 -1
  816. package/dist/sandbox/provider/local.js +139 -69
  817. package/dist/sandbox/provider/local.js.map +1 -1
  818. package/dist/session/__tests__/integration/spawn-rollback.test.d.ts +1 -1
  819. package/dist/session/__tests__/integration/spawn-rollback.test.js +1 -1
  820. package/dist/session/handoff/broadcast.js +3 -3
  821. package/dist/session/handoff/broadcast.js.map +1 -1
  822. package/dist/session/migration/__tests__/filesystem.test.js +5 -1
  823. package/dist/session/migration/__tests__/filesystem.test.js.map +1 -1
  824. package/dist/session/migration/filesystem.d.ts.map +1 -1
  825. package/dist/session/migration/filesystem.js +7 -13
  826. package/dist/session/migration/filesystem.js.map +1 -1
  827. package/dist/session/migration/marker.d.ts.map +1 -1
  828. package/dist/session/migration/marker.js +5 -10
  829. package/dist/session/migration/marker.js.map +1 -1
  830. package/dist/session/retention/disk-backend.d.ts.map +1 -1
  831. package/dist/session/retention/disk-backend.js +5 -12
  832. package/dist/session/retention/disk-backend.js.map +1 -1
  833. package/dist/session/workspace/__tests__/git-worktree.test.js +6 -2
  834. package/dist/session/workspace/__tests__/git-worktree.test.js.map +1 -1
  835. package/dist/session/workspace/__tests__/shared-run.test.js +15 -0
  836. package/dist/session/workspace/__tests__/shared-run.test.js.map +1 -1
  837. package/dist/session/workspace/shared-run.js +8 -1
  838. package/dist/session/workspace/shared-run.js.map +1 -1
  839. package/dist/skills/__tests__/frontmatter.test.d.ts +2 -0
  840. package/dist/skills/__tests__/frontmatter.test.d.ts.map +1 -0
  841. package/dist/skills/__tests__/frontmatter.test.js +106 -0
  842. package/dist/skills/__tests__/frontmatter.test.js.map +1 -0
  843. package/dist/skills/loader.d.ts.map +1 -1
  844. package/dist/skills/loader.js +42 -3
  845. package/dist/skills/loader.js.map +1 -1
  846. package/dist/store/__tests__/checkpoint-integrity.test.d.ts +2 -0
  847. package/dist/store/__tests__/checkpoint-integrity.test.d.ts.map +1 -0
  848. package/dist/store/__tests__/checkpoint-integrity.test.js +112 -0
  849. package/dist/store/__tests__/checkpoint-integrity.test.js.map +1 -0
  850. package/dist/store/__tests__/checkpoint-versioning.test.d.ts +2 -0
  851. package/dist/store/__tests__/checkpoint-versioning.test.d.ts.map +1 -0
  852. package/dist/store/__tests__/checkpoint-versioning.test.js +151 -0
  853. package/dist/store/__tests__/checkpoint-versioning.test.js.map +1 -0
  854. package/dist/store/__tests__/schema-adoption.test.d.ts +2 -0
  855. package/dist/store/__tests__/schema-adoption.test.d.ts.map +1 -0
  856. package/dist/store/__tests__/schema-adoption.test.js +90 -0
  857. package/dist/store/__tests__/schema-adoption.test.js.map +1 -0
  858. package/dist/store/__tests__/schema.test.d.ts +2 -0
  859. package/dist/store/__tests__/schema.test.d.ts.map +1 -0
  860. package/dist/store/__tests__/schema.test.js +93 -0
  861. package/dist/store/__tests__/schema.test.js.map +1 -0
  862. package/dist/store/memory/disk.d.ts.map +1 -1
  863. package/dist/store/memory/disk.js +16 -16
  864. package/dist/store/memory/disk.js.map +1 -1
  865. package/dist/store/run/disk.d.ts +23 -0
  866. package/dist/store/run/disk.d.ts.map +1 -1
  867. package/dist/store/run/disk.js +148 -23
  868. package/dist/store/run/disk.js.map +1 -1
  869. package/dist/store/schema.d.ts +73 -0
  870. package/dist/store/schema.d.ts.map +1 -0
  871. package/dist/store/schema.js +103 -0
  872. package/dist/store/schema.js.map +1 -0
  873. package/dist/store/session/disk.d.ts.map +1 -1
  874. package/dist/store/session/disk.js +25 -13
  875. package/dist/store/session/disk.js.map +1 -1
  876. package/dist/store/task/__tests__/lookup-across-runs.test.d.ts +2 -0
  877. package/dist/store/task/__tests__/lookup-across-runs.test.d.ts.map +1 -0
  878. package/dist/store/task/__tests__/lookup-across-runs.test.js +60 -0
  879. package/dist/store/task/__tests__/lookup-across-runs.test.js.map +1 -0
  880. package/dist/store/task/disk.d.ts +18 -0
  881. package/dist/store/task/disk.d.ts.map +1 -1
  882. package/dist/store/task/disk.js +61 -16
  883. package/dist/store/task/disk.js.map +1 -1
  884. package/dist/store/thread/disk.d.ts.map +1 -1
  885. package/dist/store/thread/disk.js +20 -11
  886. package/dist/store/thread/disk.js.map +1 -1
  887. package/dist/streaming/coalesce.d.ts +1 -1
  888. package/dist/streaming/coalesce.js +1 -1
  889. package/dist/telemetry/__tests__/latency-instruments.test.d.ts +2 -0
  890. package/dist/telemetry/__tests__/latency-instruments.test.d.ts.map +1 -0
  891. package/dist/telemetry/__tests__/latency-instruments.test.js +82 -0
  892. package/dist/telemetry/__tests__/latency-instruments.test.js.map +1 -0
  893. package/dist/telemetry/__tests__/metrics.test.d.ts +2 -0
  894. package/dist/telemetry/__tests__/metrics.test.d.ts.map +1 -0
  895. package/dist/telemetry/__tests__/metrics.test.js +112 -0
  896. package/dist/telemetry/__tests__/metrics.test.js.map +1 -0
  897. package/dist/telemetry/__tests__/span-hierarchy.test.d.ts +2 -0
  898. package/dist/telemetry/__tests__/span-hierarchy.test.d.ts.map +1 -0
  899. package/dist/telemetry/__tests__/span-hierarchy.test.js +84 -0
  900. package/dist/telemetry/__tests__/span-hierarchy.test.js.map +1 -0
  901. package/dist/telemetry/attributes.d.ts +44 -0
  902. package/dist/telemetry/attributes.d.ts.map +1 -1
  903. package/dist/telemetry/attributes.js +80 -0
  904. package/dist/telemetry/attributes.js.map +1 -1
  905. package/dist/telemetry/metrics.d.ts +41 -0
  906. package/dist/telemetry/metrics.d.ts.map +1 -0
  907. package/dist/telemetry/metrics.js +160 -0
  908. package/dist/telemetry/metrics.js.map +1 -0
  909. package/dist/test-setup.d.ts +3 -3
  910. package/dist/test-setup.js +3 -3
  911. package/dist/test-support/paths.d.ts +14 -0
  912. package/dist/test-support/paths.d.ts.map +1 -0
  913. package/dist/test-support/paths.js +16 -0
  914. package/dist/test-support/paths.js.map +1 -0
  915. package/dist/tools/__tests__/path-containment.test.d.ts +2 -0
  916. package/dist/tools/__tests__/path-containment.test.d.ts.map +1 -0
  917. package/dist/tools/__tests__/path-containment.test.js +133 -0
  918. package/dist/tools/__tests__/path-containment.test.js.map +1 -0
  919. package/dist/tools/__tests__/posix-path.test.d.ts +2 -0
  920. package/dist/tools/__tests__/posix-path.test.d.ts.map +1 -0
  921. package/dist/tools/__tests__/posix-path.test.js +67 -0
  922. package/dist/tools/__tests__/posix-path.test.js.map +1 -0
  923. package/dist/tools/__tests__/sandboxed-search.test.d.ts +2 -0
  924. package/dist/tools/__tests__/sandboxed-search.test.d.ts.map +1 -0
  925. package/dist/tools/__tests__/sandboxed-search.test.js +114 -0
  926. package/dist/tools/__tests__/sandboxed-search.test.js.map +1 -0
  927. package/dist/tools/builtins/__tests__/computer-use.test.js +12 -2
  928. package/dist/tools/builtins/__tests__/computer-use.test.js.map +1 -1
  929. package/dist/tools/builtins/__tests__/edit.test.js +0 -54
  930. package/dist/tools/builtins/__tests__/edit.test.js.map +1 -1
  931. package/dist/tools/builtins/__tests__/read-file.test.js +23 -1
  932. package/dist/tools/builtins/__tests__/read-file.test.js.map +1 -1
  933. package/dist/tools/builtins/atomic-write-file.d.ts +13 -0
  934. package/dist/tools/builtins/atomic-write-file.d.ts.map +1 -0
  935. package/dist/tools/builtins/atomic-write-file.js +46 -0
  936. package/dist/tools/builtins/atomic-write-file.js.map +1 -0
  937. package/dist/tools/builtins/bash.d.ts.map +1 -1
  938. package/dist/tools/builtins/bash.js +31 -2
  939. package/dist/tools/builtins/bash.js.map +1 -1
  940. package/dist/tools/builtins/computer-use.d.ts +22 -22
  941. package/dist/tools/builtins/computer-use.d.ts.map +1 -1
  942. package/dist/tools/builtins/computer-use.js +7 -1
  943. package/dist/tools/builtins/computer-use.js.map +1 -1
  944. package/dist/tools/builtins/edit.d.ts +1 -1
  945. package/dist/tools/builtins/edit.d.ts.map +1 -1
  946. package/dist/tools/builtins/edit.js +13 -11
  947. package/dist/tools/builtins/edit.js.map +1 -1
  948. package/dist/tools/builtins/file-mutation-lock.d.ts +7 -0
  949. package/dist/tools/builtins/file-mutation-lock.d.ts.map +1 -0
  950. package/dist/tools/builtins/file-mutation-lock.js +25 -0
  951. package/dist/tools/builtins/file-mutation-lock.js.map +1 -0
  952. package/dist/tools/builtins/glob.d.ts +1 -1
  953. package/dist/tools/builtins/glob.d.ts.map +1 -1
  954. package/dist/tools/builtins/glob.js +63 -6
  955. package/dist/tools/builtins/glob.js.map +1 -1
  956. package/dist/tools/builtins/grep.d.ts.map +1 -1
  957. package/dist/tools/builtins/grep.js +61 -8
  958. package/dist/tools/builtins/grep.js.map +1 -1
  959. package/dist/tools/builtins/index.js +6 -6
  960. package/dist/tools/builtins/index.js.map +1 -1
  961. package/dist/tools/builtins/ls.d.ts.map +1 -1
  962. package/dist/tools/builtins/ls.js +4 -2
  963. package/dist/tools/builtins/ls.js.map +1 -1
  964. package/dist/tools/builtins/read-file.d.ts +1 -1
  965. package/dist/tools/builtins/read-file.d.ts.map +1 -1
  966. package/dist/tools/builtins/read-file.js +38 -4
  967. package/dist/tools/builtins/read-file.js.map +1 -1
  968. package/dist/tools/coordinator/__tests__/agent.test.d.ts +1 -1
  969. package/dist/tools/coordinator/__tests__/agent.test.js +2 -2
  970. package/dist/tools/coordinator/__tests__/agent.test.js.map +1 -1
  971. package/dist/tools/coordinator/agent.d.ts +20 -9
  972. package/dist/tools/coordinator/agent.d.ts.map +1 -1
  973. package/dist/tools/coordinator/agent.js +2 -1
  974. package/dist/tools/coordinator/agent.js.map +1 -1
  975. package/dist/tools/coordinator/index.d.ts +20 -0
  976. package/dist/tools/coordinator/index.d.ts.map +1 -1
  977. package/dist/tools/coordinator/index.js +80 -32
  978. package/dist/tools/coordinator/index.js.map +1 -1
  979. package/dist/tools/defineTool.d.ts +18 -0
  980. package/dist/tools/defineTool.d.ts.map +1 -1
  981. package/dist/tools/defineTool.js +6 -0
  982. package/dist/tools/defineTool.js.map +1 -1
  983. package/dist/tools/glob-match.d.ts +18 -0
  984. package/dist/tools/glob-match.d.ts.map +1 -0
  985. package/dist/tools/glob-match.js +50 -0
  986. package/dist/tools/glob-match.js.map +1 -0
  987. package/dist/tools/paths.d.ts +20 -0
  988. package/dist/tools/paths.d.ts.map +1 -0
  989. package/dist/tools/paths.js +41 -0
  990. package/dist/tools/paths.js.map +1 -0
  991. package/dist/tools/posix-path.d.ts +24 -0
  992. package/dist/tools/posix-path.d.ts.map +1 -0
  993. package/dist/tools/posix-path.js +67 -0
  994. package/dist/tools/posix-path.js.map +1 -0
  995. package/dist/types/advisory/config.d.ts +21 -3
  996. package/dist/types/advisory/config.d.ts.map +1 -1
  997. package/dist/types/advisory/result.d.ts +12 -10
  998. package/dist/types/advisory/result.d.ts.map +1 -1
  999. package/dist/types/agent/base.d.ts +20 -2
  1000. package/dist/types/agent/base.d.ts.map +1 -1
  1001. package/dist/types/agent/factory.d.ts +15 -9
  1002. package/dist/types/agent/factory.d.ts.map +1 -1
  1003. package/dist/types/agent/gateway.d.ts +18 -0
  1004. package/dist/types/agent/gateway.d.ts.map +1 -1
  1005. package/dist/types/agent/manager.d.ts +19 -0
  1006. package/dist/types/agent/manager.d.ts.map +1 -1
  1007. package/dist/types/agent/reactive.d.ts +48 -0
  1008. package/dist/types/agent/reactive.d.ts.map +1 -1
  1009. package/dist/types/agent/router.d.ts +11 -0
  1010. package/dist/types/agent/router.d.ts.map +1 -1
  1011. package/dist/types/agent/supervisor.d.ts +2 -2
  1012. package/dist/types/agent/task.d.ts +24 -0
  1013. package/dist/types/agent/task.d.ts.map +1 -1
  1014. package/dist/types/bidi/index.d.ts +140 -0
  1015. package/dist/types/bidi/index.d.ts.map +1 -0
  1016. package/dist/types/bidi/index.js +2 -0
  1017. package/dist/types/bidi/index.js.map +1 -0
  1018. package/dist/types/common/__tests__/numeric-correctness.test.d.ts +2 -0
  1019. package/dist/types/common/__tests__/numeric-correctness.test.d.ts.map +1 -0
  1020. package/dist/types/common/__tests__/numeric-correctness.test.js +108 -0
  1021. package/dist/types/common/__tests__/numeric-correctness.test.js.map +1 -0
  1022. package/dist/types/common/index.d.ts +1 -1
  1023. package/dist/types/common/index.d.ts.map +1 -1
  1024. package/dist/types/common/index.js +15 -4
  1025. package/dist/types/common/index.js.map +1 -1
  1026. package/dist/types/connector/mcp.d.ts +29 -0
  1027. package/dist/types/connector/mcp.d.ts.map +1 -1
  1028. package/dist/types/errors/__tests__/catalog.test.d.ts +2 -0
  1029. package/dist/types/errors/__tests__/catalog.test.d.ts.map +1 -0
  1030. package/dist/types/errors/__tests__/catalog.test.js +106 -0
  1031. package/dist/types/errors/__tests__/catalog.test.js.map +1 -0
  1032. package/dist/types/errors/__tests__/errors.test.d.ts +2 -0
  1033. package/dist/types/errors/__tests__/errors.test.d.ts.map +1 -0
  1034. package/dist/types/errors/__tests__/errors.test.js +104 -0
  1035. package/dist/types/errors/__tests__/errors.test.js.map +1 -0
  1036. package/dist/types/errors/catalog.d.ts +83 -0
  1037. package/dist/types/errors/catalog.d.ts.map +1 -0
  1038. package/dist/types/errors/catalog.js +148 -0
  1039. package/dist/types/errors/catalog.js.map +1 -0
  1040. package/dist/types/errors/index.d.ts +73 -0
  1041. package/dist/types/errors/index.d.ts.map +1 -0
  1042. package/dist/types/errors/index.js +70 -0
  1043. package/dist/types/errors/index.js.map +1 -0
  1044. package/dist/types/guardrail/index.d.ts +57 -0
  1045. package/dist/types/guardrail/index.d.ts.map +1 -0
  1046. package/dist/types/guardrail/index.js +2 -0
  1047. package/dist/types/guardrail/index.js.map +1 -0
  1048. package/dist/types/hitl/index.d.ts +97 -14
  1049. package/dist/types/hitl/index.d.ts.map +1 -1
  1050. package/dist/types/hitl/index.js.map +1 -1
  1051. package/dist/types/ids/index.d.ts +2 -2
  1052. package/dist/types/message/content.d.ts +22 -0
  1053. package/dist/types/message/content.d.ts.map +1 -0
  1054. package/dist/types/message/content.js +49 -0
  1055. package/dist/types/message/content.js.map +1 -0
  1056. package/dist/types/message/index.d.ts +193 -8
  1057. package/dist/types/message/index.d.ts.map +1 -1
  1058. package/dist/types/message/index.js +19 -4
  1059. package/dist/types/message/index.js.map +1 -1
  1060. package/dist/types/plugin/index.d.ts +78 -3
  1061. package/dist/types/plugin/index.d.ts.map +1 -1
  1062. package/dist/types/plugin/index.js +0 -1
  1063. package/dist/types/plugin/index.js.map +1 -1
  1064. package/dist/types/provider/__tests__/cause-chain.test.d.ts +2 -0
  1065. package/dist/types/provider/__tests__/cause-chain.test.d.ts.map +1 -0
  1066. package/dist/types/provider/__tests__/cause-chain.test.js +108 -0
  1067. package/dist/types/provider/__tests__/cause-chain.test.js.map +1 -0
  1068. package/dist/types/provider/__tests__/declared-retryable.test.d.ts +2 -0
  1069. package/dist/types/provider/__tests__/declared-retryable.test.d.ts.map +1 -0
  1070. package/dist/types/provider/__tests__/declared-retryable.test.js +70 -0
  1071. package/dist/types/provider/__tests__/declared-retryable.test.js.map +1 -0
  1072. package/dist/types/provider/__tests__/overflow-classification.test.d.ts +2 -0
  1073. package/dist/types/provider/__tests__/overflow-classification.test.d.ts.map +1 -0
  1074. package/dist/types/provider/__tests__/overflow-classification.test.js +80 -0
  1075. package/dist/types/provider/__tests__/overflow-classification.test.js.map +1 -0
  1076. package/dist/types/provider/chat.d.ts +36 -1
  1077. package/dist/types/provider/chat.d.ts.map +1 -1
  1078. package/dist/types/provider/config.d.ts +83 -2
  1079. package/dist/types/provider/config.d.ts.map +1 -1
  1080. package/dist/types/provider/errors.d.ts +102 -0
  1081. package/dist/types/provider/errors.d.ts.map +1 -0
  1082. package/dist/types/provider/errors.js +393 -0
  1083. package/dist/types/provider/errors.js.map +1 -0
  1084. package/dist/types/provider/index.d.ts +3 -2
  1085. package/dist/types/provider/index.d.ts.map +1 -1
  1086. package/dist/types/provider/stream.d.ts +59 -3
  1087. package/dist/types/provider/stream.d.ts.map +1 -1
  1088. package/dist/types/rag/embedding.d.ts +11 -2
  1089. package/dist/types/rag/embedding.d.ts.map +1 -1
  1090. package/dist/types/run/__tests__/step.test.d.ts +2 -0
  1091. package/dist/types/run/__tests__/step.test.d.ts.map +1 -0
  1092. package/dist/types/run/__tests__/step.test.js +107 -0
  1093. package/dist/types/run/__tests__/step.test.js.map +1 -0
  1094. package/dist/types/run/answer-review.d.ts +46 -0
  1095. package/dist/types/run/answer-review.d.ts.map +1 -0
  1096. package/dist/types/run/answer-review.js +2 -0
  1097. package/dist/types/run/answer-review.js.map +1 -0
  1098. package/dist/types/run/config.d.ts +33 -0
  1099. package/dist/types/run/config.d.ts.map +1 -1
  1100. package/dist/types/run/derive-status.d.ts +29 -0
  1101. package/dist/types/run/derive-status.d.ts.map +1 -0
  1102. package/dist/types/run/derive-status.js +49 -0
  1103. package/dist/types/run/derive-status.js.map +1 -0
  1104. package/dist/types/run/entity.d.ts +16 -0
  1105. package/dist/types/run/entity.d.ts.map +1 -1
  1106. package/dist/types/run/events.d.ts +228 -4
  1107. package/dist/types/run/events.d.ts.map +1 -1
  1108. package/dist/types/run/events.js +7 -0
  1109. package/dist/types/run/events.js.map +1 -1
  1110. package/dist/types/run/index.d.ts +5 -0
  1111. package/dist/types/run/index.d.ts.map +1 -1
  1112. package/dist/types/run/index.js +3 -0
  1113. package/dist/types/run/index.js.map +1 -1
  1114. package/dist/types/run/memory-promotion.d.ts +90 -0
  1115. package/dist/types/run/memory-promotion.d.ts.map +1 -0
  1116. package/dist/types/run/memory-promotion.js +38 -0
  1117. package/dist/types/run/memory-promotion.js.map +1 -0
  1118. package/dist/types/run/prepare-step.d.ts +100 -0
  1119. package/dist/types/run/prepare-step.d.ts.map +1 -0
  1120. package/dist/types/run/prepare-step.js +2 -0
  1121. package/dist/types/run/prepare-step.js.map +1 -0
  1122. package/dist/types/run/state.d.ts +85 -0
  1123. package/dist/types/run/state.d.ts.map +1 -0
  1124. package/dist/types/run/state.js +33 -0
  1125. package/dist/types/run/state.js.map +1 -0
  1126. package/dist/types/run/step.d.ts +77 -0
  1127. package/dist/types/run/step.d.ts.map +1 -0
  1128. package/dist/types/run/step.js +26 -0
  1129. package/dist/types/run/step.js.map +1 -0
  1130. package/dist/types/run/stop-reason.d.ts +31 -3
  1131. package/dist/types/run/stop-reason.d.ts.map +1 -1
  1132. package/dist/types/sandbox/index.d.ts +84 -8
  1133. package/dist/types/sandbox/index.d.ts.map +1 -1
  1134. package/dist/types/sandbox/index.js +13 -1
  1135. package/dist/types/sandbox/index.js.map +1 -1
  1136. package/dist/types/structured-output/index.d.ts +6 -5
  1137. package/dist/types/structured-output/index.d.ts.map +1 -1
  1138. package/dist/types/thread/entity.d.ts +2 -3
  1139. package/dist/types/thread/entity.d.ts.map +1 -1
  1140. package/dist/types/tool/index.d.ts +207 -1
  1141. package/dist/types/tool/index.d.ts.map +1 -1
  1142. package/dist/types/tool/index.js +1 -1
  1143. package/dist/types/tool/index.js.map +1 -1
  1144. package/dist/types/tool/repair.d.ts +49 -0
  1145. package/dist/types/tool/repair.d.ts.map +1 -0
  1146. package/dist/types/tool/repair.js +2 -0
  1147. package/dist/types/tool/repair.js.map +1 -0
  1148. package/dist/types/toolset/index.d.ts +2 -5
  1149. package/dist/types/toolset/index.d.ts.map +1 -1
  1150. package/dist/utils/__tests__/atomic-write.test.d.ts +2 -0
  1151. package/dist/utils/__tests__/atomic-write.test.d.ts.map +1 -0
  1152. package/dist/utils/__tests__/atomic-write.test.js +91 -0
  1153. package/dist/utils/__tests__/atomic-write.test.js.map +1 -0
  1154. package/dist/utils/__tests__/shell-compress.test.d.ts +2 -0
  1155. package/dist/utils/__tests__/shell-compress.test.d.ts.map +1 -0
  1156. package/dist/utils/__tests__/shell-compress.test.js +41 -0
  1157. package/dist/utils/__tests__/shell-compress.test.js.map +1 -0
  1158. package/dist/utils/atomic-write.d.ts +10 -0
  1159. package/dist/utils/atomic-write.d.ts.map +1 -0
  1160. package/dist/utils/atomic-write.js +83 -0
  1161. package/dist/utils/atomic-write.js.map +1 -0
  1162. package/dist/utils/shell-compress.d.ts.map +1 -1
  1163. package/dist/utils/shell-compress.js +12 -1
  1164. package/dist/utils/shell-compress.js.map +1 -1
  1165. package/dist/verification/presets.d.ts +6 -3
  1166. package/dist/verification/presets.d.ts.map +1 -1
  1167. package/dist/verification/presets.js +6 -3
  1168. package/dist/verification/presets.js.map +1 -1
  1169. package/package.json +4 -3
  1170. package/src/__tests__/default-path-conformance.test.ts +306 -0
  1171. package/src/__tests__/shipped-defaults.test.ts +111 -0
  1172. package/src/advisory/__tests__/budget-enforcement.test.ts +208 -0
  1173. package/src/advisory/__tests__/structured-response.test.ts +128 -0
  1174. package/src/advisory/budget.ts +27 -0
  1175. package/src/advisory/context.ts +19 -0
  1176. package/src/advisory/executor.test.ts +12 -8
  1177. package/src/advisory/executor.ts +37 -25
  1178. package/src/advisory/index.ts +2 -0
  1179. package/src/advisory/parse.ts +63 -0
  1180. package/src/agents/AbstractAgent.ts +82 -0
  1181. package/src/agents/PipelineAgent.ts +19 -0
  1182. package/src/agents/ReactiveAgent.ts +47 -0
  1183. package/src/agents/RouterAgent.ts +32 -2
  1184. package/src/agents/SupervisorAgent.ts +31 -1
  1185. package/src/agents/__tests__/idempotency-key.test.ts +177 -0
  1186. package/src/agents/__tests__/invocation-lock.test.ts +154 -0
  1187. package/src/agents/__tests__/reachability.test.ts +224 -0
  1188. package/src/agents/__tests__/supervisor-ledger.test.ts +1 -1
  1189. package/src/agents/index.ts +1 -1
  1190. package/src/agents/lock.ts +0 -2
  1191. package/src/bridge/a2a/late-events.test.ts +84 -0
  1192. package/src/bridge/a2a/mapper.test.ts +1 -1
  1193. package/src/bridge/a2a/mapper.ts +70 -5
  1194. package/src/bridge/a2a/message.ts +5 -1
  1195. package/src/bridge/sse/late-events.test.ts +182 -0
  1196. package/src/bridge/sse/mapper.ts +109 -0
  1197. package/src/compaction/__tests__/cleared-result-recovery.test.ts +118 -0
  1198. package/src/compaction/__tests__/context-window.test.ts +77 -0
  1199. package/src/compaction/__tests__/dangling.test.ts +16 -6
  1200. package/src/compaction/__tests__/lossiness.test.ts +187 -0
  1201. package/src/compaction/__tests__/state-across-resume.test.ts +99 -0
  1202. package/src/compaction/__tests__/tool-result-editing.test.ts +213 -0
  1203. package/src/compaction/__tests__/trim-opens-on-user.test.ts +118 -0
  1204. package/src/compaction/__tests__/verifier-model.test.ts +83 -0
  1205. package/src/compaction/context-window.ts +107 -0
  1206. package/src/compaction/dangling.ts +48 -1
  1207. package/src/compaction/extractor.ts +56 -1
  1208. package/src/compaction/index.ts +16 -0
  1209. package/src/compaction/manager.ts +53 -8
  1210. package/src/compaction/managers/structured.ts +7 -6
  1211. package/src/compaction/retention.ts +89 -0
  1212. package/src/compaction/serializer.ts +42 -11
  1213. package/src/compaction/tool-result-editing.ts +229 -0
  1214. package/src/compaction/types.ts +10 -0
  1215. package/src/compaction/verifier.ts +24 -1
  1216. package/src/compaction/wire.ts +91 -0
  1217. package/src/config/runtime.ts +63 -19
  1218. package/src/connector/builtins/http.test.ts +13 -0
  1219. package/src/connector/builtins/http.ts +15 -1
  1220. package/src/connector/mcp/__tests__/discovery-policy.test.ts +133 -0
  1221. package/src/connector/mcp/__tests__/list-pagination.test.ts +98 -0
  1222. package/src/connector/mcp/__tests__/policy.test.ts +100 -0
  1223. package/src/connector/mcp/__tests__/protocol-negotiation.test.ts +105 -0
  1224. package/src/connector/mcp/__tests__/schema-fidelity.test.ts +250 -0
  1225. package/src/connector/mcp/__tests__/structured-result.test.ts +143 -0
  1226. package/src/connector/mcp/adapter.ts +306 -19
  1227. package/src/connector/mcp/client.test.ts +159 -0
  1228. package/src/connector/mcp/client.ts +160 -13
  1229. package/src/connector/mcp/discovery.ts +74 -5
  1230. package/src/connector/mcp/http-sse.ts +16 -1
  1231. package/src/connector/mcp/index.ts +4 -0
  1232. package/src/connector/mcp/policy.ts +134 -0
  1233. package/src/connector/mcp/schema-refs.ts +126 -0
  1234. package/src/constants/agent/index.ts +3 -0
  1235. package/src/constants/compaction/index.ts +1 -1
  1236. package/src/constants/continuation.ts +4 -4
  1237. package/src/constants/mcp/index.ts +34 -0
  1238. package/src/constants/plugin/index.ts +24 -2
  1239. package/src/constants/sandbox/index.ts +6 -5
  1240. package/src/constants/telemetry/index.ts +8 -0
  1241. package/src/constants/tools/index.ts +20 -0
  1242. package/src/contracts/api.ts +40 -0
  1243. package/src/contracts/run-status.ts +43 -0
  1244. package/src/eval/__tests__/case-deadline.test.ts +147 -0
  1245. package/src/eval/__tests__/end-to-end.test.ts +259 -0
  1246. package/src/eval/__tests__/harness-honesty.test.ts +99 -0
  1247. package/src/eval/__tests__/harness.test.ts +249 -0
  1248. package/src/eval/__tests__/judge.test.ts +306 -0
  1249. package/src/eval/__tests__/scorer-gates.test.ts +156 -0
  1250. package/src/eval/experiment.ts +335 -0
  1251. package/src/eval/from-run.ts +48 -0
  1252. package/src/eval/index.ts +21 -0
  1253. package/src/eval/judge.ts +240 -0
  1254. package/src/eval/scorers.ts +169 -0
  1255. package/src/eval/types.ts +157 -0
  1256. package/src/execution/local.test.ts +46 -0
  1257. package/src/execution/local.ts +6 -1
  1258. package/src/gateway/__tests__/list-survives-eviction.test.ts +124 -0
  1259. package/src/gateway/local.ts +117 -3
  1260. package/src/manager/agent/__tests__/dispose-cancels.test.ts +104 -0
  1261. package/src/manager/agent/__tests__/lifecycle.test.ts +297 -0
  1262. package/src/manager/agent/lifecycle.ts +127 -7
  1263. package/src/manager/run/persistence.ts +132 -1
  1264. package/src/plugin/__tests__/enable-contributions.test.ts +3 -3
  1265. package/src/plugin/__tests__/hook-ordering.test.ts +252 -0
  1266. package/src/plugin/__tests__/install-time-refusal.test.ts +68 -0
  1267. package/src/plugin/__tests__/lifecycle.test.ts +95 -73
  1268. package/src/plugin/lifecycle.ts +76 -22
  1269. package/src/plugin/loader.ts +37 -1
  1270. package/src/probe/registry.test.ts +49 -6
  1271. package/src/probe/registry.ts +21 -1
  1272. package/src/provider/__tests__/mock-script.test.ts +179 -0
  1273. package/src/provider/__tests__/registry.test.ts +1 -1
  1274. package/src/provider/__tests__/retry-visibility.test.ts +160 -0
  1275. package/src/provider/__tests__/retry.test.ts +296 -0
  1276. package/src/provider/capabilities.ts +4 -0
  1277. package/src/provider/collect.test.ts +1 -1
  1278. package/src/provider/collect.ts +1 -1
  1279. package/src/provider/index.ts +8 -0
  1280. package/src/provider/mock-register.ts +5 -2
  1281. package/src/provider/mock.ts +117 -34
  1282. package/src/provider/retry.ts +199 -0
  1283. package/src/public-runtime.ts +111 -7
  1284. package/src/public-types.ts +5 -1
  1285. package/src/rag/__tests__/retrieval-math.test.ts +54 -0
  1286. package/src/rag/chunking.ts +32 -1
  1287. package/src/rag/embedding.test.ts +65 -10
  1288. package/src/rag/embedding.ts +26 -5
  1289. package/src/rag/index.ts +1 -1
  1290. package/src/rag/retriever.ts +92 -21
  1291. package/src/rag/vector-store.test.ts +2 -2
  1292. package/src/registry/ManagedRegistry.test.ts +1 -1
  1293. package/src/registry/Registry.test.ts +1 -1
  1294. package/src/registry/connector/definitions.test.ts +1 -1
  1295. package/src/registry/tool/__tests__/schema.test.ts +208 -0
  1296. package/src/registry/tool/__tests__/tool-name-validation.test.ts +88 -0
  1297. package/src/registry/tool/execute.test.ts +107 -7
  1298. package/src/registry/tool/execute.ts +133 -16
  1299. package/src/registry/tool/schema.ts +80 -0
  1300. package/src/registry/toolset/catalog.test.ts +118 -1
  1301. package/src/registry/toolset/catalog.ts +26 -5
  1302. package/src/run/reporter.ts +84 -0
  1303. package/src/runtime/bidi/__tests__/session.test.ts +232 -0
  1304. package/src/runtime/bidi/index.ts +4 -0
  1305. package/src/runtime/bidi/mock.ts +90 -0
  1306. package/src/runtime/bidi/session.ts +205 -0
  1307. package/src/runtime/decision/parser.test.ts +46 -0
  1308. package/src/runtime/decision/parser.ts +8 -1
  1309. package/src/runtime/query/__tests__/answer-review.test.ts +172 -0
  1310. package/src/runtime/query/__tests__/capability-negotiation.test.ts +25 -41
  1311. package/src/runtime/query/__tests__/checkpoint-store.test.ts +13 -50
  1312. package/src/runtime/query/__tests__/checkpoint.test.ts +2 -10
  1313. package/src/runtime/query/__tests__/citations.test.ts +111 -0
  1314. package/src/runtime/query/__tests__/content-budget.test.ts +83 -0
  1315. package/src/runtime/query/__tests__/context.test.ts +3 -2
  1316. package/src/runtime/query/__tests__/deferred-tools.test.ts +23 -37
  1317. package/src/runtime/query/__tests__/delegation-resume.test.ts +159 -0
  1318. package/src/runtime/query/__tests__/document-attachments.test.ts +125 -0
  1319. package/src/runtime/query/__tests__/durable-park-and-trace.test.ts +245 -0
  1320. package/src/runtime/query/__tests__/durable-question-park.test.ts +305 -0
  1321. package/src/runtime/query/__tests__/durable-run-state.test.ts +194 -0
  1322. package/src/runtime/query/__tests__/executor-plugin-hooks.test.ts +24 -20
  1323. package/src/runtime/query/__tests__/finish-reason-vs-tool-calls.test.ts +206 -0
  1324. package/src/runtime/query/__tests__/grant-cannot-overrule-the-gate.test.ts +115 -0
  1325. package/src/runtime/query/__tests__/guardrails-e2e.test.ts +164 -0
  1326. package/src/runtime/query/__tests__/guardrails.test.ts +236 -0
  1327. package/src/runtime/query/__tests__/hook-model-visibility.test.ts +143 -0
  1328. package/src/runtime/query/__tests__/long-document-flow.test.ts +21 -14
  1329. package/src/runtime/query/__tests__/memory-promotion.test.ts +148 -0
  1330. package/src/runtime/query/__tests__/orphan-task-turn-end.test.ts +5 -31
  1331. package/src/runtime/query/__tests__/overflow-relief.test.ts +139 -0
  1332. package/src/runtime/query/__tests__/partial-batch-resume.test.ts +264 -0
  1333. package/src/runtime/query/__tests__/plugin-hooks.test.ts +0 -1
  1334. package/src/runtime/query/__tests__/prepare-step-chain.test.ts +127 -0
  1335. package/src/runtime/query/__tests__/prepare-step.test.ts +233 -0
  1336. package/src/runtime/query/__tests__/probe-veto-is-error.test.ts +145 -0
  1337. package/src/runtime/query/__tests__/prompt.test.ts +1 -1
  1338. package/src/runtime/query/__tests__/provider-fault-pauses.test.ts +104 -0
  1339. package/src/runtime/query/__tests__/reasoning-stream.test.ts +177 -0
  1340. package/src/runtime/query/__tests__/recoverable-settle.test.ts +145 -0
  1341. package/src/runtime/query/__tests__/resume-budget.test.ts +158 -0
  1342. package/src/runtime/query/__tests__/resume-pending.test.ts +273 -0
  1343. package/src/runtime/query/__tests__/rich-content-budget-wiring.test.ts +109 -0
  1344. package/src/runtime/query/__tests__/stop-condition.test.ts +265 -0
  1345. package/src/runtime/query/__tests__/stream-recovery.test.ts +1 -1
  1346. package/src/runtime/query/__tests__/structured-output.test.ts +268 -0
  1347. package/src/runtime/query/__tests__/structured-run-failure.test.ts +144 -0
  1348. package/src/runtime/query/__tests__/terminal-tool.test.ts +148 -0
  1349. package/src/runtime/query/__tests__/tool-grants.test.ts +102 -0
  1350. package/src/runtime/query/__tests__/tool-output-budget.test.ts +0 -0
  1351. package/src/runtime/query/__tests__/tool-pause.test.ts +209 -0
  1352. package/src/runtime/query/__tests__/tool-progress.test.ts +154 -0
  1353. package/src/runtime/query/__tests__/tool-repair-retry.test.ts +255 -0
  1354. package/src/runtime/query/__tests__/tool-result-wire.test.ts +135 -0
  1355. package/src/runtime/query/__tests__/tool-timeout.test.ts +230 -0
  1356. package/src/runtime/query/__tests__/trace-parenting.test.ts +128 -0
  1357. package/src/runtime/query/__tests__/wiring-seams.test.ts +288 -0
  1358. package/src/runtime/query/checkpoint.ts +242 -10
  1359. package/src/runtime/query/events.ts +2 -2
  1360. package/src/runtime/query/executor.ts +849 -41
  1361. package/src/runtime/query/guard.ts +26 -1
  1362. package/src/runtime/query/guardrail-presets.ts +124 -0
  1363. package/src/runtime/query/guardrails.ts +144 -0
  1364. package/src/runtime/query/index.ts +759 -12
  1365. package/src/runtime/query/iteration/__tests__/cancel-settles-turn.test.ts +177 -0
  1366. package/src/runtime/query/iteration/index.ts +658 -27
  1367. package/src/runtime/query/iteration/phases/advisory.test.ts +4 -1
  1368. package/src/runtime/query/iteration/phases/advisory.ts +14 -2
  1369. package/src/runtime/query/iteration/phases/checkpoint.ts +2 -2
  1370. package/src/runtime/query/iteration/phases/compaction-safe-cut.test.ts +3 -1
  1371. package/src/runtime/query/iteration/phases/compaction.ts +329 -64
  1372. package/src/runtime/query/iteration/phases/context-measurement.test.ts +196 -0
  1373. package/src/runtime/query/iteration/phases/context.ts +155 -2
  1374. package/src/runtime/query/iteration/phases/hitl-answer-question.test.ts +3 -1
  1375. package/src/runtime/query/iteration/phases/overflow-escalation.test.ts +167 -0
  1376. package/src/runtime/query/iteration/phases/plan.ts +10 -2
  1377. package/src/runtime/query/iteration/phases/retained-messages.test.ts +226 -0
  1378. package/src/runtime/query/iteration/phases/tool-review-denials.test.ts +270 -0
  1379. package/src/runtime/query/iteration/phases/tool-review.ts +140 -51
  1380. package/src/runtime/query/iteration/phases/working-memory-compaction.test.ts +21 -9
  1381. package/src/runtime/query/iteration/stream-turn.ts +285 -15
  1382. package/src/runtime/query/plugin-hooks.ts +6 -2
  1383. package/src/runtime/query/prompt.ts +26 -1
  1384. package/src/runtime/query/question-park.ts +120 -0
  1385. package/src/runtime/query/result.ts +64 -0
  1386. package/src/runtime/query/resume-pending.ts +394 -0
  1387. package/src/runtime/query/run-state.ts +124 -0
  1388. package/src/runtime/query/tool-grants.ts +83 -0
  1389. package/src/runtime/query/tool-output-budget.ts +183 -0
  1390. package/src/runtime/query/tool-pause.ts +119 -0
  1391. package/src/runtime/query/tooling.ts +23 -1
  1392. package/src/sandbox/__tests__/isolation.test.ts +164 -0
  1393. package/src/sandbox/__tests__/output-truncation.test.ts +106 -0
  1394. package/src/sandbox/__tests__/resource-limits.test.ts +106 -0
  1395. package/src/sandbox/factory.ts +1 -1
  1396. package/src/sandbox/index.ts +2 -0
  1397. package/src/sandbox/isolation.ts +72 -0
  1398. package/src/sandbox/provider/local.ts +173 -74
  1399. package/src/session/__tests__/integration/spawn-rollback.test.ts +1 -1
  1400. package/src/session/handoff/broadcast.ts +3 -3
  1401. package/src/session/migration/__tests__/filesystem.test.ts +26 -19
  1402. package/src/session/migration/filesystem.ts +7 -12
  1403. package/src/session/migration/marker.ts +5 -9
  1404. package/src/session/retention/disk-backend.ts +5 -11
  1405. package/src/session/workspace/__tests__/git-worktree.test.ts +6 -2
  1406. package/src/session/workspace/__tests__/shared-run.test.ts +18 -0
  1407. package/src/session/workspace/shared-run.ts +7 -1
  1408. package/src/skills/__tests__/frontmatter.test.ts +135 -0
  1409. package/src/skills/loader.ts +47 -3
  1410. package/src/store/__tests__/checkpoint-integrity.test.ts +134 -0
  1411. package/src/store/__tests__/checkpoint-versioning.test.ts +194 -0
  1412. package/src/store/__tests__/schema-adoption.test.ts +118 -0
  1413. package/src/store/__tests__/schema.test.ts +119 -0
  1414. package/src/store/memory/disk.ts +17 -16
  1415. package/src/store/run/disk.ts +169 -22
  1416. package/src/store/schema.ts +135 -0
  1417. package/src/store/session/disk.ts +30 -21
  1418. package/src/store/task/__tests__/lookup-across-runs.test.ts +77 -0
  1419. package/src/store/task/disk.ts +59 -15
  1420. package/src/store/thread/disk.ts +21 -10
  1421. package/src/streaming/coalesce.ts +1 -1
  1422. package/src/telemetry/__tests__/latency-instruments.test.ts +120 -0
  1423. package/src/telemetry/__tests__/metrics.test.ts +160 -0
  1424. package/src/telemetry/__tests__/span-hierarchy.test.ts +94 -0
  1425. package/src/telemetry/attributes.ts +109 -0
  1426. package/src/telemetry/metrics.ts +190 -0
  1427. package/src/test-setup.ts +3 -3
  1428. package/src/test-support/paths.ts +17 -0
  1429. package/src/tools/__tests__/path-containment.test.ts +167 -0
  1430. package/src/tools/__tests__/posix-path.test.ts +83 -0
  1431. package/src/tools/__tests__/sandboxed-search.test.ts +140 -0
  1432. package/src/tools/builtins/__tests__/computer-use.test.ts +15 -2
  1433. package/src/tools/builtins/__tests__/edit.test.ts +0 -76
  1434. package/src/tools/builtins/__tests__/read-file.test.ts +29 -1
  1435. package/src/tools/builtins/atomic-write-file.ts +58 -0
  1436. package/src/tools/builtins/bash.ts +32 -2
  1437. package/src/tools/builtins/computer-use.ts +7 -1
  1438. package/src/tools/builtins/edit.ts +12 -12
  1439. package/src/tools/builtins/file-mutation-lock.ts +27 -0
  1440. package/src/tools/builtins/glob.ts +71 -6
  1441. package/src/tools/builtins/grep.ts +82 -8
  1442. package/src/tools/builtins/index.ts +6 -6
  1443. package/src/tools/builtins/ls.ts +4 -2
  1444. package/src/tools/builtins/read-file.ts +40 -4
  1445. package/src/tools/coordinator/__tests__/agent.test.ts +2 -2
  1446. package/src/tools/coordinator/agent.ts +23 -10
  1447. package/src/tools/coordinator/index.ts +111 -31
  1448. package/src/tools/defineTool.ts +24 -0
  1449. package/src/tools/glob-match.ts +50 -0
  1450. package/src/tools/paths.ts +44 -0
  1451. package/src/tools/posix-path.ts +73 -0
  1452. package/src/types/advisory/config.ts +21 -3
  1453. package/src/types/advisory/result.ts +12 -7
  1454. package/src/types/agent/base.ts +22 -2
  1455. package/src/types/agent/factory.ts +15 -9
  1456. package/src/types/agent/gateway.ts +20 -0
  1457. package/src/types/agent/manager.ts +19 -0
  1458. package/src/types/agent/reactive.ts +50 -0
  1459. package/src/types/agent/router.ts +11 -0
  1460. package/src/types/agent/supervisor.ts +2 -2
  1461. package/src/types/agent/task.ts +26 -0
  1462. package/src/types/bidi/index.ts +119 -0
  1463. package/src/types/common/__tests__/numeric-correctness.test.ts +123 -0
  1464. package/src/types/common/index.ts +16 -4
  1465. package/src/types/computer-use/index.ts +1 -1
  1466. package/src/types/connector/mcp.ts +29 -0
  1467. package/src/types/errors/__tests__/catalog.test.ts +130 -0
  1468. package/src/types/errors/__tests__/errors.test.ts +118 -0
  1469. package/src/types/errors/catalog.ts +211 -0
  1470. package/src/types/errors/index.ts +121 -0
  1471. package/src/types/guardrail/index.ts +62 -0
  1472. package/src/types/hitl/index.ts +102 -20
  1473. package/src/types/ids/index.ts +2 -2
  1474. package/src/types/message/content.ts +50 -0
  1475. package/src/types/message/index.ts +210 -9
  1476. package/src/types/plugin/index.ts +82 -2
  1477. package/src/types/provider/__tests__/cause-chain.test.ts +132 -0
  1478. package/src/types/provider/__tests__/declared-retryable.test.ts +85 -0
  1479. package/src/types/provider/__tests__/overflow-classification.test.ts +113 -0
  1480. package/src/types/provider/chat.ts +43 -2
  1481. package/src/types/provider/config.ts +83 -2
  1482. package/src/types/provider/errors.ts +472 -0
  1483. package/src/types/provider/index.ts +5 -0
  1484. package/src/types/provider/stream.ts +63 -3
  1485. package/src/types/rag/embedding.ts +11 -2
  1486. package/src/types/run/__tests__/step.test.ts +123 -0
  1487. package/src/types/run/answer-review.ts +51 -0
  1488. package/src/types/run/config.ts +35 -0
  1489. package/src/types/run/derive-status.ts +62 -0
  1490. package/src/types/run/entity.ts +18 -0
  1491. package/src/types/run/events.ts +230 -3
  1492. package/src/types/run/index.ts +5 -0
  1493. package/src/types/run/memory-promotion.ts +112 -0
  1494. package/src/types/run/prepare-step.ts +109 -0
  1495. package/src/types/run/state.ts +111 -0
  1496. package/src/types/run/step.ts +95 -0
  1497. package/src/types/run/stop-reason.ts +29 -1
  1498. package/src/types/sandbox/index.ts +95 -10
  1499. package/src/types/structured-output/index.ts +6 -5
  1500. package/src/types/thread/entity.ts +2 -3
  1501. package/src/types/tool/index.ts +218 -1
  1502. package/src/types/tool/repair.ts +54 -0
  1503. package/src/types/toolset/index.ts +2 -6
  1504. package/src/utils/__tests__/atomic-write.test.ts +108 -0
  1505. package/src/utils/__tests__/shell-compress.test.ts +49 -0
  1506. package/src/utils/atomic-write.ts +85 -0
  1507. package/src/utils/shell-compress.ts +12 -1
  1508. package/src/verification/presets.ts +6 -3
@@ -1,17 +1,42 @@
1
- import { SpanStatusCode } from '@opentelemetry/api'
1
+ import { type Span, SpanStatusCode } from '@opentelemetry/api'
2
2
  import { extractFromAssistantMessage } from '../../../compaction/extractor.js'
3
3
  import { AUTO_CONTINUATION_USER_MESSAGE } from '../../../constants/continuation.js'
4
+ import {
5
+ DEFAULT_STRUCTURED_OUTPUT_RETRIES,
6
+ STRUCTURED_OUTPUT_REPROMPT,
7
+ } from '../../../constants/tools/index.js'
4
8
  import { collect } from '../../../provider/collect.js'
5
- import { GENAI, NAMZU, agentIterationSpanName } from '../../../telemetry/attributes.js'
9
+ import {
10
+ GENAI,
11
+ NAMZU,
12
+ agentIterationSpanName,
13
+ parentContext,
14
+ } from '../../../telemetry/attributes.js'
6
15
  import { getTracer } from '../../../telemetry/runtime-accessors.js'
7
- import { createAssistantMessage, createUserMessage } from '../../../types/message/index.js'
8
- import type { RunEvent, StopReason } from '../../../types/run/index.js'
16
+ import { STRUCTURED_OUTPUT_TOOL_NAME } from '../../../tools/builtins/structuredOutput.js'
17
+ import type { CostInfo, TokenUsage } from '../../../types/common/index.js'
18
+ import type { MessageId } from '../../../types/ids/index.js'
19
+ import {
20
+ createAssistantMessage,
21
+ createSystemMessage,
22
+ createUserMessage,
23
+ } from '../../../types/message/index.js'
24
+ import { classifyProviderError } from '../../../types/provider/errors.js'
25
+ import type { ChatCompletionResponse } from '../../../types/provider/index.js'
26
+ import type { AnswerReview } from '../../../types/run/answer-review.js'
27
+ import type {
28
+ PrepareStepResult,
29
+ RunEvent,
30
+ StepResult,
31
+ StopReason,
32
+ } from '../../../types/run/index.js'
9
33
  import { toErrorMessage } from '../../../utils/error.js'
10
34
  import { generateMessageId } from '../../../utils/id.js'
35
+ import type { ToolCallOutcome } from '../executor.js'
11
36
  import { applyLifecycleHookResults } from '../plugin-hooks.js'
12
37
  import { runAdvisoryPhase } from './phases/advisory.js'
13
38
  import { runIterationCheckpoint } from './phases/checkpoint.js'
14
- import { runCompactionCheck } from './phases/compaction.js'
39
+ import { relieveOverflow, runCompactionCheck } from './phases/compaction.js'
15
40
  import type { IterationContext } from './phases/index.js'
16
41
  import { runPlanGate } from './phases/plan.js'
17
42
  import { runToolReview } from './phases/tool-review.js'
@@ -22,18 +47,52 @@ export type { IterationContext } from './phases/index.js'
22
47
  export type { PhaseSignal } from './phases/index.js'
23
48
  export type { ToolReviewOutcome } from './phases/index.js'
24
49
 
50
+ /**
51
+ * How many times an answer may be handed back before the run stops.
52
+ *
53
+ * Bounded for the same reason the structured-output re-prompt is: a judge
54
+ * that never accepts would otherwise spend the whole token budget
55
+ * rediscovering that, and the run would end on a budget error rather than
56
+ * on the thing that actually went wrong.
57
+ */
58
+ const DEFAULT_ANSWER_REVIEW_LIMIT = 3
59
+
25
60
  export class IterationOrchestrator {
26
61
  private ctx: IterationContext
62
+ /** Rejections so far. See {@link DEFAULT_ANSWER_REVIEW_LIMIT}. */
63
+ private answerReviewAttempts = 0
27
64
 
28
65
  constructor(ctx: IterationContext) {
29
66
  this.ctx = ctx
30
67
  }
31
68
 
69
+ /**
70
+ * Adopt the run's span after construction.
71
+ *
72
+ * The orchestrator is built before `query()` enters its generator body,
73
+ * which is where the run span is created — so the parent cannot be a
74
+ * constructor argument without reordering setup around one field.
75
+ */
76
+ setRootSpan(span: Span): void {
77
+ this.ctx = { ...this.ctx, rootSpan: span }
78
+ }
79
+
32
80
  async *runLoop(): AsyncGenerator<RunEvent> {
33
81
  const { runConfig, runMgr } = this.ctx
34
82
  const { model } = runConfig
35
83
  const tracer = getTracer()
36
84
 
85
+ // One context-overflow relief per *stuck point*, not per run.
86
+ //
87
+ // The latch exists so that a second overflow immediately after a
88
+ // successful compaction — meaning the prompt is irreducible — stops
89
+ // instead of looping. It was never meant to disarm the mechanism for
90
+ // the rest of the run, which is what a run-scoped flag did: one
91
+ // relief at iteration 3 left iteration 40 to die on an overflow with
92
+ // obvious moves left. It is cleared by a turn that actually
93
+ // succeeded, which is the evidence that the run is no longer stuck.
94
+ let overflowRelieved = false
95
+
37
96
  const planSignal = yield* runPlanGate(this.ctx)
38
97
  if (planSignal === 'stop') return
39
98
 
@@ -80,7 +139,19 @@ export class IterationOrchestrator {
80
139
  this.ctx.activityStore.start(iterationActivity.id)
81
140
  }
82
141
 
83
- const iterSpan = tracer.startSpan(agentIterationSpanName(iterationNum))
142
+ // Parent explicitly: this body is an async generator, so the
143
+ // ambient context at resume time belongs to the CONSUMER, not to
144
+ // whoever created the run span. Without this every iteration
145
+ // emits as its own root and a 20-turn run shows up as 21
146
+ // disconnected traces.
147
+ const iterSpan = tracer.startSpan(
148
+ agentIterationSpanName(iterationNum),
149
+ {},
150
+ parentContext(this.ctx.rootSpan),
151
+ )
152
+ // Tool spans for this turn belong under this iteration.
153
+ this.ctx.toolExecutor.setParentSpan(iterSpan)
154
+
84
155
  iterSpan.setAttributes({
85
156
  [NAMZU.ITERATION]: iterationNum,
86
157
  [NAMZU.RUN_ID]: runMgr.id,
@@ -117,9 +188,21 @@ export class IterationOrchestrator {
117
188
  // entire prompt-cache prefix (tools render at position 0) and
118
189
  // risks a 400 because the history still carries
119
190
  // tool_use/tool_result blocks.
120
- const openAITools = this.ctx.tools.toLLMTools(this.ctx.allowedTools)
191
+ // Snapshot the cumulative counters so the step can report ITS
192
+ // own usage rather than the run total.
193
+ const stepStartedAt = Date.now()
194
+ const usageBefore = { ...runMgr.tokenUsage }
195
+ const costBefore = { ...runMgr.costInfo }
121
196
 
122
- const messages = forceFinalize
197
+ // Shape this step before calling the model. `stopWhen` decides
198
+ // whether to keep going; this decides HOW. No-op when the host
199
+ // supplied no hook.
200
+ const step = await this.prepareStep(iterationNum)
201
+
202
+ const llmTools = this.ctx.tools.toLLMTools(step.allowedTools ?? this.ctx.allowedTools)
203
+ const stepModel = step.model ?? model
204
+
205
+ const baseMessages = forceFinalize
123
206
  ? [
124
207
  ...runMgr.messages,
125
208
  createUserMessage(
@@ -128,10 +211,41 @@ export class IterationOrchestrator {
128
211
  ]
129
212
  : runMgr.messages
130
213
 
214
+ // Step guidance is appended to the REQUEST, never pushed onto
215
+ // the run's history: it applies to this step only, and pushing
216
+ // it would accumulate one stale instruction per iteration.
217
+ // Copy before it crosses the provider boundary. `runMgr.messages`
218
+ // is the LIVE run array, and the loop pushes onto it after the
219
+ // call returns — so a driver that retains what it was handed
220
+ // (to log it, cache it, or replay it on retry) watched its own
221
+ // input grow new turns underneath it. A capture provider in the
222
+ // estate recorded every turn as identical to the last for
223
+ // exactly this reason. Shallow is enough: the defect is array
224
+ // mutation, and per-iteration this is trivial next to the model
225
+ // call it precedes.
226
+ const messages = step.system
227
+ ? [...baseMessages, createSystemMessage(step.system)]
228
+ : [...baseMessages]
229
+
131
230
  if (this.ctx.pluginManager) {
132
231
  const hookResults = await this.ctx.pluginManager.executeHooks(
133
232
  'pre_llm_call',
134
- { runId: runMgr.id, iteration: iterationNum },
233
+ {
234
+ runId: runMgr.id,
235
+ iteration: iterationNum,
236
+ // Built inside the guard: a run with no plugins installed
237
+ // pays nothing for a projection nobody reads.
238
+ request: Object.freeze({
239
+ model: stepModel,
240
+ // Copied per turn, not handed over live: these are the
241
+ // run's own message objects, and a hook writing into
242
+ // one would edit the history the run is about to send.
243
+ messages: Object.freeze(messages.map((m) => Object.freeze({ ...m }))),
244
+ toolNames: Object.freeze(llmTools.map((t) => t.function.name)),
245
+ temperature: step.temperature ?? runConfig.temperature,
246
+ maxTokens: step.maxResponseTokens ?? runConfig.maxResponseTokens,
247
+ }),
248
+ },
135
249
  this.ctx.emitEvent,
136
250
  )
137
251
  applyLifecycleHookResults('pre_llm_call', hookResults)
@@ -146,16 +260,17 @@ export class IterationOrchestrator {
146
260
  // aggregated `ChatCompletionResponse` for the legacy
147
261
  // downstream paths (assistantMsg construction, working
148
262
  // state extraction, telemetry attribute stamping).
149
- const { response } = yield* streamProviderTurn(
263
+ const { response, messageId } = yield* streamProviderTurn(
150
264
  this.ctx.provider,
151
265
  {
152
- model,
266
+ model: stepModel,
153
267
  messages,
154
- tools: openAITools.length > 0 ? openAITools : undefined,
155
- toolChoice: forceFinalize && openAITools.length > 0 ? 'none' : undefined,
156
- temperature: runConfig.temperature,
157
- maxTokens: runConfig.maxResponseTokens,
268
+ tools: llmTools.length > 0 ? llmTools : undefined,
269
+ toolChoice: forceFinalize && llmTools.length > 0 ? 'none' : undefined,
270
+ temperature: step.temperature ?? runConfig.temperature,
271
+ maxTokens: step.maxResponseTokens ?? runConfig.maxResponseTokens,
158
272
  cacheControl: { type: 'auto' },
273
+ ...(runConfig.thinking ? { thinking: runConfig.thinking } : {}),
159
274
  // Thread the run abort into the model call so a Stop tears the
160
275
  // in-flight turn down (provider passes it to fetch; the consumer
161
276
  // also races it). Inert when never aborted.
@@ -167,14 +282,31 @@ export class IterationOrchestrator {
167
282
  iterationNum,
168
283
  forceFinalize,
169
284
  this.ctx.log,
285
+ iterSpan,
170
286
  )
171
287
 
172
- runMgr.accumulateUsage(response.usage)
288
+ // Main-loop turn: also records the prompt size compaction reads.
289
+ runMgr.recordTurnUsage(response.usage)
290
+
291
+ // The turn went through, so the run is not sitting on an
292
+ // irreducible prompt any more. Re-arm relief for the next one.
293
+ overflowRelieved = false
173
294
 
174
295
  if (this.ctx.pluginManager) {
175
296
  const hookResults = await this.ctx.pluginManager.executeHooks(
176
297
  'post_llm_call',
177
- { runId: runMgr.id, iteration: iterationNum },
298
+ {
299
+ runId: runMgr.id,
300
+ iteration: iterationNum,
301
+ response: Object.freeze({
302
+ content: response.message.content,
303
+ toolNames: Object.freeze(
304
+ (response.message.toolCalls ?? []).map((c) => c.function.name),
305
+ ),
306
+ finishReason: response.finishReason,
307
+ usage: Object.freeze({ ...response.usage }),
308
+ }),
309
+ },
178
310
  this.ctx.emitEvent,
179
311
  )
180
312
  applyLifecycleHookResults('post_llm_call', hookResults)
@@ -200,9 +332,18 @@ export class IterationOrchestrator {
200
332
  cost: runMgr.costInfo,
201
333
  })
202
334
 
335
+ // Reasoning rides along with the turn it belongs to, so the
336
+ // replay contract holds automatically: trimming or compacting
337
+ // the assistant message takes its thinking blocks with it,
338
+ // and no separate atomicity rule is needed.
203
339
  const assistantMsg = createAssistantMessage(
204
340
  response.message.content,
205
341
  forceFinalize ? undefined : response.message.toolCalls,
342
+ response.message.reasoning,
343
+ // Rides with the turn it belongs to, like reasoning does, so
344
+ // trimming or compacting the turn takes its evidence with it
345
+ // rather than leaving citations pointing at prose that is gone.
346
+ response.message.citations,
206
347
  )
207
348
  runMgr.pushMessage(assistantMsg)
208
349
 
@@ -229,12 +370,24 @@ export class IterationOrchestrator {
229
370
  })
230
371
  }
231
372
 
232
- if (
233
- forceFinalize ||
234
- response.finishReason === 'stop' ||
235
- !response.message.toolCalls ||
236
- response.message.toolCalls.length === 0
237
- ) {
373
+ // Tool calls beat the finish reason. The reason is the
374
+ // provider's SUMMARY of the turn and the tool calls are the
375
+ // turn itself, so when they disagree the calls are the fact.
376
+ // Several function-calling endpoints — gateways and local servers
377
+ // especially — report `stop` alongside a populated
378
+ // `tool_calls`, and three of this repo's drivers pass that
379
+ // value through untouched.
380
+ //
381
+ // Reading `stop` first meant the turn ended with every
382
+ // requested call silently skipped, an assistant message
383
+ // carrying tool_use blocks that were never answered, and a
384
+ // run that settled `end_turn` having done nothing it was
385
+ // asked to do. Checking the calls first costs nothing when
386
+ // the provider is honest and is the only thing that saves the
387
+ // run when it is not.
388
+ const hasToolCalls = (response.message.toolCalls?.length ?? 0) > 0
389
+
390
+ if (forceFinalize || !hasToolCalls) {
238
391
  // Every task-dispatch tool (create_task, continue_task, Agent)
239
392
  // is BLOCKING: the worker's output returns as the dispatching
240
393
  // tool_use's canonical tool_result, so by the time the model
@@ -265,11 +418,11 @@ export class IterationOrchestrator {
265
418
  // another turn. The provider receives the partial
266
419
  // assistant content + the continue prompt and
267
420
  // resumes from where it left off, mirroring the
268
- // Claude.ai "Continue" affordance.
421
+ // Auto-continuation after an output-ceiling cutoff.
269
422
  //
270
423
  // Guards:
271
424
  // - `hasContent` so we don't loop forever on an
272
- // empty cutoff (Anthropic occasionally emits
425
+ // empty cutoff (a provider occasionally emits
273
426
  // `stop_reason: max_tokens` with no content
274
427
  // when an injected pre-fill blocks the model).
275
428
  // - `!forceFinalize` so the forced-finalize path
@@ -294,6 +447,86 @@ export class IterationOrchestrator {
294
447
  continue
295
448
  }
296
449
 
450
+ // The model tried to finish in prose while a structured
451
+ // output was demanded. Send it back with the schema error
452
+ // rather than returning an unusable result — this is the
453
+ // re-prompt half, and it is bounded so a model that cannot
454
+ // satisfy the schema fails loudly instead of looping.
455
+ if (!forceFinalize && this.needsStructuredOutput()) {
456
+ const attempt = ++this.structuredOutputAttempts
457
+ const limit = this.structuredOutputRetryLimit()
458
+ if (attempt > limit) {
459
+ this.ctx.log.warn('Structured output not produced within its retries', {
460
+ runId: runMgr.id,
461
+ attempts: attempt - 1,
462
+ })
463
+ runMgr.setStopReason('structured_output_failed')
464
+ iterSpan.end()
465
+ break
466
+ }
467
+ this.ctx.log.info('Re-prompting for structured output', {
468
+ runId: runMgr.id,
469
+ attempt,
470
+ limit,
471
+ })
472
+ runMgr.pushMessage(createUserMessage(STRUCTURED_OUTPUT_REPROMPT))
473
+ await this.ctx.emitEvent({
474
+ type: 'iteration_completed',
475
+ runId: runMgr.id,
476
+ iteration: iterationNum,
477
+ hasToolCalls: false,
478
+ })
479
+ yield* this.ctx.drainPending()
480
+ iterSpan.end()
481
+ continue
482
+ }
483
+
484
+ // Let the host judge the ANSWER and hand back work.
485
+ //
486
+ // The stop predicate is only consulted after tools ran, so
487
+ // there was no seam here at all: the moment the model
488
+ // stopped calling tools the run finalized, whatever it had
489
+ // produced. Verify-then-fix — run the build, feed the
490
+ // failure back, let it try again — meant starting a whole
491
+ // new run and re-supplying the context the first one had.
492
+ //
493
+ // Shaped after the structured-output re-prompt directly
494
+ // above, which solves the same problem for one specific
495
+ // judge: bounded attempts, feedback as a user message, and
496
+ // a loud stop rather than a loop.
497
+ if (!forceFinalize && this.ctx.reviewAnswer) {
498
+ const review = await this.reviewAnswer(response.message.content ?? '')
499
+ if (review && !review.accept) {
500
+ const attempt = ++this.answerReviewAttempts
501
+ const limit = this.ctx.maxAnswerReviews ?? DEFAULT_ANSWER_REVIEW_LIMIT
502
+ if (attempt > limit) {
503
+ this.ctx.log.warn('Answer rejected more times than the run allows', {
504
+ runId: runMgr.id,
505
+ attempts: attempt - 1,
506
+ limit,
507
+ })
508
+ runMgr.setStopReason('answer_rejected')
509
+ iterSpan.end()
510
+ break
511
+ }
512
+ this.ctx.log.info('Answer rejected — returning it to the model', {
513
+ runId: runMgr.id,
514
+ attempt,
515
+ limit,
516
+ })
517
+ runMgr.pushMessage(createUserMessage(review.feedback))
518
+ await this.ctx.emitEvent({
519
+ type: 'iteration_completed',
520
+ runId: runMgr.id,
521
+ iteration: iterationNum,
522
+ hasToolCalls: false,
523
+ })
524
+ yield* this.ctx.drainPending()
525
+ iterSpan.end()
526
+ continue
527
+ }
528
+ }
529
+
297
530
  if (!hasContent && !forceFinalize) {
298
531
  this.ctx.log.warn('Empty completion detected — requesting final summary', {
299
532
  iteration: iterationNum,
@@ -327,16 +560,98 @@ export class IterationOrchestrator {
327
560
 
328
561
  const reviewOutcome = yield* runToolReview(this.ctx, response, iterationNum)
329
562
 
330
- if (reviewOutcome === 'stop') {
563
+ // The step record is built even for a rejected batch: a run that
564
+ // spent a turn getting its tools refused still spent the tokens,
565
+ // and a caller reconstructing cost per step must see it.
566
+ this.recordStep({
567
+ stepNumber: iterationNum,
568
+ model,
569
+ messageId,
570
+ response,
571
+ toolResults: reviewOutcome.results,
572
+ toolExecutionMs: reviewOutcome.durationMs,
573
+ startedAt: stepStartedAt,
574
+ usageBefore,
575
+ costBefore,
576
+ })
577
+
578
+ if (reviewOutcome.decision === 'stop') {
331
579
  iterSpan.end()
332
580
  return
333
581
  }
334
582
 
335
- if (reviewOutcome === 'rejected') {
583
+ if (reviewOutcome.decision === 'rejected') {
336
584
  iterSpan.end()
337
585
  continue
338
586
  }
339
587
 
588
+ // A successful `structured_output` call IS the answer, so the
589
+ // run ends here rather than paying for another turn whose only
590
+ // job would be to restate it.
591
+ if (this.captureStructuredOutput(reviewOutcome.results)) {
592
+ this.ctx.log.info('Structured output produced — ending run', {
593
+ runId: runMgr.id,
594
+ iteration: iterationNum,
595
+ })
596
+ runMgr.setStopReason('end_turn')
597
+ await this.ctx.emitEvent({
598
+ type: 'iteration_completed',
599
+ runId: runMgr.id,
600
+ iteration: iterationNum,
601
+ hasToolCalls: true,
602
+ })
603
+ yield* this.ctx.drainPending()
604
+ iterSpan.end()
605
+ break
606
+ }
607
+
608
+ // A tool the author declared terminal settles the run with its
609
+ // own output, the same rule `structured_output` has always
610
+ // had. Without it a delegation cost the parent one more model
611
+ // call at full context whose only job was to restate what the
612
+ // worker already said — and to restate it through the parent's
613
+ // compacted view, so the caller did not even receive the
614
+ // worker's words.
615
+ const settled = this.terminalToolOutput(reviewOutcome.results, response)
616
+ if (settled !== undefined) {
617
+ this.ctx.log.info('Terminal tool produced the answer — ending run', {
618
+ runId: runMgr.id,
619
+ iteration: iterationNum,
620
+ tool: settled.toolName,
621
+ })
622
+ runMgr.setResult(settled.output)
623
+ runMgr.setStopReason('end_turn')
624
+ await this.ctx.emitEvent({
625
+ type: 'iteration_completed',
626
+ runId: runMgr.id,
627
+ iteration: iterationNum,
628
+ hasToolCalls: true,
629
+ })
630
+ yield* this.ctx.drainPending()
631
+ iterSpan.end()
632
+ break
633
+ }
634
+
635
+ // Evaluated AFTER the tools ran, so a predicate can see what they
636
+ // returned — which is what makes a terminal submit_answer tool
637
+ // usable without discarding its output.
638
+ if (await this.shouldStop()) {
639
+ this.ctx.log.info('Stop condition met', {
640
+ runId: runMgr.id,
641
+ iteration: iterationNum,
642
+ })
643
+ runMgr.setStopReason('stop_condition')
644
+ await this.ctx.emitEvent({
645
+ type: 'iteration_completed',
646
+ runId: runMgr.id,
647
+ iteration: iterationNum,
648
+ hasToolCalls: true,
649
+ })
650
+ yield* this.ctx.drainPending()
651
+ iterSpan.end()
652
+ break
653
+ }
654
+
340
655
  const checkpointSignal = yield* runIterationCheckpoint(this.ctx, iterationNum)
341
656
  if (checkpointSignal === 'stop') {
342
657
  iterSpan.end()
@@ -378,6 +693,37 @@ export class IterationOrchestrator {
378
693
  break
379
694
  }
380
695
 
696
+ // The one provider failure the kernel can actually do something
697
+ // about. `context_length_exceeded` is correctly non-retryable —
698
+ // resending the identical prompt cannot help — but the kernel
699
+ // owns a compaction subsystem that can make the prompt smaller.
700
+ // Without this the run died holding the remedy: the threshold
701
+ // path had simply guessed low, which a run carrying images or a
702
+ // language the chars-per-token ratio does not fit will do.
703
+ //
704
+ // Relief is attempted ONCE per iteration and only when it
705
+ // actually shed something. A second overflow after a successful
706
+ // compaction means the prompt is irreducible, and looping on it
707
+ // would burn the budget to arrive at the same error.
708
+ if (
709
+ !overflowRelieved &&
710
+ classifyProviderError(err, this.ctx.provider.id).code === 'context_length_exceeded'
711
+ ) {
712
+ overflowRelieved = true
713
+ const shed = await relieveOverflow(this.ctx)
714
+ if (shed) {
715
+ this.ctx.log.info('Retrying the turn after relieving a context overflow', {
716
+ runId: runMgr.id,
717
+ iteration: iterationNum,
718
+ })
719
+ if (iterationActivity) {
720
+ this.ctx.activityStore.complete(iterationActivity.id)
721
+ }
722
+ iterSpan.end()
723
+ continue
724
+ }
725
+ }
726
+
381
727
  if (iterationActivity) {
382
728
  this.ctx.activityStore.fail(iterationActivity.id, toErrorMessage(err))
383
729
  }
@@ -393,6 +739,274 @@ export class IterationOrchestrator {
393
739
  }
394
740
  }
395
741
 
742
+ /**
743
+ * Ask the host how to shape this step.
744
+ *
745
+ * Fails OPEN on a throw — same reasoning as `stopWhen` and deliberately
746
+ * opposite to a guardrail: a broken step-shaping hook should not kill an
747
+ * otherwise healthy run, and unlike a safety check, nothing unsafe gets
748
+ * through when it is skipped.
749
+ */
750
+ private async prepareStep(stepNumber: number): Promise<{
751
+ allowedTools?: string[]
752
+ model?: string
753
+ system?: string
754
+ temperature?: number
755
+ maxResponseTokens?: number
756
+ }> {
757
+ const configured = this.ctx.prepareStep
758
+ if (!configured) return {}
759
+ const stages = Array.isArray(configured) ? configured : [configured]
760
+
761
+ // Folded in DECLARATION order, each stage seeing what the ones
762
+ // before it decided. A later stage overriding a field is last-writer
763
+ // wins — visibly, because the order is a line in the host's code
764
+ // rather than an accident of install history.
765
+ let result: PrepareStepResult = {}
766
+ for (const stage of stages) {
767
+ try {
768
+ const decided = await stage({
769
+ runId: this.ctx.runMgr.id,
770
+ stepNumber,
771
+ messages: this.ctx.runMgr.messages,
772
+ steps: this.steps,
773
+ prepared: result,
774
+ })
775
+ if (decided) result = { ...result, ...decided }
776
+ } catch (err) {
777
+ // Skipped, and the rest still run: one broken concern must
778
+ // not silently disable the others it was declared beside.
779
+ this.ctx.log.error('a prepareStep stage threw — skipping it', {
780
+ runId: this.ctx.runMgr.id,
781
+ stepNumber,
782
+ error: toErrorMessage(err),
783
+ })
784
+ }
785
+ }
786
+
787
+ const prepared: {
788
+ allowedTools?: string[]
789
+ model?: string
790
+ system?: string
791
+ temperature?: number
792
+ maxResponseTokens?: number
793
+ } = {}
794
+
795
+ if (result.activeTools) {
796
+ // A phase list that outlives a tool rename should narrow the
797
+ // surface, not kill the agent mid-run.
798
+ const known = result.activeTools.filter((name: string) => this.ctx.tools.has(name))
799
+ const unknown = result.activeTools.filter((name: string) => !this.ctx.tools.has(name))
800
+ if (unknown.length > 0) {
801
+ this.ctx.log.warn('prepareStep named tools that are not registered — ignoring them', {
802
+ runId: this.ctx.runMgr.id,
803
+ stepNumber,
804
+ unknown,
805
+ })
806
+ }
807
+ prepared.allowedTools = known
808
+ }
809
+ if (result.model !== undefined) prepared.model = result.model
810
+ if (result.system !== undefined) prepared.system = result.system
811
+ if (result.temperature !== undefined) prepared.temperature = result.temperature
812
+ if (result.maxResponseTokens !== undefined) {
813
+ prepared.maxResponseTokens = result.maxResponseTokens
814
+ }
815
+
816
+ return prepared
817
+ }
818
+
819
+ /** Steps completed so far, exposed on the returned `Run`. */
820
+ private readonly steps: StepResult[] = []
821
+
822
+ getSteps(): readonly StepResult[] {
823
+ return this.steps
824
+ }
825
+
826
+ /**
827
+ * Fold one iteration into a `StepResult`.
828
+ *
829
+ * Every field here was already computed somewhere in the loop; the only
830
+ * new work is subtracting the cumulative counters so the step carries
831
+ * ITS usage rather than the run's running total, which is the number a
832
+ * caller asking "what did this step cost" actually wants.
833
+ */
834
+ private recordStep(input: {
835
+ stepNumber: number
836
+ model: string
837
+ messageId: MessageId
838
+ response: ChatCompletionResponse
839
+ toolResults: readonly ToolCallOutcome[]
840
+ toolExecutionMs: number
841
+ startedAt: number
842
+ usageBefore: TokenUsage
843
+ costBefore: CostInfo
844
+ }): void {
845
+ const { runMgr } = this.ctx
846
+ const toolCalls = input.response.message.toolCalls ?? []
847
+ const byId = new Map(input.toolResults.map((r) => [r.toolCallId, r]))
848
+
849
+ const step: StepResult = {
850
+ stepNumber: input.stepNumber,
851
+ model: input.model,
852
+ messageId: input.messageId,
853
+ content: input.response.message.content,
854
+ toolCalls,
855
+ // Ordered by the tool CALLS, not by completion, so the record
856
+ // matches what the model asked for.
857
+ toolResults: toolCalls.map((tc) => {
858
+ const outcome = byId.get(tc.id)
859
+ return {
860
+ toolCallId: tc.id,
861
+ toolName: tc.function.name,
862
+ output: outcome?.output ?? '',
863
+ isError: outcome?.isError ?? false,
864
+ durationMs: 0,
865
+ }
866
+ }),
867
+ finishReason: input.response.finishReason,
868
+ usage: subtractUsage(runMgr.tokenUsage, input.usageBefore),
869
+ costDelta: {
870
+ ...runMgr.costInfo,
871
+ totalCost: round6(runMgr.costInfo.totalCost - input.costBefore.totalCost),
872
+ },
873
+ startedAt: input.startedAt,
874
+ durationMs: Date.now() - input.startedAt,
875
+ toolExecutionMs: input.toolExecutionMs,
876
+ }
877
+
878
+ this.steps.push(step)
879
+ this.ctx.onStepFinish?.(step)
880
+ }
881
+
882
+ /** Turns spent asking the model again for a valid structured output. */
883
+ private structuredOutputAttempts = 0
884
+ private structuredOutputDone = false
885
+
886
+ private structuredOutputRetryLimit(): number {
887
+ return this.ctx.structuredOutput?.maxRetries ?? DEFAULT_STRUCTURED_OUTPUT_RETRIES
888
+ }
889
+
890
+ /** True while a structured output was demanded and has not arrived. */
891
+ private needsStructuredOutput(): boolean {
892
+ return this.ctx.structuredOutput !== undefined && !this.structuredOutputDone
893
+ }
894
+
895
+ /**
896
+ * Record the structured output if this batch produced one.
897
+ *
898
+ * The tool validates against the Zod schema before its `execute` runs,
899
+ * so reaching here successfully means the value is already valid — a
900
+ * failed parse comes back as an error result and simply does not
901
+ * satisfy the demand, which sends the loop round again.
902
+ */
903
+ /**
904
+ * The answer a terminal tool produced, or `undefined` to keep looping.
905
+ *
906
+ * Deliberately narrow. A terminal call decides the run only when it is
907
+ * the ONLY call the model made in that turn: a model that asked for
908
+ * other work meant to see those results, and settling here would throw
909
+ * away answers it requested. Same for a failed terminal call — an
910
+ * error is not an answer, and the model is the one that should read
911
+ * it. Both cases fall through to the ordinary path, and both say so in
912
+ * the log rather than quietly costing the relay the flag was set to
913
+ * avoid.
914
+ */
915
+ private terminalToolOutput(
916
+ results: readonly ToolCallOutcome[],
917
+ response: ChatCompletionResponse,
918
+ ): ToolCallOutcome | undefined {
919
+ const terminal = results.filter((r) => this.ctx.tools.get(r.toolName)?.terminal === true)
920
+ if (terminal.length === 0) return undefined
921
+
922
+ const callCount = response.message.toolCalls?.length ?? 0
923
+ if (callCount > 1) {
924
+ this.ctx.log.info('Terminal tool shared its turn — relaying instead of settling', {
925
+ runId: this.ctx.runMgr.id,
926
+ tool: terminal[0]?.toolName,
927
+ callsInTurn: callCount,
928
+ })
929
+ return undefined
930
+ }
931
+
932
+ const hit = terminal[0]
933
+ if (!hit || hit.isError) {
934
+ this.ctx.log.info('Terminal tool failed — returning the error to the model', {
935
+ runId: this.ctx.runMgr.id,
936
+ tool: hit?.toolName,
937
+ })
938
+ return undefined
939
+ }
940
+ return hit
941
+ }
942
+
943
+ private captureStructuredOutput(results: readonly ToolCallOutcome[]): boolean {
944
+ if (!this.needsStructuredOutput()) return false
945
+ const hit = results.find((r) => r.toolName === STRUCTURED_OUTPUT_TOOL_NAME && !r.isError)
946
+ if (!hit) return false
947
+ try {
948
+ this.ctx.runMgr.setStructuredOutput(JSON.parse(hit.output))
949
+ } catch {
950
+ // The tool serializes its own validated input, so this is
951
+ // unreachable in practice; keep the raw text rather than losing it.
952
+ this.ctx.runMgr.setStructuredOutput(hit.output)
953
+ }
954
+ this.structuredOutputDone = true
955
+ return true
956
+ }
957
+
958
+ /**
959
+ * Ask the host whether this answer is good enough.
960
+ *
961
+ * A hook that throws **accepts**, which is the opposite of what the
962
+ * safety gates do, and deliberately so. Those are asked "is this
963
+ * dangerous", where the cost of failing closed is one refused
964
+ * operation. This is asked "is this good enough", where failing closed
965
+ * means handing the answer back forever — so a broken judge would turn
966
+ * every run into a loop that ends on a budget error naming nothing. One
967
+ * unreviewed answer is the cheaper failure, and the throw is logged at
968
+ * `error` so it is not mistaken for approval.
969
+ */
970
+ private async reviewAnswer(answer: string): Promise<AnswerReview | undefined> {
971
+ if (!this.ctx.reviewAnswer) return undefined
972
+ try {
973
+ return await this.ctx.reviewAnswer(answer, {
974
+ runId: this.ctx.runMgr.id,
975
+ iteration: this.ctx.runMgr.currentIteration,
976
+ messages: this.ctx.runMgr.messages,
977
+ })
978
+ } catch (err) {
979
+ this.ctx.log.error('Answer review threw — accepting the answer unreviewed', {
980
+ runId: this.ctx.runMgr.id,
981
+ error: toErrorMessage(err),
982
+ })
983
+ return { accept: true }
984
+ }
985
+ }
986
+
987
+ /** Evaluate the caller's halt predicate, if there is one. */
988
+ private async shouldStop(): Promise<boolean> {
989
+ const stopWhen = this.ctx.stopWhen
990
+ const latestStep = this.steps.at(-1)
991
+ if (!stopWhen || !latestStep) return false
992
+ try {
993
+ return await stopWhen({
994
+ steps: this.steps,
995
+ latestStep,
996
+ totalUsage: this.ctx.runMgr.tokenUsage,
997
+ totalCost: this.ctx.runMgr.costInfo,
998
+ })
999
+ } catch (err) {
1000
+ // A throwing predicate must not kill a run that is otherwise
1001
+ // healthy; failing open keeps the existing budgets in charge.
1002
+ this.ctx.log.error('Stop condition threw — continuing the run', {
1003
+ runId: this.ctx.runMgr.id,
1004
+ error: toErrorMessage(err),
1005
+ })
1006
+ return false
1007
+ }
1008
+ }
1009
+
396
1010
  private hasRunningAgentTasks(): boolean {
397
1011
  if (!this.ctx.taskGateway) return false
398
1012
  return this.ctx.taskGateway
@@ -437,6 +1051,7 @@ export class IterationOrchestrator {
437
1051
  temperature: this.ctx.runConfig.temperature,
438
1052
  maxTokens: this.ctx.runConfig.maxResponseTokens,
439
1053
  cacheControl: { type: 'auto' },
1054
+ ...(this.ctx.runConfig.thinking ? { thinking: this.ctx.runConfig.thinking } : {}),
440
1055
  // Cancellable too: a Stop during the closing summary must not
441
1056
  // stream to completion.
442
1057
  signal: this.ctx.abortController.signal,
@@ -471,3 +1086,19 @@ export class IterationOrchestrator {
471
1086
  }
472
1087
  }
473
1088
  }
1089
+
1090
+ /** Per-step usage: the delta between two cumulative snapshots. */
1091
+ function subtractUsage(after: TokenUsage, before: TokenUsage): TokenUsage {
1092
+ return {
1093
+ promptTokens: after.promptTokens - before.promptTokens,
1094
+ completionTokens: after.completionTokens - before.completionTokens,
1095
+ totalTokens: after.totalTokens - before.totalTokens,
1096
+ cachedTokens: (after.cachedTokens ?? 0) - (before.cachedTokens ?? 0),
1097
+ cacheWriteTokens: (after.cacheWriteTokens ?? 0) - (before.cacheWriteTokens ?? 0),
1098
+ }
1099
+ }
1100
+
1101
+ /** Cost deltas are subtractions of floats; keep them presentable. */
1102
+ function round6(n: number): number {
1103
+ return Math.round(n * 1e6) / 1e6
1104
+ }