@namzu/sdk 30.1.0 → 31.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 (714) hide show
  1. package/CHANGELOG.md +576 -0
  2. package/README.md +43 -2
  3. package/dist/advisory/executor.d.ts +2 -1
  4. package/dist/advisory/executor.d.ts.map +1 -1
  5. package/dist/advisory/executor.js +4 -1
  6. package/dist/advisory/executor.js.map +1 -1
  7. package/dist/agents/ReactiveAgent.d.ts.map +1 -1
  8. package/dist/agents/ReactiveAgent.js +12 -0
  9. package/dist/agents/ReactiveAgent.js.map +1 -1
  10. package/dist/agents/RouterAgent.d.ts.map +1 -1
  11. package/dist/agents/RouterAgent.js +21 -3
  12. package/dist/agents/RouterAgent.js.map +1 -1
  13. package/dist/agents/SupervisorAgent.d.ts.map +1 -1
  14. package/dist/agents/SupervisorAgent.js +34 -11
  15. package/dist/agents/SupervisorAgent.js.map +1 -1
  16. package/dist/agents/runAgent.d.ts +12 -0
  17. package/dist/agents/runAgent.d.ts.map +1 -1
  18. package/dist/agents/runAgent.js +26 -2
  19. package/dist/agents/runAgent.js.map +1 -1
  20. package/dist/authorization/command-line.d.ts +81 -0
  21. package/dist/authorization/command-line.d.ts.map +1 -0
  22. package/dist/authorization/command-line.js +347 -0
  23. package/dist/authorization/command-line.js.map +1 -0
  24. package/dist/authorization/rules.d.ts.map +1 -1
  25. package/dist/authorization/rules.js +22 -1
  26. package/dist/authorization/rules.js.map +1 -1
  27. package/dist/bridge/a2a/client.d.ts +23 -5
  28. package/dist/bridge/a2a/client.d.ts.map +1 -1
  29. package/dist/bridge/a2a/client.js +320 -73
  30. package/dist/bridge/a2a/client.js.map +1 -1
  31. package/dist/bridge/a2a/mapper.d.ts.map +1 -1
  32. package/dist/bridge/a2a/mapper.js +4 -0
  33. package/dist/bridge/a2a/mapper.js.map +1 -1
  34. package/dist/bridge/acp/server.d.ts +13 -1
  35. package/dist/bridge/acp/server.d.ts.map +1 -1
  36. package/dist/bridge/acp/server.js +150 -44
  37. package/dist/bridge/acp/server.js.map +1 -1
  38. package/dist/bridge/mcp/connector/adapter.d.ts +3 -2
  39. package/dist/bridge/mcp/connector/adapter.d.ts.map +1 -1
  40. package/dist/bridge/mcp/connector/adapter.js +17 -21
  41. package/dist/bridge/mcp/connector/adapter.js.map +1 -1
  42. package/dist/bridge/sse/mapper.d.ts.map +1 -1
  43. package/dist/bridge/sse/mapper.js +3 -0
  44. package/dist/bridge/sse/mapper.js.map +1 -1
  45. package/dist/compaction/dangling.d.ts +29 -2
  46. package/dist/compaction/dangling.d.ts.map +1 -1
  47. package/dist/compaction/dangling.js +172 -35
  48. package/dist/compaction/dangling.js.map +1 -1
  49. package/dist/compaction/index.d.ts +3 -2
  50. package/dist/compaction/index.d.ts.map +1 -1
  51. package/dist/compaction/index.js +1 -1
  52. package/dist/compaction/index.js.map +1 -1
  53. package/dist/compaction/manual.d.ts +11 -1
  54. package/dist/compaction/manual.d.ts.map +1 -1
  55. package/dist/compaction/manual.js +89 -14
  56. package/dist/compaction/manual.js.map +1 -1
  57. package/dist/compaction/plan.d.ts +19 -6
  58. package/dist/compaction/plan.d.ts.map +1 -1
  59. package/dist/compaction/plan.js +18 -4
  60. package/dist/compaction/plan.js.map +1 -1
  61. package/dist/compaction/retention.d.ts +10 -7
  62. package/dist/compaction/retention.d.ts.map +1 -1
  63. package/dist/compaction/retention.js +26 -8
  64. package/dist/compaction/retention.js.map +1 -1
  65. package/dist/compaction/summary.d.ts +4 -4
  66. package/dist/compaction/summary.js +4 -4
  67. package/dist/compaction/verifier.d.ts +19 -1
  68. package/dist/compaction/verifier.d.ts.map +1 -1
  69. package/dist/compaction/verifier.js +20 -1
  70. package/dist/compaction/verifier.js.map +1 -1
  71. package/dist/config/runtime.d.ts +6 -6
  72. package/dist/connector/BaseConnector.d.ts +6 -4
  73. package/dist/connector/BaseConnector.d.ts.map +1 -1
  74. package/dist/connector/BaseConnector.js +8 -2
  75. package/dist/connector/BaseConnector.js.map +1 -1
  76. package/dist/connector/builtins/http.d.ts +16 -4
  77. package/dist/connector/builtins/http.d.ts.map +1 -1
  78. package/dist/connector/builtins/http.js +177 -44
  79. package/dist/connector/builtins/http.js.map +1 -1
  80. package/dist/connector/builtins/webhook.d.ts +15 -4
  81. package/dist/connector/builtins/webhook.d.ts.map +1 -1
  82. package/dist/connector/builtins/webhook.js +165 -45
  83. package/dist/connector/builtins/webhook.js.map +1 -1
  84. package/dist/connector/execution-contract.d.ts +11 -0
  85. package/dist/connector/execution-contract.d.ts.map +1 -0
  86. package/dist/connector/execution-contract.js +14 -0
  87. package/dist/connector/execution-contract.js.map +1 -0
  88. package/dist/connector/http-operation.d.ts +48 -0
  89. package/dist/connector/http-operation.d.ts.map +1 -0
  90. package/dist/connector/http-operation.js +205 -0
  91. package/dist/connector/http-operation.js.map +1 -0
  92. package/dist/connector/mcp/adapter.d.ts.map +1 -1
  93. package/dist/connector/mcp/adapter.js +8 -3
  94. package/dist/connector/mcp/adapter.js.map +1 -1
  95. package/dist/connector/mcp/client.d.ts +14 -8
  96. package/dist/connector/mcp/client.d.ts.map +1 -1
  97. package/dist/connector/mcp/client.js +160 -44
  98. package/dist/connector/mcp/client.js.map +1 -1
  99. package/dist/connector/mcp/http-sse.d.ts +8 -2
  100. package/dist/connector/mcp/http-sse.d.ts.map +1 -1
  101. package/dist/connector/mcp/http-sse.js +70 -17
  102. package/dist/connector/mcp/http-sse.js.map +1 -1
  103. package/dist/connector/mcp/prompt-adapter.d.ts.map +1 -1
  104. package/dist/connector/mcp/prompt-adapter.js +9 -2
  105. package/dist/connector/mcp/prompt-adapter.js.map +1 -1
  106. package/dist/connector/mcp/stdio.d.ts +2 -2
  107. package/dist/connector/mcp/stdio.d.ts.map +1 -1
  108. package/dist/connector/mcp/stdio.js +14 -50
  109. package/dist/connector/mcp/stdio.js.map +1 -1
  110. package/dist/connector/mcp/streamable-http.d.ts +7 -2
  111. package/dist/connector/mcp/streamable-http.d.ts.map +1 -1
  112. package/dist/connector/mcp/streamable-http.js +66 -18
  113. package/dist/connector/mcp/streamable-http.js.map +1 -1
  114. package/dist/connector/tools/adapter.d.ts +2 -2
  115. package/dist/connector/tools/adapter.d.ts.map +1 -1
  116. package/dist/connector/tools/adapter.js +23 -14
  117. package/dist/connector/tools/adapter.js.map +1 -1
  118. package/dist/connector/tools/definitions.d.ts.map +1 -1
  119. package/dist/connector/tools/definitions.js +5 -2
  120. package/dist/connector/tools/definitions.js.map +1 -1
  121. package/dist/connector/tools/result.d.ts +4 -0
  122. package/dist/connector/tools/result.d.ts.map +1 -0
  123. package/dist/connector/tools/result.js +20 -0
  124. package/dist/connector/tools/result.js.map +1 -0
  125. package/dist/connector/web/guarded-fetch.d.ts +4 -2
  126. package/dist/connector/web/guarded-fetch.d.ts.map +1 -1
  127. package/dist/connector/web/guarded-fetch.js +157 -43
  128. package/dist/connector/web/guarded-fetch.js.map +1 -1
  129. package/dist/constants/sandbox/index.d.ts +3 -2
  130. package/dist/constants/sandbox/index.d.ts.map +1 -1
  131. package/dist/constants/sandbox/index.js +3 -2
  132. package/dist/constants/sandbox/index.js.map +1 -1
  133. package/dist/contracts/api.d.ts +2 -0
  134. package/dist/contracts/api.d.ts.map +1 -1
  135. package/dist/contracts/schemas.d.ts +38 -12
  136. package/dist/contracts/schemas.d.ts.map +1 -1
  137. package/dist/contracts/schemas.js +7 -0
  138. package/dist/contracts/schemas.js.map +1 -1
  139. package/dist/directory/derive-supervisor.d.ts.map +1 -1
  140. package/dist/directory/derive-supervisor.js +8 -0
  141. package/dist/directory/derive-supervisor.js.map +1 -1
  142. package/dist/directory/derive.d.ts.map +1 -1
  143. package/dist/directory/derive.js +8 -0
  144. package/dist/directory/derive.js.map +1 -1
  145. package/dist/directory/load.d.ts.map +1 -1
  146. package/dist/directory/load.js +2 -0
  147. package/dist/directory/load.js.map +1 -1
  148. package/dist/directory/types.d.ts +4 -0
  149. package/dist/directory/types.d.ts.map +1 -1
  150. package/dist/eval/experiment.d.ts +10 -10
  151. package/dist/eval/experiment.d.ts.map +1 -1
  152. package/dist/eval/experiment.js +121 -91
  153. package/dist/eval/experiment.js.map +1 -1
  154. package/dist/eval/judge.d.ts +6 -0
  155. package/dist/eval/judge.d.ts.map +1 -1
  156. package/dist/eval/judge.js +7 -2
  157. package/dist/eval/judge.js.map +1 -1
  158. package/dist/eval/types.d.ts +7 -1
  159. package/dist/eval/types.d.ts.map +1 -1
  160. package/dist/manager/agent/lifecycle.d.ts +12 -10
  161. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  162. package/dist/manager/agent/lifecycle.js +16 -3
  163. package/dist/manager/agent/lifecycle.js.map +1 -1
  164. package/dist/manager/connector/environment.d.ts +2 -2
  165. package/dist/manager/connector/environment.d.ts.map +1 -1
  166. package/dist/manager/connector/environment.js +2 -2
  167. package/dist/manager/connector/environment.js.map +1 -1
  168. package/dist/manager/connector/lifecycle.d.ts +10 -2
  169. package/dist/manager/connector/lifecycle.d.ts.map +1 -1
  170. package/dist/manager/connector/lifecycle.js +273 -24
  171. package/dist/manager/connector/lifecycle.js.map +1 -1
  172. package/dist/manager/connector/tenant.d.ts +5 -4
  173. package/dist/manager/connector/tenant.d.ts.map +1 -1
  174. package/dist/manager/connector/tenant.js +47 -22
  175. package/dist/manager/connector/tenant.js.map +1 -1
  176. package/dist/manager/goal/activation.d.ts +23 -0
  177. package/dist/manager/goal/activation.d.ts.map +1 -0
  178. package/dist/manager/goal/activation.js +41 -0
  179. package/dist/manager/goal/activation.js.map +1 -0
  180. package/dist/manager/index.d.ts +3 -2
  181. package/dist/manager/index.d.ts.map +1 -1
  182. package/dist/manager/index.js.map +1 -1
  183. package/dist/manager/run/persistence.d.ts +2 -0
  184. package/dist/manager/run/persistence.d.ts.map +1 -1
  185. package/dist/manager/run/persistence.js +5 -1
  186. package/dist/manager/run/persistence.js.map +1 -1
  187. package/dist/manager/topic/dependency.d.ts +24 -0
  188. package/dist/manager/topic/dependency.d.ts.map +1 -0
  189. package/dist/manager/topic/dependency.js +13 -0
  190. package/dist/manager/topic/dependency.js.map +1 -0
  191. package/dist/manager/topic/lifecycle.d.ts +9 -21
  192. package/dist/manager/topic/lifecycle.d.ts.map +1 -1
  193. package/dist/manager/topic/lifecycle.js +17 -29
  194. package/dist/manager/topic/lifecycle.js.map +1 -1
  195. package/dist/plugin/index.d.ts +1 -0
  196. package/dist/plugin/index.d.ts.map +1 -1
  197. package/dist/plugin/index.js.map +1 -1
  198. package/dist/plugin/lifecycle.d.ts +15 -0
  199. package/dist/plugin/lifecycle.d.ts.map +1 -1
  200. package/dist/plugin/lifecycle.js +144 -38
  201. package/dist/plugin/lifecycle.js.map +1 -1
  202. package/dist/plugin/loader.d.ts +3 -3
  203. package/dist/plugin/loader.d.ts.map +1 -1
  204. package/dist/plugin/loader.js +58 -12
  205. package/dist/plugin/loader.js.map +1 -1
  206. package/dist/provider/collect-chat-completion.d.ts +7 -0
  207. package/dist/provider/collect-chat-completion.d.ts.map +1 -1
  208. package/dist/provider/collect-chat-completion.js +35 -0
  209. package/dist/provider/collect-chat-completion.js.map +1 -1
  210. package/dist/provider/fallback.d.ts +3 -1
  211. package/dist/provider/fallback.d.ts.map +1 -1
  212. package/dist/provider/fallback.js +62 -10
  213. package/dist/provider/fallback.js.map +1 -1
  214. package/dist/provider/idle-timeout.d.ts +4 -0
  215. package/dist/provider/idle-timeout.d.ts.map +1 -1
  216. package/dist/provider/idle-timeout.js +131 -15
  217. package/dist/provider/idle-timeout.js.map +1 -1
  218. package/dist/provider/index.d.ts +2 -0
  219. package/dist/provider/index.d.ts.map +1 -1
  220. package/dist/provider/index.js +1 -0
  221. package/dist/provider/index.js.map +1 -1
  222. package/dist/provider/instrumentation.d.ts.map +1 -1
  223. package/dist/provider/instrumentation.js +1 -0
  224. package/dist/provider/instrumentation.js.map +1 -1
  225. package/dist/provider/retry.d.ts.map +1 -1
  226. package/dist/provider/retry.js +13 -1
  227. package/dist/provider/retry.js.map +1 -1
  228. package/dist/public-runtime.d.ts +57 -24
  229. package/dist/public-runtime.d.ts.map +1 -1
  230. package/dist/public-runtime.js +42 -35
  231. package/dist/public-runtime.js.map +1 -1
  232. package/dist/public-tools.d.ts +1 -0
  233. package/dist/public-tools.d.ts.map +1 -1
  234. package/dist/public-tools.js +5 -0
  235. package/dist/public-tools.js.map +1 -1
  236. package/dist/public-types.d.ts +33 -12
  237. package/dist/public-types.d.ts.map +1 -1
  238. package/dist/rag/embedding.d.ts +8 -3
  239. package/dist/rag/embedding.d.ts.map +1 -1
  240. package/dist/rag/embedding.js +120 -9
  241. package/dist/rag/embedding.js.map +1 -1
  242. package/dist/rag/index.d.ts +1 -1
  243. package/dist/rag/index.d.ts.map +1 -1
  244. package/dist/rag/index.js +1 -1
  245. package/dist/rag/index.js.map +1 -1
  246. package/dist/rag/ingestion.d.ts +2 -2
  247. package/dist/rag/ingestion.d.ts.map +1 -1
  248. package/dist/rag/ingestion.js +15 -3
  249. package/dist/rag/ingestion.js.map +1 -1
  250. package/dist/rag/knowledge-base.d.ts +3 -3
  251. package/dist/rag/knowledge-base.d.ts.map +1 -1
  252. package/dist/rag/knowledge-base.js +8 -4
  253. package/dist/rag/knowledge-base.js.map +1 -1
  254. package/dist/rag/operation.d.ts +10 -0
  255. package/dist/rag/operation.d.ts.map +1 -0
  256. package/dist/rag/operation.js +26 -0
  257. package/dist/rag/operation.js.map +1 -0
  258. package/dist/rag/rag-tool.d.ts.map +1 -1
  259. package/dist/rag/rag-tool.js +6 -3
  260. package/dist/rag/rag-tool.js.map +1 -1
  261. package/dist/rag/retriever.d.ts +2 -2
  262. package/dist/rag/retriever.d.ts.map +1 -1
  263. package/dist/rag/retriever.js +31 -15
  264. package/dist/rag/retriever.js.map +1 -1
  265. package/dist/rag/vector-store.d.ts +3 -3
  266. package/dist/rag/vector-store.d.ts.map +1 -1
  267. package/dist/rag/vector-store.js +4 -2
  268. package/dist/rag/vector-store.js.map +1 -1
  269. package/dist/registry/command/kernel-commands.d.ts +16 -4
  270. package/dist/registry/command/kernel-commands.d.ts.map +1 -1
  271. package/dist/registry/command/kernel-commands.js +171 -0
  272. package/dist/registry/command/kernel-commands.js.map +1 -1
  273. package/dist/run/reporter.d.ts.map +1 -1
  274. package/dist/run/reporter.js +9 -0
  275. package/dist/run/reporter.js.map +1 -1
  276. package/dist/run-query/index.d.ts +15 -1
  277. package/dist/run-query/index.d.ts.map +1 -1
  278. package/dist/run-query/index.js +69 -15
  279. package/dist/run-query/index.js.map +1 -1
  280. package/dist/runtime/query/context.d.ts.map +1 -1
  281. package/dist/runtime/query/context.js +10 -3
  282. package/dist/runtime/query/context.js.map +1 -1
  283. package/dist/runtime/query/executor.d.ts +3 -0
  284. package/dist/runtime/query/executor.d.ts.map +1 -1
  285. package/dist/runtime/query/executor.js +80 -18
  286. package/dist/runtime/query/executor.js.map +1 -1
  287. package/dist/runtime/query/guard.d.ts +9 -0
  288. package/dist/runtime/query/guard.d.ts.map +1 -1
  289. package/dist/runtime/query/guard.js +11 -0
  290. package/dist/runtime/query/guard.js.map +1 -1
  291. package/dist/runtime/query/index.d.ts +30 -1
  292. package/dist/runtime/query/index.d.ts.map +1 -1
  293. package/dist/runtime/query/index.js +548 -95
  294. package/dist/runtime/query/index.js.map +1 -1
  295. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  296. package/dist/runtime/query/iteration/index.js +74 -14
  297. package/dist/runtime/query/iteration/index.js.map +1 -1
  298. package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
  299. package/dist/runtime/query/iteration/phases/compaction.js +94 -53
  300. package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
  301. package/dist/runtime/query/iteration/phases/context.d.ts +3 -0
  302. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  303. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  304. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  305. package/dist/runtime/query/iteration/phases/tool-review.js +21 -0
  306. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  307. package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
  308. package/dist/runtime/query/iteration/stream-turn.js +4 -0
  309. package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
  310. package/dist/runtime/query/project-instructions.d.ts +69 -0
  311. package/dist/runtime/query/project-instructions.d.ts.map +1 -0
  312. package/dist/runtime/query/project-instructions.js +137 -0
  313. package/dist/runtime/query/project-instructions.js.map +1 -0
  314. package/dist/runtime/query/request-rich-content.d.ts +22 -0
  315. package/dist/runtime/query/request-rich-content.d.ts.map +1 -0
  316. package/dist/runtime/query/request-rich-content.js +122 -0
  317. package/dist/runtime/query/request-rich-content.js.map +1 -0
  318. package/dist/runtime/query/result.d.ts.map +1 -1
  319. package/dist/runtime/query/result.js +12 -1
  320. package/dist/runtime/query/result.js.map +1 -1
  321. package/dist/runtime/query/resume-pending.d.ts.map +1 -1
  322. package/dist/runtime/query/resume-pending.js +19 -20
  323. package/dist/runtime/query/resume-pending.js.map +1 -1
  324. package/dist/runtime/query/resume-run.d.ts.map +1 -1
  325. package/dist/runtime/query/resume-run.js +54 -8
  326. package/dist/runtime/query/resume-run.js.map +1 -1
  327. package/dist/runtime/query/run-state.d.ts +5 -0
  328. package/dist/runtime/query/run-state.d.ts.map +1 -1
  329. package/dist/runtime/query/run-state.js +6 -1
  330. package/dist/runtime/query/run-state.js.map +1 -1
  331. package/dist/runtime/query/sandbox-lifecycle.d.ts +54 -0
  332. package/dist/runtime/query/sandbox-lifecycle.d.ts.map +1 -0
  333. package/dist/runtime/query/sandbox-lifecycle.js +167 -0
  334. package/dist/runtime/query/sandbox-lifecycle.js.map +1 -0
  335. package/dist/sandbox/isolation.d.ts.map +1 -1
  336. package/dist/sandbox/isolation.js +9 -0
  337. package/dist/sandbox/isolation.js.map +1 -1
  338. package/dist/sandbox/provider/local.d.ts +56 -6
  339. package/dist/sandbox/provider/local.d.ts.map +1 -1
  340. package/dist/sandbox/provider/local.js +181 -76
  341. package/dist/sandbox/provider/local.js.map +1 -1
  342. package/dist/sandbox/terminal.d.ts +13 -5
  343. package/dist/sandbox/terminal.d.ts.map +1 -1
  344. package/dist/sandbox/terminal.js +11 -3
  345. package/dist/sandbox/terminal.js.map +1 -1
  346. package/dist/session/errors.d.ts +28 -29
  347. package/dist/session/errors.d.ts.map +1 -1
  348. package/dist/session/errors.js +28 -29
  349. package/dist/session/errors.js.map +1 -1
  350. package/dist/session/handoff/broadcast.d.ts +5 -8
  351. package/dist/session/handoff/broadcast.d.ts.map +1 -1
  352. package/dist/session/handoff/broadcast.js +16 -6
  353. package/dist/session/handoff/broadcast.js.map +1 -1
  354. package/dist/session/handoff/single.d.ts +5 -8
  355. package/dist/session/handoff/single.d.ts.map +1 -1
  356. package/dist/session/handoff/single.js +7 -4
  357. package/dist/session/handoff/single.js.map +1 -1
  358. package/dist/store/attachment/index.d.ts +11 -3
  359. package/dist/store/attachment/index.d.ts.map +1 -1
  360. package/dist/store/attachment/index.js +49 -4
  361. package/dist/store/attachment/index.js.map +1 -1
  362. package/dist/store/feedback/conformance.d.ts.map +1 -1
  363. package/dist/store/feedback/conformance.js +32 -0
  364. package/dist/store/feedback/conformance.js.map +1 -1
  365. package/dist/store/feedback/disk.d.ts +8 -6
  366. package/dist/store/feedback/disk.d.ts.map +1 -1
  367. package/dist/store/feedback/disk.js +111 -76
  368. package/dist/store/feedback/disk.js.map +1 -1
  369. package/dist/store/goal/index.d.ts +111 -0
  370. package/dist/store/goal/index.d.ts.map +1 -0
  371. package/dist/store/goal/index.js +436 -0
  372. package/dist/store/goal/index.js.map +1 -0
  373. package/dist/store/index.d.ts +1 -1
  374. package/dist/store/index.d.ts.map +1 -1
  375. package/dist/store/index.js +1 -1
  376. package/dist/store/index.js.map +1 -1
  377. package/dist/store/kv/revision-record-store.d.ts +70 -0
  378. package/dist/store/kv/revision-record-store.d.ts.map +1 -0
  379. package/dist/store/kv/revision-record-store.js +290 -0
  380. package/dist/store/kv/revision-record-store.js.map +1 -0
  381. package/dist/store/memory/disk.d.ts +9 -7
  382. package/dist/store/memory/disk.d.ts.map +1 -1
  383. package/dist/store/memory/disk.js +256 -98
  384. package/dist/store/memory/disk.js.map +1 -1
  385. package/dist/store/run/disk.d.ts +10 -2
  386. package/dist/store/run/disk.d.ts.map +1 -1
  387. package/dist/store/run/disk.js +70 -4
  388. package/dist/store/run/disk.js.map +1 -1
  389. package/dist/store/run/memory.d.ts +4 -2
  390. package/dist/store/run/memory.d.ts.map +1 -1
  391. package/dist/store/run/memory.js +15 -1
  392. package/dist/store/run/memory.js.map +1 -1
  393. package/dist/store/session/disk.d.ts +9 -0
  394. package/dist/store/session/disk.d.ts.map +1 -1
  395. package/dist/store/session/disk.js +57 -5
  396. package/dist/store/session/disk.js.map +1 -1
  397. package/dist/store/session/memory.d.ts +1 -0
  398. package/dist/store/session/memory.d.ts.map +1 -1
  399. package/dist/store/session/memory.js +14 -0
  400. package/dist/store/session/memory.js.map +1 -1
  401. package/dist/store/topic/memory.d.ts +1 -2
  402. package/dist/store/topic/memory.d.ts.map +1 -1
  403. package/dist/store/topic/memory.js +4 -5
  404. package/dist/store/topic/memory.js.map +1 -1
  405. package/dist/store/topic/objective.d.ts +8 -4
  406. package/dist/store/topic/objective.d.ts.map +1 -1
  407. package/dist/store/topic/objective.js +185 -100
  408. package/dist/store/topic/objective.js.map +1 -1
  409. package/dist/store/topic/state.d.ts +1 -2
  410. package/dist/store/topic/state.d.ts.map +1 -1
  411. package/dist/store/topic/state.js +50 -62
  412. package/dist/store/topic/state.js.map +1 -1
  413. package/dist/tools/builtins/bash.d.ts.map +1 -1
  414. package/dist/tools/builtins/bash.js +20 -0
  415. package/dist/tools/builtins/bash.js.map +1 -1
  416. package/dist/tools/builtins/computer-use.d.ts +9 -1
  417. package/dist/tools/builtins/computer-use.d.ts.map +1 -1
  418. package/dist/tools/builtins/computer-use.js.map +1 -1
  419. package/dist/tools/builtins/content-fingerprint.d.ts +8 -7
  420. package/dist/tools/builtins/content-fingerprint.d.ts.map +1 -1
  421. package/dist/tools/builtins/content-fingerprint.js +9 -10
  422. package/dist/tools/builtins/content-fingerprint.js.map +1 -1
  423. package/dist/tools/builtins/edit.d.ts +6 -1
  424. package/dist/tools/builtins/edit.d.ts.map +1 -1
  425. package/dist/tools/builtins/edit.js +166 -27
  426. package/dist/tools/builtins/edit.js.map +1 -1
  427. package/dist/tools/builtins/write-file.d.ts.map +1 -1
  428. package/dist/tools/builtins/write-file.js +45 -19
  429. package/dist/tools/builtins/write-file.js.map +1 -1
  430. package/dist/tools/command-arguments.d.ts +43 -0
  431. package/dist/tools/command-arguments.d.ts.map +1 -0
  432. package/dist/tools/command-arguments.js +52 -0
  433. package/dist/tools/command-arguments.js.map +1 -0
  434. package/dist/tools/coordinator/index.d.ts +2 -0
  435. package/dist/tools/coordinator/index.d.ts.map +1 -1
  436. package/dist/tools/coordinator/index.js +3 -1
  437. package/dist/tools/coordinator/index.js.map +1 -1
  438. package/dist/tools/defineTool.d.ts +10 -0
  439. package/dist/tools/defineTool.d.ts.map +1 -1
  440. package/dist/tools/defineTool.js +1 -0
  441. package/dist/tools/defineTool.js.map +1 -1
  442. package/dist/tools/env-scrub.d.ts +7 -5
  443. package/dist/tools/env-scrub.d.ts.map +1 -1
  444. package/dist/tools/env-scrub.js +7 -5
  445. package/dist/tools/env-scrub.js.map +1 -1
  446. package/dist/tools/goal/index.d.ts +20 -0
  447. package/dist/tools/goal/index.d.ts.map +1 -0
  448. package/dist/tools/goal/index.js +104 -0
  449. package/dist/tools/goal/index.js.map +1 -0
  450. package/dist/tools/memory/index.d.ts +16 -0
  451. package/dist/tools/memory/index.d.ts.map +1 -1
  452. package/dist/tools/memory/index.js +6 -2
  453. package/dist/tools/memory/index.js.map +1 -1
  454. package/dist/tools/memory/search.d.ts +4 -1
  455. package/dist/tools/memory/search.d.ts.map +1 -1
  456. package/dist/tools/memory/search.js +10 -2
  457. package/dist/tools/memory/search.js.map +1 -1
  458. package/dist/types/agent/base.d.ts +11 -3
  459. package/dist/types/agent/base.d.ts.map +1 -1
  460. package/dist/types/agent/factory.d.ts +2 -0
  461. package/dist/types/agent/factory.d.ts.map +1 -1
  462. package/dist/types/agent/reactive.d.ts +2 -0
  463. package/dist/types/agent/reactive.d.ts.map +1 -1
  464. package/dist/types/agent/supervisor.d.ts +6 -0
  465. package/dist/types/agent/supervisor.d.ts.map +1 -1
  466. package/dist/types/agent/task.d.ts +6 -2
  467. package/dist/types/agent/task.d.ts.map +1 -1
  468. package/dist/types/connector/core.d.ts +13 -8
  469. package/dist/types/connector/core.d.ts.map +1 -1
  470. package/dist/types/connector/definition.d.ts +37 -18
  471. package/dist/types/connector/definition.d.ts.map +1 -1
  472. package/dist/types/connector/http.d.ts +6 -0
  473. package/dist/types/connector/http.d.ts.map +1 -1
  474. package/dist/types/connector/mcp.d.ts +24 -6
  475. package/dist/types/connector/mcp.d.ts.map +1 -1
  476. package/dist/types/connector/tenant.d.ts +17 -7
  477. package/dist/types/connector/tenant.d.ts.map +1 -1
  478. package/dist/types/connector/webhook.d.ts +6 -0
  479. package/dist/types/connector/webhook.d.ts.map +1 -1
  480. package/dist/types/goal/index.d.ts +46 -0
  481. package/dist/types/goal/index.d.ts.map +1 -0
  482. package/dist/types/goal/index.js +2 -0
  483. package/dist/types/goal/index.js.map +1 -0
  484. package/dist/types/ids/index.d.ts +2 -0
  485. package/dist/types/ids/index.d.ts.map +1 -1
  486. package/dist/types/ids/index.js.map +1 -1
  487. package/dist/types/message/index.d.ts +75 -10
  488. package/dist/types/message/index.d.ts.map +1 -1
  489. package/dist/types/message/index.js +49 -3
  490. package/dist/types/message/index.js.map +1 -1
  491. package/dist/types/plugin/index.d.ts +7 -5
  492. package/dist/types/plugin/index.d.ts.map +1 -1
  493. package/dist/types/plugin/index.js.map +1 -1
  494. package/dist/types/provider/chat.d.ts +27 -4
  495. package/dist/types/provider/chat.d.ts.map +1 -1
  496. package/dist/types/provider/interface.d.ts +18 -7
  497. package/dist/types/provider/interface.d.ts.map +1 -1
  498. package/dist/types/provider/stream.d.ts +6 -0
  499. package/dist/types/provider/stream.d.ts.map +1 -1
  500. package/dist/types/rag/embedding.d.ts +15 -2
  501. package/dist/types/rag/embedding.d.ts.map +1 -1
  502. package/dist/types/rag/ingestion.d.ts +2 -2
  503. package/dist/types/rag/ingestion.d.ts.map +1 -1
  504. package/dist/types/rag/knowledge-base.d.ts +3 -3
  505. package/dist/types/rag/knowledge-base.d.ts.map +1 -1
  506. package/dist/types/rag/retrieval.d.ts +2 -2
  507. package/dist/types/rag/retrieval.d.ts.map +1 -1
  508. package/dist/types/rag/scope.d.ts +4 -0
  509. package/dist/types/rag/scope.d.ts.map +1 -1
  510. package/dist/types/rag/vector.d.ts +5 -2
  511. package/dist/types/rag/vector.d.ts.map +1 -1
  512. package/dist/types/run/config.d.ts +20 -0
  513. package/dist/types/run/config.d.ts.map +1 -1
  514. package/dist/types/run/events.d.ts +25 -1
  515. package/dist/types/run/events.d.ts.map +1 -1
  516. package/dist/types/run/events.js.map +1 -1
  517. package/dist/types/run/metadata.d.ts +2 -0
  518. package/dist/types/run/metadata.d.ts.map +1 -1
  519. package/dist/types/run/step.d.ts +2 -6
  520. package/dist/types/run/step.d.ts.map +1 -1
  521. package/dist/types/run/step.js.map +1 -1
  522. package/dist/types/run/store.d.ts +55 -2
  523. package/dist/types/run/store.d.ts.map +1 -1
  524. package/dist/types/sandbox/index.d.ts +47 -6
  525. package/dist/types/sandbox/index.d.ts.map +1 -1
  526. package/dist/types/sandbox/index.js +23 -10
  527. package/dist/types/sandbox/index.js.map +1 -1
  528. package/dist/types/session/store.d.ts +13 -0
  529. package/dist/types/session/store.d.ts.map +1 -1
  530. package/dist/types/tool/index.d.ts +33 -11
  531. package/dist/types/tool/index.d.ts.map +1 -1
  532. package/dist/types/tool/index.js.map +1 -1
  533. package/dist/types/topic/entity.d.ts +3 -4
  534. package/dist/types/topic/entity.d.ts.map +1 -1
  535. package/dist/types/topic/store.d.ts +3 -3
  536. package/dist/utils/id.d.ts +3 -1
  537. package/dist/utils/id.d.ts.map +1 -1
  538. package/dist/utils/id.js +4 -0
  539. package/dist/utils/id.js.map +1 -1
  540. package/dist/utils/process-environment.d.ts +26 -0
  541. package/dist/utils/process-environment.d.ts.map +1 -0
  542. package/dist/utils/process-environment.js +78 -0
  543. package/dist/utils/process-environment.js.map +1 -0
  544. package/dist/vault/InMemoryCredentialVault.d.ts +2 -0
  545. package/dist/vault/InMemoryCredentialVault.d.ts.map +1 -1
  546. package/dist/vault/InMemoryCredentialVault.js +24 -4
  547. package/dist/vault/InMemoryCredentialVault.js.map +1 -1
  548. package/dist/vault/instrumentation.d.ts.map +1 -1
  549. package/dist/vault/instrumentation.js +15 -0
  550. package/dist/vault/instrumentation.js.map +1 -1
  551. package/package.json +1 -1
  552. package/src/advisory/executor.ts +4 -1
  553. package/src/agents/ReactiveAgent.ts +12 -0
  554. package/src/agents/RouterAgent.ts +25 -3
  555. package/src/agents/SupervisorAgent.ts +33 -11
  556. package/src/agents/runAgent.ts +38 -2
  557. package/src/authorization/command-line.ts +390 -0
  558. package/src/authorization/rules.ts +22 -1
  559. package/src/bridge/a2a/client.ts +384 -97
  560. package/src/bridge/a2a/mapper.ts +5 -0
  561. package/src/bridge/acp/server.ts +184 -42
  562. package/src/bridge/mcp/connector/adapter.ts +28 -20
  563. package/src/bridge/sse/mapper.ts +3 -0
  564. package/src/compaction/dangling.ts +203 -38
  565. package/src/compaction/index.ts +9 -2
  566. package/src/compaction/manual.ts +125 -18
  567. package/src/compaction/plan.ts +42 -11
  568. package/src/compaction/retention.ts +23 -8
  569. package/src/compaction/summary.ts +4 -4
  570. package/src/compaction/verifier.ts +66 -0
  571. package/src/connector/BaseConnector.ts +19 -4
  572. package/src/connector/builtins/http.ts +236 -46
  573. package/src/connector/builtins/webhook.ts +207 -47
  574. package/src/connector/execution-contract.ts +27 -0
  575. package/src/connector/http-operation.ts +238 -0
  576. package/src/connector/mcp/adapter.ts +8 -3
  577. package/src/connector/mcp/client.ts +207 -58
  578. package/src/connector/mcp/http-sse.ts +91 -23
  579. package/src/connector/mcp/prompt-adapter.ts +8 -2
  580. package/src/connector/mcp/stdio.ts +21 -46
  581. package/src/connector/mcp/streamable-http.ts +86 -22
  582. package/src/connector/tools/adapter.ts +23 -14
  583. package/src/connector/tools/definitions.ts +5 -2
  584. package/src/connector/tools/result.ts +21 -0
  585. package/src/connector/web/guarded-fetch.ts +188 -48
  586. package/src/constants/sandbox/index.ts +3 -2
  587. package/src/contracts/api.ts +2 -0
  588. package/src/contracts/schemas.ts +7 -0
  589. package/src/directory/derive-supervisor.ts +8 -0
  590. package/src/directory/derive.ts +8 -0
  591. package/src/directory/load.ts +2 -0
  592. package/src/directory/types.ts +4 -0
  593. package/src/eval/experiment.ts +160 -111
  594. package/src/eval/judge.ts +13 -2
  595. package/src/eval/types.ts +7 -1
  596. package/src/manager/agent/lifecycle.ts +28 -12
  597. package/src/manager/connector/environment.ts +3 -1
  598. package/src/manager/connector/lifecycle.ts +364 -24
  599. package/src/manager/connector/tenant.ts +56 -23
  600. package/src/manager/goal/activation.ts +52 -0
  601. package/src/manager/index.ts +10 -2
  602. package/src/manager/run/persistence.ts +6 -1
  603. package/src/manager/topic/dependency.ts +39 -0
  604. package/src/manager/topic/lifecycle.ts +19 -31
  605. package/src/plugin/index.ts +1 -0
  606. package/src/plugin/lifecycle.ts +180 -39
  607. package/src/plugin/loader.ts +70 -13
  608. package/src/pricing/rates.source.json +315 -204
  609. package/src/provider/collect-chat-completion.ts +36 -0
  610. package/src/provider/fallback.ts +79 -11
  611. package/src/provider/idle-timeout.ts +143 -17
  612. package/src/provider/index.ts +2 -0
  613. package/src/provider/instrumentation.ts +1 -0
  614. package/src/provider/retry.ts +16 -1
  615. package/src/public-runtime.ts +190 -32
  616. package/src/public-tools.ts +5 -0
  617. package/src/public-types.ts +85 -11
  618. package/src/rag/embedding.ts +147 -19
  619. package/src/rag/index.ts +1 -1
  620. package/src/rag/ingestion.ts +16 -2
  621. package/src/rag/knowledge-base.ts +13 -4
  622. package/src/rag/operation.ts +28 -0
  623. package/src/rag/rag-tool.ts +6 -3
  624. package/src/rag/retriever.ts +62 -11
  625. package/src/rag/vector-store.ts +8 -2
  626. package/src/registry/command/kernel-commands.ts +223 -4
  627. package/src/run/reporter.ts +10 -0
  628. package/src/run-query/index.ts +84 -15
  629. package/src/runtime/query/context.ts +13 -3
  630. package/src/runtime/query/executor.ts +90 -17
  631. package/src/runtime/query/guard.ts +12 -0
  632. package/src/runtime/query/index.ts +652 -103
  633. package/src/runtime/query/iteration/index.ts +89 -13
  634. package/src/runtime/query/iteration/phases/compaction.ts +120 -55
  635. package/src/runtime/query/iteration/phases/context.ts +4 -0
  636. package/src/runtime/query/iteration/phases/tool-review.ts +28 -0
  637. package/src/runtime/query/iteration/stream-turn.ts +3 -0
  638. package/src/runtime/query/project-instructions.ts +212 -0
  639. package/src/runtime/query/request-rich-content.ts +153 -0
  640. package/src/runtime/query/result.ts +12 -1
  641. package/src/runtime/query/resume-pending.ts +20 -18
  642. package/src/runtime/query/resume-run.ts +52 -8
  643. package/src/runtime/query/run-state.ts +11 -1
  644. package/src/runtime/query/sandbox-lifecycle.ts +210 -0
  645. package/src/sandbox/isolation.ts +9 -0
  646. package/src/sandbox/provider/local.ts +255 -90
  647. package/src/sandbox/terminal.ts +13 -5
  648. package/src/session/errors.ts +68 -42
  649. package/src/session/handoff/broadcast.ts +20 -14
  650. package/src/session/handoff/single.ts +14 -13
  651. package/src/store/attachment/index.ts +65 -3
  652. package/src/store/feedback/conformance.ts +39 -0
  653. package/src/store/feedback/disk.ts +128 -82
  654. package/src/store/goal/index.ts +594 -0
  655. package/src/store/index.ts +1 -1
  656. package/src/store/kv/revision-record-store.ts +346 -0
  657. package/src/store/memory/disk.ts +288 -113
  658. package/src/store/run/disk.ts +96 -5
  659. package/src/store/run/memory.ts +22 -2
  660. package/src/store/session/disk.ts +93 -6
  661. package/src/store/session/memory.ts +22 -0
  662. package/src/store/topic/memory.ts +4 -5
  663. package/src/store/topic/objective.ts +215 -100
  664. package/src/store/topic/state.ts +100 -63
  665. package/src/tools/builtins/bash.ts +21 -0
  666. package/src/tools/builtins/computer-use.ts +9 -1
  667. package/src/tools/builtins/content-fingerprint.ts +9 -12
  668. package/src/tools/builtins/edit.ts +190 -27
  669. package/src/tools/builtins/write-file.ts +55 -19
  670. package/src/tools/command-arguments.ts +54 -0
  671. package/src/tools/coordinator/index.ts +4 -1
  672. package/src/tools/defineTool.ts +11 -0
  673. package/src/tools/env-scrub.ts +7 -5
  674. package/src/tools/goal/index.ts +129 -0
  675. package/src/tools/memory/index.ts +26 -3
  676. package/src/tools/memory/search.ts +20 -3
  677. package/src/types/agent/base.ts +12 -3
  678. package/src/types/agent/factory.ts +2 -0
  679. package/src/types/agent/reactive.ts +2 -0
  680. package/src/types/agent/supervisor.ts +6 -0
  681. package/src/types/agent/task.ts +6 -2
  682. package/src/types/connector/core.ts +13 -8
  683. package/src/types/connector/definition.ts +54 -20
  684. package/src/types/connector/http.ts +7 -0
  685. package/src/types/connector/mcp.ts +27 -6
  686. package/src/types/connector/tenant.ts +21 -7
  687. package/src/types/connector/webhook.ts +7 -0
  688. package/src/types/goal/index.ts +50 -0
  689. package/src/types/ids/index.ts +2 -0
  690. package/src/types/message/index.ts +143 -9
  691. package/src/types/plugin/index.ts +7 -5
  692. package/src/types/provider/chat.ts +35 -4
  693. package/src/types/provider/interface.ts +22 -7
  694. package/src/types/provider/stream.ts +6 -0
  695. package/src/types/rag/embedding.ts +16 -2
  696. package/src/types/rag/ingestion.ts +2 -1
  697. package/src/types/rag/knowledge-base.ts +7 -3
  698. package/src/types/rag/retrieval.ts +2 -1
  699. package/src/types/rag/scope.ts +5 -0
  700. package/src/types/rag/vector.ts +5 -2
  701. package/src/types/run/config.ts +20 -0
  702. package/src/types/run/events.ts +28 -3
  703. package/src/types/run/metadata.ts +2 -0
  704. package/src/types/run/step.ts +2 -7
  705. package/src/types/run/store.ts +60 -2
  706. package/src/types/sandbox/index.ts +57 -14
  707. package/src/types/session/store.ts +18 -0
  708. package/src/types/tool/index.ts +33 -11
  709. package/src/types/topic/entity.ts +3 -4
  710. package/src/types/topic/store.ts +3 -3
  711. package/src/utils/id.ts +6 -0
  712. package/src/utils/process-environment.ts +101 -0
  713. package/src/vault/InMemoryCredentialVault.ts +29 -4
  714. package/src/vault/instrumentation.ts +24 -0
