@namzu/sdk 42.0.2 → 44.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 (2100) hide show
  1. package/CHANGELOG.md +540 -0
  2. package/README.md +41 -34
  3. package/dist/advisory/budget.js +3 -3
  4. package/dist/advisory/budget.js.map +1 -1
  5. package/dist/advisory/context.d.ts +5 -5
  6. package/dist/advisory/context.d.ts.map +1 -1
  7. package/dist/advisory/context.js +6 -6
  8. package/dist/advisory/context.js.map +1 -1
  9. package/dist/advisory/evaluator.js +2 -2
  10. package/dist/advisory/evaluator.js.map +1 -1
  11. package/dist/advisory/parse.d.ts +1 -1
  12. package/dist/advisory/parse.js +1 -1
  13. package/dist/agents/AbstractAgent.d.ts +47 -40
  14. package/dist/agents/AbstractAgent.d.ts.map +1 -1
  15. package/dist/agents/AbstractAgent.js +60 -46
  16. package/dist/agents/AbstractAgent.js.map +1 -1
  17. package/dist/agents/PipelineAgent.d.ts +7 -7
  18. package/dist/agents/PipelineAgent.d.ts.map +1 -1
  19. package/dist/agents/PipelineAgent.js +75 -23
  20. package/dist/agents/PipelineAgent.js.map +1 -1
  21. package/dist/agents/ReactiveAgent.d.ts +7 -7
  22. package/dist/agents/ReactiveAgent.d.ts.map +1 -1
  23. package/dist/agents/ReactiveAgent.js +32 -25
  24. package/dist/agents/ReactiveAgent.js.map +1 -1
  25. package/dist/agents/RouterAgent.d.ts +7 -7
  26. package/dist/agents/RouterAgent.d.ts.map +1 -1
  27. package/dist/agents/RouterAgent.js +29 -32
  28. package/dist/agents/RouterAgent.js.map +1 -1
  29. package/dist/agents/SupervisorAgent.d.ts +13 -10
  30. package/dist/agents/SupervisorAgent.d.ts.map +1 -1
  31. package/dist/agents/SupervisorAgent.js +50 -36
  32. package/dist/agents/SupervisorAgent.js.map +1 -1
  33. package/dist/agents/budget.d.ts +17 -4
  34. package/dist/agents/budget.d.ts.map +1 -1
  35. package/dist/agents/budget.js +55 -14
  36. package/dist/agents/budget.js.map +1 -1
  37. package/dist/agents/defineAgent.d.ts +2 -2
  38. package/dist/agents/defineAgent.d.ts.map +1 -1
  39. package/dist/agents/defineAgent.js.map +1 -1
  40. package/dist/agents/handle.d.ts +12 -14
  41. package/dist/agents/handle.d.ts.map +1 -1
  42. package/dist/agents/handle.js +6 -6
  43. package/dist/agents/handle.js.map +1 -1
  44. package/dist/agents/lock.js +4 -4
  45. package/dist/agents/lock.js.map +1 -1
  46. package/dist/agents/runAgent.d.ts +42 -29
  47. package/dist/agents/runAgent.d.ts.map +1 -1
  48. package/dist/agents/runAgent.js +53 -14
  49. package/dist/agents/runAgent.js.map +1 -1
  50. package/dist/agents/storage.d.ts +21 -0
  51. package/dist/agents/storage.d.ts.map +1 -0
  52. package/dist/agents/storage.js +33 -0
  53. package/dist/agents/storage.js.map +1 -0
  54. package/dist/authorization/command-line.d.ts +1 -1
  55. package/dist/authorization/command-line.js +1 -1
  56. package/dist/authorization/gate.js +1 -1
  57. package/dist/authorization/gate.js.map +1 -1
  58. package/dist/authorization/permission-presets.d.ts +4 -4
  59. package/dist/authorization/permission-presets.d.ts.map +1 -1
  60. package/dist/authorization/permission-presets.js +2 -2
  61. package/dist/bridge/a2a/client.d.ts +1 -1
  62. package/dist/bridge/a2a/client.js +2 -2
  63. package/dist/bridge/a2a/client.js.map +1 -1
  64. package/dist/bridge/a2a/context.d.ts +26 -0
  65. package/dist/bridge/a2a/context.d.ts.map +1 -0
  66. package/dist/bridge/a2a/context.js +20 -0
  67. package/dist/bridge/a2a/context.js.map +1 -0
  68. package/dist/bridge/a2a/index.d.ts +4 -2
  69. package/dist/bridge/a2a/index.d.ts.map +1 -1
  70. package/dist/bridge/a2a/index.js +6 -2
  71. package/dist/bridge/a2a/index.js.map +1 -1
  72. package/dist/bridge/a2a/mapper.d.ts +12 -4
  73. package/dist/bridge/a2a/mapper.d.ts.map +1 -1
  74. package/dist/bridge/a2a/mapper.js +38 -31
  75. package/dist/bridge/a2a/mapper.js.map +1 -1
  76. package/dist/bridge/a2a/task.d.ts +39 -7
  77. package/dist/bridge/a2a/task.d.ts.map +1 -1
  78. package/dist/bridge/a2a/task.js +52 -31
  79. package/dist/bridge/a2a/task.js.map +1 -1
  80. package/dist/bridge/acp/permission.d.ts +2 -2
  81. package/dist/bridge/acp/server.d.ts +22 -8
  82. package/dist/bridge/acp/server.d.ts.map +1 -1
  83. package/dist/bridge/acp/server.js +18 -5
  84. package/dist/bridge/acp/server.js.map +1 -1
  85. package/dist/bridge/acp/update.d.ts +4 -4
  86. package/dist/bridge/acp/update.d.ts.map +1 -1
  87. package/dist/bridge/acp/update.js +6 -6
  88. package/dist/bridge/acp/update.js.map +1 -1
  89. package/dist/bridge/external-session.d.ts +43 -0
  90. package/dist/bridge/external-session.d.ts.map +1 -0
  91. package/dist/bridge/external-session.js +28 -0
  92. package/dist/bridge/external-session.js.map +1 -0
  93. package/dist/bridge/sse/index.d.ts +1 -1
  94. package/dist/bridge/sse/index.d.ts.map +1 -1
  95. package/dist/bridge/sse/index.js +1 -1
  96. package/dist/bridge/sse/index.js.map +1 -1
  97. package/dist/bridge/sse/mapper.d.ts +21 -13
  98. package/dist/bridge/sse/mapper.d.ts.map +1 -1
  99. package/dist/bridge/sse/mapper.js +99 -129
  100. package/dist/bridge/sse/mapper.js.map +1 -1
  101. package/dist/bus/breaker.d.ts +6 -6
  102. package/dist/bus/breaker.d.ts.map +1 -1
  103. package/dist/bus/breaker.js +28 -27
  104. package/dist/bus/breaker.js.map +1 -1
  105. package/dist/bus/index.d.ts +2 -2
  106. package/dist/bus/index.d.ts.map +1 -1
  107. package/dist/bus/index.js +6 -6
  108. package/dist/bus/index.js.map +1 -1
  109. package/dist/bus/lock.d.ts +5 -5
  110. package/dist/bus/lock.d.ts.map +1 -1
  111. package/dist/bus/lock.js.map +1 -1
  112. package/dist/bus/ownership.d.ts +8 -8
  113. package/dist/bus/ownership.d.ts.map +1 -1
  114. package/dist/bus/ownership.js.map +1 -1
  115. package/dist/compaction/consolidation.d.ts +23 -11
  116. package/dist/compaction/consolidation.d.ts.map +1 -1
  117. package/dist/compaction/consolidation.js +43 -13
  118. package/dist/compaction/consolidation.js.map +1 -1
  119. package/dist/compaction/context-window.d.ts +4 -4
  120. package/dist/compaction/context-window.js +4 -4
  121. package/dist/compaction/index.d.ts +1 -1
  122. package/dist/compaction/index.d.ts.map +1 -1
  123. package/dist/compaction/index.js +2 -2
  124. package/dist/compaction/index.js.map +1 -1
  125. package/dist/compaction/manager.d.ts +4 -4
  126. package/dist/compaction/manager.js +4 -4
  127. package/dist/compaction/manual.d.ts +2 -2
  128. package/dist/compaction/manual.js +3 -3
  129. package/dist/compaction/manual.js.map +1 -1
  130. package/dist/compaction/plan.d.ts +5 -5
  131. package/dist/compaction/plan.js +4 -4
  132. package/dist/compaction/plan.js.map +1 -1
  133. package/dist/compaction/reducer.d.ts +8 -8
  134. package/dist/compaction/reducer.d.ts.map +1 -1
  135. package/dist/compaction/retention.js +2 -2
  136. package/dist/compaction/salience/bm25.d.ts +2 -2
  137. package/dist/compaction/salience/bm25.js +2 -2
  138. package/dist/compaction/salience/goal.d.ts +3 -3
  139. package/dist/compaction/salience/goal.js +3 -3
  140. package/dist/compaction/salience/minhash.d.ts +1 -1
  141. package/dist/compaction/salience/minhash.js +1 -1
  142. package/dist/compaction/salience/score.d.ts +2 -2
  143. package/dist/compaction/salience/score.js +3 -3
  144. package/dist/compaction/salience/score.js.map +1 -1
  145. package/dist/compaction/salience/tokenize.d.ts +1 -1
  146. package/dist/compaction/salience/tokenize.js +1 -1
  147. package/dist/compaction/verifier.d.ts +6 -6
  148. package/dist/compaction/verifier.js +5 -5
  149. package/dist/compaction/verifier.js.map +1 -1
  150. package/dist/compaction/wire.d.ts +1 -1
  151. package/dist/config/registry.d.ts +4 -4
  152. package/dist/config/registry.js +2 -2
  153. package/dist/config/runtime.d.ts +24 -24
  154. package/dist/config/runtime.js +3 -3
  155. package/dist/connector/http-operation.d.ts +1 -1
  156. package/dist/connector/http-operation.js +1 -1
  157. package/dist/connector/mcp/adapter.js +1 -1
  158. package/dist/connector/mcp/client.d.ts +1 -1
  159. package/dist/connector/mcp/client.js +1 -1
  160. package/dist/connector/mcp/discovery.d.ts +1 -1
  161. package/dist/connector/mcp/discovery.js +1 -1
  162. package/dist/connector/mcp/discovery.js.map +1 -1
  163. package/dist/connector/mcp/policy.d.ts +1 -1
  164. package/dist/connector/mcp/prompt-adapter.d.ts +1 -1
  165. package/dist/connector/mcp/prompt-adapter.js +3 -3
  166. package/dist/connector/mcp/prompt-adapter.js.map +1 -1
  167. package/dist/constants/a2a/index.d.ts +8 -2
  168. package/dist/constants/a2a/index.d.ts.map +1 -1
  169. package/dist/constants/a2a/index.js +9 -2
  170. package/dist/constants/a2a/index.js.map +1 -1
  171. package/dist/constants/continuation.d.ts +1 -1
  172. package/dist/constants/continuation.js +1 -1
  173. package/dist/constants/index.d.ts +0 -1
  174. package/dist/constants/index.d.ts.map +1 -1
  175. package/dist/constants/index.js +0 -1
  176. package/dist/constants/index.js.map +1 -1
  177. package/dist/constants/limits.d.ts +2 -2
  178. package/dist/constants/limits.js +2 -2
  179. package/dist/constants/telemetry/index.d.ts +9 -3
  180. package/dist/constants/telemetry/index.d.ts.map +1 -1
  181. package/dist/constants/telemetry/index.js +14 -12
  182. package/dist/constants/telemetry/index.js.map +1 -1
  183. package/dist/constants/tools/index.d.ts +2 -2
  184. package/dist/constants/tools/index.js +2 -2
  185. package/dist/contracts/a2a.d.ts +2 -2
  186. package/dist/contracts/api.d.ts +11 -126
  187. package/dist/contracts/api.d.ts.map +1 -1
  188. package/dist/contracts/index.d.ts +3 -2
  189. package/dist/contracts/index.d.ts.map +1 -1
  190. package/dist/contracts/index.js +7 -2
  191. package/dist/contracts/index.js.map +1 -1
  192. package/dist/contracts/schemas.d.ts +6 -165
  193. package/dist/contracts/schemas.d.ts.map +1 -1
  194. package/dist/contracts/schemas.js +6 -36
  195. package/dist/contracts/schemas.js.map +1 -1
  196. package/dist/contracts/session/api.d.ts +94 -0
  197. package/dist/contracts/session/api.d.ts.map +1 -0
  198. package/dist/contracts/session/api.js +10 -0
  199. package/dist/contracts/session/api.js.map +1 -0
  200. package/dist/contracts/session/index.d.ts +7 -0
  201. package/dist/contracts/session/index.d.ts.map +1 -0
  202. package/dist/contracts/session/index.js +7 -0
  203. package/dist/contracts/session/index.js.map +1 -0
  204. package/dist/contracts/session/schemas.d.ts +173 -0
  205. package/dist/contracts/session/schemas.d.ts.map +1 -0
  206. package/dist/contracts/session/schemas.js +52 -0
  207. package/dist/contracts/session/schemas.js.map +1 -0
  208. package/dist/contracts/session/turn-status.d.ts +45 -0
  209. package/dist/contracts/session/turn-status.d.ts.map +1 -0
  210. package/dist/contracts/session/turn-status.js +46 -0
  211. package/dist/contracts/session/turn-status.js.map +1 -0
  212. package/dist/contracts/session/turn.d.ts +64 -0
  213. package/dist/contracts/session/turn.d.ts.map +1 -0
  214. package/dist/contracts/session/turn.js +2 -0
  215. package/dist/contracts/session/turn.js.map +1 -0
  216. package/dist/directory/derive-supervisor.d.ts +1 -1
  217. package/dist/directory/derive-supervisor.js +2 -2
  218. package/dist/directory/derive-supervisor.js.map +1 -1
  219. package/dist/directory/derive.d.ts +2 -2
  220. package/dist/directory/derive.d.ts.map +1 -1
  221. package/dist/directory/derive.js +2 -2
  222. package/dist/directory/derive.js.map +1 -1
  223. package/dist/directory/index.d.ts +2 -2
  224. package/dist/directory/index.d.ts.map +1 -1
  225. package/dist/directory/index.js +1 -1
  226. package/dist/directory/index.js.map +1 -1
  227. package/dist/directory/load.js +2 -2
  228. package/dist/directory/load.js.map +1 -1
  229. package/dist/directory/types.d.ts +2 -2
  230. package/dist/directory/types.d.ts.map +1 -1
  231. package/dist/eval/experiment.d.ts +5 -5
  232. package/dist/eval/experiment.d.ts.map +1 -1
  233. package/dist/eval/experiment.js +18 -18
  234. package/dist/eval/experiment.js.map +1 -1
  235. package/dist/eval/from-turn.d.ts +30 -0
  236. package/dist/eval/from-turn.d.ts.map +1 -0
  237. package/dist/eval/from-turn.js +46 -0
  238. package/dist/eval/from-turn.js.map +1 -0
  239. package/dist/eval/harness-verification.js +7 -7
  240. package/dist/eval/harness-verification.js.map +1 -1
  241. package/dist/eval/index.d.ts +2 -2
  242. package/dist/eval/index.d.ts.map +1 -1
  243. package/dist/eval/index.js +1 -1
  244. package/dist/eval/index.js.map +1 -1
  245. package/dist/eval/judge.d.ts +3 -3
  246. package/dist/eval/judge.d.ts.map +1 -1
  247. package/dist/eval/judge.js +6 -6
  248. package/dist/eval/judge.js.map +1 -1
  249. package/dist/eval/scorers.d.ts +8 -8
  250. package/dist/eval/scorers.d.ts.map +1 -1
  251. package/dist/eval/scorers.js +21 -21
  252. package/dist/eval/scorers.js.map +1 -1
  253. package/dist/eval/types.d.ts +12 -12
  254. package/dist/eval/types.d.ts.map +1 -1
  255. package/dist/eval/uncertainty.d.ts +2 -2
  256. package/dist/eval/uncertainty.js +2 -2
  257. package/dist/execution/code-runtime/types.d.ts +4 -4
  258. package/dist/execution/code-runtime/types.js +2 -2
  259. package/dist/execution/code-runtime/worker.d.ts +1 -1
  260. package/dist/execution/code-runtime/worker.js +1 -1
  261. package/dist/invariants/index.d.ts +1 -1
  262. package/dist/manager/agent/child-session.d.ts +49 -0
  263. package/dist/manager/agent/child-session.d.ts.map +1 -0
  264. package/dist/manager/agent/child-session.js +94 -0
  265. package/dist/manager/agent/child-session.js.map +1 -0
  266. package/dist/manager/agent/lifecycle.d.ts +90 -13
  267. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  268. package/dist/manager/agent/lifecycle.js +332 -88
  269. package/dist/manager/agent/lifecycle.js.map +1 -1
  270. package/dist/manager/index.d.ts +1 -2
  271. package/dist/manager/index.d.ts.map +1 -1
  272. package/dist/manager/index.js +1 -2
  273. package/dist/manager/index.js.map +1 -1
  274. package/dist/manager/plan/lifecycle.d.ts +11 -7
  275. package/dist/manager/plan/lifecycle.d.ts.map +1 -1
  276. package/dist/manager/plan/lifecycle.js +12 -9
  277. package/dist/manager/plan/lifecycle.js.map +1 -1
  278. package/dist/manager/resident/consumption.d.ts +12 -6
  279. package/dist/manager/resident/consumption.d.ts.map +1 -1
  280. package/dist/manager/resident/consumption.js +7 -5
  281. package/dist/manager/resident/consumption.js.map +1 -1
  282. package/dist/manager/resident/evidence-recall.d.ts +5 -5
  283. package/dist/manager/resident/evidence-recall.d.ts.map +1 -1
  284. package/dist/manager/resident/evidence-recall.js +9 -9
  285. package/dist/manager/resident/evidence-recall.js.map +1 -1
  286. package/dist/manager/resident/host.d.ts +2 -2
  287. package/dist/manager/resident/host.d.ts.map +1 -1
  288. package/dist/manager/resident/host.js +1 -1
  289. package/dist/manager/resident/learning-cycle.d.ts +8 -4
  290. package/dist/manager/resident/learning-cycle.d.ts.map +1 -1
  291. package/dist/manager/resident/learning-cycle.js +4 -2
  292. package/dist/manager/resident/learning-cycle.js.map +1 -1
  293. package/dist/manager/resident/learning-observation.d.ts +12 -7
  294. package/dist/manager/resident/learning-observation.d.ts.map +1 -1
  295. package/dist/manager/resident/learning-observation.js +8 -4
  296. package/dist/manager/resident/learning-observation.js.map +1 -1
  297. package/dist/manager/resident/learning-store.d.ts +13 -0
  298. package/dist/manager/resident/learning-store.d.ts.map +1 -1
  299. package/dist/manager/resident/learning-store.js +35 -16
  300. package/dist/manager/resident/learning-store.js.map +1 -1
  301. package/dist/manager/resident/learning.d.ts +14 -14
  302. package/dist/manager/resident/outbox.d.ts +4 -4
  303. package/dist/manager/resident/store.d.ts +8 -8
  304. package/dist/manager/resident/tool-evidence.d.ts +15 -10
  305. package/dist/manager/resident/tool-evidence.d.ts.map +1 -1
  306. package/dist/manager/resident/tool-evidence.js +14 -14
  307. package/dist/manager/resident/tool-evidence.js.map +1 -1
  308. package/dist/manager/session/turn-recorder.d.ts +261 -0
  309. package/dist/manager/session/turn-recorder.d.ts.map +1 -0
  310. package/dist/manager/session/turn-recorder.js +1115 -0
  311. package/dist/manager/session/turn-recorder.js.map +1 -0
  312. package/dist/plugin/lifecycle.d.ts +4 -4
  313. package/dist/plugin/lifecycle.d.ts.map +1 -1
  314. package/dist/plugin/lifecycle.js +17 -10
  315. package/dist/plugin/lifecycle.js.map +1 -1
  316. package/dist/plugin/shell-hook.d.ts +35 -12
  317. package/dist/plugin/shell-hook.d.ts.map +1 -1
  318. package/dist/plugin/shell-hook.js +52 -20
  319. package/dist/plugin/shell-hook.js.map +1 -1
  320. package/dist/pricing/index.d.ts +4 -4
  321. package/dist/pricing/index.js +5 -5
  322. package/dist/pricing/index.js.map +1 -1
  323. package/dist/probe/context.d.ts +3 -2
  324. package/dist/probe/context.d.ts.map +1 -1
  325. package/dist/probe/context.js +2 -1
  326. package/dist/probe/context.js.map +1 -1
  327. package/dist/probe/registry.js +1 -1
  328. package/dist/probe/registry.js.map +1 -1
  329. package/dist/prompt/coding-agent-doctrine.d.ts +1 -1
  330. package/dist/prompt/coding-agent-doctrine.js +1 -1
  331. package/dist/prompt/contributions.d.ts +27 -6
  332. package/dist/prompt/contributions.d.ts.map +1 -1
  333. package/dist/prompt/contributions.js +1 -1
  334. package/dist/prompt/contributions.js.map +1 -1
  335. package/dist/prompt/resident-learning.js +2 -2
  336. package/dist/prompt/resident-learning.js.map +1 -1
  337. package/dist/provider/collect-chat-completion.d.ts +2 -2
  338. package/dist/provider/collect-chat-completion.js +3 -3
  339. package/dist/provider/collect-chat-completion.js.map +1 -1
  340. package/dist/provider/conformance.d.ts +8 -1
  341. package/dist/provider/conformance.d.ts.map +1 -1
  342. package/dist/provider/conformance.js +13 -1
  343. package/dist/provider/conformance.js.map +1 -1
  344. package/dist/provider/errors.d.ts +1 -1
  345. package/dist/provider/errors.js +2 -2
  346. package/dist/provider/fallback.d.ts +4 -4
  347. package/dist/provider/fallback.js +6 -6
  348. package/dist/provider/fallback.js.map +1 -1
  349. package/dist/provider/idle-timeout.d.ts +2 -2
  350. package/dist/provider/idle-timeout.d.ts.map +1 -1
  351. package/dist/provider/idle-timeout.js +3 -3
  352. package/dist/provider/idle-timeout.js.map +1 -1
  353. package/dist/provider/instrumentation.d.ts +5 -2
  354. package/dist/provider/instrumentation.d.ts.map +1 -1
  355. package/dist/provider/instrumentation.js +9 -5
  356. package/dist/provider/instrumentation.js.map +1 -1
  357. package/dist/provider/mock.d.ts +1 -1
  358. package/dist/provider/mock.js +1 -1
  359. package/dist/provider/retry.d.ts +2 -2
  360. package/dist/provider/retry.js +6 -6
  361. package/dist/provider/retry.js.map +1 -1
  362. package/dist/provider/stream-text.d.ts +1 -1
  363. package/dist/provider/stream-text.d.ts.map +1 -1
  364. package/dist/provider/stream-text.js +1 -1
  365. package/dist/provider/stream-text.js.map +1 -1
  366. package/dist/provider/thinking-support.js +2 -2
  367. package/dist/provider/thinking-support.js.map +1 -1
  368. package/dist/provider/token-budget.d.ts +2 -2
  369. package/dist/provider/token-budget.d.ts.map +1 -1
  370. package/dist/provider/token-budget.js.map +1 -1
  371. package/dist/public-runtime.d.ts +69 -55
  372. package/dist/public-runtime.d.ts.map +1 -1
  373. package/dist/public-runtime.js +104 -99
  374. package/dist/public-runtime.js.map +1 -1
  375. package/dist/public-tools.d.ts +2 -2
  376. package/dist/public-tools.d.ts.map +1 -1
  377. package/dist/public-tools.js +7 -7
  378. package/dist/public-tools.js.map +1 -1
  379. package/dist/public-types.d.ts +18 -16
  380. package/dist/public-types.d.ts.map +1 -1
  381. package/dist/rag/embedding.js +1 -1
  382. package/dist/rag/embedding.js.map +1 -1
  383. package/dist/read-model/index.d.ts +2 -2
  384. package/dist/read-model/index.d.ts.map +1 -1
  385. package/dist/read-model/index.js +1 -1
  386. package/dist/read-model/index.js.map +1 -1
  387. package/dist/read-model/registry.d.ts +11 -11
  388. package/dist/read-model/registry.d.ts.map +1 -1
  389. package/dist/read-model/registry.js +2 -2
  390. package/dist/read-model/registry.js.map +1 -1
  391. package/dist/read-model/session-status.d.ts +34 -0
  392. package/dist/read-model/session-status.d.ts.map +1 -0
  393. package/dist/read-model/session-status.js +58 -0
  394. package/dist/read-model/session-status.js.map +1 -0
  395. package/dist/registry/command/kernel-commands.d.ts +4 -4
  396. package/dist/registry/command/kernel-commands.d.ts.map +1 -1
  397. package/dist/registry/command/kernel-commands.js +6 -6
  398. package/dist/registry/command/kernel-commands.js.map +1 -1
  399. package/dist/registry/tool/dialect.js +1 -1
  400. package/dist/registry/tool/execute.d.ts +2 -2
  401. package/dist/registry/tool/execute.d.ts.map +1 -1
  402. package/dist/registry/tool/execute.js +19 -7
  403. package/dist/registry/tool/execute.js.map +1 -1
  404. package/dist/registry/tool/portable.d.ts +1 -1
  405. package/dist/registry/tool/portable.js +1 -1
  406. package/dist/registry/tool/presentation.d.ts +1 -1
  407. package/dist/registry/tool/presentation.js +1 -1
  408. package/dist/registry/tool/schema.js +1 -1
  409. package/dist/registry/tool/screen.js +3 -3
  410. package/dist/registry/tool/screen.js.map +1 -1
  411. package/dist/runtime/bidi/index.d.ts +2 -2
  412. package/dist/runtime/bidi/index.d.ts.map +1 -1
  413. package/dist/runtime/bidi/index.js +1 -1
  414. package/dist/runtime/bidi/index.js.map +1 -1
  415. package/dist/runtime/bidi/session.d.ts +14 -11
  416. package/dist/runtime/bidi/session.d.ts.map +1 -1
  417. package/dist/runtime/bidi/session.js +27 -21
  418. package/dist/runtime/bidi/session.js.map +1 -1
  419. package/dist/runtime/jobs/awaited-jobs.d.ts +15 -15
  420. package/dist/runtime/jobs/awaited-jobs.d.ts.map +1 -1
  421. package/dist/runtime/jobs/awaited-jobs.js +13 -13
  422. package/dist/runtime/jobs/awaited-jobs.js.map +1 -1
  423. package/dist/runtime/jobs/registry.d.ts +10 -10
  424. package/dist/runtime/jobs/registry.d.ts.map +1 -1
  425. package/dist/runtime/jobs/registry.js +5 -5
  426. package/dist/runtime/jobs/registry.js.map +1 -1
  427. package/dist/runtime/query/abandon-turn.d.ts +35 -0
  428. package/dist/runtime/query/abandon-turn.d.ts.map +1 -0
  429. package/dist/runtime/query/abandon-turn.js +81 -0
  430. package/dist/runtime/query/abandon-turn.js.map +1 -0
  431. package/dist/runtime/query/approval-policy.d.ts +10 -10
  432. package/dist/runtime/query/approval-policy.d.ts.map +1 -1
  433. package/dist/runtime/query/approval-policy.js +5 -5
  434. package/dist/runtime/query/approval-policy.js.map +1 -1
  435. package/dist/runtime/query/callback-inference.d.ts +1 -1
  436. package/dist/runtime/query/callback-inference.d.ts.map +1 -1
  437. package/dist/runtime/query/callback-inference.js +12 -6
  438. package/dist/runtime/query/callback-inference.js.map +1 -1
  439. package/dist/runtime/query/cancelled-before-start.d.ts +20 -20
  440. package/dist/runtime/query/cancelled-before-start.d.ts.map +1 -1
  441. package/dist/runtime/query/cancelled-before-start.js +72 -55
  442. package/dist/runtime/query/cancelled-before-start.js.map +1 -1
  443. package/dist/runtime/query/checkpoint.d.ts +153 -220
  444. package/dist/runtime/query/checkpoint.d.ts.map +1 -1
  445. package/dist/runtime/query/checkpoint.js +399 -370
  446. package/dist/runtime/query/checkpoint.js.map +1 -1
  447. package/dist/runtime/query/compact-session.d.ts +20 -0
  448. package/dist/runtime/query/compact-session.d.ts.map +1 -0
  449. package/dist/runtime/query/compact-session.js +81 -0
  450. package/dist/runtime/query/compact-session.js.map +1 -0
  451. package/dist/runtime/query/context.d.ts +42 -85
  452. package/dist/runtime/query/context.d.ts.map +1 -1
  453. package/dist/runtime/query/context.js +36 -75
  454. package/dist/runtime/query/context.js.map +1 -1
  455. package/dist/runtime/query/events.d.ts +54 -26
  456. package/dist/runtime/query/events.d.ts.map +1 -1
  457. package/dist/runtime/query/events.js +121 -114
  458. package/dist/runtime/query/events.js.map +1 -1
  459. package/dist/runtime/query/executor/tool-call-admission.d.ts.map +1 -1
  460. package/dist/runtime/query/executor/tool-call-admission.js +6 -5
  461. package/dist/runtime/query/executor/tool-call-admission.js.map +1 -1
  462. package/dist/runtime/query/executor.d.ts +56 -34
  463. package/dist/runtime/query/executor.d.ts.map +1 -1
  464. package/dist/runtime/query/executor.js +165 -85
  465. package/dist/runtime/query/executor.js.map +1 -1
  466. package/dist/runtime/query/file-evidence-seed.d.ts +1 -1
  467. package/dist/runtime/query/file-evidence-seed.d.ts.map +1 -1
  468. package/dist/runtime/query/file-evidence-seed.js +1 -1
  469. package/dist/runtime/query/finalize-turn.d.ts +55 -0
  470. package/dist/runtime/query/finalize-turn.d.ts.map +1 -0
  471. package/dist/runtime/query/finalize-turn.js +129 -0
  472. package/dist/runtime/query/finalize-turn.js.map +1 -0
  473. package/dist/runtime/query/fork/list.d.ts +15 -0
  474. package/dist/runtime/query/fork/list.d.ts.map +1 -0
  475. package/dist/runtime/query/fork/list.js +11 -0
  476. package/dist/runtime/query/fork/list.js.map +1 -0
  477. package/dist/runtime/query/fork/mutate.d.ts +17 -0
  478. package/dist/runtime/query/fork/mutate.d.ts.map +1 -0
  479. package/dist/runtime/query/fork/mutate.js +69 -0
  480. package/dist/runtime/query/fork/mutate.js.map +1 -0
  481. package/dist/runtime/query/fork/prepare.d.ts +52 -0
  482. package/dist/runtime/query/fork/prepare.d.ts.map +1 -0
  483. package/dist/runtime/query/fork/prepare.js +43 -0
  484. package/dist/runtime/query/fork/prepare.js.map +1 -0
  485. package/dist/runtime/query/guard.d.ts +16 -16
  486. package/dist/runtime/query/guard.d.ts.map +1 -1
  487. package/dist/runtime/query/guard.js +16 -16
  488. package/dist/runtime/query/guard.js.map +1 -1
  489. package/dist/runtime/query/guardrail-presets.d.ts +10 -10
  490. package/dist/runtime/query/guardrail-presets.js +12 -12
  491. package/dist/runtime/query/guardrail-presets.js.map +1 -1
  492. package/dist/runtime/query/guardrails.d.ts +4 -4
  493. package/dist/runtime/query/guardrails.js +11 -11
  494. package/dist/runtime/query/guardrails.js.map +1 -1
  495. package/dist/runtime/query/index.d.ts +178 -155
  496. package/dist/runtime/query/index.d.ts.map +1 -1
  497. package/dist/runtime/query/index.js +1294 -1260
  498. package/dist/runtime/query/index.js.map +1 -1
  499. package/dist/runtime/query/iteration/index.d.ts +16 -16
  500. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  501. package/dist/runtime/query/iteration/index.js +285 -243
  502. package/dist/runtime/query/iteration/index.js.map +1 -1
  503. package/dist/runtime/query/iteration/outstanding-work.d.ts +22 -22
  504. package/dist/runtime/query/iteration/outstanding-work.d.ts.map +1 -1
  505. package/dist/runtime/query/iteration/outstanding-work.js +63 -63
  506. package/dist/runtime/query/iteration/outstanding-work.js.map +1 -1
  507. package/dist/runtime/query/iteration/phases/advisory.js +16 -16
  508. package/dist/runtime/query/iteration/phases/advisory.js.map +1 -1
  509. package/dist/runtime/query/iteration/phases/checkpoint.d.ts +2 -2
  510. package/dist/runtime/query/iteration/phases/checkpoint.d.ts.map +1 -1
  511. package/dist/runtime/query/iteration/phases/checkpoint.js +25 -8
  512. package/dist/runtime/query/iteration/phases/checkpoint.js.map +1 -1
  513. package/dist/runtime/query/iteration/phases/compaction.d.ts +2 -2
  514. package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
  515. package/dist/runtime/query/iteration/phases/compaction.js +74 -72
  516. package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
  517. package/dist/runtime/query/iteration/phases/context.d.ts +32 -29
  518. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  519. package/dist/runtime/query/iteration/phases/context.js +29 -29
  520. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  521. package/dist/runtime/query/iteration/phases/plan.d.ts +2 -2
  522. package/dist/runtime/query/iteration/phases/plan.d.ts.map +1 -1
  523. package/dist/runtime/query/iteration/phases/plan.js +5 -4
  524. package/dist/runtime/query/iteration/phases/plan.js.map +1 -1
  525. package/dist/runtime/query/iteration/phases/tool-review.d.ts +2 -2
  526. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  527. package/dist/runtime/query/iteration/phases/tool-review.js +129 -24
  528. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  529. package/dist/runtime/query/iteration/phases/working-memory.d.ts +27 -3
  530. package/dist/runtime/query/iteration/phases/working-memory.d.ts.map +1 -1
  531. package/dist/runtime/query/iteration/phases/working-memory.js +54 -20
  532. package/dist/runtime/query/iteration/phases/working-memory.js.map +1 -1
  533. package/dist/runtime/query/iteration/step-context.d.ts +11 -0
  534. package/dist/runtime/query/iteration/step-context.d.ts.map +1 -0
  535. package/dist/runtime/query/iteration/step-context.js +14 -0
  536. package/dist/runtime/query/iteration/step-context.js.map +1 -0
  537. package/dist/runtime/query/iteration/step-shaping.d.ts +4 -3
  538. package/dist/runtime/query/iteration/step-shaping.d.ts.map +1 -1
  539. package/dist/runtime/query/iteration/step-shaping.js +20 -19
  540. package/dist/runtime/query/iteration/step-shaping.js.map +1 -1
  541. package/dist/runtime/query/iteration/stream-turn.d.ts +5 -3
  542. package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
  543. package/dist/runtime/query/iteration/stream-turn.js +32 -28
  544. package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
  545. package/dist/runtime/query/plugin-hooks.js +1 -1
  546. package/dist/runtime/query/plugin-hooks.js.map +1 -1
  547. package/dist/runtime/query/prepare-turn.d.ts +105 -0
  548. package/dist/runtime/query/prepare-turn.d.ts.map +1 -0
  549. package/dist/runtime/query/prepare-turn.js +779 -0
  550. package/dist/runtime/query/prepare-turn.js.map +1 -0
  551. package/dist/runtime/query/project-instructions.d.ts +5 -4
  552. package/dist/runtime/query/project-instructions.d.ts.map +1 -1
  553. package/dist/runtime/query/project-instructions.js.map +1 -1
  554. package/dist/runtime/query/prompt-cache.js +1 -1
  555. package/dist/runtime/query/prompt-cache.js.map +1 -1
  556. package/dist/runtime/query/prompt.d.ts +3 -3
  557. package/dist/runtime/query/prompt.d.ts.map +1 -1
  558. package/dist/runtime/query/prompt.js +3 -3
  559. package/dist/runtime/query/prompt.js.map +1 -1
  560. package/dist/runtime/query/question-park.d.ts +7 -7
  561. package/dist/runtime/query/question-park.d.ts.map +1 -1
  562. package/dist/runtime/query/question-park.js +5 -5
  563. package/dist/runtime/query/question-park.js.map +1 -1
  564. package/dist/runtime/query/release-turn.d.ts +53 -0
  565. package/dist/runtime/query/release-turn.d.ts.map +1 -0
  566. package/dist/runtime/query/release-turn.js +95 -0
  567. package/dist/runtime/query/release-turn.js.map +1 -0
  568. package/dist/runtime/query/repeat-call.d.ts +2 -2
  569. package/dist/runtime/query/repeat-call.js +7 -7
  570. package/dist/runtime/query/repeat-call.js.map +1 -1
  571. package/dist/runtime/query/result.d.ts +25 -17
  572. package/dist/runtime/query/result.d.ts.map +1 -1
  573. package/dist/runtime/query/result.js +110 -115
  574. package/dist/runtime/query/result.js.map +1 -1
  575. package/dist/runtime/query/resume-pending.d.ts +34 -17
  576. package/dist/runtime/query/resume-pending.d.ts.map +1 -1
  577. package/dist/runtime/query/resume-pending.js +70 -30
  578. package/dist/runtime/query/resume-pending.js.map +1 -1
  579. package/dist/runtime/query/resume-session.d.ts +65 -0
  580. package/dist/runtime/query/resume-session.d.ts.map +1 -0
  581. package/dist/runtime/query/resume-session.js +88 -0
  582. package/dist/runtime/query/resume-session.js.map +1 -0
  583. package/dist/runtime/query/review-policy.d.ts +57 -16
  584. package/dist/runtime/query/review-policy.d.ts.map +1 -1
  585. package/dist/runtime/query/review-policy.js +115 -11
  586. package/dist/runtime/query/review-policy.js.map +1 -1
  587. package/dist/runtime/query/sandbox-lifecycle.d.ts +5 -5
  588. package/dist/runtime/query/sandbox-lifecycle.d.ts.map +1 -1
  589. package/dist/runtime/query/sandbox-lifecycle.js +4 -4
  590. package/dist/runtime/query/sandbox-lifecycle.js.map +1 -1
  591. package/dist/runtime/query/session-storage.d.ts +75 -0
  592. package/dist/runtime/query/session-storage.d.ts.map +1 -0
  593. package/dist/runtime/query/session-storage.js +236 -0
  594. package/dist/runtime/query/session-storage.js.map +1 -0
  595. package/dist/runtime/query/steering.d.ts +9 -3
  596. package/dist/runtime/query/steering.d.ts.map +1 -1
  597. package/dist/runtime/query/steering.js +12 -2
  598. package/dist/runtime/query/steering.js.map +1 -1
  599. package/dist/runtime/query/token-budget.d.ts +19 -5
  600. package/dist/runtime/query/token-budget.d.ts.map +1 -1
  601. package/dist/runtime/query/token-budget.js +43 -74
  602. package/dist/runtime/query/token-budget.js.map +1 -1
  603. package/dist/runtime/query/tool-call-budget.d.ts +6 -5
  604. package/dist/runtime/query/tool-call-budget.d.ts.map +1 -1
  605. package/dist/runtime/query/tool-call-budget.js +10 -12
  606. package/dist/runtime/query/tool-call-budget.js.map +1 -1
  607. package/dist/runtime/query/tool-executions.d.ts +26 -0
  608. package/dist/runtime/query/tool-executions.d.ts.map +1 -0
  609. package/dist/runtime/query/tool-executions.js +66 -0
  610. package/dist/runtime/query/tool-executions.js.map +1 -0
  611. package/dist/runtime/query/tool-grants.d.ts +3 -3
  612. package/dist/runtime/query/tool-grants.js +3 -3
  613. package/dist/runtime/query/tool-output-budget.d.ts +2 -2
  614. package/dist/runtime/query/tool-output-budget.js +4 -4
  615. package/dist/runtime/query/tool-output-budget.js.map +1 -1
  616. package/dist/runtime/query/tool-pause.d.ts +4 -3
  617. package/dist/runtime/query/tool-pause.d.ts.map +1 -1
  618. package/dist/runtime/query/tool-pause.js +5 -4
  619. package/dist/runtime/query/tool-pause.js.map +1 -1
  620. package/dist/runtime/query/tooling.d.ts +15 -10
  621. package/dist/runtime/query/tooling.d.ts.map +1 -1
  622. package/dist/runtime/query/tooling.js +7 -4
  623. package/dist/runtime/query/tooling.js.map +1 -1
  624. package/dist/runtime/query/turn-state.d.ts +56 -0
  625. package/dist/runtime/query/turn-state.d.ts.map +1 -0
  626. package/dist/runtime/query/turn-state.js +99 -0
  627. package/dist/runtime/query/turn-state.js.map +1 -0
  628. package/dist/sandbox/isolation.d.ts +1 -1
  629. package/dist/sandbox/isolation.js +2 -2
  630. package/dist/sandbox/isolation.js.map +1 -1
  631. package/dist/sandbox/provider/local.d.ts +2 -2
  632. package/dist/sandbox/provider/local.js +7 -7
  633. package/dist/sandbox/provider/local.js.map +1 -1
  634. package/dist/scheduler/completion-inbox.d.ts +21 -21
  635. package/dist/scheduler/completion-inbox.js +36 -36
  636. package/dist/scheduler/completion-inbox.js.map +1 -1
  637. package/dist/scheduler/delegating.d.ts +6 -3
  638. package/dist/scheduler/delegating.d.ts.map +1 -1
  639. package/dist/scheduler/delegating.js +15 -8
  640. package/dist/scheduler/delegating.js.map +1 -1
  641. package/dist/scheduler/local.d.ts +10 -8
  642. package/dist/scheduler/local.d.ts.map +1 -1
  643. package/dist/scheduler/local.js +37 -11
  644. package/dist/scheduler/local.js.map +1 -1
  645. package/dist/session/events/index.d.ts +3 -3
  646. package/dist/session/events/index.d.ts.map +1 -1
  647. package/dist/session/events/index.js +4 -8
  648. package/dist/session/events/index.js.map +1 -1
  649. package/dist/session/handoff/broadcast.d.ts +3 -3
  650. package/dist/session/handoff/broadcast.d.ts.map +1 -1
  651. package/dist/session/handoff/broadcast.js +4 -4
  652. package/dist/session/handoff/broadcast.js.map +1 -1
  653. package/dist/session/handoff/events.d.ts +1 -1
  654. package/dist/session/handoff/events.js +1 -1
  655. package/dist/session/handoff/index.d.ts +1 -1
  656. package/dist/session/handoff/index.d.ts.map +1 -1
  657. package/dist/session/handoff/single.d.ts +12 -12
  658. package/dist/session/handoff/single.d.ts.map +1 -1
  659. package/dist/session/handoff/single.js +9 -9
  660. package/dist/session/handoff/single.js.map +1 -1
  661. package/dist/session/handoff/version.d.ts +7 -7
  662. package/dist/session/handoff/version.d.ts.map +1 -1
  663. package/dist/session/handoff/version.js +2 -2
  664. package/dist/session/handoff/version.js.map +1 -1
  665. package/dist/session/home.d.ts +23 -0
  666. package/dist/session/home.d.ts.map +1 -0
  667. package/dist/session/home.js +45 -0
  668. package/dist/session/home.js.map +1 -0
  669. package/dist/session/index.d.ts +1 -0
  670. package/dist/session/index.d.ts.map +1 -1
  671. package/dist/session/index.js +1 -0
  672. package/dist/session/index.js.map +1 -1
  673. package/dist/session/log-hash.d.ts +25 -0
  674. package/dist/session/log-hash.d.ts.map +1 -0
  675. package/dist/session/log-hash.js +82 -0
  676. package/dist/session/log-hash.js.map +1 -0
  677. package/dist/session/messages.d.ts +11 -0
  678. package/dist/session/messages.d.ts.map +1 -0
  679. package/dist/session/messages.js +32 -0
  680. package/dist/session/messages.js.map +1 -0
  681. package/dist/session/paths.d.ts +168 -0
  682. package/dist/session/paths.d.ts.map +1 -0
  683. package/dist/session/paths.js +338 -0
  684. package/dist/session/paths.js.map +1 -0
  685. package/dist/session/retention/archive.d.ts +8 -1
  686. package/dist/session/retention/archive.d.ts.map +1 -1
  687. package/dist/session/retention/archive.js +3 -5
  688. package/dist/session/retention/archive.js.map +1 -1
  689. package/dist/session/status/derive.d.ts +13 -13
  690. package/dist/session/status/derive.d.ts.map +1 -1
  691. package/dist/session/status/derive.js +20 -20
  692. package/dist/session/status/derive.js.map +1 -1
  693. package/dist/session/workspace/git-worktree.d.ts +8 -1
  694. package/dist/session/workspace/git-worktree.d.ts.map +1 -1
  695. package/dist/session/workspace/git-worktree.js +29 -1
  696. package/dist/session/workspace/git-worktree.js.map +1 -1
  697. package/dist/session/workspace/index.d.ts +2 -4
  698. package/dist/session/workspace/index.d.ts.map +1 -1
  699. package/dist/session/workspace/index.js +2 -3
  700. package/dist/session/workspace/index.js.map +1 -1
  701. package/dist/session/workspace/shared-session.d.ts +112 -0
  702. package/dist/session/workspace/shared-session.d.ts.map +1 -0
  703. package/dist/session/workspace/shared-session.js +290 -0
  704. package/dist/session/workspace/shared-session.js.map +1 -0
  705. package/dist/session-query/index.d.ts +67 -0
  706. package/dist/session-query/index.d.ts.map +1 -0
  707. package/dist/session-query/index.js +100 -0
  708. package/dist/session-query/index.js.map +1 -0
  709. package/dist/skills/registry.d.ts +1 -1
  710. package/dist/skills/registry.js +1 -1
  711. package/dist/store/activity/memory.d.ts +3 -3
  712. package/dist/store/activity/memory.d.ts.map +1 -1
  713. package/dist/store/activity/memory.js +4 -4
  714. package/dist/store/activity/memory.js.map +1 -1
  715. package/dist/store/attachment/index.d.ts +4 -4
  716. package/dist/store/attachment/index.d.ts.map +1 -1
  717. package/dist/store/attachment/index.js +3 -3
  718. package/dist/store/attachment/index.js.map +1 -1
  719. package/dist/store/budget/disk.d.ts +59 -0
  720. package/dist/store/budget/disk.d.ts.map +1 -0
  721. package/dist/store/budget/disk.js +179 -0
  722. package/dist/store/budget/disk.js.map +1 -0
  723. package/dist/store/budget/index.d.ts +6 -0
  724. package/dist/store/budget/index.d.ts.map +1 -0
  725. package/dist/store/budget/index.js +6 -0
  726. package/dist/store/budget/index.js.map +1 -0
  727. package/dist/store/budget/ledger.d.ts +156 -0
  728. package/dist/store/budget/ledger.d.ts.map +1 -0
  729. package/dist/store/budget/ledger.js +683 -0
  730. package/dist/store/budget/ledger.js.map +1 -0
  731. package/dist/store/budget/memory.d.ts +18 -0
  732. package/dist/store/budget/memory.d.ts.map +1 -0
  733. package/dist/store/budget/memory.js +31 -0
  734. package/dist/store/budget/memory.js.map +1 -0
  735. package/dist/store/checkpoint/contract.d.ts +140 -0
  736. package/dist/store/checkpoint/contract.d.ts.map +1 -0
  737. package/dist/store/checkpoint/contract.js +91 -0
  738. package/dist/store/checkpoint/contract.js.map +1 -0
  739. package/dist/store/checkpoint/disk.d.ts +44 -0
  740. package/dist/store/checkpoint/disk.d.ts.map +1 -0
  741. package/dist/store/checkpoint/disk.js +168 -0
  742. package/dist/store/checkpoint/disk.js.map +1 -0
  743. package/dist/store/checkpoint/index.d.ts +9 -0
  744. package/dist/store/checkpoint/index.d.ts.map +1 -0
  745. package/dist/store/checkpoint/index.js +7 -0
  746. package/dist/store/checkpoint/index.js.map +1 -0
  747. package/dist/store/checkpoint/memory.d.ts +27 -0
  748. package/dist/store/checkpoint/memory.d.ts.map +1 -0
  749. package/dist/store/checkpoint/memory.js +80 -0
  750. package/dist/store/checkpoint/memory.js.map +1 -0
  751. package/dist/store/checkpoint/prune.d.ts +45 -0
  752. package/dist/store/checkpoint/prune.d.ts.map +1 -0
  753. package/dist/store/checkpoint/prune.js +71 -0
  754. package/dist/store/checkpoint/prune.js.map +1 -0
  755. package/dist/store/config/index.d.ts +1 -1
  756. package/dist/store/config/index.js +1 -1
  757. package/dist/store/evidence/disk.d.ts +25 -8
  758. package/dist/store/evidence/disk.d.ts.map +1 -1
  759. package/dist/store/evidence/disk.js +148 -47
  760. package/dist/store/evidence/disk.js.map +1 -1
  761. package/dist/store/evidence/index-page.d.ts +31 -140
  762. package/dist/store/evidence/index-page.d.ts.map +1 -1
  763. package/dist/store/evidence/index-page.js +59 -129
  764. package/dist/store/evidence/index-page.js.map +1 -1
  765. package/dist/store/evidence/source-text.d.ts +7 -6
  766. package/dist/store/evidence/source-text.d.ts.map +1 -1
  767. package/dist/store/evidence/source-text.js +16 -23
  768. package/dist/store/evidence/source-text.js.map +1 -1
  769. package/dist/store/evidence/types.d.ts +38 -39
  770. package/dist/store/evidence/types.d.ts.map +1 -1
  771. package/dist/store/feedback/conformance.d.ts +6 -6
  772. package/dist/store/feedback/conformance.d.ts.map +1 -1
  773. package/dist/store/feedback/conformance.js +30 -29
  774. package/dist/store/feedback/conformance.js.map +1 -1
  775. package/dist/store/feedback/disk.d.ts +20 -19
  776. package/dist/store/feedback/disk.d.ts.map +1 -1
  777. package/dist/store/feedback/disk.js +53 -53
  778. package/dist/store/feedback/disk.js.map +1 -1
  779. package/dist/store/feedback/index.d.ts +1 -1
  780. package/dist/store/feedback/index.d.ts.map +1 -1
  781. package/dist/store/feedback/index.js +1 -1
  782. package/dist/store/feedback/index.js.map +1 -1
  783. package/dist/store/feedback/memory.d.ts +8 -5
  784. package/dist/store/feedback/memory.d.ts.map +1 -1
  785. package/dist/store/feedback/memory.js +0 -0
  786. package/dist/store/feedback/memory.js.map +1 -1
  787. package/dist/store/feedback/types.d.ts +12 -11
  788. package/dist/store/feedback/types.d.ts.map +1 -1
  789. package/dist/store/feedback/types.js +3 -3
  790. package/dist/store/feedback/types.js.map +1 -1
  791. package/dist/store/index.d.ts +7 -8
  792. package/dist/store/index.d.ts.map +1 -1
  793. package/dist/store/index.js +4 -16
  794. package/dist/store/index.js.map +1 -1
  795. package/dist/store/memory/digest.d.ts +15 -0
  796. package/dist/store/memory/digest.d.ts.map +1 -0
  797. package/dist/store/memory/digest.js +27 -0
  798. package/dist/store/memory/digest.js.map +1 -0
  799. package/dist/store/memory/disk.d.ts.map +1 -1
  800. package/dist/store/memory/disk.js +42 -7
  801. package/dist/store/memory/disk.js.map +1 -1
  802. package/dist/store/memory/index-file.d.ts +56 -0
  803. package/dist/store/memory/index-file.d.ts.map +1 -0
  804. package/dist/store/memory/index-file.js +92 -0
  805. package/dist/store/memory/index-file.js.map +1 -0
  806. package/dist/store/memory/index.d.ts.map +1 -1
  807. package/dist/store/memory/index.js +4 -2
  808. package/dist/store/memory/index.js.map +1 -1
  809. package/dist/store/memory/links.d.ts +15 -0
  810. package/dist/store/memory/links.d.ts.map +1 -0
  811. package/dist/store/memory/links.js +35 -0
  812. package/dist/store/memory/links.js.map +1 -0
  813. package/dist/store/memory/markdown-format.d.ts +88 -0
  814. package/dist/store/memory/markdown-format.d.ts.map +1 -0
  815. package/dist/store/memory/markdown-format.js +222 -0
  816. package/dist/store/memory/markdown-format.js.map +1 -0
  817. package/dist/store/memory/markdown.d.ts +109 -0
  818. package/dist/store/memory/markdown.d.ts.map +1 -0
  819. package/dist/store/memory/markdown.js +606 -0
  820. package/dist/store/memory/markdown.js.map +1 -0
  821. package/dist/store/memory/memory.d.ts.map +1 -1
  822. package/dist/store/memory/memory.js +17 -4
  823. package/dist/store/memory/memory.js.map +1 -1
  824. package/dist/store/memory/naming.d.ts +66 -0
  825. package/dist/store/memory/naming.d.ts.map +1 -0
  826. package/dist/store/memory/naming.js +162 -0
  827. package/dist/store/memory/naming.js.map +1 -0
  828. package/dist/store/memory/origin.d.ts +25 -0
  829. package/dist/store/memory/origin.d.ts.map +1 -0
  830. package/dist/store/memory/origin.js +26 -0
  831. package/dist/store/memory/origin.js.map +1 -0
  832. package/dist/store/session/disk.d.ts +21 -24
  833. package/dist/store/session/disk.d.ts.map +1 -1
  834. package/dist/store/session/disk.js +27 -132
  835. package/dist/store/session/disk.js.map +1 -1
  836. package/dist/store/session/index.d.ts +0 -3
  837. package/dist/store/session/index.d.ts.map +1 -1
  838. package/dist/store/session/index.js +5 -7
  839. package/dist/store/session/index.js.map +1 -1
  840. package/dist/store/session/memory.d.ts +1 -8
  841. package/dist/store/session/memory.d.ts.map +1 -1
  842. package/dist/store/session/memory.js +1 -58
  843. package/dist/store/session/memory.js.map +1 -1
  844. package/dist/store/session-claim.d.ts +30 -0
  845. package/dist/store/session-claim.d.ts.map +1 -0
  846. package/dist/store/session-claim.js +71 -0
  847. package/dist/store/session-claim.js.map +1 -0
  848. package/dist/store/session-index/fts.d.ts +60 -0
  849. package/dist/store/session-index/fts.d.ts.map +1 -0
  850. package/dist/store/session-index/fts.js +160 -0
  851. package/dist/store/session-index/fts.js.map +1 -0
  852. package/dist/store/session-index/index.d.ts +206 -0
  853. package/dist/store/session-index/index.d.ts.map +1 -0
  854. package/dist/store/session-index/index.js +22 -0
  855. package/dist/store/session-index/index.js.map +1 -0
  856. package/dist/store/session-index/rebuild.d.ts +180 -0
  857. package/dist/store/session-index/rebuild.d.ts.map +1 -0
  858. package/dist/store/session-index/rebuild.js +669 -0
  859. package/dist/store/session-index/rebuild.js.map +1 -0
  860. package/dist/store/session-index/refs.d.ts +66 -0
  861. package/dist/store/session-index/refs.d.ts.map +1 -0
  862. package/dist/store/session-index/refs.js +107 -0
  863. package/dist/store/session-index/refs.js.map +1 -0
  864. package/dist/store/session-index/scan.d.ts +42 -0
  865. package/dist/store/session-index/scan.d.ts.map +1 -0
  866. package/dist/store/session-index/scan.js +188 -0
  867. package/dist/store/session-index/scan.js.map +1 -0
  868. package/dist/store/session-index/sqlite.d.ts +76 -0
  869. package/dist/store/session-index/sqlite.d.ts.map +1 -0
  870. package/dist/store/session-index/sqlite.js +547 -0
  871. package/dist/store/session-index/sqlite.js.map +1 -0
  872. package/dist/store/session-log/chain.d.ts +111 -0
  873. package/dist/store/session-log/chain.d.ts.map +1 -0
  874. package/dist/store/session-log/chain.js +212 -0
  875. package/dist/store/session-log/chain.js.map +1 -0
  876. package/dist/store/session-log/conformance.d.ts +61 -0
  877. package/dist/store/session-log/conformance.d.ts.map +1 -0
  878. package/dist/store/session-log/conformance.js +392 -0
  879. package/dist/store/session-log/conformance.js.map +1 -0
  880. package/dist/store/session-log/core.d.ts +203 -0
  881. package/dist/store/session-log/core.d.ts.map +1 -0
  882. package/dist/store/session-log/core.js +516 -0
  883. package/dist/store/session-log/core.js.map +1 -0
  884. package/dist/store/session-log/disk.d.ts +56 -0
  885. package/dist/store/session-log/disk.d.ts.map +1 -0
  886. package/dist/store/session-log/disk.js +169 -0
  887. package/dist/store/session-log/disk.js.map +1 -0
  888. package/dist/store/session-log/fold.d.ts +115 -0
  889. package/dist/store/session-log/fold.d.ts.map +1 -0
  890. package/dist/store/session-log/fold.js +265 -0
  891. package/dist/store/session-log/fold.js.map +1 -0
  892. package/dist/store/session-log/heal.d.ts +34 -0
  893. package/dist/store/session-log/heal.d.ts.map +1 -0
  894. package/dist/store/session-log/heal.js +12 -0
  895. package/dist/store/session-log/heal.js.map +1 -0
  896. package/dist/store/session-log/held-leases.d.ts +56 -0
  897. package/dist/store/session-log/held-leases.d.ts.map +1 -0
  898. package/dist/store/session-log/held-leases.js +67 -0
  899. package/dist/store/session-log/held-leases.js.map +1 -0
  900. package/dist/store/session-log/index.d.ts +10 -0
  901. package/dist/store/session-log/index.d.ts.map +1 -0
  902. package/dist/store/session-log/index.js +16 -0
  903. package/dist/store/session-log/index.js.map +1 -0
  904. package/dist/store/session-log/lease.d.ts +126 -0
  905. package/dist/store/session-log/lease.d.ts.map +1 -0
  906. package/dist/store/session-log/lease.js +226 -0
  907. package/dist/store/session-log/lease.js.map +1 -0
  908. package/dist/store/session-log/memory.d.ts +43 -0
  909. package/dist/store/session-log/memory.d.ts.map +1 -0
  910. package/dist/store/session-log/memory.js +78 -0
  911. package/dist/store/session-log/memory.js.map +1 -0
  912. package/dist/store/session-log/spill.d.ts +109 -0
  913. package/dist/store/session-log/spill.d.ts.map +1 -0
  914. package/dist/store/session-log/spill.js +223 -0
  915. package/dist/store/session-log/spill.js.map +1 -0
  916. package/dist/store/task/context.d.ts +25 -0
  917. package/dist/store/task/context.d.ts.map +1 -0
  918. package/dist/store/task/context.js +18 -0
  919. package/dist/store/task/context.js.map +1 -0
  920. package/dist/store/task/disk.d.ts +29 -26
  921. package/dist/store/task/disk.d.ts.map +1 -1
  922. package/dist/store/task/disk.js +102 -137
  923. package/dist/store/task/disk.js.map +1 -1
  924. package/dist/store/task/memory.d.ts +2 -2
  925. package/dist/store/task/memory.d.ts.map +1 -1
  926. package/dist/store/task/memory.js +10 -6
  927. package/dist/store/task/memory.js.map +1 -1
  928. package/dist/store/topic/index.js +2 -2
  929. package/dist/store/topic/index.js.map +1 -1
  930. package/dist/store/topic/objective.d.ts.map +1 -1
  931. package/dist/store/topic/objective.js +10 -3
  932. package/dist/store/topic/objective.js.map +1 -1
  933. package/dist/store/topic/state.js +1 -1
  934. package/dist/streaming/coalesce.d.ts +3 -3
  935. package/dist/streaming/coalesce.d.ts.map +1 -1
  936. package/dist/streaming/coalesce.js +1 -1
  937. package/dist/streaming/coalesce.js.map +1 -1
  938. package/dist/telemetry/attributes.d.ts +9 -8
  939. package/dist/telemetry/attributes.d.ts.map +1 -1
  940. package/dist/telemetry/attributes.js +6 -5
  941. package/dist/telemetry/attributes.js.map +1 -1
  942. package/dist/telemetry/metrics.d.ts +2 -2
  943. package/dist/telemetry/metrics.d.ts.map +1 -1
  944. package/dist/telemetry/metrics.js +5 -5
  945. package/dist/telemetry/metrics.js.map +1 -1
  946. package/dist/telemetry/runtime-accessors.js +1 -1
  947. package/dist/telemetry/runtime-accessors.js.map +1 -1
  948. package/dist/test-support/ids.d.ts +4 -4
  949. package/dist/test-support/ids.d.ts.map +1 -1
  950. package/dist/test-support/ids.js +3 -3
  951. package/dist/test-support/ids.js.map +1 -1
  952. package/dist/testing.d.ts +4 -6
  953. package/dist/testing.d.ts.map +1 -1
  954. package/dist/testing.js +3 -5
  955. package/dist/testing.js.map +1 -1
  956. package/dist/tools/advisory/index.js +1 -1
  957. package/dist/tools/advisory/index.js.map +1 -1
  958. package/dist/tools/builtins/bash.d.ts +6 -0
  959. package/dist/tools/builtins/bash.d.ts.map +1 -1
  960. package/dist/tools/builtins/bash.js +37 -5
  961. package/dist/tools/builtins/bash.js.map +1 -1
  962. package/dist/tools/builtins/content-fingerprint.d.ts +2 -2
  963. package/dist/tools/builtins/content-fingerprint.js +2 -2
  964. package/dist/tools/builtins/edit-apply.js +1 -1
  965. package/dist/tools/builtins/edit-apply.js.map +1 -1
  966. package/dist/tools/builtins/edit.d.ts.map +1 -1
  967. package/dist/tools/builtins/edit.js +3 -0
  968. package/dist/tools/builtins/edit.js.map +1 -1
  969. package/dist/tools/builtins/glob.d.ts.map +1 -1
  970. package/dist/tools/builtins/glob.js +3 -0
  971. package/dist/tools/builtins/glob.js.map +1 -1
  972. package/dist/tools/builtins/grep.d.ts.map +1 -1
  973. package/dist/tools/builtins/grep.js +3 -0
  974. package/dist/tools/builtins/grep.js.map +1 -1
  975. package/dist/tools/builtins/job.js +5 -5
  976. package/dist/tools/builtins/job.js.map +1 -1
  977. package/dist/tools/builtins/ls.d.ts +1 -1
  978. package/dist/tools/builtins/ls.d.ts.map +1 -1
  979. package/dist/tools/builtins/ls.js +3 -0
  980. package/dist/tools/builtins/ls.js.map +1 -1
  981. package/dist/tools/builtins/lsp.d.ts +1 -1
  982. package/dist/tools/builtins/lsp.d.ts.map +1 -1
  983. package/dist/tools/builtins/lsp.js +5 -2
  984. package/dist/tools/builtins/lsp.js.map +1 -1
  985. package/dist/tools/builtins/read-file.d.ts.map +1 -1
  986. package/dist/tools/builtins/read-file.js +3 -0
  987. package/dist/tools/builtins/read-file.js.map +1 -1
  988. package/dist/tools/builtins/run-code.js +9 -9
  989. package/dist/tools/builtins/run-code.js.map +1 -1
  990. package/dist/tools/builtins/skill.js +3 -3
  991. package/dist/tools/builtins/skill.js.map +1 -1
  992. package/dist/tools/builtins/wait-for-job-bounds.d.ts +4 -4
  993. package/dist/tools/builtins/wait-for-job-bounds.d.ts.map +1 -1
  994. package/dist/tools/builtins/wait-for-job-bounds.js +2 -2
  995. package/dist/tools/builtins/wait-for-job-bounds.js.map +1 -1
  996. package/dist/tools/builtins/wait-for-job.js +3 -3
  997. package/dist/tools/builtins/wait-for-job.js.map +1 -1
  998. package/dist/tools/builtins/web-guidance.d.ts +2 -2
  999. package/dist/tools/builtins/web-guidance.js +2 -2
  1000. package/dist/tools/builtins/web.js +3 -3
  1001. package/dist/tools/builtins/web.js.map +1 -1
  1002. package/dist/tools/builtins/write-file.d.ts.map +1 -1
  1003. package/dist/tools/builtins/write-file.js +3 -0
  1004. package/dist/tools/builtins/write-file.js.map +1 -1
  1005. package/dist/tools/coordinator/agent.d.ts +1 -1
  1006. package/dist/tools/coordinator/agent.js +7 -7
  1007. package/dist/tools/coordinator/agent.js.map +1 -1
  1008. package/dist/tools/coordinator/ask-user-question.d.ts +10 -9
  1009. package/dist/tools/coordinator/ask-user-question.d.ts.map +1 -1
  1010. package/dist/tools/coordinator/ask-user-question.js +9 -8
  1011. package/dist/tools/coordinator/ask-user-question.js.map +1 -1
  1012. package/dist/tools/coordinator/index.d.ts +17 -11
  1013. package/dist/tools/coordinator/index.d.ts.map +1 -1
  1014. package/dist/tools/coordinator/index.js +45 -44
  1015. package/dist/tools/coordinator/index.js.map +1 -1
  1016. package/dist/tools/coordinator/outcome.d.ts +5 -5
  1017. package/dist/tools/coordinator/outcome.js +7 -7
  1018. package/dist/tools/coordinator/outcome.js.map +1 -1
  1019. package/dist/tools/coordinator/plan-dependencies.js +1 -1
  1020. package/dist/tools/coordinator/plan-dependencies.js.map +1 -1
  1021. package/dist/tools/coordinator/wait-with-idle-bound.d.ts +4 -4
  1022. package/dist/tools/coordinator/wait-with-idle-bound.d.ts.map +1 -1
  1023. package/dist/tools/coordinator/wait-with-idle-bound.js +2 -2
  1024. package/dist/tools/coordinator/wait-with-idle-bound.js.map +1 -1
  1025. package/dist/tools/defineTool.d.ts +5 -1
  1026. package/dist/tools/defineTool.d.ts.map +1 -1
  1027. package/dist/tools/defineTool.js +4 -0
  1028. package/dist/tools/defineTool.js.map +1 -1
  1029. package/dist/tools/env-scrub.d.ts +1 -1
  1030. package/dist/tools/env-scrub.js +1 -1
  1031. package/dist/tools/goal/index.d.ts +10 -6
  1032. package/dist/tools/goal/index.d.ts.map +1 -1
  1033. package/dist/tools/goal/index.js +9 -9
  1034. package/dist/tools/goal/index.js.map +1 -1
  1035. package/dist/tools/memory/fields.d.ts +8 -0
  1036. package/dist/tools/memory/fields.d.ts.map +1 -0
  1037. package/dist/tools/memory/fields.js +22 -0
  1038. package/dist/tools/memory/fields.js.map +1 -0
  1039. package/dist/tools/memory/read.d.ts.map +1 -1
  1040. package/dist/tools/memory/read.js +60 -7
  1041. package/dist/tools/memory/read.js.map +1 -1
  1042. package/dist/tools/memory/resolve.d.ts +21 -0
  1043. package/dist/tools/memory/resolve.d.ts.map +1 -0
  1044. package/dist/tools/memory/resolve.js +23 -0
  1045. package/dist/tools/memory/resolve.js.map +1 -0
  1046. package/dist/tools/memory/save.d.ts.map +1 -1
  1047. package/dist/tools/memory/save.js +57 -18
  1048. package/dist/tools/memory/save.js.map +1 -1
  1049. package/dist/tools/memory/search.d.ts.map +1 -1
  1050. package/dist/tools/memory/search.js +9 -2
  1051. package/dist/tools/memory/search.js.map +1 -1
  1052. package/dist/tools/memory/update.d.ts.map +1 -1
  1053. package/dist/tools/memory/update.js +45 -7
  1054. package/dist/tools/memory/update.js.map +1 -1
  1055. package/dist/tools/paths.d.ts +29 -3
  1056. package/dist/tools/paths.d.ts.map +1 -1
  1057. package/dist/tools/paths.js +81 -23
  1058. package/dist/tools/paths.js.map +1 -1
  1059. package/dist/tools/posix-path.js +1 -1
  1060. package/dist/tools/posix-path.js.map +1 -1
  1061. package/dist/tools/resident-history.d.ts +1 -1
  1062. package/dist/tools/resident-history.js +1 -1
  1063. package/dist/tools/resident-tool-evidence.d.ts +1 -1
  1064. package/dist/tools/resident-tool-evidence.d.ts.map +1 -1
  1065. package/dist/tools/resident-tool-evidence.js +1 -1
  1066. package/dist/tools/resident-tool-evidence.js.map +1 -1
  1067. package/dist/tools/task/create.d.ts +2 -2
  1068. package/dist/tools/task/create.d.ts.map +1 -1
  1069. package/dist/tools/task/create.js +3 -2
  1070. package/dist/tools/task/create.js.map +1 -1
  1071. package/dist/tools/task/index.d.ts +16 -2
  1072. package/dist/tools/task/index.d.ts.map +1 -1
  1073. package/dist/tools/task/index.js +4 -3
  1074. package/dist/tools/task/index.js.map +1 -1
  1075. package/dist/tools/task/list.d.ts +4 -2
  1076. package/dist/tools/task/list.d.ts.map +1 -1
  1077. package/dist/tools/task/list.js +8 -4
  1078. package/dist/tools/task/list.js.map +1 -1
  1079. package/dist/turn/LimitChecker.d.ts +30 -0
  1080. package/dist/turn/LimitChecker.d.ts.map +1 -0
  1081. package/dist/turn/LimitChecker.js +57 -0
  1082. package/dist/turn/LimitChecker.js.map +1 -0
  1083. package/dist/turn/command-gate.d.ts +107 -0
  1084. package/dist/turn/command-gate.d.ts.map +1 -0
  1085. package/dist/turn/command-gate.js +221 -0
  1086. package/dist/turn/command-gate.js.map +1 -0
  1087. package/dist/turn/drain.d.ts +138 -0
  1088. package/dist/turn/drain.d.ts.map +1 -0
  1089. package/dist/turn/drain.js +209 -0
  1090. package/dist/turn/drain.js.map +1 -0
  1091. package/dist/turn/evidence-query.d.ts +41 -0
  1092. package/dist/turn/evidence-query.d.ts.map +1 -0
  1093. package/dist/turn/evidence-query.js +270 -0
  1094. package/dist/turn/evidence-query.js.map +1 -0
  1095. package/dist/turn/evidence-recall.d.ts +102 -0
  1096. package/dist/turn/evidence-recall.d.ts.map +1 -0
  1097. package/dist/turn/evidence-recall.js +635 -0
  1098. package/dist/turn/evidence-recall.js.map +1 -0
  1099. package/dist/turn/index.d.ts +17 -0
  1100. package/dist/turn/index.d.ts.map +1 -0
  1101. package/dist/turn/index.js +9 -0
  1102. package/dist/turn/index.js.map +1 -0
  1103. package/dist/turn/json-claim-verifier.d.ts +83 -0
  1104. package/dist/turn/json-claim-verifier.d.ts.map +1 -0
  1105. package/dist/turn/json-claim-verifier.js +200 -0
  1106. package/dist/turn/json-claim-verifier.js.map +1 -0
  1107. package/dist/turn/memory-promoter.d.ts +43 -0
  1108. package/dist/turn/memory-promoter.d.ts.map +1 -0
  1109. package/dist/turn/memory-promoter.js +111 -0
  1110. package/dist/turn/memory-promoter.js.map +1 -0
  1111. package/dist/turn/memory-recall.d.ts +33 -0
  1112. package/dist/turn/memory-recall.d.ts.map +1 -0
  1113. package/dist/turn/memory-recall.js +248 -0
  1114. package/dist/turn/memory-recall.js.map +1 -0
  1115. package/dist/turn/preparation-context-error.d.ts.map +1 -0
  1116. package/dist/turn/preparation-context-error.js.map +1 -0
  1117. package/dist/turn/reporter.d.ts +8 -0
  1118. package/dist/turn/reporter.d.ts.map +1 -0
  1119. package/dist/turn/reporter.js +420 -0
  1120. package/dist/turn/reporter.js.map +1 -0
  1121. package/dist/turn/workspace-fingerprint.d.ts.map +1 -0
  1122. package/dist/turn/workspace-fingerprint.js.map +1 -0
  1123. package/dist/types/activity/index.d.ts +2 -2
  1124. package/dist/types/activity/index.d.ts.map +1 -1
  1125. package/dist/types/advisory/config.d.ts +7 -7
  1126. package/dist/types/advisory/config.d.ts.map +1 -1
  1127. package/dist/types/agent/base.d.ts +71 -44
  1128. package/dist/types/agent/base.d.ts.map +1 -1
  1129. package/dist/types/agent/core.d.ts +10 -10
  1130. package/dist/types/agent/core.d.ts.map +1 -1
  1131. package/dist/types/agent/delegate.d.ts +2 -2
  1132. package/dist/types/agent/factory.d.ts +6 -4
  1133. package/dist/types/agent/factory.d.ts.map +1 -1
  1134. package/dist/types/agent/manager.d.ts +6 -6
  1135. package/dist/types/agent/manager.d.ts.map +1 -1
  1136. package/dist/types/agent/pipeline.d.ts +5 -4
  1137. package/dist/types/agent/pipeline.d.ts.map +1 -1
  1138. package/dist/types/agent/reactive.d.ts +11 -10
  1139. package/dist/types/agent/reactive.d.ts.map +1 -1
  1140. package/dist/types/agent/router.d.ts +1 -1
  1141. package/dist/types/agent/scheduler.d.ts +27 -11
  1142. package/dist/types/agent/scheduler.d.ts.map +1 -1
  1143. package/dist/types/agent/supervisor.d.ts +13 -13
  1144. package/dist/types/agent/task.d.ts +48 -12
  1145. package/dist/types/agent/task.d.ts.map +1 -1
  1146. package/dist/types/agent/working-memory.d.ts +5 -4
  1147. package/dist/types/agent/working-memory.d.ts.map +1 -1
  1148. package/dist/types/authorization/index.d.ts +6 -6
  1149. package/dist/types/bidi/index.d.ts +21 -12
  1150. package/dist/types/bidi/index.d.ts.map +1 -1
  1151. package/dist/types/bus/index.d.ts +34 -28
  1152. package/dist/types/bus/index.d.ts.map +1 -1
  1153. package/dist/types/code-navigation/index.d.ts +1 -1
  1154. package/dist/types/common/index.d.ts +10 -18
  1155. package/dist/types/common/index.d.ts.map +1 -1
  1156. package/dist/types/common/index.js +3 -2
  1157. package/dist/types/common/index.js.map +1 -1
  1158. package/dist/types/connector/core.d.ts +2 -2
  1159. package/dist/types/connector/definition.d.ts +1 -1
  1160. package/dist/types/connector/mcp.d.ts +1 -1
  1161. package/dist/types/errors/catalog.js +4 -4
  1162. package/dist/types/errors/catalog.js.map +1 -1
  1163. package/dist/types/errors/index.d.ts +5 -5
  1164. package/dist/types/errors/index.d.ts.map +1 -1
  1165. package/dist/types/guardrail/index.d.ts +12 -10
  1166. package/dist/types/guardrail/index.d.ts.map +1 -1
  1167. package/dist/types/hitl/index.d.ts +60 -117
  1168. package/dist/types/hitl/index.d.ts.map +1 -1
  1169. package/dist/types/hitl/index.js +1 -1
  1170. package/dist/types/hitl/index.js.map +1 -1
  1171. package/dist/types/hitl/policy.d.ts +8 -6
  1172. package/dist/types/hitl/policy.d.ts.map +1 -1
  1173. package/dist/types/ids/brand.d.ts +10 -3
  1174. package/dist/types/ids/brand.d.ts.map +1 -1
  1175. package/dist/types/ids/brand.js.map +1 -1
  1176. package/dist/types/ids/index.d.ts +10 -4
  1177. package/dist/types/ids/index.d.ts.map +1 -1
  1178. package/dist/types/ids/index.js.map +1 -1
  1179. package/dist/types/memory/index.d.ts +35 -0
  1180. package/dist/types/memory/index.d.ts.map +1 -1
  1181. package/dist/types/memory/index.js +17 -0
  1182. package/dist/types/memory/index.js.map +1 -1
  1183. package/dist/types/message/index.d.ts +4 -4
  1184. package/dist/types/plan/index.d.ts +5 -3
  1185. package/dist/types/plan/index.d.ts.map +1 -1
  1186. package/dist/types/plugin/index.d.ts +27 -19
  1187. package/dist/types/plugin/index.d.ts.map +1 -1
  1188. package/dist/types/plugin/index.js +16 -3
  1189. package/dist/types/plugin/index.js.map +1 -1
  1190. package/dist/types/probe/event-kind.d.ts +3 -3
  1191. package/dist/types/probe/event-kind.d.ts.map +1 -1
  1192. package/dist/types/probe/registry.d.ts +3 -2
  1193. package/dist/types/probe/registry.d.ts.map +1 -1
  1194. package/dist/types/project/entity.d.ts +3 -3
  1195. package/dist/types/provider/config.d.ts +3 -3
  1196. package/dist/types/provider/error.d.ts +1 -1
  1197. package/dist/types/provider/errors.d.ts +2 -2
  1198. package/dist/types/provider/errors.js +2 -2
  1199. package/dist/types/provider/errors.js.map +1 -1
  1200. package/dist/types/provider/interface.d.ts +5 -5
  1201. package/dist/types/provider/model.d.ts +26 -2
  1202. package/dist/types/provider/model.d.ts.map +1 -1
  1203. package/dist/types/router/task-router.d.ts +1 -1
  1204. package/dist/types/sandbox/index.d.ts +14 -14
  1205. package/dist/types/sandbox/index.d.ts.map +1 -1
  1206. package/dist/types/sandbox/index.js +4 -4
  1207. package/dist/types/session/answer-review.d.ts +80 -0
  1208. package/dist/types/session/answer-review.d.ts.map +1 -0
  1209. package/dist/types/session/answer-review.js.map +1 -0
  1210. package/dist/types/session/audit.d.ts +153 -0
  1211. package/dist/types/session/audit.d.ts.map +1 -0
  1212. package/dist/types/session/audit.js +35 -0
  1213. package/dist/types/session/audit.js.map +1 -0
  1214. package/dist/types/session/cancel-cause.d.ts +49 -0
  1215. package/dist/types/session/cancel-cause.d.ts.map +1 -0
  1216. package/dist/types/session/cancel-cause.js +39 -0
  1217. package/dist/types/session/cancel-cause.js.map +1 -0
  1218. package/dist/types/session/checkpoint.d.ts +325 -0
  1219. package/dist/types/session/checkpoint.d.ts.map +1 -0
  1220. package/dist/types/session/checkpoint.js +100 -0
  1221. package/dist/types/session/checkpoint.js.map +1 -0
  1222. package/dist/types/session/config.d.ts +199 -0
  1223. package/dist/types/session/config.d.ts.map +1 -0
  1224. package/dist/types/session/config.js.map +1 -0
  1225. package/dist/types/session/derive-status.d.ts +28 -0
  1226. package/dist/types/session/derive-status.d.ts.map +1 -0
  1227. package/dist/types/session/derive-status.js +49 -0
  1228. package/dist/types/session/derive-status.js.map +1 -0
  1229. package/dist/types/session/durable.d.ts +142 -0
  1230. package/dist/types/session/durable.d.ts.map +1 -0
  1231. package/dist/types/session/durable.js +11 -0
  1232. package/dist/types/session/durable.js.map +1 -0
  1233. package/dist/types/session/entity.d.ts +1 -1
  1234. package/dist/types/session/events.d.ts +1139 -0
  1235. package/dist/types/session/events.d.ts.map +1 -0
  1236. package/dist/types/session/events.js +15 -0
  1237. package/dist/types/session/events.js.map +1 -0
  1238. package/dist/types/session/fork.d.ts +45 -0
  1239. package/dist/types/session/fork.d.ts.map +1 -0
  1240. package/dist/types/session/fork.js +15 -0
  1241. package/dist/types/session/fork.js.map +1 -0
  1242. package/dist/types/session/ids.d.ts +1 -1
  1243. package/dist/types/session/ids.d.ts.map +1 -1
  1244. package/dist/types/session/index.d.ts +20 -1
  1245. package/dist/types/session/index.d.ts.map +1 -1
  1246. package/dist/types/session/index.js +22 -4
  1247. package/dist/types/session/index.js.map +1 -1
  1248. package/dist/types/session/lineage.d.ts +15 -0
  1249. package/dist/types/session/lineage.d.ts.map +1 -0
  1250. package/dist/types/session/lineage.js.map +1 -0
  1251. package/dist/types/session/log-cursor.d.ts +57 -0
  1252. package/dist/types/session/log-cursor.d.ts.map +1 -0
  1253. package/dist/types/session/log-cursor.js +34 -0
  1254. package/dist/types/session/log-cursor.js.map +1 -0
  1255. package/dist/types/session/memory-promotion.d.ts +91 -0
  1256. package/dist/types/session/memory-promotion.d.ts.map +1 -0
  1257. package/dist/types/session/memory-promotion.js +39 -0
  1258. package/dist/types/session/memory-promotion.js.map +1 -0
  1259. package/dist/types/session/messages.d.ts +1 -1
  1260. package/dist/types/session/messages.js +1 -1
  1261. package/dist/types/session/prepare-step.d.ts +278 -0
  1262. package/dist/types/session/prepare-step.d.ts.map +1 -0
  1263. package/dist/types/session/prepare-step.js.map +1 -0
  1264. package/dist/types/session/records.d.ts +5597 -0
  1265. package/dist/types/session/records.d.ts.map +1 -0
  1266. package/dist/types/session/records.js +721 -0
  1267. package/dist/types/session/records.js.map +1 -0
  1268. package/dist/types/session/step.d.ts +195 -0
  1269. package/dist/types/session/step.d.ts.map +1 -0
  1270. package/dist/types/session/step.js +26 -0
  1271. package/dist/types/session/step.js.map +1 -0
  1272. package/dist/types/session/stop-reason.d.ts +67 -0
  1273. package/dist/types/session/stop-reason.d.ts.map +1 -0
  1274. package/dist/types/session/stop-reason.js.map +1 -0
  1275. package/dist/types/session/store.d.ts +2 -43
  1276. package/dist/types/session/store.d.ts.map +1 -1
  1277. package/dist/types/session/tool-execution.d.ts +34 -0
  1278. package/dist/types/session/tool-execution.d.ts.map +1 -0
  1279. package/dist/types/session/tool-execution.js +11 -0
  1280. package/dist/types/session/tool-execution.js.map +1 -0
  1281. package/dist/types/session/turn-state.d.ts +74 -0
  1282. package/dist/types/session/turn-state.d.ts.map +1 -0
  1283. package/dist/types/session/turn-state.js +59 -0
  1284. package/dist/types/session/turn-state.js.map +1 -0
  1285. package/dist/types/session/turn.d.ts +215 -0
  1286. package/dist/types/session/turn.d.ts.map +1 -0
  1287. package/dist/types/session/turn.js +44 -0
  1288. package/dist/types/session/turn.js.map +1 -0
  1289. package/dist/types/structured-output/index.d.ts +2 -2
  1290. package/dist/types/structured-output/index.d.ts.map +1 -1
  1291. package/dist/types/summary/deliverable.d.ts +4 -4
  1292. package/dist/types/summary/deliverable.d.ts.map +1 -1
  1293. package/dist/types/task/index.d.ts +8 -4
  1294. package/dist/types/task/index.d.ts.map +1 -1
  1295. package/dist/types/tool/index.d.ts +73 -26
  1296. package/dist/types/tool/index.d.ts.map +1 -1
  1297. package/dist/types/tool/index.js.map +1 -1
  1298. package/dist/types/topic/entity.d.ts +6 -6
  1299. package/dist/types/topic/objective.d.ts +10 -5
  1300. package/dist/types/topic/objective.d.ts.map +1 -1
  1301. package/dist/types/topic/objective.js.map +1 -1
  1302. package/dist/types/topic/state.d.ts +4 -4
  1303. package/dist/types/topic/store.d.ts +1 -1
  1304. package/dist/types/topic/store.js +1 -1
  1305. package/dist/types/workspace/index.d.ts +1 -1
  1306. package/dist/types/workspace/index.d.ts.map +1 -1
  1307. package/dist/types/workspace/index.js +1 -1
  1308. package/dist/types/workspace/index.js.map +1 -1
  1309. package/dist/types/workspace/ref.d.ts +3 -3
  1310. package/dist/types/workspace/shared-session.d.ts +61 -0
  1311. package/dist/types/workspace/shared-session.d.ts.map +1 -0
  1312. package/dist/types/workspace/shared-session.js +2 -0
  1313. package/dist/types/workspace/shared-session.js.map +1 -0
  1314. package/dist/utils/abort.js +4 -4
  1315. package/dist/utils/abort.js.map +1 -1
  1316. package/dist/utils/atomic-write.d.ts +29 -1
  1317. package/dist/utils/atomic-write.d.ts.map +1 -1
  1318. package/dist/utils/atomic-write.js +60 -4
  1319. package/dist/utils/atomic-write.js.map +1 -1
  1320. package/dist/utils/cost.d.ts +3 -3
  1321. package/dist/utils/cost.d.ts.map +1 -1
  1322. package/dist/utils/cost.js +11 -12
  1323. package/dist/utils/cost.js.map +1 -1
  1324. package/dist/utils/env.d.ts +1 -1
  1325. package/dist/utils/env.js +1 -1
  1326. package/dist/utils/id.d.ts +9 -8
  1327. package/dist/utils/id.d.ts.map +1 -1
  1328. package/dist/utils/id.js +20 -13
  1329. package/dist/utils/id.js.map +1 -1
  1330. package/dist/utils/log/create-logger.js +1 -1
  1331. package/dist/utils/log/create-logger.js.map +1 -1
  1332. package/dist/utils/log/types.js +1 -1
  1333. package/dist/utils/log/types.js.map +1 -1
  1334. package/dist/utils/shell-compress.js +2 -2
  1335. package/dist/utils/shell-compress.js.map +1 -1
  1336. package/dist/utils/uuidv7.d.ts +33 -0
  1337. package/dist/utils/uuidv7.d.ts.map +1 -0
  1338. package/dist/utils/uuidv7.js +70 -0
  1339. package/dist/utils/uuidv7.js.map +1 -0
  1340. package/dist/vault/instrumentation.d.ts +5 -2
  1341. package/dist/vault/instrumentation.d.ts.map +1 -1
  1342. package/dist/vault/instrumentation.js +12 -6
  1343. package/dist/vault/instrumentation.js.map +1 -1
  1344. package/package.json +1 -1
  1345. package/src/advisory/budget.ts +3 -3
  1346. package/src/advisory/context.ts +9 -9
  1347. package/src/advisory/evaluator.ts +2 -2
  1348. package/src/advisory/parse.ts +1 -1
  1349. package/src/agents/AbstractAgent.ts +74 -50
  1350. package/src/agents/PipelineAgent.ts +91 -26
  1351. package/src/agents/ReactiveAgent.ts +35 -29
  1352. package/src/agents/RouterAgent.ts +32 -44
  1353. package/src/agents/SupervisorAgent.ts +55 -41
  1354. package/src/agents/budget.ts +73 -16
  1355. package/src/agents/defineAgent.ts +7 -3
  1356. package/src/agents/handle.ts +17 -19
  1357. package/src/agents/lock.ts +4 -4
  1358. package/src/agents/runAgent.ts +96 -38
  1359. package/src/agents/storage.ts +36 -0
  1360. package/src/authorization/command-line.ts +1 -1
  1361. package/src/authorization/gate.ts +1 -1
  1362. package/src/authorization/permission-presets.ts +4 -4
  1363. package/src/bridge/a2a/client.ts +2 -2
  1364. package/src/bridge/a2a/context.ts +46 -0
  1365. package/src/bridge/a2a/index.ts +12 -5
  1366. package/src/bridge/a2a/mapper.ts +48 -38
  1367. package/src/bridge/a2a/task.ts +91 -37
  1368. package/src/bridge/acp/permission.ts +2 -2
  1369. package/src/bridge/acp/server.ts +45 -11
  1370. package/src/bridge/acp/update.ts +9 -9
  1371. package/src/bridge/external-session.ts +82 -0
  1372. package/src/bridge/sse/index.ts +1 -1
  1373. package/src/bridge/sse/mapper.ts +116 -145
  1374. package/src/bus/breaker.ts +30 -29
  1375. package/src/bus/index.ts +7 -7
  1376. package/src/bus/lock.ts +7 -7
  1377. package/src/bus/ownership.ts +8 -8
  1378. package/src/compaction/consolidation.ts +61 -15
  1379. package/src/compaction/context-window.ts +4 -4
  1380. package/src/compaction/index.ts +2 -2
  1381. package/src/compaction/manager.ts +4 -4
  1382. package/src/compaction/manual.ts +5 -5
  1383. package/src/compaction/plan.ts +8 -8
  1384. package/src/compaction/reducer.ts +8 -8
  1385. package/src/compaction/retention.ts +2 -2
  1386. package/src/compaction/salience/bm25.ts +2 -2
  1387. package/src/compaction/salience/goal.ts +3 -3
  1388. package/src/compaction/salience/minhash.ts +1 -1
  1389. package/src/compaction/salience/score.ts +3 -3
  1390. package/src/compaction/salience/tokenize.ts +1 -1
  1391. package/src/compaction/verifier.ts +7 -7
  1392. package/src/compaction/wire.ts +1 -1
  1393. package/src/config/registry.ts +4 -4
  1394. package/src/config/runtime.ts +3 -3
  1395. package/src/connector/http-operation.ts +1 -1
  1396. package/src/connector/mcp/adapter.ts +1 -1
  1397. package/src/connector/mcp/client.ts +1 -1
  1398. package/src/connector/mcp/discovery.ts +2 -2
  1399. package/src/connector/mcp/policy.ts +1 -1
  1400. package/src/connector/mcp/prompt-adapter.ts +3 -3
  1401. package/src/constants/a2a/index.ts +10 -3
  1402. package/src/constants/continuation.ts +1 -1
  1403. package/src/constants/index.ts +0 -1
  1404. package/src/constants/limits.ts +2 -2
  1405. package/src/constants/telemetry/index.ts +15 -12
  1406. package/src/constants/tools/index.ts +2 -2
  1407. package/src/contracts/api.ts +11 -202
  1408. package/src/contracts/index.ts +8 -15
  1409. package/src/contracts/schemas.ts +6 -39
  1410. package/src/contracts/session/api.ts +150 -0
  1411. package/src/contracts/session/index.ts +29 -0
  1412. package/src/contracts/session/schemas.ts +60 -0
  1413. package/src/contracts/session/turn-status.ts +83 -0
  1414. package/src/contracts/session/turn.ts +67 -0
  1415. package/src/directory/derive-supervisor.ts +2 -2
  1416. package/src/directory/derive.ts +4 -4
  1417. package/src/directory/index.ts +2 -2
  1418. package/src/directory/load.ts +2 -2
  1419. package/src/directory/types.ts +2 -2
  1420. package/src/eval/experiment.ts +23 -23
  1421. package/src/eval/from-turn.ts +50 -0
  1422. package/src/eval/harness-verification.ts +7 -7
  1423. package/src/eval/index.ts +2 -2
  1424. package/src/eval/judge.ts +10 -10
  1425. package/src/eval/scorers.ts +23 -23
  1426. package/src/eval/types.ts +12 -12
  1427. package/src/eval/uncertainty.ts +2 -2
  1428. package/src/execution/code-runtime/types.ts +4 -4
  1429. package/src/execution/code-runtime/worker.ts +1 -1
  1430. package/src/invariants/index.ts +2 -2
  1431. package/src/manager/agent/child-session.ts +120 -0
  1432. package/src/manager/agent/lifecycle.ts +422 -102
  1433. package/src/manager/index.ts +1 -2
  1434. package/src/manager/plan/lifecycle.ts +16 -10
  1435. package/src/manager/resident/consumption.ts +8 -6
  1436. package/src/manager/resident/evidence-recall.ts +14 -14
  1437. package/src/manager/resident/host.ts +2 -2
  1438. package/src/manager/resident/learning-cycle.ts +5 -3
  1439. package/src/manager/resident/learning-observation.ts +9 -4
  1440. package/src/manager/resident/learning-store.ts +46 -16
  1441. package/src/manager/resident/tool-evidence.ts +38 -31
  1442. package/src/manager/session/turn-recorder.ts +1291 -0
  1443. package/src/plugin/lifecycle.ts +20 -13
  1444. package/src/plugin/shell-hook.ts +64 -25
  1445. package/src/pricing/index.ts +5 -5
  1446. package/src/pricing/rates.source.json +5 -5
  1447. package/src/probe/context.ts +5 -3
  1448. package/src/probe/registry.ts +1 -1
  1449. package/src/prompt/coding-agent-doctrine.ts +1 -1
  1450. package/src/prompt/contributions.ts +28 -6
  1451. package/src/prompt/resident-learning.ts +2 -2
  1452. package/src/provider/collect-chat-completion.ts +3 -3
  1453. package/src/provider/conformance.ts +21 -6
  1454. package/src/provider/errors.ts +2 -2
  1455. package/src/provider/fallback.ts +8 -8
  1456. package/src/provider/idle-timeout.ts +4 -4
  1457. package/src/provider/instrumentation.ts +14 -7
  1458. package/src/provider/mock.ts +1 -1
  1459. package/src/provider/retry.ts +7 -7
  1460. package/src/provider/stream-text.ts +1 -1
  1461. package/src/provider/thinking-support.ts +2 -2
  1462. package/src/provider/token-budget.ts +2 -2
  1463. package/src/public-runtime.ts +213 -141
  1464. package/src/public-tools.ts +14 -7
  1465. package/src/public-types.ts +71 -59
  1466. package/src/rag/embedding.ts +1 -1
  1467. package/src/read-model/index.ts +2 -2
  1468. package/src/read-model/registry.ts +11 -11
  1469. package/src/read-model/session-status.ts +87 -0
  1470. package/src/registry/command/kernel-commands.ts +10 -10
  1471. package/src/registry/tool/dialect.ts +1 -1
  1472. package/src/registry/tool/execute.ts +20 -7
  1473. package/src/registry/tool/portable.ts +1 -1
  1474. package/src/registry/tool/presentation.ts +1 -1
  1475. package/src/registry/tool/schema.ts +1 -1
  1476. package/src/registry/tool/screen.ts +3 -3
  1477. package/src/runtime/bidi/index.ts +2 -2
  1478. package/src/runtime/bidi/session.ts +45 -34
  1479. package/src/runtime/jobs/awaited-jobs.ts +13 -13
  1480. package/src/runtime/jobs/registry.ts +11 -11
  1481. package/src/runtime/query/abandon-turn.ts +110 -0
  1482. package/src/runtime/query/approval-policy.ts +13 -13
  1483. package/src/runtime/query/callback-inference.ts +16 -10
  1484. package/src/runtime/query/cancelled-before-start.ts +96 -79
  1485. package/src/runtime/query/checkpoint.ts +519 -420
  1486. package/src/runtime/query/compact-session.ts +92 -0
  1487. package/src/runtime/query/context.ts +80 -136
  1488. package/src/runtime/query/events.ts +159 -126
  1489. package/src/runtime/query/executor/tool-call-admission.ts +6 -5
  1490. package/src/runtime/query/executor.ts +206 -111
  1491. package/src/runtime/query/file-evidence-seed.ts +2 -2
  1492. package/src/runtime/query/finalize-turn.ts +209 -0
  1493. package/src/runtime/query/fork/list.ts +20 -0
  1494. package/src/runtime/query/fork/mutate.ts +82 -0
  1495. package/src/runtime/query/fork/prepare.ts +92 -0
  1496. package/src/runtime/query/guard.ts +22 -22
  1497. package/src/runtime/query/guardrail-presets.ts +12 -12
  1498. package/src/runtime/query/guardrails.ts +11 -11
  1499. package/src/runtime/query/index.ts +1607 -1533
  1500. package/src/runtime/query/iteration/index.ts +304 -253
  1501. package/src/runtime/query/iteration/outstanding-work.ts +65 -65
  1502. package/src/runtime/query/iteration/phases/advisory.ts +16 -16
  1503. package/src/runtime/query/iteration/phases/checkpoint.ts +26 -10
  1504. package/src/runtime/query/iteration/phases/compaction.ts +74 -72
  1505. package/src/runtime/query/iteration/phases/context.ts +57 -60
  1506. package/src/runtime/query/iteration/phases/plan.ts +9 -6
  1507. package/src/runtime/query/iteration/phases/tool-review.ts +141 -27
  1508. package/src/runtime/query/iteration/phases/working-memory.ts +57 -22
  1509. package/src/runtime/query/iteration/step-context.ts +17 -0
  1510. package/src/runtime/query/iteration/step-shaping.ts +21 -24
  1511. package/src/runtime/query/iteration/stream-turn.ts +36 -32
  1512. package/src/runtime/query/plugin-hooks.ts +1 -1
  1513. package/src/runtime/query/prepare-turn.ts +932 -0
  1514. package/src/runtime/query/project-instructions.ts +5 -4
  1515. package/src/runtime/query/prompt-cache.ts +1 -1
  1516. package/src/runtime/query/prompt.ts +5 -5
  1517. package/src/runtime/query/question-park.ts +7 -7
  1518. package/src/runtime/query/release-turn.ts +157 -0
  1519. package/src/runtime/query/repeat-call.ts +7 -7
  1520. package/src/runtime/query/result.ts +123 -131
  1521. package/src/runtime/query/resume-pending.ts +101 -44
  1522. package/src/runtime/query/resume-session.ts +153 -0
  1523. package/src/runtime/query/review-policy.ts +147 -19
  1524. package/src/runtime/query/sandbox-lifecycle.ts +5 -5
  1525. package/src/runtime/query/session-storage.ts +302 -0
  1526. package/src/runtime/query/steering.ts +17 -4
  1527. package/src/runtime/query/token-budget.ts +59 -93
  1528. package/src/runtime/query/tool-call-budget.ts +14 -14
  1529. package/src/runtime/query/tool-executions.ts +77 -0
  1530. package/src/runtime/query/tool-grants.ts +3 -3
  1531. package/src/runtime/query/tool-output-budget.ts +4 -4
  1532. package/src/runtime/query/tool-pause.ts +8 -6
  1533. package/src/runtime/query/tooling.ts +22 -14
  1534. package/src/runtime/query/turn-state.ts +153 -0
  1535. package/src/sandbox/isolation.ts +2 -2
  1536. package/src/sandbox/provider/local.ts +8 -8
  1537. package/src/scheduler/completion-inbox.ts +36 -36
  1538. package/src/scheduler/delegating.ts +27 -13
  1539. package/src/scheduler/local.ts +49 -21
  1540. package/src/session/events/index.ts +10 -14
  1541. package/src/session/handoff/broadcast.ts +7 -7
  1542. package/src/session/handoff/events.ts +1 -1
  1543. package/src/session/handoff/index.ts +1 -1
  1544. package/src/session/handoff/single.ts +21 -21
  1545. package/src/session/handoff/version.ts +11 -7
  1546. package/src/session/home.ts +66 -0
  1547. package/src/session/index.ts +1 -0
  1548. package/src/session/log-hash.ts +115 -0
  1549. package/src/session/messages.ts +39 -0
  1550. package/src/session/paths.ts +449 -0
  1551. package/src/session/retention/archive.ts +13 -5
  1552. package/src/session/status/derive.ts +21 -21
  1553. package/src/session/workspace/git-worktree.ts +31 -2
  1554. package/src/session/workspace/index.ts +5 -8
  1555. package/src/session/workspace/shared-session.ts +354 -0
  1556. package/src/session-query/index.ts +152 -0
  1557. package/src/skills/registry.ts +1 -1
  1558. package/src/store/activity/memory.ts +5 -5
  1559. package/src/store/attachment/index.ts +5 -5
  1560. package/src/store/budget/disk.ts +243 -0
  1561. package/src/store/budget/index.ts +24 -0
  1562. package/src/store/budget/ledger.ts +836 -0
  1563. package/src/store/budget/memory.ts +39 -0
  1564. package/src/store/checkpoint/contract.ts +225 -0
  1565. package/src/store/checkpoint/disk.ts +209 -0
  1566. package/src/store/checkpoint/index.ts +22 -0
  1567. package/src/store/checkpoint/memory.ts +112 -0
  1568. package/src/store/checkpoint/prune.ts +93 -0
  1569. package/src/store/config/index.ts +1 -1
  1570. package/src/store/evidence/disk.ts +185 -81
  1571. package/src/store/evidence/index-page.ts +67 -140
  1572. package/src/store/evidence/source-text.ts +23 -28
  1573. package/src/store/evidence/types.ts +51 -41
  1574. package/src/store/feedback/conformance.ts +37 -35
  1575. package/src/store/feedback/disk.ts +61 -63
  1576. package/src/store/feedback/index.ts +1 -1
  1577. package/src/store/feedback/memory.ts +0 -0
  1578. package/src/store/feedback/types.ts +14 -13
  1579. package/src/store/index.ts +24 -28
  1580. package/src/store/memory/digest.ts +35 -0
  1581. package/src/store/memory/disk.ts +66 -20
  1582. package/src/store/memory/index-file.ts +121 -0
  1583. package/src/store/memory/index.ts +4 -2
  1584. package/src/store/memory/links.ts +37 -0
  1585. package/src/store/memory/markdown-format.ts +276 -0
  1586. package/src/store/memory/markdown.ts +741 -0
  1587. package/src/store/memory/memory.ts +39 -17
  1588. package/src/store/memory/naming.ts +195 -0
  1589. package/src/store/memory/origin.ts +35 -0
  1590. package/src/store/session/disk.ts +27 -200
  1591. package/src/store/session/index.ts +5 -9
  1592. package/src/store/session/memory.ts +1 -78
  1593. package/src/store/session-claim.ts +101 -0
  1594. package/src/store/session-index/fts.ts +215 -0
  1595. package/src/store/session-index/index.ts +253 -0
  1596. package/src/store/session-index/rebuild.ts +869 -0
  1597. package/src/store/session-index/refs.ts +164 -0
  1598. package/src/store/session-index/scan.ts +273 -0
  1599. package/src/store/session-index/sqlite.ts +772 -0
  1600. package/src/store/session-log/chain.ts +314 -0
  1601. package/src/store/session-log/conformance.ts +487 -0
  1602. package/src/store/session-log/core.ts +809 -0
  1603. package/src/store/session-log/disk.ts +217 -0
  1604. package/src/store/session-log/fold.ts +368 -0
  1605. package/src/store/session-log/heal.ts +44 -0
  1606. package/src/store/session-log/held-leases.ts +103 -0
  1607. package/src/store/session-log/index.ts +87 -0
  1608. package/src/store/session-log/lease.ts +354 -0
  1609. package/src/store/session-log/memory.ts +111 -0
  1610. package/src/store/session-log/spill.ts +311 -0
  1611. package/src/store/task/context.ts +33 -0
  1612. package/src/store/task/disk.ts +122 -141
  1613. package/src/store/task/memory.ts +14 -8
  1614. package/src/store/topic/index.ts +2 -2
  1615. package/src/store/topic/objective.ts +12 -3
  1616. package/src/store/topic/state.ts +1 -1
  1617. package/src/streaming/coalesce.ts +8 -7
  1618. package/src/telemetry/attributes.ts +10 -9
  1619. package/src/telemetry/metrics.ts +6 -6
  1620. package/src/telemetry/runtime-accessors.ts +1 -1
  1621. package/src/test-support/ids.ts +5 -6
  1622. package/src/testing.ts +11 -16
  1623. package/src/tools/advisory/index.ts +1 -1
  1624. package/src/tools/builtins/bash.ts +43 -5
  1625. package/src/tools/builtins/content-fingerprint.ts +2 -2
  1626. package/src/tools/builtins/edit-apply.ts +1 -1
  1627. package/src/tools/builtins/edit.ts +3 -0
  1628. package/src/tools/builtins/glob.ts +3 -0
  1629. package/src/tools/builtins/grep.ts +3 -0
  1630. package/src/tools/builtins/job.ts +5 -5
  1631. package/src/tools/builtins/ls.ts +3 -0
  1632. package/src/tools/builtins/lsp.ts +5 -2
  1633. package/src/tools/builtins/read-file.ts +3 -0
  1634. package/src/tools/builtins/run-code.ts +11 -11
  1635. package/src/tools/builtins/skill.ts +3 -3
  1636. package/src/tools/builtins/wait-for-job-bounds.ts +6 -6
  1637. package/src/tools/builtins/wait-for-job.ts +3 -3
  1638. package/src/tools/builtins/web-guidance.ts +2 -2
  1639. package/src/tools/builtins/web.ts +3 -3
  1640. package/src/tools/builtins/write-file.ts +3 -0
  1641. package/src/tools/coordinator/agent.ts +8 -8
  1642. package/src/tools/coordinator/ask-user-question.ts +16 -14
  1643. package/src/tools/coordinator/index.ts +64 -54
  1644. package/src/tools/coordinator/outcome.ts +7 -7
  1645. package/src/tools/coordinator/plan-dependencies.ts +1 -1
  1646. package/src/tools/coordinator/wait-with-idle-bound.ts +6 -6
  1647. package/src/tools/defineTool.ts +9 -1
  1648. package/src/tools/env-scrub.ts +1 -1
  1649. package/src/tools/goal/index.ts +16 -12
  1650. package/src/tools/memory/fields.ts +26 -0
  1651. package/src/tools/memory/read.ts +75 -8
  1652. package/src/tools/memory/resolve.ts +37 -0
  1653. package/src/tools/memory/save.ts +54 -18
  1654. package/src/tools/memory/search.ts +9 -5
  1655. package/src/tools/memory/update.ts +43 -7
  1656. package/src/tools/paths.ts +87 -27
  1657. package/src/tools/posix-path.ts +1 -1
  1658. package/src/tools/resident-history.ts +1 -1
  1659. package/src/tools/resident-tool-evidence.ts +1 -1
  1660. package/src/tools/task/create.ts +7 -3
  1661. package/src/tools/task/index.ts +20 -4
  1662. package/src/tools/task/list.ts +12 -6
  1663. package/src/turn/LimitChecker.ts +99 -0
  1664. package/src/turn/command-gate.ts +294 -0
  1665. package/src/turn/drain.ts +324 -0
  1666. package/src/turn/evidence-query.ts +333 -0
  1667. package/src/turn/evidence-recall.ts +860 -0
  1668. package/src/turn/index.ts +38 -0
  1669. package/src/turn/json-claim-verifier.ts +298 -0
  1670. package/src/turn/memory-promoter.ts +160 -0
  1671. package/src/turn/memory-recall.ts +285 -0
  1672. package/src/turn/reporter.ts +469 -0
  1673. package/src/types/activity/index.ts +2 -2
  1674. package/src/types/advisory/config.ts +7 -7
  1675. package/src/types/agent/base.ts +74 -44
  1676. package/src/types/agent/core.ts +10 -10
  1677. package/src/types/agent/delegate.ts +2 -2
  1678. package/src/types/agent/factory.ts +8 -4
  1679. package/src/types/agent/manager.ts +6 -6
  1680. package/src/types/agent/pipeline.ts +5 -4
  1681. package/src/types/agent/reactive.ts +11 -10
  1682. package/src/types/agent/router.ts +1 -1
  1683. package/src/types/agent/scheduler.ts +28 -11
  1684. package/src/types/agent/supervisor.ts +13 -13
  1685. package/src/types/agent/task.ts +53 -12
  1686. package/src/types/agent/working-memory.ts +6 -4
  1687. package/src/types/bidi/index.ts +31 -12
  1688. package/src/types/bus/index.ts +32 -26
  1689. package/src/types/code-navigation/index.ts +1 -1
  1690. package/src/types/common/index.ts +12 -26
  1691. package/src/types/connector/core.ts +2 -2
  1692. package/src/types/connector/definition.ts +1 -1
  1693. package/src/types/connector/mcp.ts +1 -1
  1694. package/src/types/errors/catalog.ts +4 -4
  1695. package/src/types/errors/index.ts +5 -5
  1696. package/src/types/guardrail/index.ts +12 -10
  1697. package/src/types/hitl/index.ts +81 -125
  1698. package/src/types/hitl/policy.ts +8 -6
  1699. package/src/types/ids/brand.ts +10 -2
  1700. package/src/types/ids/index.ts +10 -4
  1701. package/src/types/memory/index.ts +53 -0
  1702. package/src/types/message/index.ts +4 -4
  1703. package/src/types/plan/index.ts +5 -3
  1704. package/src/types/plugin/index.ts +41 -24
  1705. package/src/types/probe/event-kind.ts +3 -3
  1706. package/src/types/probe/registry.ts +3 -2
  1707. package/src/types/project/entity.ts +3 -3
  1708. package/src/types/provider/config.ts +3 -3
  1709. package/src/types/provider/error.ts +1 -1
  1710. package/src/types/provider/errors.ts +3 -3
  1711. package/src/types/provider/interface.ts +5 -5
  1712. package/src/types/provider/model.ts +26 -2
  1713. package/src/types/router/task-router.ts +1 -1
  1714. package/src/types/sandbox/index.ts +12 -12
  1715. package/src/types/session/answer-review.ts +85 -0
  1716. package/src/types/session/audit.ts +167 -0
  1717. package/src/types/session/cancel-cause.ts +60 -0
  1718. package/src/types/session/checkpoint.ts +167 -0
  1719. package/src/types/session/config.ts +212 -0
  1720. package/src/types/session/derive-status.ts +61 -0
  1721. package/src/types/session/durable.ts +150 -0
  1722. package/src/types/session/entity.ts +1 -1
  1723. package/src/types/session/events.ts +1187 -0
  1724. package/src/types/session/fork.ts +52 -0
  1725. package/src/types/session/ids.ts +1 -1
  1726. package/src/types/session/index.ts +24 -4
  1727. package/src/types/session/lineage.ts +15 -0
  1728. package/src/types/session/log-cursor.ts +69 -0
  1729. package/src/types/session/memory-promotion.ts +116 -0
  1730. package/src/types/session/messages.ts +1 -1
  1731. package/src/types/session/prepare-step.ts +299 -0
  1732. package/src/types/session/records.ts +931 -0
  1733. package/src/types/session/step.ts +214 -0
  1734. package/src/types/session/stop-reason.ts +83 -0
  1735. package/src/types/session/store.ts +5 -52
  1736. package/src/types/session/tool-execution.ts +32 -0
  1737. package/src/types/session/turn-state.ts +136 -0
  1738. package/src/types/session/turn.ts +289 -0
  1739. package/src/types/structured-output/index.ts +4 -4
  1740. package/src/types/summary/deliverable.ts +4 -4
  1741. package/src/types/task/index.ts +8 -4
  1742. package/src/types/tool/index.ts +74 -27
  1743. package/src/types/topic/entity.ts +6 -6
  1744. package/src/types/topic/objective.ts +7 -5
  1745. package/src/types/topic/state.ts +4 -4
  1746. package/src/types/topic/store.ts +1 -1
  1747. package/src/types/workspace/index.ts +8 -8
  1748. package/src/types/workspace/ref.ts +3 -3
  1749. package/src/types/workspace/shared-session.ts +65 -0
  1750. package/src/utils/abort.ts +4 -4
  1751. package/src/utils/atomic-write.ts +67 -4
  1752. package/src/utils/cost.ts +11 -12
  1753. package/src/utils/env.ts +1 -1
  1754. package/src/utils/id.ts +25 -18
  1755. package/src/utils/log/attributes.ts +2 -2
  1756. package/src/utils/log/create-logger.ts +1 -1
  1757. package/src/utils/log/types.ts +1 -1
  1758. package/src/utils/shell-compress.ts +2 -2
  1759. package/src/utils/uuidv7.ts +107 -0
  1760. package/src/vault/instrumentation.ts +21 -8
  1761. package/dist/constants/emergency.d.ts +0 -4
  1762. package/dist/constants/emergency.d.ts.map +0 -1
  1763. package/dist/constants/emergency.js +0 -4
  1764. package/dist/constants/emergency.js.map +0 -1
  1765. package/dist/contracts/run-status.d.ts +0 -17
  1766. package/dist/contracts/run-status.d.ts.map +0 -1
  1767. package/dist/contracts/run-status.js +0 -41
  1768. package/dist/contracts/run-status.js.map +0 -1
  1769. package/dist/eval/from-run.d.ts +0 -30
  1770. package/dist/eval/from-run.d.ts.map +0 -1
  1771. package/dist/eval/from-run.js +0 -46
  1772. package/dist/eval/from-run.js.map +0 -1
  1773. package/dist/manager/run/emergency.d.ts +0 -19
  1774. package/dist/manager/run/emergency.d.ts.map +0 -1
  1775. package/dist/manager/run/emergency.js +0 -122
  1776. package/dist/manager/run/emergency.js.map +0 -1
  1777. package/dist/manager/run/persistence.d.ts +0 -312
  1778. package/dist/manager/run/persistence.d.ts.map +0 -1
  1779. package/dist/manager/run/persistence.js +0 -656
  1780. package/dist/manager/run/persistence.js.map +0 -1
  1781. package/dist/read-model/run-status.d.ts +0 -43
  1782. package/dist/read-model/run-status.d.ts.map +0 -1
  1783. package/dist/read-model/run-status.js +0 -89
  1784. package/dist/read-model/run-status.js.map +0 -1
  1785. package/dist/run/LimitChecker.d.ts +0 -30
  1786. package/dist/run/LimitChecker.d.ts.map +0 -1
  1787. package/dist/run/LimitChecker.js +0 -57
  1788. package/dist/run/LimitChecker.js.map +0 -1
  1789. package/dist/run/command-gate.d.ts +0 -107
  1790. package/dist/run/command-gate.d.ts.map +0 -1
  1791. package/dist/run/command-gate.js +0 -221
  1792. package/dist/run/command-gate.js.map +0 -1
  1793. package/dist/run/drain.d.ts +0 -204
  1794. package/dist/run/drain.d.ts.map +0 -1
  1795. package/dist/run/drain.js +0 -238
  1796. package/dist/run/drain.js.map +0 -1
  1797. package/dist/run/evidence-query.d.ts +0 -41
  1798. package/dist/run/evidence-query.d.ts.map +0 -1
  1799. package/dist/run/evidence-query.js +0 -270
  1800. package/dist/run/evidence-query.js.map +0 -1
  1801. package/dist/run/evidence-recall.d.ts +0 -99
  1802. package/dist/run/evidence-recall.d.ts.map +0 -1
  1803. package/dist/run/evidence-recall.js +0 -633
  1804. package/dist/run/evidence-recall.js.map +0 -1
  1805. package/dist/run/index.d.ts +0 -19
  1806. package/dist/run/index.d.ts.map +0 -1
  1807. package/dist/run/index.js +0 -11
  1808. package/dist/run/index.js.map +0 -1
  1809. package/dist/run/json-claim-verifier.d.ts +0 -83
  1810. package/dist/run/json-claim-verifier.d.ts.map +0 -1
  1811. package/dist/run/json-claim-verifier.js +0 -200
  1812. package/dist/run/json-claim-verifier.js.map +0 -1
  1813. package/dist/run/memory-promoter.d.ts +0 -38
  1814. package/dist/run/memory-promoter.d.ts.map +0 -1
  1815. package/dist/run/memory-promoter.js +0 -109
  1816. package/dist/run/memory-promoter.js.map +0 -1
  1817. package/dist/run/memory-recall.d.ts +0 -25
  1818. package/dist/run/memory-recall.d.ts.map +0 -1
  1819. package/dist/run/memory-recall.js +0 -228
  1820. package/dist/run/memory-recall.js.map +0 -1
  1821. package/dist/run/preparation-context-error.d.ts.map +0 -1
  1822. package/dist/run/preparation-context-error.js.map +0 -1
  1823. package/dist/run/reporter.d.ts +0 -8
  1824. package/dist/run/reporter.d.ts.map +0 -1
  1825. package/dist/run/reporter.js +0 -420
  1826. package/dist/run/reporter.js.map +0 -1
  1827. package/dist/run/token-budget.d.ts +0 -116
  1828. package/dist/run/token-budget.d.ts.map +0 -1
  1829. package/dist/run/token-budget.js +0 -626
  1830. package/dist/run/token-budget.js.map +0 -1
  1831. package/dist/run/workspace-fingerprint.d.ts.map +0 -1
  1832. package/dist/run/workspace-fingerprint.js.map +0 -1
  1833. package/dist/run-query/index.d.ts +0 -90
  1834. package/dist/run-query/index.d.ts.map +0 -1
  1835. package/dist/run-query/index.js +0 -127
  1836. package/dist/run-query/index.js.map +0 -1
  1837. package/dist/runtime/query/finalize-run.d.ts +0 -55
  1838. package/dist/runtime/query/finalize-run.d.ts.map +0 -1
  1839. package/dist/runtime/query/finalize-run.js +0 -113
  1840. package/dist/runtime/query/finalize-run.js.map +0 -1
  1841. package/dist/runtime/query/prepare-run.d.ts +0 -94
  1842. package/dist/runtime/query/prepare-run.d.ts.map +0 -1
  1843. package/dist/runtime/query/prepare-run.js +0 -589
  1844. package/dist/runtime/query/prepare-run.js.map +0 -1
  1845. package/dist/runtime/query/release-run.d.ts +0 -56
  1846. package/dist/runtime/query/release-run.d.ts.map +0 -1
  1847. package/dist/runtime/query/release-run.js +0 -101
  1848. package/dist/runtime/query/release-run.js.map +0 -1
  1849. package/dist/runtime/query/replay/list.d.ts +0 -40
  1850. package/dist/runtime/query/replay/list.d.ts.map +0 -1
  1851. package/dist/runtime/query/replay/list.js +0 -38
  1852. package/dist/runtime/query/replay/list.js.map +0 -1
  1853. package/dist/runtime/query/replay/mutate.d.ts +0 -17
  1854. package/dist/runtime/query/replay/mutate.d.ts.map +0 -1
  1855. package/dist/runtime/query/replay/mutate.js +0 -69
  1856. package/dist/runtime/query/replay/mutate.js.map +0 -1
  1857. package/dist/runtime/query/replay/prepare.d.ts +0 -66
  1858. package/dist/runtime/query/replay/prepare.d.ts.map +0 -1
  1859. package/dist/runtime/query/replay/prepare.js +0 -81
  1860. package/dist/runtime/query/replay/prepare.js.map +0 -1
  1861. package/dist/runtime/query/resume-run.d.ts +0 -103
  1862. package/dist/runtime/query/resume-run.d.ts.map +0 -1
  1863. package/dist/runtime/query/resume-run.js +0 -105
  1864. package/dist/runtime/query/resume-run.js.map +0 -1
  1865. package/dist/runtime/query/run-state.d.ts +0 -57
  1866. package/dist/runtime/query/run-state.d.ts.map +0 -1
  1867. package/dist/runtime/query/run-state.js +0 -96
  1868. package/dist/runtime/query/run-state.js.map +0 -1
  1869. package/dist/session/workspace/path-builder.d.ts +0 -50
  1870. package/dist/session/workspace/path-builder.d.ts.map +0 -1
  1871. package/dist/session/workspace/path-builder.js +0 -51
  1872. package/dist/session/workspace/path-builder.js.map +0 -1
  1873. package/dist/session/workspace/shared-run.d.ts +0 -112
  1874. package/dist/session/workspace/shared-run.d.ts.map +0 -1
  1875. package/dist/session/workspace/shared-run.js +0 -290
  1876. package/dist/session/workspace/shared-run.js.map +0 -1
  1877. package/dist/store/evidence/compaction-archive.d.ts +0 -109
  1878. package/dist/store/evidence/compaction-archive.d.ts.map +0 -1
  1879. package/dist/store/evidence/compaction-archive.js +0 -125
  1880. package/dist/store/evidence/compaction-archive.js.map +0 -1
  1881. package/dist/store/evidence/linked.d.ts +0 -9
  1882. package/dist/store/evidence/linked.d.ts.map +0 -1
  1883. package/dist/store/evidence/linked.js +0 -314
  1884. package/dist/store/evidence/linked.js.map +0 -1
  1885. package/dist/store/evidence/record-chain.d.ts +0 -42
  1886. package/dist/store/evidence/record-chain.d.ts.map +0 -1
  1887. package/dist/store/evidence/record-chain.js +0 -111
  1888. package/dist/store/evidence/record-chain.js.map +0 -1
  1889. package/dist/store/run/checkpoint-disk.d.ts +0 -98
  1890. package/dist/store/run/checkpoint-disk.d.ts.map +0 -1
  1891. package/dist/store/run/checkpoint-disk.js +0 -190
  1892. package/dist/store/run/checkpoint-disk.js.map +0 -1
  1893. package/dist/store/run/checkpoint-memory.d.ts +0 -51
  1894. package/dist/store/run/checkpoint-memory.d.ts.map +0 -1
  1895. package/dist/store/run/checkpoint-memory.js +0 -178
  1896. package/dist/store/run/checkpoint-memory.js.map +0 -1
  1897. package/dist/store/run/claim-disk.d.ts +0 -130
  1898. package/dist/store/run/claim-disk.d.ts.map +0 -1
  1899. package/dist/store/run/claim-disk.js +0 -570
  1900. package/dist/store/run/claim-disk.js.map +0 -1
  1901. package/dist/store/run/conformance.d.ts +0 -159
  1902. package/dist/store/run/conformance.d.ts.map +0 -1
  1903. package/dist/store/run/conformance.js +0 -466
  1904. package/dist/store/run/conformance.js.map +0 -1
  1905. package/dist/store/run/disk.d.ts +0 -189
  1906. package/dist/store/run/disk.d.ts.map +0 -1
  1907. package/dist/store/run/disk.js +0 -804
  1908. package/dist/store/run/disk.js.map +0 -1
  1909. package/dist/store/run/listing.d.ts +0 -118
  1910. package/dist/store/run/listing.d.ts.map +0 -1
  1911. package/dist/store/run/listing.js +0 -333
  1912. package/dist/store/run/listing.js.map +0 -1
  1913. package/dist/store/run/memory.d.ts +0 -55
  1914. package/dist/store/run/memory.d.ts.map +0 -1
  1915. package/dist/store/run/memory.js +0 -176
  1916. package/dist/store/run/memory.js.map +0 -1
  1917. package/dist/store/run/token-budget-disk.d.ts +0 -37
  1918. package/dist/store/run/token-budget-disk.d.ts.map +0 -1
  1919. package/dist/store/run/token-budget-disk.js +0 -211
  1920. package/dist/store/run/token-budget-disk.js.map +0 -1
  1921. package/dist/store/run/tool-executions.d.ts +0 -13
  1922. package/dist/store/run/tool-executions.d.ts.map +0 -1
  1923. package/dist/store/run/tool-executions.js +0 -99
  1924. package/dist/store/run/tool-executions.js.map +0 -1
  1925. package/dist/store/session/sqlite.d.ts +0 -57
  1926. package/dist/store/session/sqlite.d.ts.map +0 -1
  1927. package/dist/store/session/sqlite.js +0 -430
  1928. package/dist/store/session/sqlite.js.map +0 -1
  1929. package/dist/types/run/answer-review.d.ts +0 -79
  1930. package/dist/types/run/answer-review.d.ts.map +0 -1
  1931. package/dist/types/run/answer-review.js.map +0 -1
  1932. package/dist/types/run/audit.d.ts +0 -150
  1933. package/dist/types/run/audit.d.ts.map +0 -1
  1934. package/dist/types/run/audit.js +0 -39
  1935. package/dist/types/run/audit.js.map +0 -1
  1936. package/dist/types/run/cancel-cause.d.ts +0 -49
  1937. package/dist/types/run/cancel-cause.d.ts.map +0 -1
  1938. package/dist/types/run/cancel-cause.js +0 -39
  1939. package/dist/types/run/cancel-cause.js.map +0 -1
  1940. package/dist/types/run/checkpoint-store.d.ts +0 -511
  1941. package/dist/types/run/checkpoint-store.d.ts.map +0 -1
  1942. package/dist/types/run/checkpoint-store.js +0 -12
  1943. package/dist/types/run/checkpoint-store.js.map +0 -1
  1944. package/dist/types/run/config.d.ts +0 -207
  1945. package/dist/types/run/config.d.ts.map +0 -1
  1946. package/dist/types/run/config.js.map +0 -1
  1947. package/dist/types/run/derive-status.d.ts +0 -29
  1948. package/dist/types/run/derive-status.d.ts.map +0 -1
  1949. package/dist/types/run/derive-status.js +0 -49
  1950. package/dist/types/run/derive-status.js.map +0 -1
  1951. package/dist/types/run/emergency.d.ts +0 -32
  1952. package/dist/types/run/emergency.d.ts.map +0 -1
  1953. package/dist/types/run/emergency.js +0 -6
  1954. package/dist/types/run/emergency.js.map +0 -1
  1955. package/dist/types/run/entity.d.ts +0 -151
  1956. package/dist/types/run/entity.d.ts.map +0 -1
  1957. package/dist/types/run/entity.js +0 -2
  1958. package/dist/types/run/entity.js.map +0 -1
  1959. package/dist/types/run/event-cursor.d.ts +0 -90
  1960. package/dist/types/run/event-cursor.d.ts.map +0 -1
  1961. package/dist/types/run/event-cursor.js +0 -47
  1962. package/dist/types/run/event-cursor.js.map +0 -1
  1963. package/dist/types/run/events.d.ts +0 -1064
  1964. package/dist/types/run/events.d.ts.map +0 -1
  1965. package/dist/types/run/events.js +0 -31
  1966. package/dist/types/run/events.js.map +0 -1
  1967. package/dist/types/run/index.d.ts +0 -24
  1968. package/dist/types/run/index.d.ts.map +0 -1
  1969. package/dist/types/run/index.js +0 -23
  1970. package/dist/types/run/index.js.map +0 -1
  1971. package/dist/types/run/lineage.d.ts +0 -15
  1972. package/dist/types/run/lineage.d.ts.map +0 -1
  1973. package/dist/types/run/lineage.js.map +0 -1
  1974. package/dist/types/run/memory-promotion.d.ts +0 -90
  1975. package/dist/types/run/memory-promotion.d.ts.map +0 -1
  1976. package/dist/types/run/memory-promotion.js +0 -38
  1977. package/dist/types/run/memory-promotion.js.map +0 -1
  1978. package/dist/types/run/metadata.d.ts +0 -47
  1979. package/dist/types/run/metadata.d.ts.map +0 -1
  1980. package/dist/types/run/metadata.js +0 -2
  1981. package/dist/types/run/metadata.js.map +0 -1
  1982. package/dist/types/run/prepare-step.d.ts +0 -260
  1983. package/dist/types/run/prepare-step.d.ts.map +0 -1
  1984. package/dist/types/run/prepare-step.js.map +0 -1
  1985. package/dist/types/run/replay.d.ts +0 -53
  1986. package/dist/types/run/replay.d.ts.map +0 -1
  1987. package/dist/types/run/replay.js +0 -15
  1988. package/dist/types/run/replay.js.map +0 -1
  1989. package/dist/types/run/schema-version.d.ts +0 -19
  1990. package/dist/types/run/schema-version.d.ts.map +0 -1
  1991. package/dist/types/run/schema-version.js +0 -18
  1992. package/dist/types/run/schema-version.js.map +0 -1
  1993. package/dist/types/run/state.d.ts +0 -109
  1994. package/dist/types/run/state.d.ts.map +0 -1
  1995. package/dist/types/run/state.js +0 -109
  1996. package/dist/types/run/state.js.map +0 -1
  1997. package/dist/types/run/status.d.ts +0 -26
  1998. package/dist/types/run/status.d.ts.map +0 -1
  1999. package/dist/types/run/status.js +0 -2
  2000. package/dist/types/run/status.js.map +0 -1
  2001. package/dist/types/run/step.d.ts +0 -198
  2002. package/dist/types/run/step.d.ts.map +0 -1
  2003. package/dist/types/run/step.js +0 -26
  2004. package/dist/types/run/step.js.map +0 -1
  2005. package/dist/types/run/stop-reason.d.ts +0 -67
  2006. package/dist/types/run/stop-reason.d.ts.map +0 -1
  2007. package/dist/types/run/stop-reason.js.map +0 -1
  2008. package/dist/types/run/store.d.ts +0 -300
  2009. package/dist/types/run/store.d.ts.map +0 -1
  2010. package/dist/types/run/store.js +0 -2
  2011. package/dist/types/run/store.js.map +0 -1
  2012. package/dist/types/run/subsession-events.d.ts +0 -64
  2013. package/dist/types/run/subsession-events.d.ts.map +0 -1
  2014. package/dist/types/run/subsession-events.js +0 -2
  2015. package/dist/types/run/subsession-events.js.map +0 -1
  2016. package/dist/types/run/token-budget-store.d.ts +0 -29
  2017. package/dist/types/run/token-budget-store.d.ts.map +0 -1
  2018. package/dist/types/run/token-budget-store.js +0 -25
  2019. package/dist/types/run/token-budget-store.js.map +0 -1
  2020. package/dist/types/workspace/shared-run.d.ts +0 -61
  2021. package/dist/types/workspace/shared-run.d.ts.map +0 -1
  2022. package/dist/types/workspace/shared-run.js +0 -2
  2023. package/dist/types/workspace/shared-run.js.map +0 -1
  2024. package/src/constants/emergency.ts +0 -3
  2025. package/src/contracts/run-status.ts +0 -43
  2026. package/src/eval/from-run.ts +0 -48
  2027. package/src/manager/run/emergency.ts +0 -148
  2028. package/src/manager/run/persistence.ts +0 -746
  2029. package/src/read-model/run-status.ts +0 -127
  2030. package/src/run/LimitChecker.ts +0 -99
  2031. package/src/run/command-gate.ts +0 -294
  2032. package/src/run/drain.ts +0 -403
  2033. package/src/run/evidence-query.ts +0 -333
  2034. package/src/run/evidence-recall.ts +0 -854
  2035. package/src/run/index.ts +0 -42
  2036. package/src/run/json-claim-verifier.ts +0 -298
  2037. package/src/run/memory-promoter.ts +0 -147
  2038. package/src/run/memory-recall.ts +0 -254
  2039. package/src/run/reporter.ts +0 -469
  2040. package/src/run/token-budget.ts +0 -733
  2041. package/src/run-query/index.ts +0 -177
  2042. package/src/runtime/query/finalize-run.ts +0 -192
  2043. package/src/runtime/query/prepare-run.ts +0 -718
  2044. package/src/runtime/query/release-run.ts +0 -168
  2045. package/src/runtime/query/replay/list.ts +0 -66
  2046. package/src/runtime/query/replay/mutate.ts +0 -82
  2047. package/src/runtime/query/replay/prepare.ts +0 -147
  2048. package/src/runtime/query/resume-run.ts +0 -202
  2049. package/src/runtime/query/run-state.ts +0 -138
  2050. package/src/session/workspace/path-builder.ts +0 -72
  2051. package/src/session/workspace/shared-run.ts +0 -354
  2052. package/src/store/evidence/compaction-archive.ts +0 -139
  2053. package/src/store/evidence/linked.ts +0 -365
  2054. package/src/store/evidence/record-chain.ts +0 -108
  2055. package/src/store/run/checkpoint-disk.ts +0 -264
  2056. package/src/store/run/checkpoint-memory.ts +0 -216
  2057. package/src/store/run/claim-disk.ts +0 -638
  2058. package/src/store/run/conformance.ts +0 -728
  2059. package/src/store/run/disk.ts +0 -911
  2060. package/src/store/run/listing.ts +0 -422
  2061. package/src/store/run/memory.ts +0 -204
  2062. package/src/store/run/token-budget-disk.ts +0 -250
  2063. package/src/store/run/tool-executions.ts +0 -112
  2064. package/src/store/session/sqlite.ts +0 -584
  2065. package/src/types/run/answer-review.ts +0 -84
  2066. package/src/types/run/audit.ts +0 -164
  2067. package/src/types/run/cancel-cause.ts +0 -60
  2068. package/src/types/run/checkpoint-store.ts +0 -545
  2069. package/src/types/run/config.ts +0 -221
  2070. package/src/types/run/derive-status.ts +0 -62
  2071. package/src/types/run/emergency.ts +0 -28
  2072. package/src/types/run/entity.ts +0 -161
  2073. package/src/types/run/event-cursor.ts +0 -118
  2074. package/src/types/run/events.ts +0 -1146
  2075. package/src/types/run/index.ts +0 -32
  2076. package/src/types/run/lineage.ts +0 -15
  2077. package/src/types/run/memory-promotion.ts +0 -112
  2078. package/src/types/run/metadata.ts +0 -51
  2079. package/src/types/run/prepare-step.ts +0 -281
  2080. package/src/types/run/replay.ts +0 -61
  2081. package/src/types/run/schema-version.ts +0 -19
  2082. package/src/types/run/state.ts +0 -206
  2083. package/src/types/run/status.ts +0 -33
  2084. package/src/types/run/step.ts +0 -217
  2085. package/src/types/run/stop-reason.ts +0 -83
  2086. package/src/types/run/store.ts +0 -325
  2087. package/src/types/run/subsession-events.ts +0 -71
  2088. package/src/types/run/token-budget-store.ts +0 -54
  2089. package/src/types/workspace/shared-run.ts +0 -65
  2090. /package/dist/{run → turn}/preparation-context-error.d.ts +0 -0
  2091. /package/dist/{run → turn}/preparation-context-error.js +0 -0
  2092. /package/dist/{run → turn}/workspace-fingerprint.d.ts +0 -0
  2093. /package/dist/{run → turn}/workspace-fingerprint.js +0 -0
  2094. /package/dist/types/{run → session}/answer-review.js +0 -0
  2095. /package/dist/types/{run → session}/config.js +0 -0
  2096. /package/dist/types/{run → session}/lineage.js +0 -0
  2097. /package/dist/types/{run → session}/prepare-step.js +0 -0
  2098. /package/dist/types/{run → session}/stop-reason.js +0 -0
  2099. /package/src/{run → turn}/preparation-context-error.ts +0 -0
  2100. /package/src/{run → turn}/workspace-fingerprint.ts +0 -0