@@ -1,3 +1,4 @@
1
+ import { NamzuError } from '../types/errors/index.js';
1
2
  /**
2
3
  * Named constants for dangling message detection logic.
3
4
  */
@@ -51,48 +52,64 @@ function isToolMessage(message) {
51
52
  export function findDanglingMessages(messages) {
52
53
  const assistantsWithUnmatchedCalls = [];
53
54
  const orphanedToolMessages = [];
54
- // Build a set of all tool call IDs that exist in assistant messages
55
- // along with their coverage map (which tool messages satisfy them)
56
- const toolCallIds = new Map();
57
- for (let i = 0; i < messages.length; i++) {
58
- const message = messages[i];
59
- if (!message)
55
+ const seenToolCallIds = new Set();
56
+ // Provider tool results are not joins over a conversation-wide id map.
57
+ // They form one contiguous batch immediately after the assistant turn that
58
+ // declared them. A future call cannot own an earlier result, and a result
59
+ // displaced past a user/assistant/system message cannot answer backwards.
60
+ let index = 0;
61
+ while (index < messages.length) {
62
+ const message = messages[index];
63
+ if (!message) {
64
+ index++;
60
65
  continue;
61
- if (hasToolCalls(message)) {
62
- // Record all tool calls from this assistant message
63
- const assistantMsg = message;
64
- if (assistantMsg.toolCalls) {
65
- for (const toolCall of assistantMsg.toolCalls) {
66
- toolCallIds.set(toolCall.id, { assistantIndex: i, satisfied: false });
67
- }
68
- }
69
66
  }
70
- }
71
- // Second pass: mark satisfied tool calls and find orphaned tool messages
72
- for (let i = 0; i < messages.length; i++) {
73
- const message = messages[i];
74
- if (!message)
67
+ if (!hasToolCalls(message)) {
68
+ if (isToolMessage(message))
69
+ orphanedToolMessages.push(index);
70
+ index++;
75
71
  continue;
76
- if (isToolMessage(message)) {
77
- const toolMsg = message;
78
- if (toolCallIds.has(toolMsg.toolCallId)) {
79
- // Tool message satisfies a preceding tool call
80
- const entry = toolCallIds.get(toolMsg.toolCallId);
81
- if (entry) {
82
- entry.satisfied = true;
83
- }
72
+ }
73
+ const calls = message.toolCalls ?? [];
74
+ const callIds = new Set();
75
+ let invalidOwner = false;
76
+ for (const call of calls) {
77
+ if (!call.id || callIds.has(call.id) || seenToolCallIds.has(call.id))
78
+ invalidOwner = true;
79
+ callIds.add(call.id);
80
+ seenToolCallIds.add(call.id);
81
+ }
82
+ let resultEnd = index + 1;
83
+ while (resultEnd < messages.length && messages[resultEnd]?.role === CONSTANTS.TOOL_ROLE) {
84
+ resultEnd++;
85
+ }
86
+ // Keep the last immediate result for an id. A late real result can
87
+ // follow a synthetic cancellation result after a crash; keeping the
88
+ // first would preserve the stale guess and discard the observed fact.
89
+ const lastResultById = new Map();
90
+ for (let resultIndex = index + 1; resultIndex < resultEnd; resultIndex++) {
91
+ const result = messages[resultIndex];
92
+ if (result?.role === CONSTANTS.TOOL_ROLE) {
93
+ lastResultById.set(result.toolCallId, resultIndex);
84
94
  }
85
- else {
86
- // Tool message has no matching tool call
87
- orphanedToolMessages.push(i);
95
+ }
96
+ const answered = new Set();
97
+ for (let resultIndex = index + 1; resultIndex < resultEnd; resultIndex++) {
98
+ const result = messages[resultIndex];
99
+ if (result?.role !== CONSTANTS.TOOL_ROLE)
100
+ continue;
101
+ if (invalidOwner ||
102
+ !callIds.has(result.toolCallId) ||
103
+ lastResultById.get(result.toolCallId) !== resultIndex) {
104
+ orphanedToolMessages.push(resultIndex);
105
+ continue;
88
106
  }
107
+ answered.add(result.toolCallId);
89
108
  }
90
- }
91
- // Third pass: identify unsatisfied tool calls
92
- for (const entry of toolCallIds.values()) {
93
- if (!entry.satisfied) {
94
- assistantsWithUnmatchedCalls.push(entry.assistantIndex);
109
+ if (invalidOwner || calls.some((call) => !answered.has(call.id))) {
110
+ assistantsWithUnmatchedCalls.push(index);
95
111
  }
112
+ index = resultEnd;
96
113
  }
97
114
  return {
98
115
  assistantsWithUnmatchedCalls,
@@ -168,6 +185,126 @@ export function removeDanglingMessages(messages) {
168
185
  // Return messages not marked for removal, preserving order
169
186
  return messages.filter((_, idx) => !indicesToRemove.has(idx));
170
187
  }
188
+ /** Whether a repair changed the provider-bound history. */
189
+ export function toolHistoryRepairChanged(report) {
190
+ return (report.duplicateToolResultsRemoved > 0 ||
191
+ report.orphanedToolResultsRemoved > 0 ||
192
+ report.syntheticToolResultsInserted > 0);
193
+ }
194
+ function validateToolCallIds(messages) {
195
+ const seen = new Set();
196
+ for (let messageIndex = 0; messageIndex < messages.length; messageIndex++) {
197
+ const message = messages[messageIndex];
198
+ if (message?.role !== CONSTANTS.ASSISTANT_ROLE)
199
+ continue;
200
+ for (let callIndex = 0; callIndex < (message.toolCalls?.length ?? 0); callIndex++) {
201
+ const call = message.toolCalls?.[callIndex];
202
+ if (!call?.id) {
203
+ throw new NamzuError({
204
+ code: 'invalid_config',
205
+ message: `Message history contains an empty tool-call id at messages[${messageIndex}].toolCalls[${callIndex}].`,
206
+ details: { messageIndex, callIndex, toolCallId: call?.id ?? '' },
207
+ });
208
+ }
209
+ if (seen.has(call.id)) {
210
+ throw new NamzuError({
211
+ code: 'invalid_config',
212
+ message: `Message history repeats tool-call id '${call.id}' at messages[${messageIndex}].toolCalls[${callIndex}]; a signed assistant turn cannot be rewritten safely.`,
213
+ details: { messageIndex, callIndex, toolCallId: call.id },
214
+ });
215
+ }
216
+ seen.add(call.id);
217
+ }
218
+ }
219
+ }
220
+ function unknownOutcomeResult(call, assistant) {
221
+ return {
222
+ role: CONSTANTS.TOOL_ROLE,
223
+ toolCallId: call.id,
224
+ isError: true,
225
+ content: `Tool execution was interrupted and no durable result is available for \`${call.function.name}\`. Its outcome is unknown. Retry only if the tool is read-only or idempotent; otherwise verify external state or ask the user before retrying.`,
226
+ ...(assistant.timestamp !== undefined ? { timestamp: assistant.timestamp } : {}),
227
+ };
228
+ }
229
+ /**
230
+ * Repair provider tool-pairing violations without mutating the durable input.
231
+ *
232
+ * Results are valid only in the contiguous run immediately after their
233
+ * assistant call. Orphaned/displaced results are removed, earlier immediate
234
+ * duplicates are removed in favour of the last result, and every unanswered
235
+ * call receives a conservative error result in call order. Duplicate call ids
236
+ * fail closed: changing ids or tool calls would invalidate opaque native replay
237
+ * state carried by the assistant message.
238
+ */
239
+ export function repairToolMessageHistory(messages) {
240
+ validateToolCallIds(messages);
241
+ const repaired = [];
242
+ let duplicateToolResultsRemoved = 0;
243
+ let orphanedToolResultsRemoved = 0;
244
+ let syntheticToolResultsInserted = 0;
245
+ let index = 0;
246
+ while (index < messages.length) {
247
+ const message = messages[index];
248
+ if (!message) {
249
+ index++;
250
+ continue;
251
+ }
252
+ if (!hasToolCalls(message)) {
253
+ if (isToolMessage(message))
254
+ orphanedToolResultsRemoved++;
255
+ else
256
+ repaired.push(message);
257
+ index++;
258
+ continue;
259
+ }
260
+ const assistant = message;
261
+ const calls = assistant.toolCalls ?? [];
262
+ const callIds = new Set(calls.map((call) => call.id));
263
+ repaired.push(assistant);
264
+ let resultEnd = index + 1;
265
+ while (resultEnd < messages.length && messages[resultEnd]?.role === CONSTANTS.TOOL_ROLE) {
266
+ resultEnd++;
267
+ }
268
+ const lastResultById = new Map();
269
+ for (let resultIndex = index + 1; resultIndex < resultEnd; resultIndex++) {
270
+ const result = messages[resultIndex];
271
+ if (result?.role === CONSTANTS.TOOL_ROLE) {
272
+ lastResultById.set(result.toolCallId, resultIndex);
273
+ }
274
+ }
275
+ const answered = new Set();
276
+ for (let resultIndex = index + 1; resultIndex < resultEnd; resultIndex++) {
277
+ const result = messages[resultIndex];
278
+ if (result?.role !== CONSTANTS.TOOL_ROLE)
279
+ continue;
280
+ if (lastResultById.get(result.toolCallId) !== resultIndex) {
281
+ duplicateToolResultsRemoved++;
282
+ continue;
283
+ }
284
+ if (!callIds.has(result.toolCallId)) {
285
+ orphanedToolResultsRemoved++;
286
+ continue;
287
+ }
288
+ repaired.push(result);
289
+ answered.add(result.toolCallId);
290
+ }
291
+ for (const call of calls) {
292
+ if (answered.has(call.id))
293
+ continue;
294
+ repaired.push(unknownOutcomeResult(call, assistant));
295
+ syntheticToolResultsInserted++;
296
+ }
297
+ index = resultEnd;
298
+ }
299
+ return {
300
+ messages: repaired,
301
+ report: {
302
+ duplicateToolResultsRemoved,
303
+ orphanedToolResultsRemoved,
304
+ syntheticToolResultsInserted,
305
+ },
306
+ };
307
+ }
171
308
  /**
172
309
  * Finds a safe index for trimming messages while preserving tool call/result atomicity.
173
310
  *
@@ -1 +1 @@
1
- {"version":3,"file":"dangling.js","sourceRoot":"","sources":["../../src/compaction/dangling.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dangling.js","sourceRoot":"","sources":["../../src/compaction/dangling.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export type { WorkingState, PlanSlot, FileSlot, FileAction, ToolResultSlot, CompactionStrategy, } from './types.js';
2
- export type { DanglingResult } from './dangling.js';
2
+ export type { DanglingResult, ToolHistoryRepairReport, ToolHistoryRepairResult, } from './dangling.js';
3
3
  export type { ConversationManager } from './interface.js';
4
4
  export { createSlidingWindowReducer } from './reducer.js';
5
5
  export type { ContextReducer, ContextReduction, ContextReductionReason, SlidingWindowOptions, } from './reducer.js';
@@ -7,7 +7,8 @@ export { WorkingStateManager } from './manager.js';
7
7
  export { serializeState } from './serializer.js';
8
8
  export { extractFromToolCall, extractFromToolResult, extractFromUserMessage, extractFromAssistantMessage, } from './extractor.js';
9
9
  export { buildVerifiedSummary } from './verifier.js';
10
- export { findDanglingMessages, removeDanglingMessages, findSafeTrimIndex, } from './dangling.js';
10
+ export type { CompactionVerificationOptions } from './verifier.js';
11
+ export { findDanglingMessages, findSafeTrimIndex, removeDanglingMessages, repairToolMessageHistory, toolHistoryRepairChanged, } from './dangling.js';
11
12
  export { findRetainedIndices } from './retention.js';
12
13
  export { NullManager, SlidingWindowManager, StructuredCompactionManager } from './managers/index.js';
13
14
  export { createConversationManager } from './factory.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compaction/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,cAAc,EACd,kBAAkB,GAClB,MAAM,YAAY,CAAA;AAEnB,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEnD,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AACzD,YAAY,EACX,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,GACpB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,GAC3B,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAEpD,OAAO,EACN,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,GACjB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AAEpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EACN,8BAA8B,EAC9B,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAEhE,OAAO,EACN,qBAAqB,EACrB,mBAAmB,EACnB,gCAAgC,EAChC,0BAA0B,GAC1B,MAAM,0BAA0B,CAAA;AACjC,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAI3F,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACvD,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACxF,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compaction/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,cAAc,EACd,kBAAkB,GAClB,MAAM,YAAY,CAAA;AAEnB,YAAY,EACX,cAAc,EACd,uBAAuB,EACvB,uBAAuB,GACvB,MAAM,eAAe,CAAA;AAEtB,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AACzD,YAAY,EACX,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,GACpB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,GAC3B,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,YAAY,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAA;AAElE,OAAO,EACN,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,GACxB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AAEpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EACN,8BAA8B,EAC9B,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAEhE,OAAO,EACN,qBAAqB,EACrB,mBAAmB,EACnB,gCAAgC,EAChC,0BAA0B,GAC1B,MAAM,0BAA0B,CAAA;AACjC,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAI3F,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACvD,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACxF,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA"}
@@ -3,7 +3,7 @@ export { WorkingStateManager } from './manager.js';
3
3
  export { serializeState } from './serializer.js';
4
4
  export { extractFromToolCall, extractFromToolResult, extractFromUserMessage, extractFromAssistantMessage, } from './extractor.js';
5
5
  export { buildVerifiedSummary } from './verifier.js';
6
- export { findDanglingMessages, removeDanglingMessages, findSafeTrimIndex, } from './dangling.js';
6
+ export { findDanglingMessages, findSafeTrimIndex, removeDanglingMessages, repairToolMessageHistory, toolHistoryRepairChanged, } from './dangling.js';
7
7
  export { findRetainedIndices } from './retention.js';
8
8
  export { NullManager, SlidingWindowManager, StructuredCompactionManager } from './managers/index.js';
9
9
  export { createConversationManager } from './factory.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compaction/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AAQzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,GAC3B,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAEpD,OAAO,EACN,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,GACjB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AAEpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EACN,8BAA8B,EAC9B,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EACN,qBAAqB,EACrB,mBAAmB,EACnB,gCAAgC,EAChC,0BAA0B,GAC1B,MAAM,0BAA0B,CAAA;AAGjC,4EAA4E;AAC5E,6EAA6E;AAC7E,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEvD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compaction/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AAQzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,GAC3B,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAGpD,OAAO,EACN,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,GACxB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AAEpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EACN,8BAA8B,EAC9B,mBAAmB,EACnB,oBAAoB,GACpB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EACN,qBAAqB,EACrB,mBAAmB,EACnB,gCAAgC,EAChC,0BAA0B,GAC1B,MAAM,0BAA0B,CAAA;AAGjC,4EAA4E;AAC5E,6EAA6E;AAC7E,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEvD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA"}
@@ -1,6 +1,8 @@
1
1
  import type { CompactionConfig } from '../config/runtime.js';
2
+ import { type TokenUsage } from '../types/common/index.js';
2
3
  import type { Message } from '../types/message/index.js';
3
4
  import type { LLMProvider } from '../types/provider/index.js';
5
+ import { type CompactionVerificationOptions } from './verifier.js';
4
6
  /**
5
7
  * Compaction a host can ask for, rather than one that only happens to it.
6
8
  *
@@ -21,8 +23,16 @@ export interface CompactionResult {
21
23
  readonly shed: number;
22
24
  /** The summary that replaced them, as it appears in `messages`. */
23
25
  readonly summary: Message;
26
+ /**
27
+ * Tokens spent by this host-triggered pass's optional verifier call.
28
+ *
29
+ * A zero record means no verifier model call ran. The manual path has no
30
+ * `RunManager` to account for side-channel usage, so returning it is the
31
+ * only way a host can include that real provider work in its own ledger.
32
+ */
33
+ readonly usage: TokenUsage;
24
34
  }
25
- export interface CompactNowInput {
35
+ export interface CompactNowInput extends CompactionVerificationOptions {
26
36
  readonly messages: readonly Message[];
27
37
  readonly config: CompactionConfig;
28
38
  readonly provider: LLMProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"manual.d.ts","sourceRoot":"","sources":["../../src/compaction/manual.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAQ7D;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,gBAAgB;IAChC,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;IACrC,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAA;IACjC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAA;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;CACrC;AAkBD;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CA+BzF;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IAC1D,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,4CAA4C;IAC5C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CA4D/F"}
1
+ {"version":3,"file":"manual.d.ts","sourceRoot":"","sources":["../../src/compaction/manual.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAG5D,OAAO,EAAE,KAAK,UAAU,EAAwB,MAAM,0BAA0B,CAAA;AAGhF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAa7D,OAAO,EAAE,KAAK,6BAA6B,EAAwB,MAAM,eAAe,CAAA;AAExF;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,gBAAgB;IAChC,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;IACrC,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;CAC1B;AAED,MAAM,WAAW,eAAgB,SAAQ,6BAA6B;IACrE,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAA;IACjC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAA;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;CACrC;AAsED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAkDzF;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IAC1D,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,4CAA4C;IAC5C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CA6E/F"}
@@ -1,18 +1,62 @@
1
+ import { EMPTY_TOKEN_USAGE } from '../constants/limits.js';
2
+ import { resolveStreamIdleTimeoutMs } from '../provider/idle-timeout.js';
3
+ import { accumulateTokenUsage } from '../types/common/index.js';
1
4
  import { NamzuError } from '../types/errors/index.js';
5
+ import { toolResultToText } from '../types/message/content.js';
2
6
  import { resolveContextWindow } from './context-window.js';
3
7
  import { findDanglingMessages, findSafeTrimIndex } from './dangling.js';
8
+ import { extractFromAssistantMessage, extractFromToolCall, extractFromToolResult, extractFromUserMessage, } from './extractor.js';
4
9
  import { WorkingStateManager } from './manager.js';
5
10
  import { planCompaction } from './plan.js';
11
+ import { findRetainedIndices } from './retention.js';
6
12
  import { buildCompactionMessage, isCompactionMessage } from './summary.js';
7
13
  import { buildVerifiedSummary } from './verifier.js';
14
+ function admitManualCompaction(input) {
15
+ input.signal?.throwIfAborted();
16
+ // Validate at the public boundary even when the history is too short to
17
+ // call the verifier. A malformed liveness policy is not a successful no-op.
18
+ resolveStreamIdleTimeoutMs(input.streamIdleTimeoutMs);
19
+ }
8
20
  /** Assembles the new history from a plan's partition plus its summary. */
9
- function splice(systemMessages, summaryBody, recentMessages) {
10
- const summary = buildCompactionMessage(summaryBody);
11
- // Any PRIOR summary is dropped: the state a summary is built from is
12
- // cumulative, so a new one supersedes it. Without this the never-trimmed
13
- // floor accumulates one redundant block per pass, unbounded.
14
- const preserved = systemMessages.filter((m) => !isCompactionMessage(typeof m.content === 'string' ? m.content : null));
15
- return { messages: [...preserved, summary, ...recentMessages], summary };
21
+ function preservedSystemFloor(systemMessages) {
22
+ // A replaceable in-run summary may be superseded. A pinned summary may not:
23
+ // `retain` is the public promise that compaction leaves the message alone,
24
+ // and a prior manual summary is opaque state rather than redundant prose.
25
+ return systemMessages.filter((m) => !isCompactionMessage(typeof m.content === 'string' ? m.content : null) || m.retain === true);
26
+ }
27
+ function splice(preservedSystem, summaryBody, retainedOlder, recentMessages) {
28
+ // A host-triggered pass has no run-scoped WorkingStateManager to carry the
29
+ // summary into a later query. Pin this summary itself: until a future run
30
+ // has rebuilt equivalent state, this message is the only surviving record
31
+ // of what the pass removed.
32
+ const summary = { ...buildCompactionMessage(summaryBody), retain: true };
33
+ return { messages: [...preservedSystem, summary, ...retainedOlder, ...recentMessages], summary };
34
+ }
35
+ /** Build the state a host-triggered pass is about to replace. */
36
+ function populateWorkingState(manager, messages, config) {
37
+ let firstUser = true;
38
+ const toolNames = new Map();
39
+ for (const message of messages) {
40
+ switch (message.role) {
41
+ case 'user':
42
+ extractFromUserMessage(manager, message.content, firstUser);
43
+ firstUser = false;
44
+ break;
45
+ case 'assistant':
46
+ if (message.content)
47
+ extractFromAssistantMessage(manager, message.content, config);
48
+ for (const call of message.toolCalls ?? []) {
49
+ toolNames.set(call.id, call.function.name);
50
+ extractFromToolCall(manager, call.function.name, call.function.arguments);
51
+ }
52
+ break;
53
+ case 'tool':
54
+ extractFromToolResult(manager, toolNames.get(message.toolCallId) ?? 'tool', toolResultToText(message.content), message.isError === true);
55
+ break;
56
+ case 'system':
57
+ break;
58
+ }
59
+ }
16
60
  }
17
61
  /**
18
62
  * Compact a history now, whatever its size.
@@ -23,6 +67,7 @@ function splice(systemMessages, summaryBody, recentMessages) {
23
67
  * logged as a successful pass and shown to a user as work done.
24
68
  */
25
69
  export async function compactNow(input) {
70
+ admitManualCompaction(input);
26
71
  const window = resolveContextWindow(input.contextWindowTokens ?? input.config.contextWindowTokens, input.model);
27
72
  // `force` because a host asked. The threshold exists to decide whether an
28
73
  // automatic pass is worth its model call; somebody clicking "compact"
@@ -33,14 +78,28 @@ export async function compactNow(input) {
33
78
  contextWindowTokens: window.tokens,
34
79
  estimatedTokens: window.tokens,
35
80
  force: true,
81
+ allowNoSystemFloor: true,
36
82
  skipToolResultClear: true,
37
83
  });
38
84
  if (plan.kind !== 'plan')
39
85
  return null;
86
+ const retained = findRetainedIndices(input.messages);
87
+ const retainedOlder = plan.olderMessages.filter((_, offset) => retained.has(plan.systemMessages.length + offset));
88
+ const preservedSystem = preservedSystemFloor(plan.systemMessages);
89
+ const projectedLength = preservedSystem.length + 1 + retainedOlder.length + plan.recentMessages.length;
90
+ // Decide before building a summary (and before a possible verifier call).
91
+ // A pinned older message remains verbatim, so replacing one removable
92
+ // message with one summary has shed nothing and must be reported as a no-op.
93
+ if (input.messages.length - projectedLength < 1)
94
+ return null;
40
95
  const manager = new WorkingStateManager(input.config);
41
- const body = await buildVerifiedSummary(manager, [...plan.olderMessages], input.provider, input.config, undefined, input.model ?? '');
42
- const { messages, summary } = splice(plan.systemMessages, body, plan.recentMessages);
43
- return { messages, shed: input.messages.length - messages.length, summary };
96
+ populateWorkingState(manager, plan.olderMessages, input.config);
97
+ let usage = { ...EMPTY_TOKEN_USAGE };
98
+ const body = await buildVerifiedSummary(manager, [...plan.olderMessages], input.provider, input.config, (reported) => {
99
+ usage = accumulateTokenUsage(usage, reported);
100
+ }, input.model ?? '', { signal: input.signal, streamIdleTimeoutMs: input.streamIdleTimeoutMs });
101
+ const { messages, summary } = splice(preservedSystem, body, retainedOlder, plan.recentMessages);
102
+ return { messages, shed: input.messages.length - messages.length, summary, usage };
44
103
  }
45
104
  /**
46
105
  * Compact exactly the span a host chose, or refuse.
@@ -53,6 +112,7 @@ export async function compactNow(input) {
53
112
  * the caller can move it themselves.
54
113
  */
55
114
  export async function compactRegion(input) {
115
+ admitManualCompaction(input);
56
116
  const { messages, start, end } = input;
57
117
  if (!Number.isInteger(start) || !Number.isInteger(end) || start < 0 || end > messages.length) {
58
118
  throw new NamzuError({
@@ -82,10 +142,25 @@ export async function compactRegion(input) {
82
142
  });
83
143
  }
84
144
  }
145
+ const retained = findRetainedIndices(messages);
146
+ const retainedSelected = messages
147
+ .slice(start, end)
148
+ .filter((_, offset) => retained.has(start + offset));
149
+ // The replacement summary itself costs one slot. If the selected region
150
+ // contains no additional removable message, the honest result is a no-op
151
+ // and no verifier/provider work is authorized.
152
+ if (end - start - retainedSelected.length - 1 < 1)
153
+ return null;
85
154
  const manager = new WorkingStateManager(input.config);
86
- const body = await buildVerifiedSummary(manager, messages.slice(start, end), input.provider, input.config, undefined, input.model ?? '');
87
- const summary = buildCompactionMessage(body);
88
- const out = [...messages.slice(0, start), summary, ...messages.slice(end)];
155
+ populateWorkingState(manager, messages.slice(start, end), input.config);
156
+ let usage = { ...EMPTY_TOKEN_USAGE };
157
+ const body = await buildVerifiedSummary(manager, messages.slice(start, end), input.provider, input.config, (reported) => {
158
+ usage = accumulateTokenUsage(usage, reported);
159
+ }, input.model ?? '', { signal: input.signal, streamIdleTimeoutMs: input.streamIdleTimeoutMs });
160
+ // Same cross-run ownership as compactNow: a selected region has been
161
+ // replaced outside a run, so its only surviving account is pinned.
162
+ const summary = { ...buildCompactionMessage(body), retain: true };
163
+ const out = [...messages.slice(0, start), summary, ...retainedSelected, ...messages.slice(end)];
89
164
  // Checked after the splice, not only before it. The edges being
90
165
  // individually safe does not make the RESULT valid — a span whose
91
166
  // interior held one half of a pair straddling `start` would pass both
@@ -99,6 +174,6 @@ export async function compactRegion(input) {
99
174
  retryable: false,
100
175
  });
101
176
  }
102
- return { messages: out, shed: messages.length - out.length, summary };
177
+ return { messages: out, shed: messages.length - out.length, summary, usage };
103
178
  }
104
179
  //# sourceMappingURL=manual.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manual.js","sourceRoot":"","sources":["../../src/compaction/manual.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manual.js","sourceRoot":"","sources":["../../src/compaction/manual.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@ import type { Message } from '../types/message/index.js';
25
25
  export type CompactionSkipReason =
26
26
  /** Fewer messages than the recent window plus a floor — nothing to move. */
27
27
  'too_few_messages'
28
- /** No leading `system` message, so there is no permanent floor to keep. */
28
+ /** An in-run pass has no leading `system` message to use as its permanent floor. */
29
29
  | 'no_system_floor'
30
30
  /** Every candidate boundary would split a tool-call pair. */
31
31
  | 'no_safe_cut'
@@ -54,14 +54,27 @@ export interface CompactionPlanInput {
54
54
  readonly contextWindowTokens: number;
55
55
  readonly estimatedTokens: number;
56
56
  readonly force?: boolean;
57
+ /**
58
+ * Let a host-created pass establish its own retained summary floor.
59
+ *
60
+ * This is deliberately separate from `force`: a provider overflow can
61
+ * force the threshold decision without changing the live run's prompt
62
+ * invariant, while a host may own a durable user/assistant-only history
63
+ * that has no system floor yet.
64
+ */
65
+ readonly allowNoSystemFloor?: boolean;
57
66
  /**
58
67
  * Skip the tool-result pre-pass and go straight to the boundary search.
59
68
  *
60
- * The two steps are sequential in a real pass: clear first, install the
61
- * result, and if that was not enough relief, plan a cut over the history
62
- * you just edited. Returning both from one call would mean nesting a
63
- * union inside a union and computing a boundary the caller may never
64
- * use; asking twice says what is happening.
69
+ * The two steps are sequential in a real pass: ask once for a cleared
70
+ * candidate and, if that was not enough relief, ask again for a cut over
71
+ * that candidate. The caller need not install the first answer before the
72
+ * second question. In fact the live runtime deliberately stages an
73
+ * insufficient clear until summary verification succeeds, then publishes
74
+ * the combined edit atomically. Returning both from one call would mean
75
+ * nesting a union inside a union and computing a boundary the caller may
76
+ * never use; asking twice says what is happening without prescribing when
77
+ * an effect becomes visible.
65
78
  */
66
79
  readonly skipToolResultClear?: boolean;
67
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/compaction/plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAIxD;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,wCAAwC;AACxC,MAAM,MAAM,oBAAoB;AAC/B,4EAA4E;AAC1E,kBAAkB;AACpB,2EAA2E;GACzE,iBAAiB;AACnB,6DAA6D;GAC3D,aAAa;AACf,oEAAoE;GAClE,eAAe,CAAA;AAElB,MAAM,MAAM,cAAc,GACvB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAA;CAAE,GAChE;IACA,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;CAChC,GACD;IACA,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,cAAc,EAAE,SAAS,OAAO,EAAE,CAAA;IAC3C,QAAQ,CAAC,aAAa,EAAE,SAAS,OAAO,EAAE,CAAA;IAC1C,QAAQ,CAAC,cAAc,EAAE,SAAS,OAAO,EAAE,CAAA;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CACzB,CAAA;AAEJ,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAA;IACjC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;IACpC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;IACxB;;;;;;;;OAQG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CACtC;AAoBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAajG;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc,CA8FzE;AAED;;;GAGG;AACH,eAAO,MAAM,6BAA6B,IAAI,CAAA"}
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/compaction/plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAIxD;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,wCAAwC;AACxC,MAAM,MAAM,oBAAoB;AAC/B,4EAA4E;AAC1E,kBAAkB;AACpB,oFAAoF;GAClF,iBAAiB;AACnB,6DAA6D;GAC3D,aAAa;AACf,oEAAoE;GAClE,eAAe,CAAA;AAElB,MAAM,MAAM,cAAc,GACvB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAA;CAAE,GAChE;IACA,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;CAChC,GACD;IACA,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,cAAc,EAAE,SAAS,OAAO,EAAE,CAAA;IAC3C,QAAQ,CAAC,aAAa,EAAE,SAAS,OAAO,EAAE,CAAA;IAC1C,QAAQ,CAAC,cAAc,EAAE,SAAS,OAAO,EAAE,CAAA;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CACzB,CAAA;AAEJ,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAA;IACjC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;IACpC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;IACxB;;;;;;;OAOG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;IACrC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CACtC;AAoBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAajG;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc,CAgHzE;AAED;;;GAGG;AACH,eAAO,MAAM,6BAA6B,IAAI,CAAA"}
@@ -85,17 +85,31 @@ export function planCompaction(input) {
85
85
  }
86
86
  }
87
87
  const messages = input.messages;
88
- if (messages.length < config.keepRecentMessages + 2) {
89
- return { kind: 'skip', reason: 'too_few_messages' };
90
- }
91
88
  const systemMessages = [];
92
89
  for (const msg of messages) {
93
90
  if (msg.role !== 'system')
94
91
  break;
95
92
  systemMessages.push(msg);
96
93
  }
97
- if (systemMessages.length === 0)
94
+ // Count and token retention are different boundary policies. In count
95
+ // mode the configured tail plus one older message must fit after the
96
+ // floor. Token mode does not consult keepRecentMessages at all; it only
97
+ // needs one older and one recent message before the token walk and safe
98
+ // boundary search can make the real decision.
99
+ //
100
+ // Preserve the old short-history ordering for a run with no floor: until
101
+ // a host explicitly allows a floorless pass, one notional system message
102
+ // remains part of the admission minimum and `no_system_floor` follows it.
103
+ const floorForAdmission = systemMessages.length > 0 ? systemMessages.length : input.allowNoSystemFloor ? 0 : 1;
104
+ const minimumMessages = config.keepRecentTokens === undefined
105
+ ? floorForAdmission + config.keepRecentMessages + 1
106
+ : floorForAdmission + 2;
107
+ if (messages.length < minimumMessages) {
108
+ return { kind: 'skip', reason: 'too_few_messages' };
109
+ }
110
+ if (systemMessages.length === 0 && !input.allowNoSystemFloor) {
98
111
  return { kind: 'skip', reason: 'no_system_floor' };
112
+ }
99
113
  // Tool-pair atomicity. A naive cut at `length - keepRecentMessages` can
100
114
  // land BETWEEN an assistant-with-toolCalls (dropped into `older`) and its
101
115
  // `tool` results (kept in `recent`), leaving orphaned `tool_result`