@@ -0,0 +1,1291 @@
1
+ import { AUTO_CONTINUATION_USER_MESSAGE } from '../../constants/continuation.js'
2
+ import { EMPTY_TOKEN_USAGE } from '../../constants/limits.js'
3
+ import { NAMZU } from '../../constants/telemetry/index.js'
4
+ import { resolveModelPricing } from '../../pricing/index.js'
5
+ import type { SessionTokenBudget } from '../../store/budget/index.js'
6
+ import type { SessionCheckpointStore } from '../../store/checkpoint/index.js'
7
+ import {
8
+ type SessionLease,
9
+ type SessionLog,
10
+ type SessionLogEntry,
11
+ type SessionLogHead,
12
+ SessionMessageFold,
13
+ } from '../../store/session-log/index.js'
14
+ import type { SpillRef } from '../../store/session-log/spill.js'
15
+ import { getActiveSpanContext } from '../../telemetry/runtime-accessors.js'
16
+ import {
17
+ type CostInfo,
18
+ type TokenUsage,
19
+ accumulateTokenUsage,
20
+ isTerminalStatus,
21
+ mergeTokenUsage,
22
+ } from '../../types/common/index.js'
23
+ import { NamzuError } from '../../types/errors/index.js'
24
+ import type { MessageId, SessionId, TenantId, TurnId } from '../../types/ids/index.js'
25
+ import type { AssistantMessage, Message } from '../../types/message/index.js'
26
+ import type { ProviderErrorInfo } from '../../types/provider/index.js'
27
+ import type { AuditEvent, AuditEventInput } from '../../types/session/audit.js'
28
+ import type { TurnRecorderConfig } from '../../types/session/config.js'
29
+ import {
30
+ type SessionEvent,
31
+ type SessionEventType,
32
+ isEphemeralEvent,
33
+ } from '../../types/session/events.js'
34
+ import type { ProjectId, TopicId } from '../../types/session/ids.js'
35
+ import type { SessionRecord } from '../../types/session/records.js'
36
+ import type { StepResult } from '../../types/session/step.js'
37
+ import type { StopReason } from '../../types/session/stop-reason.js'
38
+ import {
39
+ type Origin,
40
+ type Turn,
41
+ type TurnConfigSnapshot,
42
+ type TurnForkOrigin,
43
+ TurnInProgressError,
44
+ type TurnResultSource,
45
+ type TurnSettlement,
46
+ } from '../../types/session/turn.js'
47
+ import {
48
+ type ModelPricing,
49
+ ZERO_COST,
50
+ accumulateCost,
51
+ accumulateUnpricedCost,
52
+ } from '../../utils/cost.js'
53
+ import { asCheckpointId, generateAuditEventId, generateMessageId } from '../../utils/id.js'
54
+ import { childSessionEnded } from '../agent/child-session.js'
55
+
56
+ /** Which provider and model a cost is priced against. */
57
+ export interface PricingSubject {
58
+ readonly providerId: string
59
+ readonly model: string | undefined
60
+ }
61
+
62
+ /** One message of a session's folded history, with the id its record gave it. */
63
+ export interface RecordedMessage {
64
+ readonly message: Message
65
+ /** Absent for a compaction summary message, which has no record of its own. */
66
+ readonly messageId?: MessageId
67
+ }
68
+
69
+ /** How {@link TurnRecorder.open} takes the session's writer lease and starts an empty log. */
70
+ export interface TurnRecorderOpenOptions {
71
+ /** A lease the caller already holds. Absent: the recorder claims one and releases it at the end. */
72
+ readonly lease?: SessionLease
73
+ /** The holder name for a lease the recorder claims. */
74
+ readonly holder?: string
75
+ /** Lease time-to-live for a lease the recorder claims. Renewed while the turn runs. */
76
+ readonly leaseTtlMs?: number
77
+ /** Written into `session_started` when the log is empty. */
78
+ readonly session: {
79
+ readonly cwd: string
80
+ readonly origin?: Origin
81
+ readonly agentType?: string
82
+ /** The session this one was forked from (`session_started.forkedFrom`). */
83
+ readonly forkedFrom?: TurnForkOrigin
84
+ }
85
+ }
86
+
87
+ /** The payload of `turn_started` a caller supplies; the rest comes from the recorder. */
88
+ export interface TurnBeginDraft {
89
+ readonly systemPrompt?: string
90
+ readonly origin?: Origin
91
+ /** Close an interrupted active turn first (`beginTurn({ abandonInterrupted })`). */
92
+ readonly abandonInterrupted?: boolean
93
+ }
94
+
95
+ /** Default lease time-to-live: renewed at half-life while the turn runs. */
96
+ export const DEFAULT_TURN_LEASE_TTL_MS = 5 * 60_000
97
+
98
+ /** Record types that may carry `turnId` only while the turn is active. */
99
+ const TURN_BOUND_EVENT_TYPES: ReadonlySet<SessionEventType> = new Set<SessionEventType>([
100
+ 'tool_calls_admitted',
101
+ 'iteration_started',
102
+ 'request_envelope',
103
+ 'iteration_completed',
104
+ 'tool_executing',
105
+ 'hosted_tool',
106
+ 'provider_retry',
107
+ 'provider_fallback',
108
+ 'tool_completed',
109
+ 'user_question_asked',
110
+ 'user_question_answered',
111
+ 'tool_review_requested',
112
+ 'tool_review_completed',
113
+ 'checkpoint_created',
114
+ 'guardrail_triggered',
115
+ 'message_history_repaired',
116
+ 'token_usage_updated',
117
+ 'activity_created',
118
+ 'activity_updated',
119
+ 'plan_ready',
120
+ 'plan_approved',
121
+ 'plan_rejected',
122
+ 'plan_step_updated',
123
+ 'plan_completed',
124
+ 'plan_failed',
125
+ 'agent_pending',
126
+ 'agent_completed',
127
+ 'agent_failed',
128
+ 'agent_canceled',
129
+ 'message_started',
130
+ 'reasoning_started',
131
+ 'reasoning_completed',
132
+ 'message_completed',
133
+ 'tool_input_started',
134
+ 'tool_input_completed',
135
+ 'turn_started',
136
+ 'turn_paused',
137
+ 'turn_resuming',
138
+ 'turn_completed',
139
+ 'turn_failed',
140
+ 'child_session_spawned',
141
+ ])
142
+
143
+ interface ViewEntry {
144
+ message: Message
145
+ /** Present once the message has a `message` record. */
146
+ id?: MessageId
147
+ /** Present in the context but never recorded (the rebuilt system prompt). */
148
+ transient?: boolean
149
+ }
150
+
151
+ type Phase = 'new' | 'open' | 'active' | 'paused' | 'closed'
152
+
153
+ /**
154
+ * Records one turn into its session log: `turn_started`, every `message`
155
+ * when the message ends (not when the turn ends), checkpoints, audit
156
+ * entries, and the settling `turn_completed`/`turn_failed`. When the final
157
+ * `result` differs from the text of the turn's last assistant message it
158
+ * appends `message_replaced` first, so every fold shows the answer the host
159
+ * was given.
160
+ *
161
+ * It writes under the session lease and holds no other durable state: no
162
+ * `run.json`, `messages.json` or `report.md`.
163
+ *
164
+ * ## Messages
165
+ *
166
+ * The context (`messages`) is a plain array the loop pushes to and, during
167
+ * compaction, rewrites in place. The recorder keeps a view of what the log
168
+ * already holds and reconciles the array against it before every append:
169
+ * messages added at the end become `message` records; any other change —
170
+ * a compaction, a pinned slot rewritten, a message removed — becomes one
171
+ * `compaction` record whose fold is exactly the new array. The rebuilt
172
+ * system prompt is pushed as transient and never recorded: `turn_started`
173
+ * carries it.
174
+ *
175
+ * Message appends are queued in order with every other record; a failed
176
+ * append is reported by the next awaited write ({@link flush}).
177
+ */
178
+ export class TurnRecorder {
179
+ readonly sessionId: SessionId
180
+ readonly turnId: TurnId
181
+ readonly budget?: SessionTokenBudget
182
+ readonly log: SessionLog
183
+
184
+ readonly #config: TurnRecorderConfig
185
+ readonly #turn: Turn
186
+ #phase: Phase = 'new'
187
+ /**
188
+ * The segment's closing record (`turn_paused`, `turn_completed`,
189
+ * `turn_failed`) is queued. `#phase` moves only once it has landed; from
190
+ * the moment it is queued, nothing else may be queued under the turn's id,
191
+ * because it would land after the turn has ended.
192
+ */
193
+ #ending = false
194
+ #lease: SessionLease | undefined
195
+ #ownsLease = false
196
+ /** The recorder gave its lease up: it is no longer the session's writer. */
197
+ #released = false
198
+ #leaseHolder = ''
199
+ #leaseTtlMs = DEFAULT_TURN_LEASE_TTL_MS
200
+ #chain: Promise<void> = Promise.resolve()
201
+ #failure: unknown = undefined
202
+ #view: ViewEntry[] = []
203
+ readonly #ids = new Map<Message, MessageId>()
204
+ /** Every message's record id, kept after a compaction drops it from the fold. */
205
+ readonly #recorded = new WeakMap<Message, MessageId>()
206
+ readonly #transient = new WeakSet<Message>()
207
+ #resultOverridden = false
208
+ #resultSource: TurnResultSource = 'model'
209
+ #lastPromptTokens: number | undefined
210
+ #lastPromptMessageCount: number | undefined
211
+ #lastEntry: SessionLogEntry | undefined
212
+ #auditSeq = 0
213
+ #userMessageId: MessageId | undefined
214
+ /** Set by {@link resume}: the next reconciliation re-bases the fold on the restored context. */
215
+ #rebasePending = false
216
+ /**
217
+ * The message ids of the log's fold when the turn resumed, oldest first;
218
+ * `undefined` when the fold holds a message with no record of its own (a
219
+ * compaction summary). A restored context whose recorded ids are exactly
220
+ * these needs no re-basing, so no `compaction` record is written for it.
221
+ */
222
+ #foldIdsAtResume: readonly MessageId[] | undefined
223
+ /** When a resumed turn began: its `turn_started` record, not this process's start. */
224
+ #resumedTurnStartedAt: number | undefined
225
+
226
+ constructor(config: TurnRecorderConfig) {
227
+ this.#config = config
228
+ this.sessionId = config.sessionId
229
+ this.turnId = config.turnId
230
+ this.budget = config.budget
231
+ this.log = config.sessionLog
232
+ if (config.sessionLog.sessionId !== config.sessionId) {
233
+ throw new NamzuError({
234
+ code: 'invalid_config',
235
+ message: `The session log belongs to session ${config.sessionLog.sessionId}, not ${config.sessionId}.`,
236
+ details: { sessionId: config.sessionId, logSessionId: config.sessionLog.sessionId },
237
+ })
238
+ }
239
+ this.#turn = {
240
+ id: config.turnId,
241
+ sessionId: config.sessionId,
242
+ status: 'idle',
243
+ metadata: {
244
+ scope: {
245
+ tenantId: config.tenantId,
246
+ projectId: config.projectId,
247
+ sessionId: config.sessionId,
248
+ turnId: config.turnId,
249
+ },
250
+ agentId: config.agentId,
251
+ agentName: config.agentName,
252
+ config: config.turnConfig,
253
+ provider: config.providerId,
254
+ ...(config.parentSessionId ? { parentSessionId: config.parentSessionId } : {}),
255
+ ...(config.parentTurnId ? { parentTurnId: config.parentTurnId } : {}),
256
+ },
257
+ messages: [],
258
+ tokenUsage: { ...EMPTY_TOKEN_USAGE },
259
+ costInfo: { ...ZERO_COST },
260
+ currentIteration: 0,
261
+ startedAt: Date.now(),
262
+ ...(config.parentSessionId ? { parentSessionId: config.parentSessionId } : {}),
263
+ ...(config.parentTurnId ? { parentTurnId: config.parentTurnId } : {}),
264
+ ...(config.depth !== undefined ? { depth: config.depth } : {}),
265
+ }
266
+ }
267
+
268
+ // ─── identity ──────────────────────────────────────────────────────────
269
+
270
+ get topicId(): TopicId {
271
+ return this.#config.topicId
272
+ }
273
+
274
+ get tenantId(): TenantId {
275
+ return this.#config.tenantId
276
+ }
277
+
278
+ get projectId(): ProjectId {
279
+ return this.#config.projectId
280
+ }
281
+
282
+ get parentSessionId(): SessionId | undefined {
283
+ return this.#config.parentSessionId
284
+ }
285
+
286
+ get parentTurnId(): TurnId | undefined {
287
+ return this.#config.parentTurnId
288
+ }
289
+
290
+ get checkpointStore(): SessionCheckpointStore | undefined {
291
+ return this.#config.checkpointStore
292
+ }
293
+
294
+ /** The lease the turn's records are written under, once {@link open} has run. */
295
+ get lease(): SessionLease | undefined {
296
+ return this.#lease
297
+ }
298
+
299
+ /** The id of the prompt message `turn_started` names. */
300
+ get userMessageId(): MessageId | undefined {
301
+ return this.#userMessageId
302
+ }
303
+
304
+ /** Seq of the last record this recorder appended. */
305
+ get lastSeq(): number {
306
+ return this.#lastEntry?.record.seq ?? 0
307
+ }
308
+
309
+ /** Whether the turn has begun (or resumed) and not paused or settled. */
310
+ get isActive(): boolean {
311
+ return this.#phase === 'active'
312
+ }
313
+
314
+ /** Whether the turn's last segment record is `turn_paused`. */
315
+ get isPaused(): boolean {
316
+ return this.#phase === 'paused'
317
+ }
318
+
319
+ /** Whether the turn has a terminal record. */
320
+ get isClosed(): boolean {
321
+ return this.#phase === 'closed'
322
+ }
323
+
324
+ // ─── the turn ──────────────────────────────────────────────────────────
325
+
326
+ get status() {
327
+ return this.#turn.status
328
+ }
329
+
330
+ get stopReason() {
331
+ return this.#turn.stopReason
332
+ }
333
+
334
+ get messages(): Message[] {
335
+ return this.#turn.messages
336
+ }
337
+
338
+ get tokenUsage(): TokenUsage {
339
+ return this.budget
340
+ ? mergeTokenUsage(this.#turn.tokenUsage, this.budget.ownUsage)
341
+ : this.#turn.tokenUsage
342
+ }
343
+
344
+ get costInfo(): CostInfo {
345
+ const unpriced = Math.max(0, this.tokenUsage.totalTokens - this.#turn.tokenUsage.totalTokens)
346
+ return unpriced > 0
347
+ ? { ...this.#turn.costInfo, unpricedTokens: this.#turn.costInfo.unpricedTokens + unpriced }
348
+ : this.#turn.costInfo
349
+ }
350
+
351
+ get currentIteration(): number {
352
+ return this.#turn.currentIteration
353
+ }
354
+
355
+ /** The turn as it stands. */
356
+ get turn(): Turn {
357
+ return this.getTurn()
358
+ }
359
+
360
+ getTurn(): Readonly<Turn> {
361
+ if (!this.budget) return this.#turn
362
+ return {
363
+ ...this.#turn,
364
+ tokenUsage: this.tokenUsage,
365
+ costInfo: this.costInfo,
366
+ budget: this.budget.summary(),
367
+ ...(this.budget.binding ? { budgetBinding: this.budget.binding } : {}),
368
+ }
369
+ }
370
+
371
+ #syncBudget(): void {
372
+ if (!this.budget) return
373
+ this.#turn.costInfo = this.costInfo
374
+ this.#turn.tokenUsage = this.tokenUsage
375
+ this.#turn.budget = this.budget.summary()
376
+ if (this.budget.binding) this.#turn.budgetBinding = this.budget.binding
377
+ }
378
+
379
+ markRunning(): void {
380
+ this.#turn.status = 'running'
381
+ }
382
+
383
+ markCompleted(stopReason?: StopReason): void {
384
+ this.#turn.status = 'completed'
385
+ if (stopReason) this.#turn.stopReason = stopReason
386
+ this.#turn.endedAt = Date.now()
387
+ this.#resolveResult()
388
+ }
389
+
390
+ markFailed(error: string, providerError?: ProviderErrorInfo): void {
391
+ this.clearStructuredOutput()
392
+ this.#turn.status = 'failed'
393
+ this.#turn.stopReason = 'error'
394
+ this.#turn.lastError = error
395
+ if (providerError) this.#turn.lastProviderError = providerError
396
+ this.#turn.endedAt = Date.now()
397
+ }
398
+
399
+ markCancelled(): void {
400
+ this.clearStructuredOutput()
401
+ this.#turn.status = 'cancelled'
402
+ this.#turn.stopReason = 'cancelled'
403
+ this.#turn.endedAt = Date.now()
404
+ }
405
+
406
+ setStopReason(reason: StopReason): void {
407
+ this.#turn.stopReason = reason
408
+ }
409
+
410
+ setLastError(error: string, providerError?: ProviderErrorInfo): void {
411
+ this.#turn.lastError = error
412
+ if (providerError) this.#turn.lastProviderError = providerError
413
+ }
414
+
415
+ incrementIteration(): number {
416
+ this.#turn.currentIteration++
417
+ return this.#turn.currentIteration
418
+ }
419
+
420
+ /**
421
+ * Override the turn's final text. Sticky: `markCompleted` re-derives the
422
+ * result from the message tail, and would otherwise put the raw model
423
+ * text back. `source` names which override decided it; anything but
424
+ * `model` makes settling append `message_replaced`.
425
+ */
426
+ setResult(result: string, source: TurnResultSource): void {
427
+ this.#turn.result = result
428
+ this.#resultOverridden = true
429
+ this.#resultSource = source
430
+ }
431
+
432
+ /** Which override decided `result` (`model` when none did). */
433
+ get resultSource(): TurnResultSource {
434
+ return this.#resultSource
435
+ }
436
+
437
+ /** Invalidate a structured value without replacing the host's textual result. */
438
+ clearStructuredOutput(): void {
439
+ delete this.#turn.structuredOutput
440
+ }
441
+
442
+ /** Record the schema-validated answer, and make `result` agree with it. */
443
+ setStructuredOutput(value: unknown): void {
444
+ this.#turn.structuredOutput = value
445
+ this.setResult(typeof value === 'string' ? value : JSON.stringify(value), 'structured_output')
446
+ }
447
+
448
+ setAbandonedTaskIds(taskIds: readonly string[]): void {
449
+ if (taskIds.length === 0) return
450
+ this.#turn.abandonedTaskIds = [...taskIds]
451
+ }
452
+
453
+ setAbandonedJobIds(jobIds: readonly string[]): void {
454
+ if (jobIds.length === 0) return
455
+ this.#turn.abandonedJobIds = [...jobIds]
456
+ }
457
+
458
+ setSteps(steps: readonly StepResult[]): void {
459
+ this.#turn.steps = steps
460
+ }
461
+
462
+ /** Record that a provider chain advanced, so the turn stops naming a member that did not serve. */
463
+ setServingProvider(providerId: string): void {
464
+ this.#turn.metadata.servingProvider = providerId
465
+ }
466
+
467
+ /** Who is serving right now, for a side-channel call with no provenance of its own. */
468
+ get servingProviderId(): string {
469
+ return this.#turn.metadata.servingProvider ?? this.#turn.metadata.provider
470
+ }
471
+
472
+ #resolvePricing(servedBy: PricingSubject): ModelPricing | undefined {
473
+ if (this.#config.pricing) return this.#config.pricing
474
+ return resolveModelPricing(servedBy.providerId, servedBy.model)
475
+ }
476
+
477
+ accumulateUsage(usage: TokenUsage, servedBy: PricingSubject): void {
478
+ this.#turn.tokenUsage = accumulateTokenUsage(this.#turn.tokenUsage, usage)
479
+ const pricing = this.#resolvePricing(servedBy)
480
+ this.#turn.costInfo =
481
+ pricing === undefined
482
+ ? accumulateUnpricedCost(this.#turn.costInfo, usage)
483
+ : accumulateCost(this.#turn.costInfo, usage, pricing)
484
+ }
485
+
486
+ /**
487
+ * Accumulate usage from a main-loop request, and remember its prompt size:
488
+ * the provider's own measurement of the context it just received, which
489
+ * compaction needs. Side-channel calls use {@link accumulateUsage}.
490
+ */
491
+ recordTurnUsage(usage: TokenUsage, servedBy: PricingSubject): void {
492
+ this.accumulateUsage(usage, servedBy)
493
+ this.#lastPromptTokens = usage.promptTokens
494
+ this.#lastPromptMessageCount = this.#turn.messages.length
495
+ }
496
+
497
+ /** Forget the last prompt measurement (after compaction replaced the context it described). */
498
+ clearLastPromptTokens(): void {
499
+ this.#lastPromptTokens = undefined
500
+ this.#lastPromptMessageCount = undefined
501
+ }
502
+
503
+ get lastPromptTokens(): number | undefined {
504
+ return this.#lastPromptTokens
505
+ }
506
+
507
+ get lastPromptMessageCount(): number | undefined {
508
+ return this.#lastPromptMessageCount
509
+ }
510
+
511
+ /** Seed the spend counters from a checkpoint so a resumed turn continues its budget. */
512
+ restoreUsage(tokenUsage: TokenUsage, costInfo: CostInfo, currentIteration: number): void {
513
+ this.#turn.tokenUsage = { ...tokenUsage }
514
+ this.#turn.costInfo = { ...costInfo }
515
+ this.#turn.currentIteration = currentIteration
516
+ this.budget?.recordUsage(tokenUsage)
517
+ this.#syncBudget()
518
+ }
519
+
520
+ /** Assemble the final assistant output WITHOUT settling the turn. */
521
+ materializeResult(): string {
522
+ this.#resolveResult()
523
+ return this.#turn.result ?? ''
524
+ }
525
+
526
+ #resolveResult(): void {
527
+ if (this.#resultOverridden) return
528
+ // Walk the tail: an auto-continuation prompt between two assistant
529
+ // messages is transparent, so a turn split by `max_tokens` keeps its
530
+ // whole answer.
531
+ const chunks: string[] = []
532
+ for (let i = this.#turn.messages.length - 1; i >= 0; i--) {
533
+ const msg = this.#turn.messages[i]
534
+ if (!msg) continue
535
+ if (msg.role === 'assistant') {
536
+ if (msg.content !== null) chunks.push(msg.content)
537
+ continue
538
+ }
539
+ if (msg.role === 'user' && msg.content === AUTO_CONTINUATION_USER_MESSAGE) continue
540
+ break
541
+ }
542
+ if (chunks.length > 0) this.#turn.result = chunks.reverse().join('')
543
+ }
544
+
545
+ /** The settlement a terminal record carries, from the turn as it stands. */
546
+ settlement(status: TurnSettlement['status']): TurnSettlement {
547
+ const turn = this.getTurn()
548
+ const resultMessageId = this.#lastAssistantEntry()?.id
549
+ return {
550
+ status,
551
+ iterations: turn.currentIteration,
552
+ usage: { ...turn.tokenUsage },
553
+ cost: { ...turn.costInfo },
554
+ durationMs: Math.max(0, (turn.endedAt ?? Date.now()) - turn.startedAt),
555
+ ...(resultMessageId ? { resultMessageId } : {}),
556
+ resultSource: this.#resultSource,
557
+ ...(turn.structuredOutput !== undefined ? { structuredOutput: turn.structuredOutput } : {}),
558
+ ...(turn.metadata.servingProvider ? { servingProvider: turn.metadata.servingProvider } : {}),
559
+ abandonedTaskIds: [...(turn.abandonedTaskIds ?? [])],
560
+ abandonedJobIds: [...(turn.abandonedJobIds ?? [])],
561
+ }
562
+ }
563
+
564
+ // ─── the log ───────────────────────────────────────────────────────────
565
+
566
+ /**
567
+ * Take the writer lease (or adopt the caller's) and start an empty log
568
+ * with `session_started`. Returns the session's folded history.
569
+ */
570
+ async open(options: TurnRecorderOpenOptions): Promise<RecordedMessage[]> {
571
+ if (this.#phase !== 'new') throw new Error('TurnRecorder.open was already called.')
572
+ this.#leaseTtlMs = options.leaseTtlMs ?? DEFAULT_TURN_LEASE_TTL_MS
573
+ this.#leaseHolder = options.holder ?? `namzu:${process.pid}:${this.turnId}`
574
+ if (options.lease) {
575
+ this.#lease = options.lease
576
+ } else {
577
+ const lease = await this.log.claim({ holder: this.#leaseHolder, ttlMs: this.#leaseTtlMs })
578
+ if (lease === null) {
579
+ const active = await this.log.activeTurn()
580
+ if (active) {
581
+ throw new TurnInProgressError({
582
+ sessionId: this.sessionId,
583
+ activeTurnId: active.turnId,
584
+ state: 'running',
585
+ })
586
+ }
587
+ throw new NamzuError({
588
+ code: 'invalid_config',
589
+ message: `Session ${this.sessionId} is leased by another writer; wait for it to finish or pass the lease you hold.`,
590
+ details: { sessionId: this.sessionId },
591
+ })
592
+ }
593
+ this.#lease = lease
594
+ this.#ownsLease = true
595
+ }
596
+ const head = await this.log.head()
597
+ if (head === null) {
598
+ this.#lastEntry = await this.log.append(this.#lease, {
599
+ type: 'session_started',
600
+ projectId: this.projectId,
601
+ tenantId: this.tenantId,
602
+ topicId: this.topicId,
603
+ cwd: options.session.cwd,
604
+ agent: {
605
+ id: this.#config.agentId,
606
+ name: this.#config.agentName,
607
+ ...(options.session.agentType ? { type: options.session.agentType } : {}),
608
+ },
609
+ ...(options.session.origin ? { origin: options.session.origin } : {}),
610
+ ...(options.session.forkedFrom ? { forkedFrom: options.session.forkedFrom } : {}),
611
+ })
612
+ }
613
+ if (options.session.forkedFrom) {
614
+ this.#turn.forkedFrom = options.session.forkedFrom
615
+ }
616
+ this.#phase = 'open'
617
+ return readFoldedHistory(this.log)
618
+ }
619
+
620
+ /** Renew a lease this recorder claimed when it is past half its life. */
621
+ async #leaseForWrite(): Promise<SessionLease> {
622
+ const lease = this.#lease
623
+ if (!lease) throw new Error('TurnRecorder.open must run before the turn writes.')
624
+ if (this.#ownsLease && lease.expiresAt - Date.now() < this.#leaseTtlMs / 2) {
625
+ const renewed = await this.log.claim({ holder: this.#leaseHolder, ttlMs: this.#leaseTtlMs })
626
+ if (renewed) this.#lease = renewed
627
+ }
628
+ return this.#lease as SessionLease
629
+ }
630
+
631
+ /** Give up a lease the recorder claimed. Never throws. */
632
+ async release(): Promise<void> {
633
+ if (!this.#ownsLease || !this.#lease) return
634
+ const lease = this.#lease
635
+ this.#ownsLease = false
636
+ this.#released = true
637
+ await this.log.release(lease).catch(() => undefined)
638
+ }
639
+
640
+ #enqueue<T>(operation: () => Promise<T>): Promise<T> {
641
+ const run = this.#chain.then(async () => {
642
+ if (this.#failure !== undefined) throw this.#failure
643
+ return operation()
644
+ })
645
+ this.#chain = run.then(
646
+ () => undefined,
647
+ (error: unknown) => {
648
+ this.#failure ??= error
649
+ },
650
+ )
651
+ return run
652
+ }
653
+
654
+ /** Wait for every queued append; rethrow the first that failed. */
655
+ async flush(): Promise<void> {
656
+ await this.#chain
657
+ if (this.#failure !== undefined) throw this.#failure
658
+ }
659
+
660
+ async #append(draft: Parameters<SessionLog['append']>[1]): Promise<SessionLogEntry> {
661
+ const entry = await this.log.append(await this.#leaseForWrite(), draft)
662
+ this.#lastEntry = entry
663
+ return entry
664
+ }
665
+
666
+ /** The log's last record once every queued append has landed: what a checkpoint is taken through. */
667
+ async head(): Promise<SessionLogHead | null> {
668
+ this.#syncMessages()
669
+ await this.flush()
670
+ return this.log.head()
671
+ }
672
+
673
+ /**
674
+ * Begin the turn: `turn_started`, then the messages pushed so far. The
675
+ * prompt that opened it is the last new user message pushed before this.
676
+ */
677
+ async begin(draft: TurnBeginDraft = {}): Promise<SessionLogEntry> {
678
+ if (this.#phase !== 'open') throw new Error('The turn has already begun.')
679
+ const pendingUser = this.#pendingNew()
680
+ .reverse()
681
+ .find((m) => m.role === 'user')
682
+ const userMessageId = pendingUser ? this.#idFor(pendingUser) : generateMessageId()
683
+ this.#userMessageId = userMessageId
684
+ const binding = this.budget?.binding
685
+ const entry = await this.#enqueue(async () => {
686
+ const begun = await this.log.beginTurn(
687
+ await this.#leaseForWrite(),
688
+ {
689
+ turnId: this.turnId,
690
+ userMessageId,
691
+ ...(draft.systemPrompt !== undefined ? { systemPrompt: draft.systemPrompt } : {}),
692
+ config: snapshotTurnConfig(this.#config.turnConfig),
693
+ ...(draft.origin ? { origin: draft.origin } : {}),
694
+ ...(binding ? { budget: binding } : {}),
695
+ },
696
+ draft.abandonInterrupted ? { abandonInterrupted: true } : {},
697
+ )
698
+ this.#lastEntry = begun
699
+ return begun
700
+ })
701
+ this.#phase = 'active'
702
+ this.#syncMessages()
703
+ return entry
704
+ }
705
+
706
+ /** Continue a paused or interrupted turn: `turn_resuming`, same `turnId`. */
707
+ async resume(fromCheckpointId: string, resolvedDecisionId?: string): Promise<SessionLogEntry> {
708
+ if (this.#phase !== 'open') throw new Error('The turn has already begun.')
709
+ const entry = await this.#enqueue(() =>
710
+ this.#append({
711
+ type: 'turn_resuming',
712
+ turnId: this.turnId,
713
+ fromCheckpointId: asCheckpointId(fromCheckpointId),
714
+ ...(resolvedDecisionId ? { resolvedDecisionId } : {}),
715
+ }),
716
+ )
717
+ this.#phase = 'active'
718
+ // The log may hold records past the checkpoint (a crash after it); the
719
+ // fold is re-based on the context the resume restores, once it has been
720
+ // pushed, unless that context is the one the log already folds to.
721
+ this.#foldIdsAtResume = await this.#readResumedLog()
722
+ this.#rebasePending = true
723
+ return entry
724
+ }
725
+
726
+ /**
727
+ * When the turn began. For a resumed turn this is its `turn_started`
728
+ * record's time, so "closed in this turn" still counts what the turn did
729
+ * before it paused, in whichever process that was.
730
+ */
731
+ get turnStartedAt(): number {
732
+ return this.#resumedTurnStartedAt ?? this.#turn.startedAt
733
+ }
734
+
735
+ /**
736
+ * Read the log once on resume: the fold's message ids at its head
737
+ * (`undefined` when one has no record), and when this turn began.
738
+ */
739
+ async #readResumedLog(): Promise<readonly MessageId[] | undefined> {
740
+ await this.flush()
741
+ const fold = new SessionMessageFold()
742
+ for await (const entry of this.log.read()) {
743
+ const record = entry.record as SessionRecord
744
+ if (record.type === 'turn_started' && record.turnId === this.turnId) {
745
+ const at = Date.parse(record.ts)
746
+ if (Number.isFinite(at)) this.#resumedTurnStartedAt = at
747
+ }
748
+ fold.apply(record)
749
+ }
750
+ if (fold.spilledSummary) return undefined
751
+ const ids: MessageId[] = []
752
+ for (const entry of fold.entries()) {
753
+ if (!entry.messageId) return undefined
754
+ ids.push(entry.messageId)
755
+ }
756
+ return ids
757
+ }
758
+
759
+ /** The recorded context is exactly what the log folds to: a resume changed nothing. */
760
+ #viewMatchesFold(): boolean {
761
+ const expected = this.#foldIdsAtResume
762
+ if (!expected) return false
763
+ const durable = this.#view.filter((entry) => !entry.transient)
764
+ if (durable.length !== expected.length) return false
765
+ return durable.every((entry, index) => entry.id === expected[index])
766
+ }
767
+
768
+ /**
769
+ * Append a record-only draft (a checkpoint, a decision, an audit entry)
770
+ * after every queued message.
771
+ */
772
+ appendRecord(draft: Parameters<SessionLog['append']>[1]): Promise<SessionLogEntry> {
773
+ this.#syncMessages()
774
+ return this.#enqueue(() => this.#append(draft))
775
+ }
776
+
777
+ /**
778
+ * Append a live event as its record. Resolves `undefined` for an event
779
+ * the log does not hold: an ephemeral one, or one bound to a turn that is
780
+ * paused or settled.
781
+ */
782
+ async appendEvent(event: SessionEvent): Promise<SessionLogEntry | undefined> {
783
+ if (isEphemeralEvent(event)) return undefined
784
+ switch (event.type) {
785
+ case 'turn_started':
786
+ return this.begin({
787
+ ...(event.systemPrompt !== undefined ? { systemPrompt: event.systemPrompt } : {}),
788
+ ...(event.origin ? { origin: event.origin } : {}),
789
+ })
790
+ case 'turn_resuming':
791
+ return this.resume(event.fromCheckpointId, event.resolvedDecisionId)
792
+ default:
793
+ break
794
+ }
795
+ if (this.#phase === 'new' || this.#phase === 'open') return undefined
796
+ // Once the lease is given up this recorder writes nothing: an object
797
+ // that outlived the turn (an approval-policy box, a plan manager) may
798
+ // still emit, and its event is delivered live but not recorded.
799
+ if (this.#released) return undefined
800
+ const turnBound = TURN_BOUND_EVENT_TYPES.has(event.type)
801
+ if (this.#phase === 'closed' && turnBound) return undefined
802
+ if (this.#phase === 'paused' && turnBound) return undefined
803
+ if (this.#ending && turnBound) return undefined
804
+ if (event.type === 'turn_completed') {
805
+ this.#syncMessages()
806
+ await this.#replaceAnswerIfOverridden()
807
+ }
808
+ const draft = eventDraft(event, this.#turnOpen() ? this.turnId : undefined)
809
+ this.#syncMessages()
810
+ if (
811
+ event.type === 'turn_paused' ||
812
+ event.type === 'turn_completed' ||
813
+ event.type === 'turn_failed'
814
+ ) {
815
+ this.#ending = true
816
+ }
817
+ const entry = await this.#enqueue(() => this.#append(draft))
818
+ if (event.type === 'turn_paused') this.#phase = 'paused'
819
+ if (event.type === 'turn_completed' || event.type === 'turn_failed') this.#phase = 'closed'
820
+ return entry
821
+ }
822
+
823
+ /** The turn is active and its closing record is not yet queued. */
824
+ #turnOpen(): boolean {
825
+ return this.#phase === 'active' && !this.#ending
826
+ }
827
+
828
+ /**
829
+ * Record a child session's lifecycle event from this session's own
830
+ * delegation: `child_session_spawned` inside the spawning turn, and on
831
+ * `child_session_idled` the idle record plus `child_session_ended`, read
832
+ * from the child's own terminal record so the two cannot disagree
833
+ * (`childLog`; absent when the child's log is not reachable, and then no
834
+ * ended record is written).
835
+ *
836
+ * The spawning turn's id is carried only while that turn is still open.
837
+ * Queued in order with every other record, so a child that settles before
838
+ * its parent's turn does is recorded before the parent's `turn_completed`.
839
+ * Resolves `undefined` for an event of another session, or once the lease
840
+ * is given up.
841
+ */
842
+ recordChildSessionEvent(
843
+ event: Extract<
844
+ SessionEvent,
845
+ { type: 'child_session_spawned' | 'child_session_messaged' | 'child_session_idled' }
846
+ >,
847
+ childLog?: SessionLog,
848
+ ): Promise<SessionLogEntry | undefined> {
849
+ if (event.sessionId !== this.sessionId || this.#released) return Promise.resolve(undefined)
850
+ if (this.#phase === 'new' || this.#phase === 'open') return Promise.resolve(undefined)
851
+ const spawningTurnOpen = this.#turnOpen() && event.turnId === this.turnId
852
+ if (event.type === 'child_session_spawned') {
853
+ // Belongs to the turn that spawned it, and only while that turn is open.
854
+ if (!spawningTurnOpen) return Promise.resolve(undefined)
855
+ return this.appendEvent(event)
856
+ }
857
+ const turnId = spawningTurnOpen ? this.turnId : undefined
858
+ this.#syncMessages()
859
+ const idled = this.#enqueue(() => this.#append(eventDraft(event, turnId)))
860
+ if (event.type !== 'child_session_idled' || !childLog) return idled
861
+ return this.#enqueue(async () => {
862
+ const ended = await childSessionEnded(childLog)
863
+ if (!ended) return undefined
864
+ return this.#append(turnId ? { ...ended, turnId } : ended)
865
+ })
866
+ }
867
+
868
+ /**
869
+ * The §4.4 replacement: when an override decided the answer, the turn's
870
+ * last assistant message is replaced in the log (and in the context) by
871
+ * one whose text is the answer, before `turn_completed`.
872
+ */
873
+ async #replaceAnswerIfOverridden(): Promise<void> {
874
+ if (this.#resultSource === 'model') return
875
+ const target = this.#lastAssistantEntry()
876
+ const result = this.#turn.result ?? ''
877
+ if (!target?.id) return
878
+ const current = target.message as AssistantMessage
879
+ if (current.content === result) return
880
+ const replacement: AssistantMessage = { ...current, content: result }
881
+ const targetMessageId = target.id
882
+ await this.#enqueue(() =>
883
+ this.#append({
884
+ type: 'message_replaced',
885
+ targetMessageId,
886
+ content: replacement,
887
+ reason: this.#resultSource as Exclude<TurnResultSource, 'model'>,
888
+ }),
889
+ )
890
+ const index = this.#turn.messages.indexOf(target.message)
891
+ if (index >= 0) this.#turn.messages[index] = replacement
892
+ this.#ids.delete(target.message)
893
+ this.#ids.set(replacement, targetMessageId)
894
+ target.message = replacement
895
+ }
896
+
897
+ #lastAssistantEntry(): ViewEntry | undefined {
898
+ for (let i = this.#view.length - 1; i >= 0; i--) {
899
+ const entry = this.#view[i]
900
+ if (entry?.message.role === 'assistant' && entry.id) return entry
901
+ }
902
+ return undefined
903
+ }
904
+
905
+ // ─── messages ──────────────────────────────────────────────────────────
906
+
907
+ /**
908
+ * Add a message to the context. A new message is appended to the log now
909
+ * (queued). `messageId` marks a message the log already holds (history
910
+ * from the fold); `transient` marks one that is never recorded.
911
+ */
912
+ pushMessage(
913
+ message: Message,
914
+ options: { readonly messageId?: MessageId; readonly transient?: boolean } = {},
915
+ ): void {
916
+ if (options.messageId) {
917
+ this.#ids.set(message, options.messageId)
918
+ this.#recorded.set(message, options.messageId)
919
+ }
920
+ if (options.transient) this.#transient.add(message)
921
+ this.#turn.messages.push(message)
922
+ if (options.messageId || options.transient) {
923
+ this.#view.push({
924
+ message,
925
+ ...(options.messageId ? { id: options.messageId } : {}),
926
+ ...(options.transient ? { transient: true } : {}),
927
+ })
928
+ return
929
+ }
930
+ this.#syncMessages()
931
+ }
932
+
933
+ /** Replace the context without replacing the turn; recorded as one `compaction`. */
934
+ replaceMessages(messages: readonly Message[]): void {
935
+ this.#turn.messages.splice(0, this.#turn.messages.length, ...messages)
936
+ this.#syncMessages()
937
+ }
938
+
939
+ /**
940
+ * The id of the record a message was written as, or `undefined` when it
941
+ * has no record (yet). A message a compaction has since dropped from the
942
+ * fold keeps its id: its record is still in the log.
943
+ */
944
+ recordedIdOf(message: Message): MessageId | undefined {
945
+ return this.#view.find((entry) => entry.message === message)?.id ?? this.#recorded.get(message)
946
+ }
947
+
948
+ /** Mark a message as never recorded (the rebuilt system prompt floor). */
949
+ markTransient(message: Message): void {
950
+ this.#transient.add(message)
951
+ }
952
+
953
+ /** Messages in the context the log does not hold yet. */
954
+ #pendingNew(): Message[] {
955
+ const known = new Set(this.#view.map((entry) => entry.message))
956
+ return this.#turn.messages.filter(
957
+ (message) => !known.has(message) && !this.#transient.has(message),
958
+ )
959
+ }
960
+
961
+ #idFor(message: Message): MessageId {
962
+ let id = this.#ids.get(message)
963
+ if (!id) {
964
+ id = generateMessageId()
965
+ this.#ids.set(message, id)
966
+ }
967
+ this.#recorded.set(message, id)
968
+ return id
969
+ }
970
+
971
+ /**
972
+ * Reconcile the context with the log. Nothing is written before the turn
973
+ * begins or after it pauses or settles.
974
+ */
975
+ #syncMessages(): void {
976
+ if (this.#phase !== 'active') return
977
+ if (this.#rebasePending) {
978
+ this.#rebasePending = false
979
+ const unchanged = this.#viewMatchesFold()
980
+ this.#foldIdsAtResume = undefined
981
+ if (!unchanged) {
982
+ this.#recordCompaction()
983
+ return
984
+ }
985
+ }
986
+ const live = this.#turn.messages
987
+ const view = this.#view
988
+ let prefix = 0
989
+ while (prefix < view.length && prefix < live.length && live[prefix] === view[prefix]?.message)
990
+ prefix++
991
+ const known = new Set(view.map((entry) => entry.message))
992
+ const tail = live.slice(prefix)
993
+ if (prefix === view.length && tail.every((message) => !known.has(message))) {
994
+ for (const message of tail) {
995
+ if (this.#transient.has(message)) {
996
+ view.push({ message, transient: true })
997
+ continue
998
+ }
999
+ const id = this.#idFor(message)
1000
+ view.push({ message, id })
1001
+ void this.#enqueue(() =>
1002
+ this.#append({
1003
+ type: 'message',
1004
+ turnId: this.turnId,
1005
+ messageId: id,
1006
+ role: message.role,
1007
+ content: message,
1008
+ }),
1009
+ ).catch(() => undefined)
1010
+ }
1011
+ return
1012
+ }
1013
+ this.#recordCompaction()
1014
+ }
1015
+
1016
+ /**
1017
+ * Re-base the fold on the context as it stands: one `compaction` record
1018
+ * (new messages before the first recorded one become its summary, the
1019
+ * recorded ones are kept), then a `message` record for each new message
1020
+ * after the last recorded one. When the recorded messages are no longer in
1021
+ * log order, the whole context becomes the summary.
1022
+ */
1023
+ #recordCompaction(): void {
1024
+ const live = this.#turn.messages
1025
+ const byMessage = new Map(this.#view.map((entry) => [entry.message, entry]))
1026
+ const next: ViewEntry[] = live.map((message) => {
1027
+ const existing = byMessage.get(message)
1028
+ if (existing) return existing
1029
+ if (this.#transient.has(message)) return { message, transient: true }
1030
+ return { message }
1031
+ })
1032
+ const durable = next.filter((entry) => !entry.transient)
1033
+ const recordedOrder = new Map(
1034
+ this.#view.filter((entry) => entry.id).map((entry, index) => [entry.id as MessageId, index]),
1035
+ )
1036
+ const first = durable.findIndex((entry) => entry.id !== undefined)
1037
+ let last = -1
1038
+ for (let i = durable.length - 1; i >= 0; i--) {
1039
+ if (durable[i]?.id !== undefined) {
1040
+ last = i
1041
+ break
1042
+ }
1043
+ }
1044
+ const middle = first < 0 ? [] : durable.slice(first, last + 1)
1045
+ let ordered = middle.every((entry) => entry.id !== undefined)
1046
+ for (let i = 1; ordered && i < middle.length; i++) {
1047
+ const before = recordedOrder.get(middle[i - 1]?.id as MessageId) ?? -1
1048
+ const after = recordedOrder.get(middle[i]?.id as MessageId) ?? -1
1049
+ if (after <= before) ordered = false
1050
+ }
1051
+ const summaryEntries = !ordered ? durable : first < 0 ? durable : durable.slice(0, first)
1052
+ const keptEntries = ordered ? middle : []
1053
+ const tailEntries = ordered && first >= 0 ? durable.slice(last + 1) : []
1054
+ for (const entry of summaryEntries) {
1055
+ entry.id = undefined
1056
+ this.#ids.delete(entry.message)
1057
+ }
1058
+ const summary = summaryEntries.map((entry) => entry.message)
1059
+ const keptMessageIds = keptEntries.map((entry) => entry.id as MessageId)
1060
+ this.#view = next
1061
+ const turnId = this.turnId
1062
+ void this.#enqueue(async () => {
1063
+ const toSeq = this.#lastEntry?.record.seq ?? (await this.log.head())?.pointer.seq ?? 1
1064
+ return this.#append({
1065
+ type: 'compaction',
1066
+ turnId,
1067
+ compactionId: generateMessageId(),
1068
+ strategy: 'context-rewrite',
1069
+ trigger: 'auto',
1070
+ replacesSeqRange: [1, toSeq],
1071
+ summary,
1072
+ keptMessageIds,
1073
+ tokensBefore: 0,
1074
+ tokensAfter: 0,
1075
+ })
1076
+ }).catch(() => undefined)
1077
+ for (const entry of tailEntries) {
1078
+ const message = entry.message
1079
+ const id = this.#idFor(message)
1080
+ entry.id = id
1081
+ void this.#enqueue(() =>
1082
+ this.#append({
1083
+ type: 'message',
1084
+ turnId,
1085
+ messageId: id,
1086
+ role: message.role,
1087
+ content: message,
1088
+ }),
1089
+ ).catch(() => undefined)
1090
+ }
1091
+ }
1092
+
1093
+ // ─── audit ─────────────────────────────────────────────────────────────
1094
+
1095
+ /**
1096
+ * Append an `audit` record. Refuses rather than dropping the entry: an
1097
+ * audit trail nobody can point at is not a degraded feature. A rejection
1098
+ * propagates to the caller, because an audit write failing must fail the
1099
+ * operation it was recording.
1100
+ */
1101
+ async recordAudit(input: AuditEventInput): Promise<AuditEvent> {
1102
+ const span = getActiveSpanContext()
1103
+ const cost = { ...this.#turn.costInfo }
1104
+ const event: AuditEvent = {
1105
+ id: generateAuditEventId(),
1106
+ sessionId: this.sessionId,
1107
+ ...(this.#phase === 'active' || this.#phase === 'paused' ? { turnId: this.turnId } : {}),
1108
+ seq: this.#auditSeq + 1,
1109
+ timestamp: Date.now(),
1110
+ who: {
1111
+ agentId: this.#turn.metadata.agentId,
1112
+ tenantId: this.tenantId,
1113
+ ...(input.persona !== undefined ? { persona: input.persona } : {}),
1114
+ },
1115
+ what: input.what,
1116
+ outcome: input.outcome,
1117
+ cost,
1118
+ ...(input.reason !== undefined ? { reason: input.reason } : {}),
1119
+ ...(span ? { traceId: span.traceId, spanId: span.spanId } : {}),
1120
+ }
1121
+ if (this.#phase === 'new' || this.#phase === 'open') {
1122
+ throw new NamzuError({
1123
+ code: 'invalid_config',
1124
+ message: 'An audit entry cannot be recorded before the turn has begun.',
1125
+ details: { sessionId: this.sessionId, turnId: this.turnId },
1126
+ })
1127
+ }
1128
+ const entry = await this.appendRecord({
1129
+ type: 'audit',
1130
+ ...(event.turnId ? { turnId: event.turnId } : {}),
1131
+ auditId: event.id,
1132
+ actor: { kind: 'agent', agentId: this.#turn.metadata.agentId, tenantId: this.tenantId },
1133
+ ...(input.persona !== undefined ? { persona: input.persona } : {}),
1134
+ action: input.what.action,
1135
+ ...(input.what.tool !== undefined ? { tool: input.what.tool } : {}),
1136
+ ...(input.what.resource !== undefined ? { resource: input.what.resource } : {}),
1137
+ outcome: input.outcome,
1138
+ cost,
1139
+ ...(input.reason !== undefined ? { reason: input.reason } : {}),
1140
+ ...(span ? { traceId: span.traceId, spanId: span.spanId } : {}),
1141
+ })
1142
+ this.#auditSeq = event.seq
1143
+ this.#config.log.info('namzu.audit.written', {
1144
+ 'namzu.audit.event_id': event.id,
1145
+ 'namzu.audit.seq': event.seq,
1146
+ 'namzu.session.record_seq': entry.record.seq,
1147
+ })
1148
+ return event
1149
+ }
1150
+
1151
+ /**
1152
+ * Wait for every queued record and flush the ledger. The durable half of
1153
+ * settling; the terminal record itself is the `turn_completed` or
1154
+ * `turn_failed` event.
1155
+ */
1156
+ async persist(): Promise<void> {
1157
+ await this.budget?.flush()
1158
+ this.#syncBudget()
1159
+ this.#syncMessages()
1160
+ await this.flush()
1161
+ this.#config.log.info('Turn recorded', {
1162
+ [NAMZU.TURN_ID]: this.turnId,
1163
+ [NAMZU.SESSION_ID]: this.sessionId,
1164
+ 'namzu.session.record_seq': this.lastSeq,
1165
+ })
1166
+ }
1167
+
1168
+ /** Whether the turn settled with a terminal status. */
1169
+ get isTerminal(): boolean {
1170
+ return isTerminalStatus(this.#turn.status)
1171
+ }
1172
+ }
1173
+
1174
+ /** The durable subset of the turn config `turn_started` records. */
1175
+ export function snapshotTurnConfig(config: TurnRecorderConfig['turnConfig']): TurnConfigSnapshot {
1176
+ return {
1177
+ model: config.model,
1178
+ tokenBudget: config.tokenBudget,
1179
+ timeoutMs: config.timeoutMs,
1180
+ ...(config.streamIdleTimeoutMs !== undefined
1181
+ ? { streamIdleTimeoutMs: config.streamIdleTimeoutMs }
1182
+ : {}),
1183
+ ...(config.maxRequestRichContentBytes !== undefined
1184
+ ? { maxRequestRichContentBytes: config.maxRequestRichContentBytes }
1185
+ : {}),
1186
+ ...(config.maxIterations !== undefined ? { maxIterations: config.maxIterations } : {}),
1187
+ ...(config.temperature !== undefined ? { temperature: config.temperature } : {}),
1188
+ ...(config.maxResponseTokens !== undefined
1189
+ ? { maxResponseTokens: config.maxResponseTokens }
1190
+ : {}),
1191
+ ...(config.costLimitUsd !== undefined ? { costLimitUsd: config.costLimitUsd } : {}),
1192
+ }
1193
+ }
1194
+
1195
+ /** A live event as a record draft: the payload minus the live-only fields. */
1196
+ export function eventDraft(
1197
+ event: SessionEvent,
1198
+ turnId: TurnId | undefined,
1199
+ ): Parameters<SessionLog['append']>[1] {
1200
+ const {
1201
+ sessionId: _sessionId,
1202
+ turnId: _turnId,
1203
+ lineage: _lineage,
1204
+ v: _v,
1205
+ seq: _seq,
1206
+ generation: _generation,
1207
+ ...payload
1208
+ } = event as SessionEvent & Record<string, unknown>
1209
+ const draft = JSON.parse(JSON.stringify(payload)) as Record<string, unknown>
1210
+ return { ...draft, ...(turnId ? { turnId } : {}) } as Parameters<SessionLog['append']>[1]
1211
+ }
1212
+
1213
+ /** When `turnId` began, from its `turn_started` record; `undefined` when the log has none. */
1214
+ export async function recordedTurnStart(
1215
+ log: SessionLog,
1216
+ turnId: TurnId,
1217
+ ): Promise<number | undefined> {
1218
+ for await (const entry of log.read()) {
1219
+ const record = entry.record as SessionRecord
1220
+ if (record.type !== 'turn_started' || record.turnId !== turnId) continue
1221
+ const at = Date.parse(record.ts)
1222
+ return Number.isFinite(at) ? at : undefined
1223
+ }
1224
+ return undefined
1225
+ }
1226
+
1227
+ /**
1228
+ * The session's folded context with the id each message's record gave it,
1229
+ * spilled bodies read back.
1230
+ */
1231
+ export async function readFoldedHistory(
1232
+ log: SessionLog,
1233
+ options: { readonly throughSeq?: number } = {},
1234
+ ): Promise<RecordedMessage[]> {
1235
+ const fold = new SessionMessageFold()
1236
+ for await (const entry of log.read(
1237
+ options.throughSeq !== undefined ? { throughSeq: options.throughSeq } : {},
1238
+ )) {
1239
+ fold.apply(entry.record as SessionRecord)
1240
+ }
1241
+ const out: RecordedMessage[] = []
1242
+ const spilled = fold.spilledSummary
1243
+ if (spilled) {
1244
+ for (const message of JSON.parse(await log.readSpill(spilled.spill)) as Message[]) {
1245
+ out.push({ message })
1246
+ }
1247
+ }
1248
+ for (const entry of fold.entries()) {
1249
+ const message = entry.spill
1250
+ ? (JSON.parse(await log.readSpill(entry.spill as SpillRef)) as Message)
1251
+ : entry.message
1252
+ out.push({ message, ...(entry.messageId ? { messageId: entry.messageId } : {}) })
1253
+ }
1254
+ return out
1255
+ }
1256
+
1257
+ /**
1258
+ * A session's audit trail: its `audit` records as {@link AuditEvent}s, in log
1259
+ * order, each numbered among the session's audit entries. What
1260
+ * `replayAudit` reads.
1261
+ */
1262
+ export async function readAuditTrail(log: SessionLog): Promise<AuditEvent[]> {
1263
+ const trail: AuditEvent[] = []
1264
+ for await (const { record } of log.read()) {
1265
+ if (record.type !== 'audit') continue
1266
+ const actor = record.actor
1267
+ trail.push({
1268
+ id: record.auditId as AuditEvent['id'],
1269
+ sessionId: record.sessionId,
1270
+ ...(record.turnId !== undefined ? { turnId: record.turnId } : {}),
1271
+ seq: trail.length + 1,
1272
+ timestamp: Date.parse(record.ts),
1273
+ who: {
1274
+ agentId: actor.kind === 'agent' ? actor.agentId : actor.kind,
1275
+ tenantId: actor.tenantId,
1276
+ ...(record.persona !== undefined ? { persona: record.persona } : {}),
1277
+ },
1278
+ what: {
1279
+ action: record.action,
1280
+ ...(record.tool !== undefined ? { tool: record.tool } : {}),
1281
+ ...(record.resource !== undefined ? { resource: record.resource } : {}),
1282
+ },
1283
+ outcome: record.outcome,
1284
+ cost: record.cost ?? { ...ZERO_COST },
1285
+ ...(record.reason !== undefined ? { reason: record.reason } : {}),
1286
+ ...(record.traceId !== undefined ? { traceId: record.traceId } : {}),
1287
+ ...(record.spanId !== undefined ? { spanId: record.spanId } : {}),
1288
+ })
1289
+ }
1290
+ return trail
1291
+ }