@namzu/sdk 43.0.0 → 44.1.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 (2112) hide show
  1. package/CHANGELOG.md +520 -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 +100 -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.map +1 -1
  343. package/dist/provider/errors.d.ts +1 -1
  344. package/dist/provider/errors.js +2 -2
  345. package/dist/provider/fallback.d.ts +4 -4
  346. package/dist/provider/fallback.js +6 -6
  347. package/dist/provider/fallback.js.map +1 -1
  348. package/dist/provider/idle-timeout.d.ts +2 -2
  349. package/dist/provider/idle-timeout.d.ts.map +1 -1
  350. package/dist/provider/idle-timeout.js +3 -3
  351. package/dist/provider/idle-timeout.js.map +1 -1
  352. package/dist/provider/instrumentation.d.ts +5 -2
  353. package/dist/provider/instrumentation.d.ts.map +1 -1
  354. package/dist/provider/instrumentation.js +9 -5
  355. package/dist/provider/instrumentation.js.map +1 -1
  356. package/dist/provider/mock.d.ts +1 -1
  357. package/dist/provider/mock.js +1 -1
  358. package/dist/provider/retry.d.ts +2 -2
  359. package/dist/provider/retry.js +6 -6
  360. package/dist/provider/retry.js.map +1 -1
  361. package/dist/provider/stream-text.d.ts +1 -1
  362. package/dist/provider/stream-text.d.ts.map +1 -1
  363. package/dist/provider/stream-text.js +1 -1
  364. package/dist/provider/stream-text.js.map +1 -1
  365. package/dist/provider/thinking-support.js +2 -2
  366. package/dist/provider/thinking-support.js.map +1 -1
  367. package/dist/provider/token-budget.d.ts +2 -2
  368. package/dist/provider/token-budget.d.ts.map +1 -1
  369. package/dist/provider/token-budget.js.map +1 -1
  370. package/dist/public-runtime.d.ts +69 -55
  371. package/dist/public-runtime.d.ts.map +1 -1
  372. package/dist/public-runtime.js +104 -99
  373. package/dist/public-runtime.js.map +1 -1
  374. package/dist/public-tools.d.ts +2 -2
  375. package/dist/public-tools.d.ts.map +1 -1
  376. package/dist/public-tools.js +7 -7
  377. package/dist/public-tools.js.map +1 -1
  378. package/dist/public-types.d.ts +18 -16
  379. package/dist/public-types.d.ts.map +1 -1
  380. package/dist/rag/embedding.js +1 -1
  381. package/dist/rag/embedding.js.map +1 -1
  382. package/dist/read-model/index.d.ts +2 -2
  383. package/dist/read-model/index.d.ts.map +1 -1
  384. package/dist/read-model/index.js +1 -1
  385. package/dist/read-model/index.js.map +1 -1
  386. package/dist/read-model/registry.d.ts +11 -11
  387. package/dist/read-model/registry.d.ts.map +1 -1
  388. package/dist/read-model/registry.js +2 -2
  389. package/dist/read-model/registry.js.map +1 -1
  390. package/dist/read-model/session-status.d.ts +34 -0
  391. package/dist/read-model/session-status.d.ts.map +1 -0
  392. package/dist/read-model/session-status.js +58 -0
  393. package/dist/read-model/session-status.js.map +1 -0
  394. package/dist/registry/command/kernel-commands.d.ts +4 -4
  395. package/dist/registry/command/kernel-commands.d.ts.map +1 -1
  396. package/dist/registry/command/kernel-commands.js +6 -6
  397. package/dist/registry/command/kernel-commands.js.map +1 -1
  398. package/dist/registry/tool/dialect.js +1 -1
  399. package/dist/registry/tool/execute.d.ts +2 -2
  400. package/dist/registry/tool/execute.d.ts.map +1 -1
  401. package/dist/registry/tool/execute.js +19 -7
  402. package/dist/registry/tool/execute.js.map +1 -1
  403. package/dist/registry/tool/portable.d.ts +1 -1
  404. package/dist/registry/tool/portable.js +1 -1
  405. package/dist/registry/tool/presentation.d.ts +1 -1
  406. package/dist/registry/tool/presentation.js +1 -1
  407. package/dist/registry/tool/schema.js +1 -1
  408. package/dist/registry/tool/screen.js +3 -3
  409. package/dist/registry/tool/screen.js.map +1 -1
  410. package/dist/runtime/bidi/index.d.ts +2 -2
  411. package/dist/runtime/bidi/index.d.ts.map +1 -1
  412. package/dist/runtime/bidi/index.js +1 -1
  413. package/dist/runtime/bidi/index.js.map +1 -1
  414. package/dist/runtime/bidi/session.d.ts +14 -11
  415. package/dist/runtime/bidi/session.d.ts.map +1 -1
  416. package/dist/runtime/bidi/session.js +27 -21
  417. package/dist/runtime/bidi/session.js.map +1 -1
  418. package/dist/runtime/jobs/awaited-jobs.d.ts +15 -15
  419. package/dist/runtime/jobs/awaited-jobs.d.ts.map +1 -1
  420. package/dist/runtime/jobs/awaited-jobs.js +13 -13
  421. package/dist/runtime/jobs/awaited-jobs.js.map +1 -1
  422. package/dist/runtime/jobs/registry.d.ts +10 -10
  423. package/dist/runtime/jobs/registry.d.ts.map +1 -1
  424. package/dist/runtime/jobs/registry.js +5 -5
  425. package/dist/runtime/jobs/registry.js.map +1 -1
  426. package/dist/runtime/query/abandon-turn.d.ts +35 -0
  427. package/dist/runtime/query/abandon-turn.d.ts.map +1 -0
  428. package/dist/runtime/query/abandon-turn.js +81 -0
  429. package/dist/runtime/query/abandon-turn.js.map +1 -0
  430. package/dist/runtime/query/approval-policy.d.ts +10 -10
  431. package/dist/runtime/query/approval-policy.d.ts.map +1 -1
  432. package/dist/runtime/query/approval-policy.js +5 -5
  433. package/dist/runtime/query/approval-policy.js.map +1 -1
  434. package/dist/runtime/query/callback-inference.d.ts +1 -1
  435. package/dist/runtime/query/callback-inference.d.ts.map +1 -1
  436. package/dist/runtime/query/callback-inference.js +4 -4
  437. package/dist/runtime/query/callback-inference.js.map +1 -1
  438. package/dist/runtime/query/cancelled-before-start.d.ts +20 -20
  439. package/dist/runtime/query/cancelled-before-start.d.ts.map +1 -1
  440. package/dist/runtime/query/cancelled-before-start.js +72 -55
  441. package/dist/runtime/query/cancelled-before-start.js.map +1 -1
  442. package/dist/runtime/query/checkpoint.d.ts +153 -220
  443. package/dist/runtime/query/checkpoint.d.ts.map +1 -1
  444. package/dist/runtime/query/checkpoint.js +399 -370
  445. package/dist/runtime/query/checkpoint.js.map +1 -1
  446. package/dist/runtime/query/compact-session.d.ts +20 -0
  447. package/dist/runtime/query/compact-session.d.ts.map +1 -0
  448. package/dist/runtime/query/compact-session.js +81 -0
  449. package/dist/runtime/query/compact-session.js.map +1 -0
  450. package/dist/runtime/query/context.d.ts +42 -85
  451. package/dist/runtime/query/context.d.ts.map +1 -1
  452. package/dist/runtime/query/context.js +36 -75
  453. package/dist/runtime/query/context.js.map +1 -1
  454. package/dist/runtime/query/events.d.ts +54 -26
  455. package/dist/runtime/query/events.d.ts.map +1 -1
  456. package/dist/runtime/query/events.js +122 -114
  457. package/dist/runtime/query/events.js.map +1 -1
  458. package/dist/runtime/query/executor/tool-call-admission.d.ts.map +1 -1
  459. package/dist/runtime/query/executor/tool-call-admission.js +6 -5
  460. package/dist/runtime/query/executor/tool-call-admission.js.map +1 -1
  461. package/dist/runtime/query/executor.d.ts +56 -34
  462. package/dist/runtime/query/executor.d.ts.map +1 -1
  463. package/dist/runtime/query/executor.js +165 -85
  464. package/dist/runtime/query/executor.js.map +1 -1
  465. package/dist/runtime/query/file-evidence-seed.d.ts +1 -1
  466. package/dist/runtime/query/file-evidence-seed.d.ts.map +1 -1
  467. package/dist/runtime/query/file-evidence-seed.js +1 -1
  468. package/dist/runtime/query/finalize-turn.d.ts +55 -0
  469. package/dist/runtime/query/finalize-turn.d.ts.map +1 -0
  470. package/dist/runtime/query/finalize-turn.js +129 -0
  471. package/dist/runtime/query/finalize-turn.js.map +1 -0
  472. package/dist/runtime/query/fork/list.d.ts +15 -0
  473. package/dist/runtime/query/fork/list.d.ts.map +1 -0
  474. package/dist/runtime/query/fork/list.js +11 -0
  475. package/dist/runtime/query/fork/list.js.map +1 -0
  476. package/dist/runtime/query/fork/mutate.d.ts +17 -0
  477. package/dist/runtime/query/fork/mutate.d.ts.map +1 -0
  478. package/dist/runtime/query/fork/mutate.js +69 -0
  479. package/dist/runtime/query/fork/mutate.js.map +1 -0
  480. package/dist/runtime/query/fork/prepare.d.ts +52 -0
  481. package/dist/runtime/query/fork/prepare.d.ts.map +1 -0
  482. package/dist/runtime/query/fork/prepare.js +43 -0
  483. package/dist/runtime/query/fork/prepare.js.map +1 -0
  484. package/dist/runtime/query/guard.d.ts +16 -16
  485. package/dist/runtime/query/guard.d.ts.map +1 -1
  486. package/dist/runtime/query/guard.js +16 -16
  487. package/dist/runtime/query/guard.js.map +1 -1
  488. package/dist/runtime/query/guardrail-presets.d.ts +10 -10
  489. package/dist/runtime/query/guardrail-presets.js +12 -12
  490. package/dist/runtime/query/guardrail-presets.js.map +1 -1
  491. package/dist/runtime/query/guardrails.d.ts +4 -4
  492. package/dist/runtime/query/guardrails.js +11 -11
  493. package/dist/runtime/query/guardrails.js.map +1 -1
  494. package/dist/runtime/query/index.d.ts +193 -155
  495. package/dist/runtime/query/index.d.ts.map +1 -1
  496. package/dist/runtime/query/index.js +1295 -1260
  497. package/dist/runtime/query/index.js.map +1 -1
  498. package/dist/runtime/query/iteration/index.d.ts +16 -16
  499. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  500. package/dist/runtime/query/iteration/index.js +285 -243
  501. package/dist/runtime/query/iteration/index.js.map +1 -1
  502. package/dist/runtime/query/iteration/outstanding-work.d.ts +22 -22
  503. package/dist/runtime/query/iteration/outstanding-work.d.ts.map +1 -1
  504. package/dist/runtime/query/iteration/outstanding-work.js +63 -63
  505. package/dist/runtime/query/iteration/outstanding-work.js.map +1 -1
  506. package/dist/runtime/query/iteration/phases/advisory.js +16 -16
  507. package/dist/runtime/query/iteration/phases/advisory.js.map +1 -1
  508. package/dist/runtime/query/iteration/phases/checkpoint.d.ts +2 -2
  509. package/dist/runtime/query/iteration/phases/checkpoint.d.ts.map +1 -1
  510. package/dist/runtime/query/iteration/phases/checkpoint.js +25 -8
  511. package/dist/runtime/query/iteration/phases/checkpoint.js.map +1 -1
  512. package/dist/runtime/query/iteration/phases/compaction.d.ts +2 -2
  513. package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
  514. package/dist/runtime/query/iteration/phases/compaction.js +74 -72
  515. package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
  516. package/dist/runtime/query/iteration/phases/context.d.ts +34 -29
  517. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  518. package/dist/runtime/query/iteration/phases/context.js +29 -29
  519. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  520. package/dist/runtime/query/iteration/phases/plan.d.ts +2 -2
  521. package/dist/runtime/query/iteration/phases/plan.d.ts.map +1 -1
  522. package/dist/runtime/query/iteration/phases/plan.js +5 -4
  523. package/dist/runtime/query/iteration/phases/plan.js.map +1 -1
  524. package/dist/runtime/query/iteration/phases/tool-review.d.ts +2 -2
  525. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  526. package/dist/runtime/query/iteration/phases/tool-review.js +140 -25
  527. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  528. package/dist/runtime/query/iteration/phases/working-memory.d.ts +27 -3
  529. package/dist/runtime/query/iteration/phases/working-memory.d.ts.map +1 -1
  530. package/dist/runtime/query/iteration/phases/working-memory.js +54 -20
  531. package/dist/runtime/query/iteration/phases/working-memory.js.map +1 -1
  532. package/dist/runtime/query/iteration/step-context.d.ts +11 -0
  533. package/dist/runtime/query/iteration/step-context.d.ts.map +1 -0
  534. package/dist/runtime/query/iteration/step-context.js +14 -0
  535. package/dist/runtime/query/iteration/step-context.js.map +1 -0
  536. package/dist/runtime/query/iteration/step-shaping.d.ts +4 -3
  537. package/dist/runtime/query/iteration/step-shaping.d.ts.map +1 -1
  538. package/dist/runtime/query/iteration/step-shaping.js +20 -19
  539. package/dist/runtime/query/iteration/step-shaping.js.map +1 -1
  540. package/dist/runtime/query/iteration/stream-turn.d.ts +5 -3
  541. package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
  542. package/dist/runtime/query/iteration/stream-turn.js +32 -28
  543. package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
  544. package/dist/runtime/query/plugin-hooks.js +1 -1
  545. package/dist/runtime/query/plugin-hooks.js.map +1 -1
  546. package/dist/runtime/query/prepare-turn.d.ts +105 -0
  547. package/dist/runtime/query/prepare-turn.d.ts.map +1 -0
  548. package/dist/runtime/query/prepare-turn.js +779 -0
  549. package/dist/runtime/query/prepare-turn.js.map +1 -0
  550. package/dist/runtime/query/project-instructions.d.ts +5 -4
  551. package/dist/runtime/query/project-instructions.d.ts.map +1 -1
  552. package/dist/runtime/query/project-instructions.js.map +1 -1
  553. package/dist/runtime/query/prompt-cache.js +1 -1
  554. package/dist/runtime/query/prompt-cache.js.map +1 -1
  555. package/dist/runtime/query/prompt.d.ts +3 -3
  556. package/dist/runtime/query/prompt.d.ts.map +1 -1
  557. package/dist/runtime/query/prompt.js +3 -3
  558. package/dist/runtime/query/prompt.js.map +1 -1
  559. package/dist/runtime/query/question-park.d.ts +7 -7
  560. package/dist/runtime/query/question-park.d.ts.map +1 -1
  561. package/dist/runtime/query/question-park.js +5 -5
  562. package/dist/runtime/query/question-park.js.map +1 -1
  563. package/dist/runtime/query/release-turn.d.ts +53 -0
  564. package/dist/runtime/query/release-turn.d.ts.map +1 -0
  565. package/dist/runtime/query/release-turn.js +95 -0
  566. package/dist/runtime/query/release-turn.js.map +1 -0
  567. package/dist/runtime/query/repeat-call.d.ts +2 -2
  568. package/dist/runtime/query/repeat-call.js +7 -7
  569. package/dist/runtime/query/repeat-call.js.map +1 -1
  570. package/dist/runtime/query/result.d.ts +25 -17
  571. package/dist/runtime/query/result.d.ts.map +1 -1
  572. package/dist/runtime/query/result.js +110 -115
  573. package/dist/runtime/query/result.js.map +1 -1
  574. package/dist/runtime/query/resume-pending.d.ts +34 -17
  575. package/dist/runtime/query/resume-pending.d.ts.map +1 -1
  576. package/dist/runtime/query/resume-pending.js +70 -30
  577. package/dist/runtime/query/resume-pending.js.map +1 -1
  578. package/dist/runtime/query/resume-session.d.ts +65 -0
  579. package/dist/runtime/query/resume-session.d.ts.map +1 -0
  580. package/dist/runtime/query/resume-session.js +88 -0
  581. package/dist/runtime/query/resume-session.js.map +1 -0
  582. package/dist/runtime/query/review-policy.d.ts +57 -16
  583. package/dist/runtime/query/review-policy.d.ts.map +1 -1
  584. package/dist/runtime/query/review-policy.js +115 -11
  585. package/dist/runtime/query/review-policy.js.map +1 -1
  586. package/dist/runtime/query/sandbox-lifecycle.d.ts +5 -5
  587. package/dist/runtime/query/sandbox-lifecycle.d.ts.map +1 -1
  588. package/dist/runtime/query/sandbox-lifecycle.js +4 -4
  589. package/dist/runtime/query/sandbox-lifecycle.js.map +1 -1
  590. package/dist/runtime/query/session-storage.d.ts +75 -0
  591. package/dist/runtime/query/session-storage.d.ts.map +1 -0
  592. package/dist/runtime/query/session-storage.js +236 -0
  593. package/dist/runtime/query/session-storage.js.map +1 -0
  594. package/dist/runtime/query/steering.d.ts +9 -3
  595. package/dist/runtime/query/steering.d.ts.map +1 -1
  596. package/dist/runtime/query/steering.js +12 -2
  597. package/dist/runtime/query/steering.js.map +1 -1
  598. package/dist/runtime/query/token-budget.d.ts +19 -5
  599. package/dist/runtime/query/token-budget.d.ts.map +1 -1
  600. package/dist/runtime/query/token-budget.js +43 -74
  601. package/dist/runtime/query/token-budget.js.map +1 -1
  602. package/dist/runtime/query/tool-call-budget.d.ts +6 -5
  603. package/dist/runtime/query/tool-call-budget.d.ts.map +1 -1
  604. package/dist/runtime/query/tool-call-budget.js +10 -12
  605. package/dist/runtime/query/tool-call-budget.js.map +1 -1
  606. package/dist/runtime/query/tool-executions.d.ts +26 -0
  607. package/dist/runtime/query/tool-executions.d.ts.map +1 -0
  608. package/dist/runtime/query/tool-executions.js +66 -0
  609. package/dist/runtime/query/tool-executions.js.map +1 -0
  610. package/dist/runtime/query/tool-grants.d.ts +3 -3
  611. package/dist/runtime/query/tool-grants.js +3 -3
  612. package/dist/runtime/query/tool-output-budget.d.ts +2 -2
  613. package/dist/runtime/query/tool-output-budget.js +4 -4
  614. package/dist/runtime/query/tool-output-budget.js.map +1 -1
  615. package/dist/runtime/query/tool-pause.d.ts +4 -3
  616. package/dist/runtime/query/tool-pause.d.ts.map +1 -1
  617. package/dist/runtime/query/tool-pause.js +5 -4
  618. package/dist/runtime/query/tool-pause.js.map +1 -1
  619. package/dist/runtime/query/tooling.d.ts +15 -10
  620. package/dist/runtime/query/tooling.d.ts.map +1 -1
  621. package/dist/runtime/query/tooling.js +7 -4
  622. package/dist/runtime/query/tooling.js.map +1 -1
  623. package/dist/runtime/query/turn-state.d.ts +56 -0
  624. package/dist/runtime/query/turn-state.d.ts.map +1 -0
  625. package/dist/runtime/query/turn-state.js +99 -0
  626. package/dist/runtime/query/turn-state.js.map +1 -0
  627. package/dist/sandbox/isolation.d.ts +1 -1
  628. package/dist/sandbox/isolation.js +2 -2
  629. package/dist/sandbox/isolation.js.map +1 -1
  630. package/dist/sandbox/provider/local.d.ts +2 -2
  631. package/dist/sandbox/provider/local.js +7 -7
  632. package/dist/sandbox/provider/local.js.map +1 -1
  633. package/dist/scheduler/completion-inbox.d.ts +21 -21
  634. package/dist/scheduler/completion-inbox.js +36 -36
  635. package/dist/scheduler/completion-inbox.js.map +1 -1
  636. package/dist/scheduler/delegating.d.ts +6 -3
  637. package/dist/scheduler/delegating.d.ts.map +1 -1
  638. package/dist/scheduler/delegating.js +15 -8
  639. package/dist/scheduler/delegating.js.map +1 -1
  640. package/dist/scheduler/local.d.ts +10 -8
  641. package/dist/scheduler/local.d.ts.map +1 -1
  642. package/dist/scheduler/local.js +37 -11
  643. package/dist/scheduler/local.js.map +1 -1
  644. package/dist/session/events/index.d.ts +3 -3
  645. package/dist/session/events/index.d.ts.map +1 -1
  646. package/dist/session/events/index.js +4 -8
  647. package/dist/session/events/index.js.map +1 -1
  648. package/dist/session/handoff/broadcast.d.ts +3 -3
  649. package/dist/session/handoff/broadcast.d.ts.map +1 -1
  650. package/dist/session/handoff/broadcast.js +4 -4
  651. package/dist/session/handoff/broadcast.js.map +1 -1
  652. package/dist/session/handoff/events.d.ts +1 -1
  653. package/dist/session/handoff/events.js +1 -1
  654. package/dist/session/handoff/index.d.ts +1 -1
  655. package/dist/session/handoff/index.d.ts.map +1 -1
  656. package/dist/session/handoff/single.d.ts +12 -12
  657. package/dist/session/handoff/single.d.ts.map +1 -1
  658. package/dist/session/handoff/single.js +9 -9
  659. package/dist/session/handoff/single.js.map +1 -1
  660. package/dist/session/handoff/version.d.ts +7 -7
  661. package/dist/session/handoff/version.d.ts.map +1 -1
  662. package/dist/session/handoff/version.js +2 -2
  663. package/dist/session/handoff/version.js.map +1 -1
  664. package/dist/session/home.d.ts +23 -0
  665. package/dist/session/home.d.ts.map +1 -0
  666. package/dist/session/home.js +45 -0
  667. package/dist/session/home.js.map +1 -0
  668. package/dist/session/index.d.ts +1 -0
  669. package/dist/session/index.d.ts.map +1 -1
  670. package/dist/session/index.js +1 -0
  671. package/dist/session/index.js.map +1 -1
  672. package/dist/session/log-hash.d.ts +25 -0
  673. package/dist/session/log-hash.d.ts.map +1 -0
  674. package/dist/session/log-hash.js +82 -0
  675. package/dist/session/log-hash.js.map +1 -0
  676. package/dist/session/messages.d.ts +11 -0
  677. package/dist/session/messages.d.ts.map +1 -0
  678. package/dist/session/messages.js +32 -0
  679. package/dist/session/messages.js.map +1 -0
  680. package/dist/session/paths.d.ts +168 -0
  681. package/dist/session/paths.d.ts.map +1 -0
  682. package/dist/session/paths.js +338 -0
  683. package/dist/session/paths.js.map +1 -0
  684. package/dist/session/retention/archive.d.ts +8 -1
  685. package/dist/session/retention/archive.d.ts.map +1 -1
  686. package/dist/session/retention/archive.js +3 -5
  687. package/dist/session/retention/archive.js.map +1 -1
  688. package/dist/session/status/derive.d.ts +13 -13
  689. package/dist/session/status/derive.d.ts.map +1 -1
  690. package/dist/session/status/derive.js +20 -20
  691. package/dist/session/status/derive.js.map +1 -1
  692. package/dist/session/workspace/git-worktree.d.ts +8 -1
  693. package/dist/session/workspace/git-worktree.d.ts.map +1 -1
  694. package/dist/session/workspace/git-worktree.js +29 -1
  695. package/dist/session/workspace/git-worktree.js.map +1 -1
  696. package/dist/session/workspace/index.d.ts +2 -4
  697. package/dist/session/workspace/index.d.ts.map +1 -1
  698. package/dist/session/workspace/index.js +2 -3
  699. package/dist/session/workspace/index.js.map +1 -1
  700. package/dist/session/workspace/shared-session.d.ts +112 -0
  701. package/dist/session/workspace/shared-session.d.ts.map +1 -0
  702. package/dist/session/workspace/shared-session.js +290 -0
  703. package/dist/session/workspace/shared-session.js.map +1 -0
  704. package/dist/session-query/index.d.ts +67 -0
  705. package/dist/session-query/index.d.ts.map +1 -0
  706. package/dist/session-query/index.js +100 -0
  707. package/dist/session-query/index.js.map +1 -0
  708. package/dist/skills/registry.d.ts +1 -1
  709. package/dist/skills/registry.js +1 -1
  710. package/dist/store/activity/memory.d.ts +3 -3
  711. package/dist/store/activity/memory.d.ts.map +1 -1
  712. package/dist/store/activity/memory.js +4 -4
  713. package/dist/store/activity/memory.js.map +1 -1
  714. package/dist/store/attachment/index.d.ts +4 -4
  715. package/dist/store/attachment/index.d.ts.map +1 -1
  716. package/dist/store/attachment/index.js +3 -3
  717. package/dist/store/attachment/index.js.map +1 -1
  718. package/dist/store/budget/disk.d.ts +59 -0
  719. package/dist/store/budget/disk.d.ts.map +1 -0
  720. package/dist/store/budget/disk.js +179 -0
  721. package/dist/store/budget/disk.js.map +1 -0
  722. package/dist/store/budget/index.d.ts +6 -0
  723. package/dist/store/budget/index.d.ts.map +1 -0
  724. package/dist/store/budget/index.js +6 -0
  725. package/dist/store/budget/index.js.map +1 -0
  726. package/dist/store/budget/ledger.d.ts +156 -0
  727. package/dist/store/budget/ledger.d.ts.map +1 -0
  728. package/dist/store/budget/ledger.js +683 -0
  729. package/dist/store/budget/ledger.js.map +1 -0
  730. package/dist/store/budget/memory.d.ts +18 -0
  731. package/dist/store/budget/memory.d.ts.map +1 -0
  732. package/dist/store/budget/memory.js +31 -0
  733. package/dist/store/budget/memory.js.map +1 -0
  734. package/dist/store/checkpoint/contract.d.ts +140 -0
  735. package/dist/store/checkpoint/contract.d.ts.map +1 -0
  736. package/dist/store/checkpoint/contract.js +91 -0
  737. package/dist/store/checkpoint/contract.js.map +1 -0
  738. package/dist/store/checkpoint/disk.d.ts +44 -0
  739. package/dist/store/checkpoint/disk.d.ts.map +1 -0
  740. package/dist/store/checkpoint/disk.js +168 -0
  741. package/dist/store/checkpoint/disk.js.map +1 -0
  742. package/dist/store/checkpoint/index.d.ts +9 -0
  743. package/dist/store/checkpoint/index.d.ts.map +1 -0
  744. package/dist/store/checkpoint/index.js +7 -0
  745. package/dist/store/checkpoint/index.js.map +1 -0
  746. package/dist/store/checkpoint/memory.d.ts +27 -0
  747. package/dist/store/checkpoint/memory.d.ts.map +1 -0
  748. package/dist/store/checkpoint/memory.js +80 -0
  749. package/dist/store/checkpoint/memory.js.map +1 -0
  750. package/dist/store/checkpoint/prune.d.ts +45 -0
  751. package/dist/store/checkpoint/prune.d.ts.map +1 -0
  752. package/dist/store/checkpoint/prune.js +71 -0
  753. package/dist/store/checkpoint/prune.js.map +1 -0
  754. package/dist/store/config/index.d.ts +1 -1
  755. package/dist/store/config/index.js +1 -1
  756. package/dist/store/evidence/disk.d.ts +25 -8
  757. package/dist/store/evidence/disk.d.ts.map +1 -1
  758. package/dist/store/evidence/disk.js +148 -47
  759. package/dist/store/evidence/disk.js.map +1 -1
  760. package/dist/store/evidence/index-page.d.ts +31 -140
  761. package/dist/store/evidence/index-page.d.ts.map +1 -1
  762. package/dist/store/evidence/index-page.js +59 -129
  763. package/dist/store/evidence/index-page.js.map +1 -1
  764. package/dist/store/evidence/source-text.d.ts +7 -6
  765. package/dist/store/evidence/source-text.d.ts.map +1 -1
  766. package/dist/store/evidence/source-text.js +16 -23
  767. package/dist/store/evidence/source-text.js.map +1 -1
  768. package/dist/store/evidence/types.d.ts +38 -39
  769. package/dist/store/evidence/types.d.ts.map +1 -1
  770. package/dist/store/feedback/conformance.d.ts +6 -6
  771. package/dist/store/feedback/conformance.d.ts.map +1 -1
  772. package/dist/store/feedback/conformance.js +30 -29
  773. package/dist/store/feedback/conformance.js.map +1 -1
  774. package/dist/store/feedback/disk.d.ts +20 -19
  775. package/dist/store/feedback/disk.d.ts.map +1 -1
  776. package/dist/store/feedback/disk.js +53 -53
  777. package/dist/store/feedback/disk.js.map +1 -1
  778. package/dist/store/feedback/index.d.ts +1 -1
  779. package/dist/store/feedback/index.d.ts.map +1 -1
  780. package/dist/store/feedback/index.js +1 -1
  781. package/dist/store/feedback/index.js.map +1 -1
  782. package/dist/store/feedback/memory.d.ts +8 -5
  783. package/dist/store/feedback/memory.d.ts.map +1 -1
  784. package/dist/store/feedback/memory.js +0 -0
  785. package/dist/store/feedback/memory.js.map +1 -1
  786. package/dist/store/feedback/types.d.ts +12 -11
  787. package/dist/store/feedback/types.d.ts.map +1 -1
  788. package/dist/store/feedback/types.js +3 -3
  789. package/dist/store/feedback/types.js.map +1 -1
  790. package/dist/store/index.d.ts +7 -8
  791. package/dist/store/index.d.ts.map +1 -1
  792. package/dist/store/index.js +4 -16
  793. package/dist/store/index.js.map +1 -1
  794. package/dist/store/memory/digest.d.ts +15 -0
  795. package/dist/store/memory/digest.d.ts.map +1 -0
  796. package/dist/store/memory/digest.js +27 -0
  797. package/dist/store/memory/digest.js.map +1 -0
  798. package/dist/store/memory/disk.d.ts.map +1 -1
  799. package/dist/store/memory/disk.js +42 -7
  800. package/dist/store/memory/disk.js.map +1 -1
  801. package/dist/store/memory/index-file.d.ts +56 -0
  802. package/dist/store/memory/index-file.d.ts.map +1 -0
  803. package/dist/store/memory/index-file.js +92 -0
  804. package/dist/store/memory/index-file.js.map +1 -0
  805. package/dist/store/memory/index.d.ts.map +1 -1
  806. package/dist/store/memory/index.js +4 -2
  807. package/dist/store/memory/index.js.map +1 -1
  808. package/dist/store/memory/links.d.ts +15 -0
  809. package/dist/store/memory/links.d.ts.map +1 -0
  810. package/dist/store/memory/links.js +35 -0
  811. package/dist/store/memory/links.js.map +1 -0
  812. package/dist/store/memory/markdown-format.d.ts +88 -0
  813. package/dist/store/memory/markdown-format.d.ts.map +1 -0
  814. package/dist/store/memory/markdown-format.js +222 -0
  815. package/dist/store/memory/markdown-format.js.map +1 -0
  816. package/dist/store/memory/markdown.d.ts +109 -0
  817. package/dist/store/memory/markdown.d.ts.map +1 -0
  818. package/dist/store/memory/markdown.js +606 -0
  819. package/dist/store/memory/markdown.js.map +1 -0
  820. package/dist/store/memory/memory.d.ts.map +1 -1
  821. package/dist/store/memory/memory.js +17 -4
  822. package/dist/store/memory/memory.js.map +1 -1
  823. package/dist/store/memory/naming.d.ts +66 -0
  824. package/dist/store/memory/naming.d.ts.map +1 -0
  825. package/dist/store/memory/naming.js +162 -0
  826. package/dist/store/memory/naming.js.map +1 -0
  827. package/dist/store/memory/origin.d.ts +25 -0
  828. package/dist/store/memory/origin.d.ts.map +1 -0
  829. package/dist/store/memory/origin.js +26 -0
  830. package/dist/store/memory/origin.js.map +1 -0
  831. package/dist/store/session/disk.d.ts +21 -24
  832. package/dist/store/session/disk.d.ts.map +1 -1
  833. package/dist/store/session/disk.js +27 -132
  834. package/dist/store/session/disk.js.map +1 -1
  835. package/dist/store/session/index.d.ts +0 -3
  836. package/dist/store/session/index.d.ts.map +1 -1
  837. package/dist/store/session/index.js +5 -7
  838. package/dist/store/session/index.js.map +1 -1
  839. package/dist/store/session/memory.d.ts +1 -8
  840. package/dist/store/session/memory.d.ts.map +1 -1
  841. package/dist/store/session/memory.js +1 -58
  842. package/dist/store/session/memory.js.map +1 -1
  843. package/dist/store/session-claim.d.ts +30 -0
  844. package/dist/store/session-claim.d.ts.map +1 -0
  845. package/dist/store/session-claim.js +71 -0
  846. package/dist/store/session-claim.js.map +1 -0
  847. package/dist/store/session-index/fts.d.ts +60 -0
  848. package/dist/store/session-index/fts.d.ts.map +1 -0
  849. package/dist/store/session-index/fts.js +160 -0
  850. package/dist/store/session-index/fts.js.map +1 -0
  851. package/dist/store/session-index/index.d.ts +206 -0
  852. package/dist/store/session-index/index.d.ts.map +1 -0
  853. package/dist/store/session-index/index.js +22 -0
  854. package/dist/store/session-index/index.js.map +1 -0
  855. package/dist/store/session-index/rebuild.d.ts +180 -0
  856. package/dist/store/session-index/rebuild.d.ts.map +1 -0
  857. package/dist/store/session-index/rebuild.js +669 -0
  858. package/dist/store/session-index/rebuild.js.map +1 -0
  859. package/dist/store/session-index/refs.d.ts +66 -0
  860. package/dist/store/session-index/refs.d.ts.map +1 -0
  861. package/dist/store/session-index/refs.js +107 -0
  862. package/dist/store/session-index/refs.js.map +1 -0
  863. package/dist/store/session-index/scan.d.ts +42 -0
  864. package/dist/store/session-index/scan.d.ts.map +1 -0
  865. package/dist/store/session-index/scan.js +188 -0
  866. package/dist/store/session-index/scan.js.map +1 -0
  867. package/dist/store/session-index/sqlite.d.ts +76 -0
  868. package/dist/store/session-index/sqlite.d.ts.map +1 -0
  869. package/dist/store/session-index/sqlite.js +547 -0
  870. package/dist/store/session-index/sqlite.js.map +1 -0
  871. package/dist/store/session-log/chain.d.ts +111 -0
  872. package/dist/store/session-log/chain.d.ts.map +1 -0
  873. package/dist/store/session-log/chain.js +212 -0
  874. package/dist/store/session-log/chain.js.map +1 -0
  875. package/dist/store/session-log/conformance.d.ts +61 -0
  876. package/dist/store/session-log/conformance.d.ts.map +1 -0
  877. package/dist/store/session-log/conformance.js +392 -0
  878. package/dist/store/session-log/conformance.js.map +1 -0
  879. package/dist/store/session-log/core.d.ts +203 -0
  880. package/dist/store/session-log/core.d.ts.map +1 -0
  881. package/dist/store/session-log/core.js +516 -0
  882. package/dist/store/session-log/core.js.map +1 -0
  883. package/dist/store/session-log/disk.d.ts +56 -0
  884. package/dist/store/session-log/disk.d.ts.map +1 -0
  885. package/dist/store/session-log/disk.js +169 -0
  886. package/dist/store/session-log/disk.js.map +1 -0
  887. package/dist/store/session-log/fold.d.ts +115 -0
  888. package/dist/store/session-log/fold.d.ts.map +1 -0
  889. package/dist/store/session-log/fold.js +265 -0
  890. package/dist/store/session-log/fold.js.map +1 -0
  891. package/dist/store/session-log/heal.d.ts +34 -0
  892. package/dist/store/session-log/heal.d.ts.map +1 -0
  893. package/dist/store/session-log/heal.js +12 -0
  894. package/dist/store/session-log/heal.js.map +1 -0
  895. package/dist/store/session-log/held-leases.d.ts +56 -0
  896. package/dist/store/session-log/held-leases.d.ts.map +1 -0
  897. package/dist/store/session-log/held-leases.js +67 -0
  898. package/dist/store/session-log/held-leases.js.map +1 -0
  899. package/dist/store/session-log/index.d.ts +10 -0
  900. package/dist/store/session-log/index.d.ts.map +1 -0
  901. package/dist/store/session-log/index.js +16 -0
  902. package/dist/store/session-log/index.js.map +1 -0
  903. package/dist/store/session-log/lease.d.ts +126 -0
  904. package/dist/store/session-log/lease.d.ts.map +1 -0
  905. package/dist/store/session-log/lease.js +226 -0
  906. package/dist/store/session-log/lease.js.map +1 -0
  907. package/dist/store/session-log/memory.d.ts +43 -0
  908. package/dist/store/session-log/memory.d.ts.map +1 -0
  909. package/dist/store/session-log/memory.js +78 -0
  910. package/dist/store/session-log/memory.js.map +1 -0
  911. package/dist/store/session-log/spill.d.ts +109 -0
  912. package/dist/store/session-log/spill.d.ts.map +1 -0
  913. package/dist/store/session-log/spill.js +223 -0
  914. package/dist/store/session-log/spill.js.map +1 -0
  915. package/dist/store/task/context.d.ts +25 -0
  916. package/dist/store/task/context.d.ts.map +1 -0
  917. package/dist/store/task/context.js +18 -0
  918. package/dist/store/task/context.js.map +1 -0
  919. package/dist/store/task/disk.d.ts +29 -26
  920. package/dist/store/task/disk.d.ts.map +1 -1
  921. package/dist/store/task/disk.js +102 -137
  922. package/dist/store/task/disk.js.map +1 -1
  923. package/dist/store/task/memory.d.ts +2 -2
  924. package/dist/store/task/memory.d.ts.map +1 -1
  925. package/dist/store/task/memory.js +10 -6
  926. package/dist/store/task/memory.js.map +1 -1
  927. package/dist/store/topic/index.js +2 -2
  928. package/dist/store/topic/index.js.map +1 -1
  929. package/dist/store/topic/objective.d.ts.map +1 -1
  930. package/dist/store/topic/objective.js +10 -3
  931. package/dist/store/topic/objective.js.map +1 -1
  932. package/dist/store/topic/state.js +1 -1
  933. package/dist/streaming/coalesce.d.ts +3 -3
  934. package/dist/streaming/coalesce.d.ts.map +1 -1
  935. package/dist/streaming/coalesce.js +1 -1
  936. package/dist/streaming/coalesce.js.map +1 -1
  937. package/dist/telemetry/attributes.d.ts +9 -8
  938. package/dist/telemetry/attributes.d.ts.map +1 -1
  939. package/dist/telemetry/attributes.js +6 -5
  940. package/dist/telemetry/attributes.js.map +1 -1
  941. package/dist/telemetry/metrics.d.ts +2 -2
  942. package/dist/telemetry/metrics.d.ts.map +1 -1
  943. package/dist/telemetry/metrics.js +5 -5
  944. package/dist/telemetry/metrics.js.map +1 -1
  945. package/dist/telemetry/runtime-accessors.js +1 -1
  946. package/dist/telemetry/runtime-accessors.js.map +1 -1
  947. package/dist/test-support/ids.d.ts +4 -4
  948. package/dist/test-support/ids.d.ts.map +1 -1
  949. package/dist/test-support/ids.js +3 -3
  950. package/dist/test-support/ids.js.map +1 -1
  951. package/dist/testing.d.ts +4 -6
  952. package/dist/testing.d.ts.map +1 -1
  953. package/dist/testing.js +3 -5
  954. package/dist/testing.js.map +1 -1
  955. package/dist/tools/advisory/index.js +1 -1
  956. package/dist/tools/advisory/index.js.map +1 -1
  957. package/dist/tools/builtins/bash.d.ts +6 -0
  958. package/dist/tools/builtins/bash.d.ts.map +1 -1
  959. package/dist/tools/builtins/bash.js +37 -5
  960. package/dist/tools/builtins/bash.js.map +1 -1
  961. package/dist/tools/builtins/content-fingerprint.d.ts +2 -2
  962. package/dist/tools/builtins/content-fingerprint.js +2 -2
  963. package/dist/tools/builtins/edit-apply.js +1 -1
  964. package/dist/tools/builtins/edit-apply.js.map +1 -1
  965. package/dist/tools/builtins/edit.d.ts.map +1 -1
  966. package/dist/tools/builtins/edit.js +3 -0
  967. package/dist/tools/builtins/edit.js.map +1 -1
  968. package/dist/tools/builtins/glob.d.ts.map +1 -1
  969. package/dist/tools/builtins/glob.js +3 -0
  970. package/dist/tools/builtins/glob.js.map +1 -1
  971. package/dist/tools/builtins/grep.d.ts.map +1 -1
  972. package/dist/tools/builtins/grep.js +3 -0
  973. package/dist/tools/builtins/grep.js.map +1 -1
  974. package/dist/tools/builtins/job.js +5 -5
  975. package/dist/tools/builtins/job.js.map +1 -1
  976. package/dist/tools/builtins/ls.d.ts +1 -1
  977. package/dist/tools/builtins/ls.d.ts.map +1 -1
  978. package/dist/tools/builtins/ls.js +3 -0
  979. package/dist/tools/builtins/ls.js.map +1 -1
  980. package/dist/tools/builtins/lsp.d.ts +1 -1
  981. package/dist/tools/builtins/lsp.d.ts.map +1 -1
  982. package/dist/tools/builtins/lsp.js +5 -2
  983. package/dist/tools/builtins/lsp.js.map +1 -1
  984. package/dist/tools/builtins/read-file.d.ts.map +1 -1
  985. package/dist/tools/builtins/read-file.js +3 -0
  986. package/dist/tools/builtins/read-file.js.map +1 -1
  987. package/dist/tools/builtins/run-code.js +9 -9
  988. package/dist/tools/builtins/run-code.js.map +1 -1
  989. package/dist/tools/builtins/skill.js +3 -3
  990. package/dist/tools/builtins/skill.js.map +1 -1
  991. package/dist/tools/builtins/wait-for-job-bounds.d.ts +4 -4
  992. package/dist/tools/builtins/wait-for-job-bounds.d.ts.map +1 -1
  993. package/dist/tools/builtins/wait-for-job-bounds.js +2 -2
  994. package/dist/tools/builtins/wait-for-job-bounds.js.map +1 -1
  995. package/dist/tools/builtins/wait-for-job.js +3 -3
  996. package/dist/tools/builtins/wait-for-job.js.map +1 -1
  997. package/dist/tools/builtins/web-guidance.d.ts +2 -2
  998. package/dist/tools/builtins/web-guidance.js +2 -2
  999. package/dist/tools/builtins/web.js +3 -3
  1000. package/dist/tools/builtins/web.js.map +1 -1
  1001. package/dist/tools/builtins/write-file.d.ts.map +1 -1
  1002. package/dist/tools/builtins/write-file.js +3 -0
  1003. package/dist/tools/builtins/write-file.js.map +1 -1
  1004. package/dist/tools/coordinator/agent.d.ts +1 -1
  1005. package/dist/tools/coordinator/agent.js +7 -7
  1006. package/dist/tools/coordinator/agent.js.map +1 -1
  1007. package/dist/tools/coordinator/ask-user-question.d.ts +10 -9
  1008. package/dist/tools/coordinator/ask-user-question.d.ts.map +1 -1
  1009. package/dist/tools/coordinator/ask-user-question.js +9 -8
  1010. package/dist/tools/coordinator/ask-user-question.js.map +1 -1
  1011. package/dist/tools/coordinator/index.d.ts +17 -11
  1012. package/dist/tools/coordinator/index.d.ts.map +1 -1
  1013. package/dist/tools/coordinator/index.js +45 -44
  1014. package/dist/tools/coordinator/index.js.map +1 -1
  1015. package/dist/tools/coordinator/outcome.d.ts +5 -5
  1016. package/dist/tools/coordinator/outcome.js +7 -7
  1017. package/dist/tools/coordinator/outcome.js.map +1 -1
  1018. package/dist/tools/coordinator/plan-dependencies.js +1 -1
  1019. package/dist/tools/coordinator/plan-dependencies.js.map +1 -1
  1020. package/dist/tools/coordinator/wait-with-idle-bound.d.ts +4 -4
  1021. package/dist/tools/coordinator/wait-with-idle-bound.d.ts.map +1 -1
  1022. package/dist/tools/coordinator/wait-with-idle-bound.js +2 -2
  1023. package/dist/tools/coordinator/wait-with-idle-bound.js.map +1 -1
  1024. package/dist/tools/defineTool.d.ts +5 -1
  1025. package/dist/tools/defineTool.d.ts.map +1 -1
  1026. package/dist/tools/defineTool.js +4 -0
  1027. package/dist/tools/defineTool.js.map +1 -1
  1028. package/dist/tools/env-scrub.d.ts +1 -1
  1029. package/dist/tools/env-scrub.js +1 -1
  1030. package/dist/tools/goal/index.d.ts +10 -6
  1031. package/dist/tools/goal/index.d.ts.map +1 -1
  1032. package/dist/tools/goal/index.js +9 -9
  1033. package/dist/tools/goal/index.js.map +1 -1
  1034. package/dist/tools/memory/fields.d.ts +8 -0
  1035. package/dist/tools/memory/fields.d.ts.map +1 -0
  1036. package/dist/tools/memory/fields.js +22 -0
  1037. package/dist/tools/memory/fields.js.map +1 -0
  1038. package/dist/tools/memory/read.d.ts.map +1 -1
  1039. package/dist/tools/memory/read.js +60 -7
  1040. package/dist/tools/memory/read.js.map +1 -1
  1041. package/dist/tools/memory/resolve.d.ts +21 -0
  1042. package/dist/tools/memory/resolve.d.ts.map +1 -0
  1043. package/dist/tools/memory/resolve.js +23 -0
  1044. package/dist/tools/memory/resolve.js.map +1 -0
  1045. package/dist/tools/memory/save.d.ts.map +1 -1
  1046. package/dist/tools/memory/save.js +57 -18
  1047. package/dist/tools/memory/save.js.map +1 -1
  1048. package/dist/tools/memory/search.d.ts.map +1 -1
  1049. package/dist/tools/memory/search.js +9 -2
  1050. package/dist/tools/memory/search.js.map +1 -1
  1051. package/dist/tools/memory/update.d.ts.map +1 -1
  1052. package/dist/tools/memory/update.js +45 -7
  1053. package/dist/tools/memory/update.js.map +1 -1
  1054. package/dist/tools/paths.d.ts +29 -3
  1055. package/dist/tools/paths.d.ts.map +1 -1
  1056. package/dist/tools/paths.js +81 -23
  1057. package/dist/tools/paths.js.map +1 -1
  1058. package/dist/tools/posix-path.js +1 -1
  1059. package/dist/tools/posix-path.js.map +1 -1
  1060. package/dist/tools/resident-history.d.ts +1 -1
  1061. package/dist/tools/resident-history.js +1 -1
  1062. package/dist/tools/resident-tool-evidence.d.ts +1 -1
  1063. package/dist/tools/resident-tool-evidence.d.ts.map +1 -1
  1064. package/dist/tools/resident-tool-evidence.js +1 -1
  1065. package/dist/tools/resident-tool-evidence.js.map +1 -1
  1066. package/dist/tools/task/create.d.ts +2 -2
  1067. package/dist/tools/task/create.d.ts.map +1 -1
  1068. package/dist/tools/task/create.js +7 -3
  1069. package/dist/tools/task/create.js.map +1 -1
  1070. package/dist/tools/task/index.d.ts +16 -2
  1071. package/dist/tools/task/index.d.ts.map +1 -1
  1072. package/dist/tools/task/index.js +4 -3
  1073. package/dist/tools/task/index.js.map +1 -1
  1074. package/dist/tools/task/list.d.ts +4 -2
  1075. package/dist/tools/task/list.d.ts.map +1 -1
  1076. package/dist/tools/task/list.js +12 -5
  1077. package/dist/tools/task/list.js.map +1 -1
  1078. package/dist/tools/task/present.d.ts +18 -0
  1079. package/dist/tools/task/present.d.ts.map +1 -0
  1080. package/dist/tools/task/present.js +88 -0
  1081. package/dist/tools/task/present.js.map +1 -0
  1082. package/dist/tools/task/update.d.ts.map +1 -1
  1083. package/dist/tools/task/update.js +9 -1
  1084. package/dist/tools/task/update.js.map +1 -1
  1085. package/dist/turn/LimitChecker.d.ts +30 -0
  1086. package/dist/turn/LimitChecker.d.ts.map +1 -0
  1087. package/dist/turn/LimitChecker.js +57 -0
  1088. package/dist/turn/LimitChecker.js.map +1 -0
  1089. package/dist/turn/command-gate.d.ts +107 -0
  1090. package/dist/turn/command-gate.d.ts.map +1 -0
  1091. package/dist/turn/command-gate.js +221 -0
  1092. package/dist/turn/command-gate.js.map +1 -0
  1093. package/dist/turn/drain.d.ts +138 -0
  1094. package/dist/turn/drain.d.ts.map +1 -0
  1095. package/dist/turn/drain.js +209 -0
  1096. package/dist/turn/drain.js.map +1 -0
  1097. package/dist/turn/evidence-query.d.ts +41 -0
  1098. package/dist/turn/evidence-query.d.ts.map +1 -0
  1099. package/dist/turn/evidence-query.js +270 -0
  1100. package/dist/turn/evidence-query.js.map +1 -0
  1101. package/dist/turn/evidence-recall.d.ts +102 -0
  1102. package/dist/turn/evidence-recall.d.ts.map +1 -0
  1103. package/dist/turn/evidence-recall.js +635 -0
  1104. package/dist/turn/evidence-recall.js.map +1 -0
  1105. package/dist/turn/index.d.ts +17 -0
  1106. package/dist/turn/index.d.ts.map +1 -0
  1107. package/dist/turn/index.js +9 -0
  1108. package/dist/turn/index.js.map +1 -0
  1109. package/dist/turn/json-claim-verifier.d.ts +83 -0
  1110. package/dist/turn/json-claim-verifier.d.ts.map +1 -0
  1111. package/dist/turn/json-claim-verifier.js +200 -0
  1112. package/dist/turn/json-claim-verifier.js.map +1 -0
  1113. package/dist/turn/memory-promoter.d.ts +43 -0
  1114. package/dist/turn/memory-promoter.d.ts.map +1 -0
  1115. package/dist/turn/memory-promoter.js +111 -0
  1116. package/dist/turn/memory-promoter.js.map +1 -0
  1117. package/dist/turn/memory-recall.d.ts +33 -0
  1118. package/dist/turn/memory-recall.d.ts.map +1 -0
  1119. package/dist/turn/memory-recall.js +248 -0
  1120. package/dist/turn/memory-recall.js.map +1 -0
  1121. package/dist/turn/preparation-context-error.d.ts.map +1 -0
  1122. package/dist/turn/preparation-context-error.js.map +1 -0
  1123. package/dist/turn/reporter.d.ts +8 -0
  1124. package/dist/turn/reporter.d.ts.map +1 -0
  1125. package/dist/turn/reporter.js +420 -0
  1126. package/dist/turn/reporter.js.map +1 -0
  1127. package/dist/turn/workspace-fingerprint.d.ts.map +1 -0
  1128. package/dist/turn/workspace-fingerprint.js.map +1 -0
  1129. package/dist/types/activity/index.d.ts +2 -2
  1130. package/dist/types/activity/index.d.ts.map +1 -1
  1131. package/dist/types/advisory/config.d.ts +7 -7
  1132. package/dist/types/advisory/config.d.ts.map +1 -1
  1133. package/dist/types/agent/base.d.ts +71 -44
  1134. package/dist/types/agent/base.d.ts.map +1 -1
  1135. package/dist/types/agent/core.d.ts +10 -10
  1136. package/dist/types/agent/core.d.ts.map +1 -1
  1137. package/dist/types/agent/delegate.d.ts +2 -2
  1138. package/dist/types/agent/factory.d.ts +6 -4
  1139. package/dist/types/agent/factory.d.ts.map +1 -1
  1140. package/dist/types/agent/manager.d.ts +6 -6
  1141. package/dist/types/agent/manager.d.ts.map +1 -1
  1142. package/dist/types/agent/pipeline.d.ts +5 -4
  1143. package/dist/types/agent/pipeline.d.ts.map +1 -1
  1144. package/dist/types/agent/reactive.d.ts +11 -10
  1145. package/dist/types/agent/reactive.d.ts.map +1 -1
  1146. package/dist/types/agent/router.d.ts +1 -1
  1147. package/dist/types/agent/scheduler.d.ts +27 -11
  1148. package/dist/types/agent/scheduler.d.ts.map +1 -1
  1149. package/dist/types/agent/supervisor.d.ts +13 -13
  1150. package/dist/types/agent/task.d.ts +48 -12
  1151. package/dist/types/agent/task.d.ts.map +1 -1
  1152. package/dist/types/agent/working-memory.d.ts +5 -4
  1153. package/dist/types/agent/working-memory.d.ts.map +1 -1
  1154. package/dist/types/authorization/index.d.ts +6 -6
  1155. package/dist/types/bidi/index.d.ts +21 -12
  1156. package/dist/types/bidi/index.d.ts.map +1 -1
  1157. package/dist/types/bus/index.d.ts +34 -28
  1158. package/dist/types/bus/index.d.ts.map +1 -1
  1159. package/dist/types/code-navigation/index.d.ts +1 -1
  1160. package/dist/types/common/index.d.ts +10 -18
  1161. package/dist/types/common/index.d.ts.map +1 -1
  1162. package/dist/types/common/index.js +3 -2
  1163. package/dist/types/common/index.js.map +1 -1
  1164. package/dist/types/connector/core.d.ts +2 -2
  1165. package/dist/types/connector/definition.d.ts +1 -1
  1166. package/dist/types/connector/mcp.d.ts +1 -1
  1167. package/dist/types/errors/catalog.js +4 -4
  1168. package/dist/types/errors/catalog.js.map +1 -1
  1169. package/dist/types/errors/index.d.ts +5 -5
  1170. package/dist/types/errors/index.d.ts.map +1 -1
  1171. package/dist/types/guardrail/index.d.ts +12 -10
  1172. package/dist/types/guardrail/index.d.ts.map +1 -1
  1173. package/dist/types/hitl/index.d.ts +60 -117
  1174. package/dist/types/hitl/index.d.ts.map +1 -1
  1175. package/dist/types/hitl/index.js +1 -1
  1176. package/dist/types/hitl/index.js.map +1 -1
  1177. package/dist/types/hitl/policy.d.ts +8 -6
  1178. package/dist/types/hitl/policy.d.ts.map +1 -1
  1179. package/dist/types/ids/brand.d.ts +10 -3
  1180. package/dist/types/ids/brand.d.ts.map +1 -1
  1181. package/dist/types/ids/brand.js.map +1 -1
  1182. package/dist/types/ids/index.d.ts +10 -4
  1183. package/dist/types/ids/index.d.ts.map +1 -1
  1184. package/dist/types/ids/index.js.map +1 -1
  1185. package/dist/types/memory/index.d.ts +35 -0
  1186. package/dist/types/memory/index.d.ts.map +1 -1
  1187. package/dist/types/memory/index.js +17 -0
  1188. package/dist/types/memory/index.js.map +1 -1
  1189. package/dist/types/message/index.d.ts +4 -4
  1190. package/dist/types/plan/index.d.ts +5 -3
  1191. package/dist/types/plan/index.d.ts.map +1 -1
  1192. package/dist/types/plugin/index.d.ts +27 -19
  1193. package/dist/types/plugin/index.d.ts.map +1 -1
  1194. package/dist/types/plugin/index.js +16 -3
  1195. package/dist/types/plugin/index.js.map +1 -1
  1196. package/dist/types/probe/event-kind.d.ts +3 -3
  1197. package/dist/types/probe/event-kind.d.ts.map +1 -1
  1198. package/dist/types/probe/registry.d.ts +3 -2
  1199. package/dist/types/probe/registry.d.ts.map +1 -1
  1200. package/dist/types/project/entity.d.ts +3 -3
  1201. package/dist/types/provider/config.d.ts +3 -3
  1202. package/dist/types/provider/error.d.ts +1 -1
  1203. package/dist/types/provider/errors.d.ts +2 -2
  1204. package/dist/types/provider/errors.js +2 -2
  1205. package/dist/types/provider/errors.js.map +1 -1
  1206. package/dist/types/provider/interface.d.ts +5 -5
  1207. package/dist/types/router/task-router.d.ts +1 -1
  1208. package/dist/types/sandbox/index.d.ts +14 -14
  1209. package/dist/types/sandbox/index.d.ts.map +1 -1
  1210. package/dist/types/sandbox/index.js +4 -4
  1211. package/dist/types/session/answer-review.d.ts +80 -0
  1212. package/dist/types/session/answer-review.d.ts.map +1 -0
  1213. package/dist/types/session/answer-review.js.map +1 -0
  1214. package/dist/types/session/audit.d.ts +153 -0
  1215. package/dist/types/session/audit.d.ts.map +1 -0
  1216. package/dist/types/session/audit.js +35 -0
  1217. package/dist/types/session/audit.js.map +1 -0
  1218. package/dist/types/session/cancel-cause.d.ts +49 -0
  1219. package/dist/types/session/cancel-cause.d.ts.map +1 -0
  1220. package/dist/types/session/cancel-cause.js +39 -0
  1221. package/dist/types/session/cancel-cause.js.map +1 -0
  1222. package/dist/types/session/checkpoint.d.ts +325 -0
  1223. package/dist/types/session/checkpoint.d.ts.map +1 -0
  1224. package/dist/types/session/checkpoint.js +100 -0
  1225. package/dist/types/session/checkpoint.js.map +1 -0
  1226. package/dist/types/session/config.d.ts +199 -0
  1227. package/dist/types/session/config.d.ts.map +1 -0
  1228. package/dist/types/session/config.js.map +1 -0
  1229. package/dist/types/session/derive-status.d.ts +28 -0
  1230. package/dist/types/session/derive-status.d.ts.map +1 -0
  1231. package/dist/types/session/derive-status.js +49 -0
  1232. package/dist/types/session/derive-status.js.map +1 -0
  1233. package/dist/types/session/durable.d.ts +142 -0
  1234. package/dist/types/session/durable.d.ts.map +1 -0
  1235. package/dist/types/session/durable.js +11 -0
  1236. package/dist/types/session/durable.js.map +1 -0
  1237. package/dist/types/session/entity.d.ts +1 -1
  1238. package/dist/types/session/events.d.ts +1147 -0
  1239. package/dist/types/session/events.d.ts.map +1 -0
  1240. package/dist/types/session/events.js +15 -0
  1241. package/dist/types/session/events.js.map +1 -0
  1242. package/dist/types/session/fork.d.ts +45 -0
  1243. package/dist/types/session/fork.d.ts.map +1 -0
  1244. package/dist/types/session/fork.js +15 -0
  1245. package/dist/types/session/fork.js.map +1 -0
  1246. package/dist/types/session/ids.d.ts +1 -1
  1247. package/dist/types/session/ids.d.ts.map +1 -1
  1248. package/dist/types/session/index.d.ts +20 -1
  1249. package/dist/types/session/index.d.ts.map +1 -1
  1250. package/dist/types/session/index.js +22 -4
  1251. package/dist/types/session/index.js.map +1 -1
  1252. package/dist/types/session/lineage.d.ts +15 -0
  1253. package/dist/types/session/lineage.d.ts.map +1 -0
  1254. package/dist/types/session/lineage.js.map +1 -0
  1255. package/dist/types/session/log-cursor.d.ts +57 -0
  1256. package/dist/types/session/log-cursor.d.ts.map +1 -0
  1257. package/dist/types/session/log-cursor.js +34 -0
  1258. package/dist/types/session/log-cursor.js.map +1 -0
  1259. package/dist/types/session/memory-promotion.d.ts +91 -0
  1260. package/dist/types/session/memory-promotion.d.ts.map +1 -0
  1261. package/dist/types/session/memory-promotion.js +39 -0
  1262. package/dist/types/session/memory-promotion.js.map +1 -0
  1263. package/dist/types/session/messages.d.ts +1 -1
  1264. package/dist/types/session/messages.js +1 -1
  1265. package/dist/types/session/prepare-step.d.ts +278 -0
  1266. package/dist/types/session/prepare-step.d.ts.map +1 -0
  1267. package/dist/types/session/prepare-step.js.map +1 -0
  1268. package/dist/types/session/records.d.ts +5597 -0
  1269. package/dist/types/session/records.d.ts.map +1 -0
  1270. package/dist/types/session/records.js +721 -0
  1271. package/dist/types/session/records.js.map +1 -0
  1272. package/dist/types/session/step.d.ts +195 -0
  1273. package/dist/types/session/step.d.ts.map +1 -0
  1274. package/dist/types/session/step.js +26 -0
  1275. package/dist/types/session/step.js.map +1 -0
  1276. package/dist/types/session/stop-reason.d.ts +67 -0
  1277. package/dist/types/session/stop-reason.d.ts.map +1 -0
  1278. package/dist/types/session/stop-reason.js.map +1 -0
  1279. package/dist/types/session/store.d.ts +2 -43
  1280. package/dist/types/session/store.d.ts.map +1 -1
  1281. package/dist/types/session/tool-execution.d.ts +34 -0
  1282. package/dist/types/session/tool-execution.d.ts.map +1 -0
  1283. package/dist/types/session/tool-execution.js +11 -0
  1284. package/dist/types/session/tool-execution.js.map +1 -0
  1285. package/dist/types/session/turn-state.d.ts +74 -0
  1286. package/dist/types/session/turn-state.d.ts.map +1 -0
  1287. package/dist/types/session/turn-state.js +59 -0
  1288. package/dist/types/session/turn-state.js.map +1 -0
  1289. package/dist/types/session/turn.d.ts +215 -0
  1290. package/dist/types/session/turn.d.ts.map +1 -0
  1291. package/dist/types/session/turn.js +44 -0
  1292. package/dist/types/session/turn.js.map +1 -0
  1293. package/dist/types/structured-output/index.d.ts +2 -2
  1294. package/dist/types/structured-output/index.d.ts.map +1 -1
  1295. package/dist/types/summary/deliverable.d.ts +4 -4
  1296. package/dist/types/summary/deliverable.d.ts.map +1 -1
  1297. package/dist/types/task/index.d.ts +8 -4
  1298. package/dist/types/task/index.d.ts.map +1 -1
  1299. package/dist/types/tool/index.d.ts +73 -26
  1300. package/dist/types/tool/index.d.ts.map +1 -1
  1301. package/dist/types/tool/index.js.map +1 -1
  1302. package/dist/types/topic/entity.d.ts +6 -6
  1303. package/dist/types/topic/objective.d.ts +10 -5
  1304. package/dist/types/topic/objective.d.ts.map +1 -1
  1305. package/dist/types/topic/objective.js.map +1 -1
  1306. package/dist/types/topic/state.d.ts +4 -4
  1307. package/dist/types/topic/store.d.ts +1 -1
  1308. package/dist/types/topic/store.js +1 -1
  1309. package/dist/types/workspace/index.d.ts +1 -1
  1310. package/dist/types/workspace/index.d.ts.map +1 -1
  1311. package/dist/types/workspace/index.js +1 -1
  1312. package/dist/types/workspace/index.js.map +1 -1
  1313. package/dist/types/workspace/ref.d.ts +3 -3
  1314. package/dist/types/workspace/shared-session.d.ts +61 -0
  1315. package/dist/types/workspace/shared-session.d.ts.map +1 -0
  1316. package/dist/types/workspace/shared-session.js +2 -0
  1317. package/dist/types/workspace/shared-session.js.map +1 -0
  1318. package/dist/utils/abort.js +4 -4
  1319. package/dist/utils/abort.js.map +1 -1
  1320. package/dist/utils/atomic-write.d.ts +29 -1
  1321. package/dist/utils/atomic-write.d.ts.map +1 -1
  1322. package/dist/utils/atomic-write.js +60 -4
  1323. package/dist/utils/atomic-write.js.map +1 -1
  1324. package/dist/utils/cost.d.ts +3 -3
  1325. package/dist/utils/cost.d.ts.map +1 -1
  1326. package/dist/utils/cost.js +11 -12
  1327. package/dist/utils/cost.js.map +1 -1
  1328. package/dist/utils/env.d.ts +1 -1
  1329. package/dist/utils/env.js +1 -1
  1330. package/dist/utils/id.d.ts +9 -8
  1331. package/dist/utils/id.d.ts.map +1 -1
  1332. package/dist/utils/id.js +20 -13
  1333. package/dist/utils/id.js.map +1 -1
  1334. package/dist/utils/log/create-logger.js +1 -1
  1335. package/dist/utils/log/create-logger.js.map +1 -1
  1336. package/dist/utils/log/redact.js +1 -1
  1337. package/dist/utils/log/redact.js.map +1 -1
  1338. package/dist/utils/log/sinks.d.ts +1 -1
  1339. package/dist/utils/log/sinks.js +2 -2
  1340. package/dist/utils/log/sinks.js.map +1 -1
  1341. package/dist/utils/log/types.js +1 -1
  1342. package/dist/utils/log/types.js.map +1 -1
  1343. package/dist/utils/shell-compress.js +2 -2
  1344. package/dist/utils/shell-compress.js.map +1 -1
  1345. package/dist/utils/uuidv7.d.ts +33 -0
  1346. package/dist/utils/uuidv7.d.ts.map +1 -0
  1347. package/dist/utils/uuidv7.js +70 -0
  1348. package/dist/utils/uuidv7.js.map +1 -0
  1349. package/dist/vault/instrumentation.d.ts +5 -2
  1350. package/dist/vault/instrumentation.d.ts.map +1 -1
  1351. package/dist/vault/instrumentation.js +12 -6
  1352. package/dist/vault/instrumentation.js.map +1 -1
  1353. package/package.json +1 -1
  1354. package/src/advisory/budget.ts +3 -3
  1355. package/src/advisory/context.ts +9 -9
  1356. package/src/advisory/evaluator.ts +2 -2
  1357. package/src/advisory/parse.ts +1 -1
  1358. package/src/agents/AbstractAgent.ts +74 -50
  1359. package/src/agents/PipelineAgent.ts +91 -26
  1360. package/src/agents/ReactiveAgent.ts +35 -29
  1361. package/src/agents/RouterAgent.ts +32 -44
  1362. package/src/agents/SupervisorAgent.ts +55 -41
  1363. package/src/agents/budget.ts +73 -16
  1364. package/src/agents/defineAgent.ts +7 -3
  1365. package/src/agents/handle.ts +17 -19
  1366. package/src/agents/lock.ts +4 -4
  1367. package/src/agents/runAgent.ts +96 -38
  1368. package/src/agents/storage.ts +36 -0
  1369. package/src/authorization/command-line.ts +1 -1
  1370. package/src/authorization/gate.ts +1 -1
  1371. package/src/authorization/permission-presets.ts +4 -4
  1372. package/src/bridge/a2a/client.ts +2 -2
  1373. package/src/bridge/a2a/context.ts +46 -0
  1374. package/src/bridge/a2a/index.ts +12 -5
  1375. package/src/bridge/a2a/mapper.ts +48 -38
  1376. package/src/bridge/a2a/task.ts +91 -37
  1377. package/src/bridge/acp/permission.ts +2 -2
  1378. package/src/bridge/acp/server.ts +45 -11
  1379. package/src/bridge/acp/update.ts +9 -9
  1380. package/src/bridge/external-session.ts +82 -0
  1381. package/src/bridge/sse/index.ts +1 -1
  1382. package/src/bridge/sse/mapper.ts +117 -145
  1383. package/src/bus/breaker.ts +30 -29
  1384. package/src/bus/index.ts +7 -7
  1385. package/src/bus/lock.ts +7 -7
  1386. package/src/bus/ownership.ts +8 -8
  1387. package/src/compaction/consolidation.ts +61 -15
  1388. package/src/compaction/context-window.ts +4 -4
  1389. package/src/compaction/index.ts +2 -2
  1390. package/src/compaction/manager.ts +4 -4
  1391. package/src/compaction/manual.ts +5 -5
  1392. package/src/compaction/plan.ts +8 -8
  1393. package/src/compaction/reducer.ts +8 -8
  1394. package/src/compaction/retention.ts +2 -2
  1395. package/src/compaction/salience/bm25.ts +2 -2
  1396. package/src/compaction/salience/goal.ts +3 -3
  1397. package/src/compaction/salience/minhash.ts +1 -1
  1398. package/src/compaction/salience/score.ts +3 -3
  1399. package/src/compaction/salience/tokenize.ts +1 -1
  1400. package/src/compaction/verifier.ts +7 -7
  1401. package/src/compaction/wire.ts +1 -1
  1402. package/src/config/registry.ts +4 -4
  1403. package/src/config/runtime.ts +3 -3
  1404. package/src/connector/http-operation.ts +1 -1
  1405. package/src/connector/mcp/adapter.ts +1 -1
  1406. package/src/connector/mcp/client.ts +1 -1
  1407. package/src/connector/mcp/discovery.ts +2 -2
  1408. package/src/connector/mcp/policy.ts +1 -1
  1409. package/src/connector/mcp/prompt-adapter.ts +3 -3
  1410. package/src/constants/a2a/index.ts +10 -3
  1411. package/src/constants/continuation.ts +1 -1
  1412. package/src/constants/index.ts +0 -1
  1413. package/src/constants/limits.ts +2 -2
  1414. package/src/constants/telemetry/index.ts +15 -12
  1415. package/src/constants/tools/index.ts +2 -2
  1416. package/src/contracts/api.ts +11 -202
  1417. package/src/contracts/index.ts +8 -15
  1418. package/src/contracts/schemas.ts +6 -39
  1419. package/src/contracts/session/api.ts +150 -0
  1420. package/src/contracts/session/index.ts +29 -0
  1421. package/src/contracts/session/schemas.ts +60 -0
  1422. package/src/contracts/session/turn-status.ts +83 -0
  1423. package/src/contracts/session/turn.ts +67 -0
  1424. package/src/directory/derive-supervisor.ts +2 -2
  1425. package/src/directory/derive.ts +4 -4
  1426. package/src/directory/index.ts +2 -2
  1427. package/src/directory/load.ts +2 -2
  1428. package/src/directory/types.ts +2 -2
  1429. package/src/eval/experiment.ts +23 -23
  1430. package/src/eval/from-turn.ts +50 -0
  1431. package/src/eval/harness-verification.ts +7 -7
  1432. package/src/eval/index.ts +2 -2
  1433. package/src/eval/judge.ts +10 -10
  1434. package/src/eval/scorers.ts +23 -23
  1435. package/src/eval/types.ts +12 -12
  1436. package/src/eval/uncertainty.ts +2 -2
  1437. package/src/execution/code-runtime/types.ts +4 -4
  1438. package/src/execution/code-runtime/worker.ts +1 -1
  1439. package/src/invariants/index.ts +2 -2
  1440. package/src/manager/agent/child-session.ts +120 -0
  1441. package/src/manager/agent/lifecycle.ts +422 -102
  1442. package/src/manager/index.ts +1 -2
  1443. package/src/manager/plan/lifecycle.ts +16 -10
  1444. package/src/manager/resident/consumption.ts +8 -6
  1445. package/src/manager/resident/evidence-recall.ts +14 -14
  1446. package/src/manager/resident/host.ts +2 -2
  1447. package/src/manager/resident/learning-cycle.ts +5 -3
  1448. package/src/manager/resident/learning-observation.ts +9 -4
  1449. package/src/manager/resident/learning-store.ts +46 -16
  1450. package/src/manager/resident/tool-evidence.ts +38 -31
  1451. package/src/manager/session/turn-recorder.ts +1291 -0
  1452. package/src/plugin/lifecycle.ts +20 -13
  1453. package/src/plugin/shell-hook.ts +64 -25
  1454. package/src/pricing/index.ts +5 -5
  1455. package/src/pricing/rates.source.json +5 -5
  1456. package/src/probe/context.ts +5 -3
  1457. package/src/probe/registry.ts +1 -1
  1458. package/src/prompt/coding-agent-doctrine.ts +1 -1
  1459. package/src/prompt/contributions.ts +28 -6
  1460. package/src/prompt/resident-learning.ts +2 -2
  1461. package/src/provider/collect-chat-completion.ts +3 -3
  1462. package/src/provider/conformance.ts +8 -5
  1463. package/src/provider/errors.ts +2 -2
  1464. package/src/provider/fallback.ts +8 -8
  1465. package/src/provider/idle-timeout.ts +4 -4
  1466. package/src/provider/instrumentation.ts +14 -7
  1467. package/src/provider/mock.ts +1 -1
  1468. package/src/provider/retry.ts +7 -7
  1469. package/src/provider/stream-text.ts +1 -1
  1470. package/src/provider/thinking-support.ts +2 -2
  1471. package/src/provider/token-budget.ts +2 -2
  1472. package/src/public-runtime.ts +213 -141
  1473. package/src/public-tools.ts +14 -7
  1474. package/src/public-types.ts +71 -59
  1475. package/src/rag/embedding.ts +1 -1
  1476. package/src/read-model/index.ts +2 -2
  1477. package/src/read-model/registry.ts +11 -11
  1478. package/src/read-model/session-status.ts +87 -0
  1479. package/src/registry/command/kernel-commands.ts +10 -10
  1480. package/src/registry/tool/dialect.ts +1 -1
  1481. package/src/registry/tool/execute.ts +20 -7
  1482. package/src/registry/tool/portable.ts +1 -1
  1483. package/src/registry/tool/presentation.ts +1 -1
  1484. package/src/registry/tool/schema.ts +1 -1
  1485. package/src/registry/tool/screen.ts +3 -3
  1486. package/src/runtime/bidi/index.ts +2 -2
  1487. package/src/runtime/bidi/session.ts +45 -34
  1488. package/src/runtime/jobs/awaited-jobs.ts +13 -13
  1489. package/src/runtime/jobs/registry.ts +11 -11
  1490. package/src/runtime/query/abandon-turn.ts +110 -0
  1491. package/src/runtime/query/approval-policy.ts +13 -13
  1492. package/src/runtime/query/callback-inference.ts +8 -5
  1493. package/src/runtime/query/cancelled-before-start.ts +96 -79
  1494. package/src/runtime/query/checkpoint.ts +519 -420
  1495. package/src/runtime/query/compact-session.ts +92 -0
  1496. package/src/runtime/query/context.ts +80 -136
  1497. package/src/runtime/query/events.ts +160 -126
  1498. package/src/runtime/query/executor/tool-call-admission.ts +6 -5
  1499. package/src/runtime/query/executor.ts +206 -111
  1500. package/src/runtime/query/file-evidence-seed.ts +2 -2
  1501. package/src/runtime/query/finalize-turn.ts +209 -0
  1502. package/src/runtime/query/fork/list.ts +20 -0
  1503. package/src/runtime/query/fork/mutate.ts +82 -0
  1504. package/src/runtime/query/fork/prepare.ts +92 -0
  1505. package/src/runtime/query/guard.ts +22 -22
  1506. package/src/runtime/query/guardrail-presets.ts +12 -12
  1507. package/src/runtime/query/guardrails.ts +11 -11
  1508. package/src/runtime/query/index.ts +1624 -1533
  1509. package/src/runtime/query/iteration/index.ts +304 -253
  1510. package/src/runtime/query/iteration/outstanding-work.ts +65 -65
  1511. package/src/runtime/query/iteration/phases/advisory.ts +16 -16
  1512. package/src/runtime/query/iteration/phases/checkpoint.ts +26 -10
  1513. package/src/runtime/query/iteration/phases/compaction.ts +74 -72
  1514. package/src/runtime/query/iteration/phases/context.ts +59 -60
  1515. package/src/runtime/query/iteration/phases/plan.ts +9 -6
  1516. package/src/runtime/query/iteration/phases/tool-review.ts +153 -28
  1517. package/src/runtime/query/iteration/phases/working-memory.ts +57 -22
  1518. package/src/runtime/query/iteration/step-context.ts +17 -0
  1519. package/src/runtime/query/iteration/step-shaping.ts +21 -24
  1520. package/src/runtime/query/iteration/stream-turn.ts +36 -32
  1521. package/src/runtime/query/plugin-hooks.ts +1 -1
  1522. package/src/runtime/query/prepare-turn.ts +932 -0
  1523. package/src/runtime/query/project-instructions.ts +5 -4
  1524. package/src/runtime/query/prompt-cache.ts +1 -1
  1525. package/src/runtime/query/prompt.ts +5 -5
  1526. package/src/runtime/query/question-park.ts +7 -7
  1527. package/src/runtime/query/release-turn.ts +157 -0
  1528. package/src/runtime/query/repeat-call.ts +7 -7
  1529. package/src/runtime/query/result.ts +123 -131
  1530. package/src/runtime/query/resume-pending.ts +101 -44
  1531. package/src/runtime/query/resume-session.ts +153 -0
  1532. package/src/runtime/query/review-policy.ts +147 -19
  1533. package/src/runtime/query/sandbox-lifecycle.ts +5 -5
  1534. package/src/runtime/query/session-storage.ts +302 -0
  1535. package/src/runtime/query/steering.ts +17 -4
  1536. package/src/runtime/query/token-budget.ts +59 -93
  1537. package/src/runtime/query/tool-call-budget.ts +14 -14
  1538. package/src/runtime/query/tool-executions.ts +77 -0
  1539. package/src/runtime/query/tool-grants.ts +3 -3
  1540. package/src/runtime/query/tool-output-budget.ts +4 -4
  1541. package/src/runtime/query/tool-pause.ts +8 -6
  1542. package/src/runtime/query/tooling.ts +22 -14
  1543. package/src/runtime/query/turn-state.ts +153 -0
  1544. package/src/sandbox/isolation.ts +2 -2
  1545. package/src/sandbox/provider/local.ts +8 -8
  1546. package/src/scheduler/completion-inbox.ts +36 -36
  1547. package/src/scheduler/delegating.ts +27 -13
  1548. package/src/scheduler/local.ts +49 -21
  1549. package/src/session/events/index.ts +10 -14
  1550. package/src/session/handoff/broadcast.ts +7 -7
  1551. package/src/session/handoff/events.ts +1 -1
  1552. package/src/session/handoff/index.ts +1 -1
  1553. package/src/session/handoff/single.ts +21 -21
  1554. package/src/session/handoff/version.ts +11 -7
  1555. package/src/session/home.ts +66 -0
  1556. package/src/session/index.ts +1 -0
  1557. package/src/session/log-hash.ts +115 -0
  1558. package/src/session/messages.ts +39 -0
  1559. package/src/session/paths.ts +449 -0
  1560. package/src/session/retention/archive.ts +13 -5
  1561. package/src/session/status/derive.ts +21 -21
  1562. package/src/session/workspace/git-worktree.ts +31 -2
  1563. package/src/session/workspace/index.ts +5 -8
  1564. package/src/session/workspace/shared-session.ts +354 -0
  1565. package/src/session-query/index.ts +152 -0
  1566. package/src/skills/registry.ts +1 -1
  1567. package/src/store/activity/memory.ts +5 -5
  1568. package/src/store/attachment/index.ts +5 -5
  1569. package/src/store/budget/disk.ts +243 -0
  1570. package/src/store/budget/index.ts +24 -0
  1571. package/src/store/budget/ledger.ts +836 -0
  1572. package/src/store/budget/memory.ts +39 -0
  1573. package/src/store/checkpoint/contract.ts +225 -0
  1574. package/src/store/checkpoint/disk.ts +209 -0
  1575. package/src/store/checkpoint/index.ts +22 -0
  1576. package/src/store/checkpoint/memory.ts +112 -0
  1577. package/src/store/checkpoint/prune.ts +93 -0
  1578. package/src/store/config/index.ts +1 -1
  1579. package/src/store/evidence/disk.ts +185 -81
  1580. package/src/store/evidence/index-page.ts +67 -140
  1581. package/src/store/evidence/source-text.ts +23 -28
  1582. package/src/store/evidence/types.ts +51 -41
  1583. package/src/store/feedback/conformance.ts +37 -35
  1584. package/src/store/feedback/disk.ts +61 -63
  1585. package/src/store/feedback/index.ts +1 -1
  1586. package/src/store/feedback/memory.ts +0 -0
  1587. package/src/store/feedback/types.ts +14 -13
  1588. package/src/store/index.ts +24 -28
  1589. package/src/store/memory/digest.ts +35 -0
  1590. package/src/store/memory/disk.ts +66 -20
  1591. package/src/store/memory/index-file.ts +121 -0
  1592. package/src/store/memory/index.ts +4 -2
  1593. package/src/store/memory/links.ts +37 -0
  1594. package/src/store/memory/markdown-format.ts +276 -0
  1595. package/src/store/memory/markdown.ts +741 -0
  1596. package/src/store/memory/memory.ts +39 -17
  1597. package/src/store/memory/naming.ts +195 -0
  1598. package/src/store/memory/origin.ts +35 -0
  1599. package/src/store/session/disk.ts +27 -200
  1600. package/src/store/session/index.ts +5 -9
  1601. package/src/store/session/memory.ts +1 -78
  1602. package/src/store/session-claim.ts +101 -0
  1603. package/src/store/session-index/fts.ts +215 -0
  1604. package/src/store/session-index/index.ts +253 -0
  1605. package/src/store/session-index/rebuild.ts +869 -0
  1606. package/src/store/session-index/refs.ts +164 -0
  1607. package/src/store/session-index/scan.ts +273 -0
  1608. package/src/store/session-index/sqlite.ts +772 -0
  1609. package/src/store/session-log/chain.ts +314 -0
  1610. package/src/store/session-log/conformance.ts +487 -0
  1611. package/src/store/session-log/core.ts +809 -0
  1612. package/src/store/session-log/disk.ts +217 -0
  1613. package/src/store/session-log/fold.ts +368 -0
  1614. package/src/store/session-log/heal.ts +44 -0
  1615. package/src/store/session-log/held-leases.ts +103 -0
  1616. package/src/store/session-log/index.ts +87 -0
  1617. package/src/store/session-log/lease.ts +354 -0
  1618. package/src/store/session-log/memory.ts +111 -0
  1619. package/src/store/session-log/spill.ts +311 -0
  1620. package/src/store/task/context.ts +33 -0
  1621. package/src/store/task/disk.ts +122 -141
  1622. package/src/store/task/memory.ts +14 -8
  1623. package/src/store/topic/index.ts +2 -2
  1624. package/src/store/topic/objective.ts +12 -3
  1625. package/src/store/topic/state.ts +1 -1
  1626. package/src/streaming/coalesce.ts +8 -7
  1627. package/src/telemetry/attributes.ts +10 -9
  1628. package/src/telemetry/metrics.ts +6 -6
  1629. package/src/telemetry/runtime-accessors.ts +1 -1
  1630. package/src/test-support/ids.ts +5 -6
  1631. package/src/testing.ts +11 -16
  1632. package/src/tools/advisory/index.ts +1 -1
  1633. package/src/tools/builtins/bash.ts +43 -5
  1634. package/src/tools/builtins/content-fingerprint.ts +2 -2
  1635. package/src/tools/builtins/edit-apply.ts +1 -1
  1636. package/src/tools/builtins/edit.ts +3 -0
  1637. package/src/tools/builtins/glob.ts +3 -0
  1638. package/src/tools/builtins/grep.ts +3 -0
  1639. package/src/tools/builtins/job.ts +5 -5
  1640. package/src/tools/builtins/ls.ts +3 -0
  1641. package/src/tools/builtins/lsp.ts +5 -2
  1642. package/src/tools/builtins/read-file.ts +3 -0
  1643. package/src/tools/builtins/run-code.ts +11 -11
  1644. package/src/tools/builtins/skill.ts +3 -3
  1645. package/src/tools/builtins/wait-for-job-bounds.ts +6 -6
  1646. package/src/tools/builtins/wait-for-job.ts +3 -3
  1647. package/src/tools/builtins/web-guidance.ts +2 -2
  1648. package/src/tools/builtins/web.ts +3 -3
  1649. package/src/tools/builtins/write-file.ts +3 -0
  1650. package/src/tools/coordinator/agent.ts +8 -8
  1651. package/src/tools/coordinator/ask-user-question.ts +16 -14
  1652. package/src/tools/coordinator/index.ts +64 -54
  1653. package/src/tools/coordinator/outcome.ts +7 -7
  1654. package/src/tools/coordinator/plan-dependencies.ts +1 -1
  1655. package/src/tools/coordinator/wait-with-idle-bound.ts +6 -6
  1656. package/src/tools/defineTool.ts +9 -1
  1657. package/src/tools/env-scrub.ts +1 -1
  1658. package/src/tools/goal/index.ts +16 -12
  1659. package/src/tools/memory/fields.ts +26 -0
  1660. package/src/tools/memory/read.ts +75 -8
  1661. package/src/tools/memory/resolve.ts +37 -0
  1662. package/src/tools/memory/save.ts +54 -18
  1663. package/src/tools/memory/search.ts +9 -5
  1664. package/src/tools/memory/update.ts +43 -7
  1665. package/src/tools/paths.ts +87 -27
  1666. package/src/tools/posix-path.ts +1 -1
  1667. package/src/tools/resident-history.ts +1 -1
  1668. package/src/tools/resident-tool-evidence.ts +1 -1
  1669. package/src/tools/task/create.ts +11 -4
  1670. package/src/tools/task/index.ts +20 -4
  1671. package/src/tools/task/list.ts +16 -7
  1672. package/src/tools/task/present.ts +102 -0
  1673. package/src/tools/task/update.ts +9 -1
  1674. package/src/turn/LimitChecker.ts +99 -0
  1675. package/src/turn/command-gate.ts +294 -0
  1676. package/src/turn/drain.ts +324 -0
  1677. package/src/turn/evidence-query.ts +333 -0
  1678. package/src/turn/evidence-recall.ts +860 -0
  1679. package/src/turn/index.ts +38 -0
  1680. package/src/turn/json-claim-verifier.ts +298 -0
  1681. package/src/turn/memory-promoter.ts +160 -0
  1682. package/src/turn/memory-recall.ts +285 -0
  1683. package/src/turn/reporter.ts +469 -0
  1684. package/src/types/activity/index.ts +2 -2
  1685. package/src/types/advisory/config.ts +7 -7
  1686. package/src/types/agent/base.ts +74 -44
  1687. package/src/types/agent/core.ts +10 -10
  1688. package/src/types/agent/delegate.ts +2 -2
  1689. package/src/types/agent/factory.ts +8 -4
  1690. package/src/types/agent/manager.ts +6 -6
  1691. package/src/types/agent/pipeline.ts +5 -4
  1692. package/src/types/agent/reactive.ts +11 -10
  1693. package/src/types/agent/router.ts +1 -1
  1694. package/src/types/agent/scheduler.ts +28 -11
  1695. package/src/types/agent/supervisor.ts +13 -13
  1696. package/src/types/agent/task.ts +53 -12
  1697. package/src/types/agent/working-memory.ts +6 -4
  1698. package/src/types/bidi/index.ts +31 -12
  1699. package/src/types/bus/index.ts +32 -26
  1700. package/src/types/code-navigation/index.ts +1 -1
  1701. package/src/types/common/index.ts +12 -26
  1702. package/src/types/connector/core.ts +2 -2
  1703. package/src/types/connector/definition.ts +1 -1
  1704. package/src/types/connector/mcp.ts +1 -1
  1705. package/src/types/errors/catalog.ts +4 -4
  1706. package/src/types/errors/index.ts +5 -5
  1707. package/src/types/guardrail/index.ts +12 -10
  1708. package/src/types/hitl/index.ts +81 -125
  1709. package/src/types/hitl/policy.ts +8 -6
  1710. package/src/types/ids/brand.ts +10 -2
  1711. package/src/types/ids/index.ts +10 -4
  1712. package/src/types/memory/index.ts +53 -0
  1713. package/src/types/message/index.ts +4 -4
  1714. package/src/types/plan/index.ts +5 -3
  1715. package/src/types/plugin/index.ts +41 -24
  1716. package/src/types/probe/event-kind.ts +3 -3
  1717. package/src/types/probe/registry.ts +3 -2
  1718. package/src/types/project/entity.ts +3 -3
  1719. package/src/types/provider/config.ts +3 -3
  1720. package/src/types/provider/error.ts +1 -1
  1721. package/src/types/provider/errors.ts +3 -3
  1722. package/src/types/provider/interface.ts +5 -5
  1723. package/src/types/router/task-router.ts +1 -1
  1724. package/src/types/sandbox/index.ts +12 -12
  1725. package/src/types/session/answer-review.ts +85 -0
  1726. package/src/types/session/audit.ts +167 -0
  1727. package/src/types/session/cancel-cause.ts +60 -0
  1728. package/src/types/session/checkpoint.ts +167 -0
  1729. package/src/types/session/config.ts +212 -0
  1730. package/src/types/session/derive-status.ts +61 -0
  1731. package/src/types/session/durable.ts +150 -0
  1732. package/src/types/session/entity.ts +1 -1
  1733. package/src/types/session/events.ts +1195 -0
  1734. package/src/types/session/fork.ts +52 -0
  1735. package/src/types/session/ids.ts +1 -1
  1736. package/src/types/session/index.ts +24 -4
  1737. package/src/types/session/lineage.ts +15 -0
  1738. package/src/types/session/log-cursor.ts +69 -0
  1739. package/src/types/session/memory-promotion.ts +116 -0
  1740. package/src/types/session/messages.ts +1 -1
  1741. package/src/types/session/prepare-step.ts +299 -0
  1742. package/src/types/session/records.ts +931 -0
  1743. package/src/types/session/step.ts +214 -0
  1744. package/src/types/session/stop-reason.ts +83 -0
  1745. package/src/types/session/store.ts +5 -52
  1746. package/src/types/session/tool-execution.ts +32 -0
  1747. package/src/types/session/turn-state.ts +136 -0
  1748. package/src/types/session/turn.ts +289 -0
  1749. package/src/types/structured-output/index.ts +4 -4
  1750. package/src/types/summary/deliverable.ts +4 -4
  1751. package/src/types/task/index.ts +8 -4
  1752. package/src/types/tool/index.ts +74 -27
  1753. package/src/types/topic/entity.ts +6 -6
  1754. package/src/types/topic/objective.ts +7 -5
  1755. package/src/types/topic/state.ts +4 -4
  1756. package/src/types/topic/store.ts +1 -1
  1757. package/src/types/workspace/index.ts +8 -8
  1758. package/src/types/workspace/ref.ts +3 -3
  1759. package/src/types/workspace/shared-session.ts +65 -0
  1760. package/src/utils/abort.ts +4 -4
  1761. package/src/utils/atomic-write.ts +67 -4
  1762. package/src/utils/cost.ts +11 -12
  1763. package/src/utils/env.ts +1 -1
  1764. package/src/utils/id.ts +25 -18
  1765. package/src/utils/log/attributes.ts +2 -2
  1766. package/src/utils/log/create-logger.ts +1 -1
  1767. package/src/utils/log/redact.ts +1 -1
  1768. package/src/utils/log/sinks.ts +2 -2
  1769. package/src/utils/log/types.ts +1 -1
  1770. package/src/utils/shell-compress.ts +2 -2
  1771. package/src/utils/uuidv7.ts +107 -0
  1772. package/src/vault/instrumentation.ts +21 -8
  1773. package/dist/constants/emergency.d.ts +0 -4
  1774. package/dist/constants/emergency.d.ts.map +0 -1
  1775. package/dist/constants/emergency.js +0 -4
  1776. package/dist/constants/emergency.js.map +0 -1
  1777. package/dist/contracts/run-status.d.ts +0 -17
  1778. package/dist/contracts/run-status.d.ts.map +0 -1
  1779. package/dist/contracts/run-status.js +0 -41
  1780. package/dist/contracts/run-status.js.map +0 -1
  1781. package/dist/eval/from-run.d.ts +0 -30
  1782. package/dist/eval/from-run.d.ts.map +0 -1
  1783. package/dist/eval/from-run.js +0 -46
  1784. package/dist/eval/from-run.js.map +0 -1
  1785. package/dist/manager/run/emergency.d.ts +0 -19
  1786. package/dist/manager/run/emergency.d.ts.map +0 -1
  1787. package/dist/manager/run/emergency.js +0 -122
  1788. package/dist/manager/run/emergency.js.map +0 -1
  1789. package/dist/manager/run/persistence.d.ts +0 -312
  1790. package/dist/manager/run/persistence.d.ts.map +0 -1
  1791. package/dist/manager/run/persistence.js +0 -656
  1792. package/dist/manager/run/persistence.js.map +0 -1
  1793. package/dist/read-model/run-status.d.ts +0 -43
  1794. package/dist/read-model/run-status.d.ts.map +0 -1
  1795. package/dist/read-model/run-status.js +0 -89
  1796. package/dist/read-model/run-status.js.map +0 -1
  1797. package/dist/run/LimitChecker.d.ts +0 -30
  1798. package/dist/run/LimitChecker.d.ts.map +0 -1
  1799. package/dist/run/LimitChecker.js +0 -57
  1800. package/dist/run/LimitChecker.js.map +0 -1
  1801. package/dist/run/command-gate.d.ts +0 -107
  1802. package/dist/run/command-gate.d.ts.map +0 -1
  1803. package/dist/run/command-gate.js +0 -221
  1804. package/dist/run/command-gate.js.map +0 -1
  1805. package/dist/run/drain.d.ts +0 -204
  1806. package/dist/run/drain.d.ts.map +0 -1
  1807. package/dist/run/drain.js +0 -238
  1808. package/dist/run/drain.js.map +0 -1
  1809. package/dist/run/evidence-query.d.ts +0 -41
  1810. package/dist/run/evidence-query.d.ts.map +0 -1
  1811. package/dist/run/evidence-query.js +0 -270
  1812. package/dist/run/evidence-query.js.map +0 -1
  1813. package/dist/run/evidence-recall.d.ts +0 -99
  1814. package/dist/run/evidence-recall.d.ts.map +0 -1
  1815. package/dist/run/evidence-recall.js +0 -633
  1816. package/dist/run/evidence-recall.js.map +0 -1
  1817. package/dist/run/index.d.ts +0 -19
  1818. package/dist/run/index.d.ts.map +0 -1
  1819. package/dist/run/index.js +0 -11
  1820. package/dist/run/index.js.map +0 -1
  1821. package/dist/run/json-claim-verifier.d.ts +0 -83
  1822. package/dist/run/json-claim-verifier.d.ts.map +0 -1
  1823. package/dist/run/json-claim-verifier.js +0 -200
  1824. package/dist/run/json-claim-verifier.js.map +0 -1
  1825. package/dist/run/memory-promoter.d.ts +0 -38
  1826. package/dist/run/memory-promoter.d.ts.map +0 -1
  1827. package/dist/run/memory-promoter.js +0 -109
  1828. package/dist/run/memory-promoter.js.map +0 -1
  1829. package/dist/run/memory-recall.d.ts +0 -25
  1830. package/dist/run/memory-recall.d.ts.map +0 -1
  1831. package/dist/run/memory-recall.js +0 -228
  1832. package/dist/run/memory-recall.js.map +0 -1
  1833. package/dist/run/preparation-context-error.d.ts.map +0 -1
  1834. package/dist/run/preparation-context-error.js.map +0 -1
  1835. package/dist/run/reporter.d.ts +0 -8
  1836. package/dist/run/reporter.d.ts.map +0 -1
  1837. package/dist/run/reporter.js +0 -420
  1838. package/dist/run/reporter.js.map +0 -1
  1839. package/dist/run/token-budget.d.ts +0 -116
  1840. package/dist/run/token-budget.d.ts.map +0 -1
  1841. package/dist/run/token-budget.js +0 -626
  1842. package/dist/run/token-budget.js.map +0 -1
  1843. package/dist/run/workspace-fingerprint.d.ts.map +0 -1
  1844. package/dist/run/workspace-fingerprint.js.map +0 -1
  1845. package/dist/run-query/index.d.ts +0 -90
  1846. package/dist/run-query/index.d.ts.map +0 -1
  1847. package/dist/run-query/index.js +0 -127
  1848. package/dist/run-query/index.js.map +0 -1
  1849. package/dist/runtime/query/finalize-run.d.ts +0 -55
  1850. package/dist/runtime/query/finalize-run.d.ts.map +0 -1
  1851. package/dist/runtime/query/finalize-run.js +0 -113
  1852. package/dist/runtime/query/finalize-run.js.map +0 -1
  1853. package/dist/runtime/query/prepare-run.d.ts +0 -94
  1854. package/dist/runtime/query/prepare-run.d.ts.map +0 -1
  1855. package/dist/runtime/query/prepare-run.js +0 -589
  1856. package/dist/runtime/query/prepare-run.js.map +0 -1
  1857. package/dist/runtime/query/release-run.d.ts +0 -56
  1858. package/dist/runtime/query/release-run.d.ts.map +0 -1
  1859. package/dist/runtime/query/release-run.js +0 -101
  1860. package/dist/runtime/query/release-run.js.map +0 -1
  1861. package/dist/runtime/query/replay/list.d.ts +0 -40
  1862. package/dist/runtime/query/replay/list.d.ts.map +0 -1
  1863. package/dist/runtime/query/replay/list.js +0 -38
  1864. package/dist/runtime/query/replay/list.js.map +0 -1
  1865. package/dist/runtime/query/replay/mutate.d.ts +0 -17
  1866. package/dist/runtime/query/replay/mutate.d.ts.map +0 -1
  1867. package/dist/runtime/query/replay/mutate.js +0 -69
  1868. package/dist/runtime/query/replay/mutate.js.map +0 -1
  1869. package/dist/runtime/query/replay/prepare.d.ts +0 -66
  1870. package/dist/runtime/query/replay/prepare.d.ts.map +0 -1
  1871. package/dist/runtime/query/replay/prepare.js +0 -81
  1872. package/dist/runtime/query/replay/prepare.js.map +0 -1
  1873. package/dist/runtime/query/resume-run.d.ts +0 -103
  1874. package/dist/runtime/query/resume-run.d.ts.map +0 -1
  1875. package/dist/runtime/query/resume-run.js +0 -105
  1876. package/dist/runtime/query/resume-run.js.map +0 -1
  1877. package/dist/runtime/query/run-state.d.ts +0 -57
  1878. package/dist/runtime/query/run-state.d.ts.map +0 -1
  1879. package/dist/runtime/query/run-state.js +0 -96
  1880. package/dist/runtime/query/run-state.js.map +0 -1
  1881. package/dist/session/workspace/path-builder.d.ts +0 -50
  1882. package/dist/session/workspace/path-builder.d.ts.map +0 -1
  1883. package/dist/session/workspace/path-builder.js +0 -51
  1884. package/dist/session/workspace/path-builder.js.map +0 -1
  1885. package/dist/session/workspace/shared-run.d.ts +0 -112
  1886. package/dist/session/workspace/shared-run.d.ts.map +0 -1
  1887. package/dist/session/workspace/shared-run.js +0 -290
  1888. package/dist/session/workspace/shared-run.js.map +0 -1
  1889. package/dist/store/evidence/compaction-archive.d.ts +0 -109
  1890. package/dist/store/evidence/compaction-archive.d.ts.map +0 -1
  1891. package/dist/store/evidence/compaction-archive.js +0 -125
  1892. package/dist/store/evidence/compaction-archive.js.map +0 -1
  1893. package/dist/store/evidence/linked.d.ts +0 -9
  1894. package/dist/store/evidence/linked.d.ts.map +0 -1
  1895. package/dist/store/evidence/linked.js +0 -314
  1896. package/dist/store/evidence/linked.js.map +0 -1
  1897. package/dist/store/evidence/record-chain.d.ts +0 -42
  1898. package/dist/store/evidence/record-chain.d.ts.map +0 -1
  1899. package/dist/store/evidence/record-chain.js +0 -111
  1900. package/dist/store/evidence/record-chain.js.map +0 -1
  1901. package/dist/store/run/checkpoint-disk.d.ts +0 -98
  1902. package/dist/store/run/checkpoint-disk.d.ts.map +0 -1
  1903. package/dist/store/run/checkpoint-disk.js +0 -190
  1904. package/dist/store/run/checkpoint-disk.js.map +0 -1
  1905. package/dist/store/run/checkpoint-memory.d.ts +0 -51
  1906. package/dist/store/run/checkpoint-memory.d.ts.map +0 -1
  1907. package/dist/store/run/checkpoint-memory.js +0 -178
  1908. package/dist/store/run/checkpoint-memory.js.map +0 -1
  1909. package/dist/store/run/claim-disk.d.ts +0 -130
  1910. package/dist/store/run/claim-disk.d.ts.map +0 -1
  1911. package/dist/store/run/claim-disk.js +0 -570
  1912. package/dist/store/run/claim-disk.js.map +0 -1
  1913. package/dist/store/run/conformance.d.ts +0 -159
  1914. package/dist/store/run/conformance.d.ts.map +0 -1
  1915. package/dist/store/run/conformance.js +0 -466
  1916. package/dist/store/run/conformance.js.map +0 -1
  1917. package/dist/store/run/disk.d.ts +0 -189
  1918. package/dist/store/run/disk.d.ts.map +0 -1
  1919. package/dist/store/run/disk.js +0 -804
  1920. package/dist/store/run/disk.js.map +0 -1
  1921. package/dist/store/run/listing.d.ts +0 -118
  1922. package/dist/store/run/listing.d.ts.map +0 -1
  1923. package/dist/store/run/listing.js +0 -333
  1924. package/dist/store/run/listing.js.map +0 -1
  1925. package/dist/store/run/memory.d.ts +0 -55
  1926. package/dist/store/run/memory.d.ts.map +0 -1
  1927. package/dist/store/run/memory.js +0 -176
  1928. package/dist/store/run/memory.js.map +0 -1
  1929. package/dist/store/run/token-budget-disk.d.ts +0 -37
  1930. package/dist/store/run/token-budget-disk.d.ts.map +0 -1
  1931. package/dist/store/run/token-budget-disk.js +0 -211
  1932. package/dist/store/run/token-budget-disk.js.map +0 -1
  1933. package/dist/store/run/tool-executions.d.ts +0 -13
  1934. package/dist/store/run/tool-executions.d.ts.map +0 -1
  1935. package/dist/store/run/tool-executions.js +0 -99
  1936. package/dist/store/run/tool-executions.js.map +0 -1
  1937. package/dist/store/session/sqlite.d.ts +0 -57
  1938. package/dist/store/session/sqlite.d.ts.map +0 -1
  1939. package/dist/store/session/sqlite.js +0 -430
  1940. package/dist/store/session/sqlite.js.map +0 -1
  1941. package/dist/types/run/answer-review.d.ts +0 -79
  1942. package/dist/types/run/answer-review.d.ts.map +0 -1
  1943. package/dist/types/run/answer-review.js.map +0 -1
  1944. package/dist/types/run/audit.d.ts +0 -150
  1945. package/dist/types/run/audit.d.ts.map +0 -1
  1946. package/dist/types/run/audit.js +0 -39
  1947. package/dist/types/run/audit.js.map +0 -1
  1948. package/dist/types/run/cancel-cause.d.ts +0 -49
  1949. package/dist/types/run/cancel-cause.d.ts.map +0 -1
  1950. package/dist/types/run/cancel-cause.js +0 -39
  1951. package/dist/types/run/cancel-cause.js.map +0 -1
  1952. package/dist/types/run/checkpoint-store.d.ts +0 -511
  1953. package/dist/types/run/checkpoint-store.d.ts.map +0 -1
  1954. package/dist/types/run/checkpoint-store.js +0 -12
  1955. package/dist/types/run/checkpoint-store.js.map +0 -1
  1956. package/dist/types/run/config.d.ts +0 -207
  1957. package/dist/types/run/config.d.ts.map +0 -1
  1958. package/dist/types/run/config.js.map +0 -1
  1959. package/dist/types/run/derive-status.d.ts +0 -29
  1960. package/dist/types/run/derive-status.d.ts.map +0 -1
  1961. package/dist/types/run/derive-status.js +0 -49
  1962. package/dist/types/run/derive-status.js.map +0 -1
  1963. package/dist/types/run/emergency.d.ts +0 -32
  1964. package/dist/types/run/emergency.d.ts.map +0 -1
  1965. package/dist/types/run/emergency.js +0 -6
  1966. package/dist/types/run/emergency.js.map +0 -1
  1967. package/dist/types/run/entity.d.ts +0 -151
  1968. package/dist/types/run/entity.d.ts.map +0 -1
  1969. package/dist/types/run/entity.js +0 -2
  1970. package/dist/types/run/entity.js.map +0 -1
  1971. package/dist/types/run/event-cursor.d.ts +0 -90
  1972. package/dist/types/run/event-cursor.d.ts.map +0 -1
  1973. package/dist/types/run/event-cursor.js +0 -47
  1974. package/dist/types/run/event-cursor.js.map +0 -1
  1975. package/dist/types/run/events.d.ts +0 -1064
  1976. package/dist/types/run/events.d.ts.map +0 -1
  1977. package/dist/types/run/events.js +0 -31
  1978. package/dist/types/run/events.js.map +0 -1
  1979. package/dist/types/run/index.d.ts +0 -24
  1980. package/dist/types/run/index.d.ts.map +0 -1
  1981. package/dist/types/run/index.js +0 -23
  1982. package/dist/types/run/index.js.map +0 -1
  1983. package/dist/types/run/lineage.d.ts +0 -15
  1984. package/dist/types/run/lineage.d.ts.map +0 -1
  1985. package/dist/types/run/lineage.js.map +0 -1
  1986. package/dist/types/run/memory-promotion.d.ts +0 -90
  1987. package/dist/types/run/memory-promotion.d.ts.map +0 -1
  1988. package/dist/types/run/memory-promotion.js +0 -38
  1989. package/dist/types/run/memory-promotion.js.map +0 -1
  1990. package/dist/types/run/metadata.d.ts +0 -47
  1991. package/dist/types/run/metadata.d.ts.map +0 -1
  1992. package/dist/types/run/metadata.js +0 -2
  1993. package/dist/types/run/metadata.js.map +0 -1
  1994. package/dist/types/run/prepare-step.d.ts +0 -271
  1995. package/dist/types/run/prepare-step.d.ts.map +0 -1
  1996. package/dist/types/run/prepare-step.js.map +0 -1
  1997. package/dist/types/run/replay.d.ts +0 -53
  1998. package/dist/types/run/replay.d.ts.map +0 -1
  1999. package/dist/types/run/replay.js +0 -15
  2000. package/dist/types/run/replay.js.map +0 -1
  2001. package/dist/types/run/schema-version.d.ts +0 -19
  2002. package/dist/types/run/schema-version.d.ts.map +0 -1
  2003. package/dist/types/run/schema-version.js +0 -18
  2004. package/dist/types/run/schema-version.js.map +0 -1
  2005. package/dist/types/run/state.d.ts +0 -109
  2006. package/dist/types/run/state.d.ts.map +0 -1
  2007. package/dist/types/run/state.js +0 -109
  2008. package/dist/types/run/state.js.map +0 -1
  2009. package/dist/types/run/status.d.ts +0 -26
  2010. package/dist/types/run/status.d.ts.map +0 -1
  2011. package/dist/types/run/status.js +0 -2
  2012. package/dist/types/run/status.js.map +0 -1
  2013. package/dist/types/run/step.d.ts +0 -198
  2014. package/dist/types/run/step.d.ts.map +0 -1
  2015. package/dist/types/run/step.js +0 -26
  2016. package/dist/types/run/step.js.map +0 -1
  2017. package/dist/types/run/stop-reason.d.ts +0 -67
  2018. package/dist/types/run/stop-reason.d.ts.map +0 -1
  2019. package/dist/types/run/stop-reason.js.map +0 -1
  2020. package/dist/types/run/store.d.ts +0 -300
  2021. package/dist/types/run/store.d.ts.map +0 -1
  2022. package/dist/types/run/store.js +0 -2
  2023. package/dist/types/run/store.js.map +0 -1
  2024. package/dist/types/run/subsession-events.d.ts +0 -64
  2025. package/dist/types/run/subsession-events.d.ts.map +0 -1
  2026. package/dist/types/run/subsession-events.js +0 -2
  2027. package/dist/types/run/subsession-events.js.map +0 -1
  2028. package/dist/types/run/token-budget-store.d.ts +0 -29
  2029. package/dist/types/run/token-budget-store.d.ts.map +0 -1
  2030. package/dist/types/run/token-budget-store.js +0 -25
  2031. package/dist/types/run/token-budget-store.js.map +0 -1
  2032. package/dist/types/workspace/shared-run.d.ts +0 -61
  2033. package/dist/types/workspace/shared-run.d.ts.map +0 -1
  2034. package/dist/types/workspace/shared-run.js +0 -2
  2035. package/dist/types/workspace/shared-run.js.map +0 -1
  2036. package/src/constants/emergency.ts +0 -3
  2037. package/src/contracts/run-status.ts +0 -43
  2038. package/src/eval/from-run.ts +0 -48
  2039. package/src/manager/run/emergency.ts +0 -148
  2040. package/src/manager/run/persistence.ts +0 -746
  2041. package/src/read-model/run-status.ts +0 -127
  2042. package/src/run/LimitChecker.ts +0 -99
  2043. package/src/run/command-gate.ts +0 -294
  2044. package/src/run/drain.ts +0 -403
  2045. package/src/run/evidence-query.ts +0 -333
  2046. package/src/run/evidence-recall.ts +0 -854
  2047. package/src/run/index.ts +0 -42
  2048. package/src/run/json-claim-verifier.ts +0 -298
  2049. package/src/run/memory-promoter.ts +0 -147
  2050. package/src/run/memory-recall.ts +0 -254
  2051. package/src/run/reporter.ts +0 -469
  2052. package/src/run/token-budget.ts +0 -733
  2053. package/src/run-query/index.ts +0 -177
  2054. package/src/runtime/query/finalize-run.ts +0 -192
  2055. package/src/runtime/query/prepare-run.ts +0 -718
  2056. package/src/runtime/query/release-run.ts +0 -168
  2057. package/src/runtime/query/replay/list.ts +0 -66
  2058. package/src/runtime/query/replay/mutate.ts +0 -82
  2059. package/src/runtime/query/replay/prepare.ts +0 -147
  2060. package/src/runtime/query/resume-run.ts +0 -202
  2061. package/src/runtime/query/run-state.ts +0 -138
  2062. package/src/session/workspace/path-builder.ts +0 -72
  2063. package/src/session/workspace/shared-run.ts +0 -354
  2064. package/src/store/evidence/compaction-archive.ts +0 -139
  2065. package/src/store/evidence/linked.ts +0 -365
  2066. package/src/store/evidence/record-chain.ts +0 -108
  2067. package/src/store/run/checkpoint-disk.ts +0 -264
  2068. package/src/store/run/checkpoint-memory.ts +0 -216
  2069. package/src/store/run/claim-disk.ts +0 -638
  2070. package/src/store/run/conformance.ts +0 -728
  2071. package/src/store/run/disk.ts +0 -911
  2072. package/src/store/run/listing.ts +0 -422
  2073. package/src/store/run/memory.ts +0 -204
  2074. package/src/store/run/token-budget-disk.ts +0 -250
  2075. package/src/store/run/tool-executions.ts +0 -112
  2076. package/src/store/session/sqlite.ts +0 -584
  2077. package/src/types/run/answer-review.ts +0 -84
  2078. package/src/types/run/audit.ts +0 -164
  2079. package/src/types/run/cancel-cause.ts +0 -60
  2080. package/src/types/run/checkpoint-store.ts +0 -545
  2081. package/src/types/run/config.ts +0 -221
  2082. package/src/types/run/derive-status.ts +0 -62
  2083. package/src/types/run/emergency.ts +0 -28
  2084. package/src/types/run/entity.ts +0 -161
  2085. package/src/types/run/event-cursor.ts +0 -118
  2086. package/src/types/run/events.ts +0 -1146
  2087. package/src/types/run/index.ts +0 -32
  2088. package/src/types/run/lineage.ts +0 -15
  2089. package/src/types/run/memory-promotion.ts +0 -112
  2090. package/src/types/run/metadata.ts +0 -51
  2091. package/src/types/run/prepare-step.ts +0 -292
  2092. package/src/types/run/replay.ts +0 -61
  2093. package/src/types/run/schema-version.ts +0 -19
  2094. package/src/types/run/state.ts +0 -206
  2095. package/src/types/run/status.ts +0 -33
  2096. package/src/types/run/step.ts +0 -217
  2097. package/src/types/run/stop-reason.ts +0 -83
  2098. package/src/types/run/store.ts +0 -325
  2099. package/src/types/run/subsession-events.ts +0 -71
  2100. package/src/types/run/token-budget-store.ts +0 -54
  2101. package/src/types/workspace/shared-run.ts +0 -65
  2102. /package/dist/{run → turn}/preparation-context-error.d.ts +0 -0
  2103. /package/dist/{run → turn}/preparation-context-error.js +0 -0
  2104. /package/dist/{run → turn}/workspace-fingerprint.d.ts +0 -0
  2105. /package/dist/{run → turn}/workspace-fingerprint.js +0 -0
  2106. /package/dist/types/{run → session}/answer-review.js +0 -0
  2107. /package/dist/types/{run → session}/config.js +0 -0
  2108. /package/dist/types/{run → session}/lineage.js +0 -0
  2109. /package/dist/types/{run → session}/prepare-step.js +0 -0
  2110. /package/dist/types/{run → session}/stop-reason.js +0 -0
  2111. /package/src/{run → turn}/preparation-context-error.ts +0 -0
  2112. /package/src/{run → turn}/workspace-fingerprint.ts +0 -0
@@ -1,5 +1,7 @@
1
1
  import type { WorkingStateSnapshot } from '../../compaction/wire.js'
2
- import type { RunPersistence } from '../../manager/run/persistence.js'
2
+ import { type TurnRecorder, readFoldedHistory } from '../../manager/session/turn-recorder.js'
3
+ import type { CheckpointScope, SessionCheckpointStore } from '../../store/checkpoint/index.js'
4
+ import type { SessionLog } from '../../store/session-log/index.js'
3
5
  import type { SerializedSpanContext } from '../../telemetry/attributes.js'
4
6
  import { NamzuError } from '../../types/errors/index.js'
5
7
  import type {
@@ -7,25 +9,20 @@ import type {
7
9
  CheckpointSummary,
8
10
  HITLDecisionRequest,
9
11
  HITLResumeDecision,
10
- IterationCheckpoint,
11
12
  PendingDecision,
12
13
  } from '../../types/hitl/index.js'
13
- import type { AssistantMessage, UserMessage } from '../../types/message/index.js'
14
- import type {
15
- CheckpointRunScope,
16
- CheckpointStore,
17
- FencingToken,
18
- } from '../../types/run/checkpoint-store.js'
19
- import type { EmergencySaveData } from '../../types/run/emergency.js'
20
- import type { CheckpointListEntry } from '../../types/run/replay.js'
21
- import { ZERO_COST } from '../../utils/cost.js'
22
- import { buildToolResultHashes } from '../../utils/hash.js'
14
+ import type { MessageId, TurnId } from '../../types/ids/index.js'
23
15
  import {
24
- asCheckpointId,
25
- asEmergencySaveId,
26
- asGoalId,
27
- generateCheckpointId,
28
- } from '../../utils/id.js'
16
+ type AssistantMessage,
17
+ type Message,
18
+ type UserMessage,
19
+ createRuntimeContextMessage,
20
+ } from '../../types/message/index.js'
21
+ import { CHECKPOINT_DOCUMENT_VERSION, type Checkpoint } from '../../types/session/checkpoint.js'
22
+ import type { CheckpointListEntry } from '../../types/session/fork.js'
23
+ import type { SessionRecord } from '../../types/session/records.js'
24
+ import { asGoalId, generateCheckpointId } from '../../utils/id.js'
25
+ import { formatSteeringNote, readSteeringNote } from './steering.js'
29
26
 
30
27
  /** Keep intent text/provenance without copying attachment payloads into a second slot. */
31
28
  function snapshotUserIntent(value: unknown): UserMessage {
@@ -68,108 +65,145 @@ function snapshotUserIntent(value: unknown): UserMessage {
68
65
  return result
69
66
  }
70
67
 
68
+ /** A checkpoint the turn just wrote: its id and the document. */
69
+ export interface CreatedCheckpoint {
70
+ readonly id: CheckpointId
71
+ readonly document: Checkpoint
72
+ }
73
+
74
+ /** What a checkpoint document records about the turn at the instant it describes. */
75
+ type CheckpointState = Pick<
76
+ Checkpoint,
77
+ | 'throughSeq'
78
+ | 'throughSha256'
79
+ | 'tokenUsage'
80
+ | 'costInfo'
81
+ | 'guards'
82
+ | 'review'
83
+ | 'latestUserMessageId'
84
+ | 'workingState'
85
+ >
86
+
71
87
  /**
72
- * Projection from a full checkpoint payload to the public listing entry.
73
- * Exported for the replay `listCheckpoints` entry point, which projects
74
- * store results without constructing a `CheckpointManager`.
88
+ * A checkpoint read back for a resume: the document, the context it
89
+ * restores (the fold of the session log through `throughSeq`), and the
90
+ * decision it is parked on, if any.
75
91
  */
76
- export function toCheckpointListEntry(cp: IterationCheckpoint): CheckpointListEntry {
92
+ export interface RestoredCheckpoint {
93
+ readonly id: CheckpointId
94
+ readonly document: Checkpoint
95
+ readonly messages: Message[]
96
+ /** Ids of the restored messages that have records, by message. */
97
+ readonly messageIds: ReadonlyMap<Message, MessageId>
98
+ readonly pending?: PendingDecision
99
+ readonly latestUserMessage?: UserMessage
100
+ }
101
+
102
+ /** A decision one of a turn's checkpoints was parked on, as the log records it. */
103
+ export interface RecordedPark {
104
+ readonly decisionId: string
105
+ readonly turnId: TurnId
106
+ readonly checkpointId: CheckpointId
107
+ readonly pending: PendingDecision
108
+ }
109
+
110
+ /** Projection from a checkpoint document to the public listing entry. */
111
+ export function toCheckpointListEntry(cp: Checkpoint): CheckpointListEntry {
77
112
  return {
78
- id: cp.id,
79
- runId: cp.runId,
113
+ id: cp.checkpointId,
114
+ sessionId: cp.sessionId,
115
+ turnId: cp.turnId,
80
116
  iteration: cp.iteration,
81
- createdAt: cp.createdAt,
82
- messageCount: cp.messages.length,
117
+ createdAt: Date.parse(cp.createdAt),
118
+ throughSeq: cp.throughSeq,
83
119
  }
84
120
  }
85
121
 
86
122
  /**
87
- * Project an {@link EmergencySaveData} dump to an {@link IterationCheckpoint}
88
- * shape so `replay({ fromCheckpoint: 'emergency' })` can consume it through
89
- * the same restore path as any other checkpoint.
90
- *
91
- * The projection is lossy: `costInfo`, `guardState.elapsedMs` and
92
- * `toolResultHashes` are not captured at emergency-save time. The synthetic
93
- * checkpoint id is derived deterministically from the emergency save id so
94
- * re-projecting the same dump yields the same {@link CheckpointId}.
95
- *
96
- * ## The cost projection says "unknown", not "zero"
97
- *
98
- * `costInfo` used to default to `{ ...ZERO_COST }` beside a `tokenUsage` the
99
- * dump preserves faithfully — a run that had spent real money coming back as
100
- * one that had spent nothing. That is the same lie the price catalogue was
101
- * added to end, arriving through the restore path instead of the accumulation
102
- * one, and it took `runConfig.costLimitUsd` back to being enforced against a
103
- * zero with it.
104
- *
105
- * It also broke the accumulator downstream. `accumulateCost` decides whether
106
- * one rate card describes the whole total by asking whether the total is
107
- * FRESH — zero cost, zero unpriced tokens, no rates — and `ZERO_COST` is
108
- * exactly that shape. So the first turn after such a resume adopted its own
109
- * rate card as covering the pre-crash spend too, and reported a number that
110
- * was confidently wrong while looking like a measured one.
111
- *
112
- * Saying instead that the pre-crash tokens are UNPRICED is the true statement,
113
- * in the vocabulary {@link CostInfo} already has: nobody knows what they cost,
114
- * because nothing recorded it. It needs no marker of its own to stay correct,
115
- * and it is not fresh-shaped, so the accumulator does the right thing without
116
- * being told about this path at all.
117
- *
118
- * See ses_005-deterministic-replay design §2 + §5.2.
123
+ * Every park a session log records, newest last: `decision_requested`, and
124
+ * whether a `decision_resolved` or `decision_expired` has answered it.
119
125
  */
120
- export function projectEmergencyToCheckpoint(dump: EmergencySaveData): IterationCheckpoint {
121
- const emergencyId = asEmergencySaveId(dump.id)
122
- // The checkpoint is another view of the same snapshot and retains its key.
123
- const checkpointId = asCheckpointId(emergencyId)
124
- return {
125
- id: checkpointId,
126
- runId: dump.runId,
127
- // The dump records the run's start, so this projection carries the
128
- // same stamp an ordinary checkpoint of that run would — a run whose
129
- // only surviving record is an emergency dump still has a real
130
- // attribution instant, and dropping it here would put that run in the
131
- // "never recorded" bucket for no reason.
132
- runCreatedAt: dump.startedAt,
133
- iteration: dump.currentIteration,
134
- messages: dump.messages,
135
- tokenUsage: dump.tokenUsage,
136
- budgetBinding: dump.budgetBinding,
137
- budgetAccountId: dump.budgetAccountId,
138
- costInfo: { ...ZERO_COST, unpricedTokens: dump.tokenUsage.totalTokens },
139
- guardState: {
140
- iterationCount: dump.currentIteration,
141
- elapsedMs: Math.max(0, dump.savedAt - dump.startedAt),
142
- },
143
- createdAt: dump.savedAt,
126
+ export async function readParks(
127
+ log: SessionLog,
128
+ options: { readonly turnId?: TurnId } = {},
129
+ ): Promise<RecordedPark[]> {
130
+ const parks = new Map<
131
+ string,
132
+ {
133
+ decisionId: string
134
+ turnId: TurnId
135
+ checkpointId: CheckpointId
136
+ request: HITLDecisionRequest
137
+ parkedAt: number
138
+ deadlineAt?: number
139
+ resolvedAt?: number
140
+ decision?: HITLResumeDecision
141
+ }
142
+ >()
143
+ for await (const { record } of log.read({ mode: 'tolerant' })) {
144
+ const r = record as SessionRecord
145
+ if (r.type === 'decision_requested') {
146
+ if (options.turnId !== undefined && r.turnId !== options.turnId) continue
147
+ parks.set(r.decisionId, {
148
+ decisionId: r.decisionId,
149
+ turnId: r.turnId as TurnId,
150
+ checkpointId: r.checkpointId,
151
+ request: r.request as unknown as HITLDecisionRequest,
152
+ parkedAt: Date.parse(r.ts),
153
+ ...(r.deadlineAt !== undefined ? { deadlineAt: Date.parse(r.deadlineAt) } : {}),
154
+ })
155
+ } else if (r.type === 'decision_resolved') {
156
+ const park = parks.get(r.decisionId)
157
+ if (park) {
158
+ park.resolvedAt = Date.parse(r.ts)
159
+ park.decision = r.decision
160
+ }
161
+ } else if (r.type === 'decision_expired') {
162
+ const park = parks.get(r.decisionId)
163
+ if (park) {
164
+ park.resolvedAt = Date.parse(r.ts)
165
+ // The park ended by running out of time, not by a decision. An
166
+ // `abort` here would read as somebody having refused it.
167
+ park.decision = {
168
+ action: 'pause',
169
+ reason: 'The approval request expired without an answer.',
170
+ }
171
+ }
172
+ }
144
173
  }
174
+ return [...parks.values()].map((park) => ({
175
+ decisionId: park.decisionId,
176
+ turnId: park.turnId,
177
+ checkpointId: park.checkpointId,
178
+ pending: {
179
+ request: park.request,
180
+ parkedAt: park.parkedAt,
181
+ ...(park.deadlineAt !== undefined ? { deadlineAt: park.deadlineAt } : {}),
182
+ ...(park.resolvedAt !== undefined ? { resolvedAt: park.resolvedAt } : {}),
183
+ ...(park.decision !== undefined ? { decision: park.decision } : {}),
184
+ },
185
+ }))
145
186
  }
146
187
 
147
188
  /**
148
- * The newest checkpoint of a run that is still awaiting a human decision,
149
- * or `null` when the run is not parked.
189
+ * The newest park of a session (or of one of its turns) that is still
190
+ * awaiting a human decision, or `null` when nothing is parked.
150
191
  *
151
- * Standalone (not a `CheckpointManager` method) so a host can ask the
152
- * question without constructing a run: an approval-queue worker in a
153
- * different process has a store and a scope, and nothing else.
192
+ * Standalone so a host can ask the question without constructing a turn: an
193
+ * approval-queue worker in a different process has the session log and
194
+ * nothing else. An expired park is not outstanding.
154
195
  */
155
196
  export async function findPendingCheckpoint(
156
- store: CheckpointStore,
157
- scope: CheckpointRunScope,
158
- options?: { readonly now?: number },
159
- ): Promise<IterationCheckpoint | null> {
160
- const all = await store.listCheckpoints(scope)
161
- const now = options?.now ?? Date.now()
162
- // `listCheckpoints` is contractually ascending by `createdAt`; the
163
- // newest outstanding park is the one a human should be answering.
164
- for (let i = all.length - 1; i >= 0; i--) {
165
- const cp = all[i] as IterationCheckpoint
166
- if (!cp.pending || cp.pending.resolvedAt !== undefined) continue
167
- // An expired park is not outstanding. Serving it re-presents an
168
- // approval whose window has closed, and every queue reader would
169
- // keep re-presenting it forever — a redeployed worker leaves a park
170
- // nobody will ever answer and nothing in-process can time out.
171
- if (isExpiredPark(cp.pending, now)) continue
172
- return cp
197
+ log: SessionLog,
198
+ options: { readonly turnId?: TurnId; readonly now?: number } = {},
199
+ ): Promise<RecordedPark | null> {
200
+ const parks = await readParks(log, options.turnId ? { turnId: options.turnId } : {})
201
+ const now = options.now ?? Date.now()
202
+ for (let i = parks.length - 1; i >= 0; i--) {
203
+ const park = parks[i] as RecordedPark
204
+ if (park.pending.resolvedAt !== undefined) continue
205
+ if (isExpiredPark(park.pending, now)) continue
206
+ return park
173
207
  }
174
208
  return null
175
209
  }
@@ -180,108 +214,74 @@ export function isExpiredPark(pending: PendingDecision, now = Date.now()): boole
180
214
  }
181
215
 
182
216
  /**
183
- * Every outstanding park in a run, expired ones included, so a host can
184
- * sweep them.
185
- *
186
- * The out-of-process timer stays a host concern — consistent with the same
187
- * decision made for retention — but a host cannot sweep what it cannot
188
- * enumerate, and this is the read that makes a sweep a few lines rather
189
- * than a re-implementation of the store contract.
217
+ * Every outstanding park of a session whose deadline has passed, so a host
218
+ * can sweep them (`CheckpointManager.expire`, or `decision_expired` appended
219
+ * under the session lease).
190
220
  */
191
221
  export async function listExpiredParks(
192
- store: CheckpointStore,
193
- scope: CheckpointRunScope,
194
- options?: { readonly now?: number },
195
- ): Promise<IterationCheckpoint[]> {
196
- const all = await store.listCheckpoints(scope)
197
- const now = options?.now ?? Date.now()
198
- return all.filter(
199
- (cp) => cp.pending && cp.pending.resolvedAt === undefined && isExpiredPark(cp.pending, now),
222
+ log: SessionLog,
223
+ options: { readonly turnId?: TurnId; readonly now?: number } = {},
224
+ ): Promise<RecordedPark[]> {
225
+ const parks = await readParks(log, options.turnId ? { turnId: options.turnId } : {})
226
+ const now = options.now ?? Date.now()
227
+ return parks.filter(
228
+ (park) => park.pending.resolvedAt === undefined && isExpiredPark(park.pending, now),
200
229
  )
201
230
  }
202
231
 
232
+ /**
233
+ * What a {@link CheckpointManager} needs of the turn it serves: the log it
234
+ * reads and appends to (in order with the turn's other records), and the
235
+ * tenant decisions are attributed under. A {@link TurnRecorder} is one.
236
+ */
237
+ export type CheckpointRecords = Pick<TurnRecorder, 'log' | 'appendRecord' | 'flush' | 'tenantId'>
238
+
239
+ /** Who answered a decision the turn itself carried out. */
240
+ function resolver(recorder: CheckpointRecords) {
241
+ return {
242
+ kind: 'system' as const,
243
+ role: 'sys_approval_policy' as const,
244
+ tenantId: recorder.tenantId,
245
+ }
246
+ }
247
+
248
+ /**
249
+ * A turn's checkpoints: documents in the session's checkpoint store,
250
+ * committed by a `checkpoint_written` record, and the parks (`decision_*`
251
+ * records) that reference them.
252
+ *
253
+ * A checkpoint holds no messages. Its context is the fold of the session log
254
+ * through `throughSeq`; `restore` reads it back from the log and refuses a
255
+ * checkpoint whose document or covered prefix no longer matches its record.
256
+ */
203
257
  export class CheckpointManager {
204
- private store: CheckpointStore
205
- private scope: CheckpointRunScope
206
- /**
207
- * Compaction's state source, when the run has one.
208
- *
209
- * Every checkpoint snapshots it, so a resumed run can carry forward the
210
- * state its earlier summary was built from. Without that the next
211
- * compaction supersedes that summary with one covering only post-resume
212
- * activity, and the record of everything before the resume is gone.
213
- */
258
+ private readonly recorder: CheckpointRecords
259
+ private readonly store: SessionCheckpointStore
260
+ private readonly scope: CheckpointScope
214
261
  private workingStateSource?: () => WorkingStateSnapshot | undefined
215
262
  private latestUserMessageSource?: () => UserMessage | undefined
216
263
  private restoredUserMessage?: UserMessage
264
+ private restoredUserMessageId?: MessageId
217
265
  private answerReviewAttemptsSource?: () => number
218
266
  private restoredAnswerAttempts = 0
219
267
  private structuredReviewAttemptsSource?: () => number
220
268
  private restoredReviewAttempts = 0
221
269
  private nativeStructuredAttemptsSource?: () => number
222
270
  private restoredNativeAttempts = 0
223
-
224
- /**
225
- * The most recent checkpoint this manager wrote, if any.
226
- *
227
- * A run that fails on a transient error needs to name the state a host
228
- * should resume from. Re-listing the store to find it would be a disk
229
- * read on the failure path, at the moment the run is least able to
230
- * afford one; the id is already in hand.
231
- */
232
271
  private lastCreatedId?: CheckpointId
233
-
234
- /** See {@link setTraceSource}. */
235
272
  private traceSource?: () => SerializedSpanContext | undefined
236
-
237
- /** See {@link setParkTtl}. */
238
273
  private parkTtlMs?: number
239
-
240
- /**
241
- * The claim this run holds, presented on every checkpoint write.
242
- *
243
- * Unset means unfenced, which is correct for a single-writer deployment
244
- * and is what every run did before claims existed. Set it and a write from
245
- * a superseded holding is refused by the store.
246
- *
247
- * This existed nowhere for one release, and the omission was invisible in
248
- * the worst way: the claim, the fence and the refusal were all built and
249
- * tested, and no code path between a run and its store carried the number,
250
- * so every checkpoint a RUN wrote went out unfenced. A capability that is
251
- * complete except for the wire between its halves reads exactly like a
252
- * working one.
253
- */
254
- private claimFence?: FencingToken
255
-
256
274
  /**
257
- * The run's attribution instant, stamped onto every checkpoint this
258
- * manager writes.
259
- *
260
- * Settled exactly once, by whichever of two things happens first, and
261
- * never reassigned — every write to it below is `??=`, and there are only
262
- * two:
263
- *
264
- * - `restore` ADOPTS it from the checkpoint a resume came back through.
265
- * A resumed run is the same run, and its creation is already on the
266
- * record; a fresh process minting a new one would move the key that
267
- * exists specifically because it does not move.
268
- * - `create` MINTS it from the run's own start instant when nothing was
269
- * adopted, which is the fresh-run case.
270
- *
271
- * Restore runs during run setup, before the first iteration and therefore
272
- * before the first `create`, so the adopt always wins on the resume path
273
- * without either site needing to know which path it is on.
275
+ * The turn's attribution instant, identical on every checkpoint of the
276
+ * turn: adopted from the checkpoint a resume came back through, or minted
277
+ * from the turn's own start.
274
278
  */
275
- private runCreatedAt?: number
279
+ private turnCreatedAt?: string
280
+ /** The turn where its iteration loop began; see {@link markLoopStart}. */
281
+ private loopStart?: CheckpointState
276
282
 
277
- /**
278
- * @param store scope-keyed checkpoint persistence. The default query
279
- * pipeline passes the run's disk-backed store
280
- * ({@link import('../../store/run/checkpoint-disk.js').DiskCheckpointStore});
281
- * hosts inject their own via `QueryParams.checkpointStore`.
282
- * @param scope the run every operation of this manager is keyed to.
283
- */
284
- constructor(store: CheckpointStore, scope: CheckpointRunScope) {
283
+ constructor(recorder: CheckpointRecords, store: SessionCheckpointStore, scope: CheckpointScope) {
284
+ this.recorder = recorder
285
285
  this.store = store
286
286
  this.scope = scope
287
287
  }
@@ -322,312 +322,411 @@ export class CheckpointManager {
322
322
  return this.restoredReviewAttempts
323
323
  }
324
324
 
325
- /**
326
- * The run's root span, so every checkpoint records the trace it was
327
- * taken inside and a resume can join it rather than starting a second,
328
- * unlinked one.
329
- */
325
+ /** The turn's root span, so every checkpoint records the trace it was taken inside. */
330
326
  setTraceSource(source: () => SerializedSpanContext | undefined): void {
331
327
  this.traceSource = source
332
328
  }
333
329
 
334
- async create(
335
- runMgr: RunPersistence,
336
- iteration: number,
337
- extra?: {
338
- toolResults?: Array<{ toolCallId: string; toolName: string; input: unknown; output: string }>
339
- workingState?: WorkingStateSnapshot
340
- },
341
- ): Promise<IterationCheckpoint> {
342
- // The run's own start, not `Date.now()`. This is meant to say when the
343
- // run was attributed; taking the clock at the first checkpoint would
344
- // say when it first became durable, which is a different and later
345
- // fact, and naming it after the earlier one would make it wrong in
346
- // exactly the way that is hard to notice.
347
- this.runCreatedAt ??= runMgr.getSession().startedAt ?? Date.now()
330
+ /** Default time-to-live applied to every park this manager records. */
331
+ setParkTtl(ttlMs: number | undefined): void {
332
+ this.parkTtlMs = ttlMs
333
+ }
334
+
335
+ /**
336
+ * Write a checkpoint of the turn as it stands: every queued record lands
337
+ * first, the document names the log's head as `throughSeq`, and a
338
+ * `checkpoint_written` record commits it.
339
+ */
340
+ async create(recorder: TurnRecorder, iteration: number): Promise<CreatedCheckpoint> {
341
+ await recorder.budget?.flush()
342
+ const state = await this.captureState(recorder)
343
+ if (!state) throw new Error('A checkpoint needs a session log with records in it.')
344
+ return this.write(recorder, iteration, state)
345
+ }
346
+
347
+ /**
348
+ * Remember the turn as it stands where its iteration loop begins, before
349
+ * the loop's first provider request. Nothing is written: the state is
350
+ * only committed, by {@link createAtLoopStart}, when the turn has to
351
+ * pause before it wrote a checkpoint of its own.
352
+ */
353
+ async markLoopStart(recorder: TurnRecorder): Promise<void> {
354
+ this.loopStart = await this.captureState(recorder)
355
+ }
356
+
357
+ /**
358
+ * A checkpoint of the turn as {@link markLoopStart} found it, so a turn
359
+ * that fails recoverably before any checkpoint of its own has something
360
+ * to pause on and resume from. It covers the log only through the loop's
361
+ * start and counts none of the guards used since, so resuming from it
362
+ * discards every iteration the turn ran before the fault, completed ones
363
+ * included (a `max_tokens` continuation request opens a new iteration).
364
+ * Its iteration is the one the loop began at: 0 for a fresh
365
+ * turn, the restored count for a resumed one. `undefined` when no loop
366
+ * start was marked.
367
+ */
368
+ async createAtLoopStart(recorder: TurnRecorder): Promise<CreatedCheckpoint | undefined> {
369
+ const state = this.loopStart
370
+ if (!state) return undefined
371
+ // The ledger is the account, not the turn's view of it: whatever the
372
+ // failed request spent stays spent.
373
+ await recorder.budget?.flush()
374
+ return this.write(recorder, state.guards.iteration, state)
375
+ }
376
+
377
+ /** The part of a checkpoint document that describes the turn at one instant. */
378
+ private async captureState(recorder: TurnRecorder): Promise<CheckpointState | undefined> {
379
+ const startedAt = recorder.getTurn().startedAt
380
+ this.turnCreatedAt ??= new Date(startedAt).toISOString()
348
381
  const latestUserMessage = this.latestUserMessageSource?.() ?? this.restoredUserMessage
382
+ const head = await recorder.head()
383
+ if (!head) return undefined
384
+ const latestUserMessageId = latestUserMessage
385
+ ? this.messageIdOf(recorder, latestUserMessage)
386
+ : undefined
387
+ return {
388
+ throughSeq: head.pointer.seq,
389
+ throughSha256: head.pointer.sha256,
390
+ tokenUsage: { ...recorder.tokenUsage },
391
+ costInfo: { ...recorder.costInfo },
392
+ guards: {
393
+ iteration: recorder.currentIteration,
394
+ elapsedMs: Math.max(0, Date.now() - startedAt),
395
+ },
396
+ review: {
397
+ structuredAttempts: this.structuredReviewAttemptsSource?.() ?? this.restoredReviewAttempts,
398
+ answerAttempts: this.answerReviewAttemptsSource?.() ?? this.restoredAnswerAttempts,
399
+ nativeStructuredAttempts:
400
+ this.nativeStructuredAttemptsSource?.() ?? this.restoredNativeAttempts,
401
+ },
402
+ ...(latestUserMessageId ? { latestUserMessageId } : {}),
403
+ ...withDefined('workingState', this.workingStateSource?.()),
404
+ }
405
+ }
349
406
 
350
- const checkpoint: IterationCheckpoint = {
351
- id: generateCheckpointId(),
352
- runId: runMgr.id,
353
- runCreatedAt: this.runCreatedAt,
407
+ private async write(
408
+ recorder: TurnRecorder,
409
+ iteration: number,
410
+ state: CheckpointState,
411
+ ): Promise<CreatedCheckpoint> {
412
+ const binding = recorder.budget?.binding
413
+ const accountId = recorder.budget?.accountId
414
+ const document: Checkpoint = {
415
+ v: CHECKPOINT_DOCUMENT_VERSION,
416
+ kind: 'checkpoint',
417
+ checkpointId: generateCheckpointId(),
418
+ sessionId: this.scope.sessionId,
419
+ turnId: this.scope.turnId,
354
420
  iteration,
355
- messages: [...runMgr.messages],
356
- answerReviewAttempts: this.answerReviewAttemptsSource?.() ?? this.restoredAnswerAttempts,
357
- nativeStructuredAttempts:
358
- this.nativeStructuredAttemptsSource?.() ?? this.restoredNativeAttempts,
359
- structuredReviewAttempts:
360
- this.structuredReviewAttemptsSource?.() ?? this.restoredReviewAttempts,
361
- ...(latestUserMessage ? { latestUserMessage: snapshotUserIntent(latestUserMessage) } : {}),
362
- tokenUsage: { ...runMgr.tokenUsage },
363
- budgetBinding: runMgr.budget?.binding,
364
- budgetAccountId: runMgr.budget?.accountId,
365
- costInfo: { ...runMgr.costInfo },
366
- guardState: {
367
- iterationCount: runMgr.currentIteration,
368
- elapsedMs: Date.now() - (runMgr.getSession().startedAt ?? Date.now()),
369
- },
370
- createdAt: Date.now(),
371
- toolResultHashes: extra?.toolResults ? buildToolResultHashes(extra.toolResults) : undefined,
372
- workingState: extra?.workingState ?? this.workingStateSource?.(),
373
- traceContext: this.traceSource?.(),
421
+ throughSeq: state.throughSeq,
422
+ throughSha256: state.throughSha256,
423
+ tokenUsage: state.tokenUsage,
424
+ costInfo: state.costInfo,
425
+ ...(accountId !== undefined
426
+ ? { budget: { ...(binding ? { binding } : {}), accountId } }
427
+ : {}),
428
+ guards: state.guards,
429
+ review: state.review,
430
+ ...(state.latestUserMessageId ? { latestUserMessageId: state.latestUserMessageId } : {}),
431
+ ...withDefined('workingState', state.workingState),
432
+ ...withDefined('trace', this.traceSource?.()),
433
+ turnCreatedAt: this.turnCreatedAt ?? new Date(recorder.getTurn().startedAt).toISOString(),
434
+ createdAt: new Date().toISOString(),
374
435
  }
436
+ const receipt = await this.store.write(this.scope, document)
437
+ await recorder.appendRecord({
438
+ type: 'checkpoint_written',
439
+ turnId: this.scope.turnId,
440
+ ...receipt,
441
+ })
442
+ this.lastCreatedId = document.checkpointId
443
+ return { id: document.checkpointId, document }
444
+ }
375
445
 
376
- await runMgr.budget?.flush()
377
- await this.store.writeCheckpoint(this.scope, checkpoint, this.claimFence)
378
- this.lastCreatedId = checkpoint.id
379
- return checkpoint
446
+ /**
447
+ * The id of the record that carries a message's text: its own record,
448
+ * or — for operator guidance delivered attached to a tool result — the
449
+ * record of the tool result that carries it.
450
+ */
451
+ private messageIdOf(recorder: TurnRecorder, message: Message): MessageId | undefined {
452
+ if (message === this.restoredUserMessage) return this.restoredUserMessageId
453
+ return recorder.recordedIdOf(message) ?? this.steeringCarrierOf(recorder, message)
454
+ }
455
+
456
+ /** Found once and kept: a compaction may later drop the carrier from the context. */
457
+ private readonly steeringCarriers = new WeakMap<Message, MessageId>()
458
+
459
+ private steeringCarrierOf(recorder: TurnRecorder, message: Message): MessageId | undefined {
460
+ const known = this.steeringCarriers.get(message)
461
+ if (known) return known
462
+ const source = (message as UserMessage).source
463
+ if (
464
+ message.role !== 'user' ||
465
+ typeof message.content !== 'string' ||
466
+ source?.type !== 'runtime-context' ||
467
+ source.kind !== 'steering'
468
+ ) {
469
+ return undefined
470
+ }
471
+ const note = formatSteeringNote(message.content)
472
+ const messages = recorder.messages
473
+ for (let i = messages.length - 1; i >= 0; i--) {
474
+ const candidate = messages[i] as Message
475
+ if (
476
+ candidate.role === 'tool' &&
477
+ typeof candidate.content === 'string' &&
478
+ candidate.content.endsWith(note)
479
+ ) {
480
+ const id = recorder.recordedIdOf(candidate)
481
+ if (id) this.steeringCarriers.set(message, id)
482
+ return id
483
+ }
484
+ }
485
+ return undefined
380
486
  }
381
487
 
382
- /** See {@link lastCreatedId}. */
488
+ /** The most recent checkpoint this manager wrote, if any. */
383
489
  get lastCheckpointId(): CheckpointId | undefined {
384
490
  return this.lastCreatedId
385
491
  }
386
492
 
387
493
  /**
388
- * The trace a checkpoint was taken inside, for parenting a resumed run.
389
- *
390
- * Read separately and BEFORE the run's root span, because a span's
391
- * parent can only be set at creation and the root is minted before the
392
- * restore branch runs.
393
- *
394
- * Never throws. Telemetry continuity is worth a disk read; it is not
395
- * worth failing a resume over, and the restore path immediately after
396
- * will report a genuinely unreadable checkpoint far better than a
397
- * tracing helper could.
494
+ * The trace a checkpoint was taken inside, for parenting a resumed turn.
495
+ * Never throws: telemetry continuity is not worth failing a resume over.
398
496
  */
399
497
  async readTraceContext(checkpointId: CheckpointId): Promise<SerializedSpanContext | undefined> {
400
498
  try {
401
- const checkpoint = await this.store.readCheckpoint(this.scope, checkpointId)
402
- return checkpoint?.traceContext
499
+ const checkpoint = await this.store.read(this.scope, checkpointId)
500
+ return checkpoint?.trace
403
501
  } catch {
404
502
  return undefined
405
503
  }
406
504
  }
407
505
 
408
506
  /**
409
- * Record that the run parked at `checkpoint` awaiting a human, and
410
- * return the updated checkpoint.
411
- *
412
- * A park used to exist only as a suspended `await`: the checkpoint
413
- * written just before it was indistinguishable from any mid-run
414
- * checkpoint, so a host could not tell from durable state that a
415
- * decision was outstanding — and a process boundary lost the request
416
- * entirely. Writing the request down is what lets an approval queue be
417
- * rebuilt, and what lets a resumed run apply the answer to the exact
418
- * tool calls the human saw.
419
- *
420
- * Called after `create` rather than as an argument to it because the
421
- * request carries the checkpoint's own id.
507
+ * Record that the turn parked at `checkpoint` awaiting a human: a
508
+ * `decision_requested` record naming the checkpoint, with an absolute
509
+ * deadline when the turn has a park time-to-live.
422
510
  */
423
511
  async park(
424
- checkpoint: IterationCheckpoint,
512
+ checkpoint: { readonly id: CheckpointId },
425
513
  request: HITLDecisionRequest,
426
514
  options?: { readonly ttlMs?: number },
427
- ): Promise<IterationCheckpoint> {
515
+ ): Promise<PendingDecision> {
428
516
  const parkedAt = Date.now()
429
517
  const ttl = options?.ttlMs ?? this.parkTtlMs
430
- const parked: IterationCheckpoint = {
431
- ...checkpoint,
432
- pending: {
433
- request,
434
- parkedAt,
435
- // Absolute, so it survives the process that set it. A
436
- // duration plus an in-process timer cannot: the worker gets
437
- // redeployed and the park becomes immortal.
438
- ...(ttl !== undefined && ttl > 0 ? { deadlineAt: parkedAt + ttl } : {}),
439
- },
440
- }
441
- await this.store.writeCheckpoint(this.scope, parked, this.claimFence)
442
- return parked
518
+ const deadlineAt = ttl !== undefined && ttl > 0 ? parkedAt + ttl : undefined
519
+ await this.recorder.appendRecord({
520
+ type: 'decision_requested',
521
+ turnId: this.scope.turnId,
522
+ decisionId: checkpoint.id,
523
+ checkpointId: checkpoint.id,
524
+ request: request as never,
525
+ ...(deadlineAt !== undefined ? { deadlineAt: new Date(deadlineAt).toISOString() } : {}),
526
+ })
527
+ return { request, parkedAt, ...(deadlineAt !== undefined ? { deadlineAt } : {}) }
443
528
  }
444
529
 
445
530
  /**
446
- * Present this claim on every subsequent write. See {@link claimFence}.
447
- *
448
- * A setter rather than a constructor argument because a run is claimed at
449
- * a different moment than it is constructed — a worker draining a queue
450
- * takes the run, then builds the pipeline around it — and because a
451
- * renewal mints a NEW fence mid-run that has to replace the old one.
531
+ * Mark an expired park as no longer outstanding: `decision_expired`. The
532
+ * request stays in the log as evidence of what was asked.
452
533
  */
453
- setClaimFence(fence: FencingToken | undefined): void {
454
- this.claimFence = fence
455
- }
456
-
457
- /** The claim currently presented on writes, if any. */
458
- get presentedFence(): FencingToken | undefined {
459
- return this.claimFence
460
- }
461
-
462
- /** Default time-to-live applied to every park this manager records. */
463
- setParkTtl(ttlMs: number | undefined): void {
464
- this.parkTtlMs = ttlMs
465
- }
466
-
467
- /**
468
- * Mark an expired park as no longer outstanding.
469
- *
470
- * Recorded rather than deleted: the checkpoint showing what was asked
471
- * and that nobody answered in time is the evidence an approval gate is
472
- * worth having, and the same reasoning already keeps a resolved
473
- * decision on the record.
474
- */
475
- async expire(checkpointId: CheckpointId): Promise<IterationCheckpoint | null> {
476
- const checkpoint = await this.store.readCheckpoint(this.scope, checkpointId)
477
- if (!checkpoint?.pending || checkpoint.pending.resolvedAt !== undefined) return null
478
-
479
- const expired: IterationCheckpoint = {
480
- ...checkpoint,
481
- pending: {
482
- ...checkpoint.pending,
483
- resolvedAt: Date.now(),
484
- // The park ended by running out of time, not by a decision.
485
- // An `abort` here would read as somebody having refused it.
486
- decision: { action: 'pause', reason: 'The approval request expired without an answer.' },
487
- },
488
- }
489
- await this.store.writeCheckpoint(this.scope, expired, this.claimFence)
490
- return expired
534
+ async expire(checkpointId: CheckpointId): Promise<RecordedPark | null> {
535
+ const park = await this.openPark(checkpointId)
536
+ if (!park) return null
537
+ await this.recorder.appendRecord({
538
+ type: 'decision_expired',
539
+ turnId: this.scope.turnId,
540
+ decisionId: park.decisionId,
541
+ })
542
+ return park
491
543
  }
492
544
 
493
545
  /**
494
- * Record the answer, so an outstanding park stops looking outstanding.
495
- *
496
- * The decision is kept rather than erased: a checkpoint that shows both
497
- * what was asked and what was answered is the evidence trail an
498
- * approval gate is worth having. A no-op when the checkpoint is gone
499
- * (pruned) or was never parked.
546
+ * Record the answer, so an outstanding park stops looking outstanding:
547
+ * `decision_resolved`. A no-op when the checkpoint was never parked or the
548
+ * park is already answered.
500
549
  */
501
550
  async unpark(
502
551
  checkpointId: CheckpointId,
503
552
  decision: HITLResumeDecision,
504
- ): Promise<IterationCheckpoint | null> {
505
- const checkpoint = await this.store.readCheckpoint(this.scope, checkpointId)
506
- if (!checkpoint?.pending) return null
553
+ ): Promise<RecordedPark | null> {
554
+ const park = await this.openPark(checkpointId)
555
+ if (!park) return null
556
+ await this.recorder.appendRecord({
557
+ type: 'decision_resolved',
558
+ turnId: this.scope.turnId,
559
+ decisionId: park.decisionId,
560
+ decision,
561
+ resolvedBy: resolver(this.recorder),
562
+ })
563
+ return park
564
+ }
565
+
566
+ private async openPark(checkpointId: CheckpointId): Promise<RecordedPark | null> {
567
+ await this.recorder.flush()
568
+ const parks = await readParks(this.recorder.log, { turnId: this.scope.turnId })
569
+ return (
570
+ parks.find(
571
+ (park) => park.checkpointId === checkpointId && park.pending.resolvedAt === undefined,
572
+ ) ?? null
573
+ )
574
+ }
507
575
 
508
- const resolved: IterationCheckpoint = {
509
- ...checkpoint,
510
- pending: { ...checkpoint.pending, resolvedAt: Date.now(), decision },
511
- }
512
- await this.store.writeCheckpoint(this.scope, resolved, this.claimFence)
513
- return resolved
576
+ /** The turn's outstanding park, if it has one. */
577
+ async findPending(): Promise<RecordedPark | null> {
578
+ await this.recorder.flush()
579
+ return findPendingCheckpoint(this.recorder.log, { turnId: this.scope.turnId })
514
580
  }
515
581
 
516
582
  /**
517
- * The run's outstanding park, if it has one — the newest checkpoint
518
- * whose `pending` has no `resolvedAt`.
519
- *
520
- * This is the read a host's approval queue is built from, and it works
521
- * across a process boundary because it consults the store rather than
522
- * in-memory state.
583
+ * Read a checkpoint back for a resume. Refused when it is missing, when
584
+ * its document no longer matches its record, or when the log prefix it
585
+ * covers changed.
523
586
  */
524
- async findPending(): Promise<IterationCheckpoint | null> {
525
- return findPendingCheckpoint(this.store, this.scope)
526
- }
527
-
528
- async restore(checkpointId: CheckpointId): Promise<IterationCheckpoint> {
529
- const checkpoint = await this.store.readCheckpoint(this.scope, checkpointId)
530
- if (!checkpoint) {
587
+ async restore(checkpointId: CheckpointId): Promise<RestoredCheckpoint> {
588
+ const document = await this.store.restore(this.scope, checkpointId)
589
+ if (!document) {
531
590
  throw new NamzuError({
532
591
  code: 'not_found',
533
592
  message: `Checkpoint not found: ${checkpointId}`,
534
- details: { checkpointId, runId: this.scope.runId },
593
+ details: { checkpointId, sessionId: this.scope.sessionId, turnId: this.scope.turnId },
535
594
  })
536
595
  }
596
+ const restored = await restoreCheckpointContext(this.recorder.log, document)
597
+ this.turnCreatedAt ??= document.turnCreatedAt
598
+ this.restoredAnswerAttempts = document.review.answerAttempts
599
+ this.restoredNativeAttempts = document.review.nativeStructuredAttempts
600
+ this.restoredReviewAttempts = document.review.structuredAttempts
601
+ this.restoredUserMessage = restored.latestUserMessage
602
+ this.restoredUserMessageId = restored.latestUserMessage
603
+ ? document.latestUserMessageId
604
+ : undefined
605
+ return restored
606
+ }
537
607
 
538
- // Adopt the run's recorded attribution. A resumed run is the SAME run
539
- // under the same id, and its creation is already on the record; a
540
- // fresh process minting a new one would step the stamp forward on
541
- // every resume, which is the motion it exists to avoid.
542
- //
543
- // This needs no "is it really my run" guard, and one was written and
544
- // removed: `readCheckpoint` is keyed by THIS manager's scope, so the
545
- // only checkpoints reachable here are the ones belonging to
546
- // `scope.runId`. A replay fork never arrives here at all — it reads
547
- // its origin through the SOURCE scope in `prepareReplayState` and
548
- // starts a fresh run, so it mints its own stamp rather than claiming
549
- // its origin's age. A guard that no input can trip would have read as
550
- // protection and been none.
551
- this.runCreatedAt ??= checkpoint.runCreatedAt
552
- const answerAttempts = checkpoint.answerReviewAttempts ?? 0
553
- if (!Number.isSafeInteger(answerAttempts) || answerAttempts < 0)
554
- throw new Error('Checkpoint answerReviewAttempts must be a nonnegative safe integer')
555
- this.restoredAnswerAttempts = answerAttempts
556
- const nativeAttempts = checkpoint.nativeStructuredAttempts ?? 0
557
- if (!Number.isSafeInteger(nativeAttempts) || nativeAttempts < 0)
558
- throw new Error('Invalid nativeStructuredAttempts in checkpoint')
559
- this.restoredNativeAttempts = nativeAttempts
560
- const reviewAttempts = checkpoint.structuredReviewAttempts ?? 0
561
- if (!Number.isSafeInteger(reviewAttempts) || reviewAttempts < 0)
562
- throw new Error('Checkpoint structuredReviewAttempts must be a nonnegative safe integer')
563
- this.restoredReviewAttempts = reviewAttempts
564
- this.restoredUserMessage =
565
- checkpoint.latestUserMessage === undefined
566
- ? undefined
567
- : snapshotUserIntent(checkpoint.latestUserMessage)
568
-
569
- return checkpoint
570
- }
571
-
572
- async list(): Promise<IterationCheckpoint[]> {
573
- return this.store.listCheckpoints(this.scope)
608
+ /** The turn's checkpoint documents, oldest first. */
609
+ async list(): Promise<Checkpoint[]> {
610
+ return this.store.list(this.scope)
574
611
  }
575
612
 
576
- /**
577
- * Listing projection used by the public `listCheckpoints` API. Returns
578
- * only the fields a consumer needs to pick a fork point for
579
- * {@link import('./replay/prepare.js').prepareReplayState} — not the
580
- * full checkpoint payload. See ses_005-deterministic-replay design §3.1.
581
- */
613
+ /** Listing projection used by the public `listCheckpoints` API. */
582
614
  async listEntries(): Promise<CheckpointListEntry[]> {
583
- const checkpoints = await this.store.listCheckpoints(this.scope)
584
- return checkpoints.map(toCheckpointListEntry)
615
+ return (await this.list()).map(toCheckpointListEntry)
585
616
  }
586
617
 
587
618
  /**
588
- * Collect old checkpoints until `keepLast` newer ones remain.
589
- *
590
- * Growth control, and growth control stops at a park. A checkpoint with
591
- * an unresolved `pending` is the durable fact that a human was asked
592
- * something: it is what `findPendingCheckpoint` serves to an approval
593
- * queue and what `listExpiredParks` enumerates for a sweep. Collecting
594
- * one deletes the only record of a question somebody may be in the middle
595
- * of answering, and their answer then lands nowhere — the store refuses
596
- * the unpark and the run it belonged to resumes without it.
597
- *
598
- * So the candidates are still the oldest `all.length - keepLast`, which
599
- * is what keeps the newest `keepLast` — the run's resume point — out of
600
- * reach, and a park among them is skipped rather than counted. Pruning
601
- * therefore holds a few more rows while a park is outstanding. That is
602
- * the right side to err on: parks resolve, and the next prune collects
603
- * them. Expired ones are skipped too — the host's sweep is
604
- * {@link expire}, which resolves the park by running out of time rather
605
- * than by deleting the evidence, and `prune` racing it would take the
606
- * question away before it was read.
619
+ * Collect old checkpoints until `keepLast` newer ones remain, never one an
620
+ * open decision references; a `checkpoint_pruned` record names what went.
607
621
  */
608
622
  async prune(keepLast: number): Promise<void> {
609
- const all = await this.list()
610
- if (all.length <= keepLast) return
611
-
612
- const toDelete = all.sort((a, b) => a.createdAt - b.createdAt).slice(0, all.length - keepLast)
613
-
614
- for (const cp of toDelete) {
615
- if (cp.pending && cp.pending.resolvedAt === undefined) continue
616
- await this.store.deleteCheckpoint(this.scope, cp.id)
623
+ await this.recorder.flush()
624
+ const pruned = await this.store.prune(this.scope, keepLast)
625
+ if (pruned.length > 0) {
626
+ await this.recorder.appendRecord({
627
+ type: 'checkpoint_pruned',
628
+ turnId: this.scope.turnId,
629
+ checkpointIds: pruned,
630
+ })
617
631
  }
618
632
  }
619
633
 
620
- static buildSummary(runMgr: RunPersistence, iteration: number): CheckpointSummary {
621
- const lastAssistant = [...runMgr.messages]
634
+ static buildSummary(recorder: TurnRecorder, iteration: number): CheckpointSummary {
635
+ const lastAssistant = [...recorder.messages]
622
636
  .reverse()
623
637
  .find((m): m is AssistantMessage => m.role === 'assistant' && m.content !== null)
624
638
 
625
639
  return {
626
640
  iteration,
627
- messageCount: runMgr.messages.length,
628
- tokenUsage: { ...runMgr.tokenUsage },
629
- costInfo: { ...runMgr.costInfo },
641
+ messageCount: recorder.messages.length,
642
+ tokenUsage: { ...recorder.tokenUsage },
643
+ costInfo: { ...recorder.costInfo },
630
644
  lastAssistantMessage: lastAssistant?.content ?? undefined,
631
645
  }
632
646
  }
633
647
  }
648
+
649
+ /**
650
+ * The context a checkpoint restores: the fold of its session log through
651
+ * `throughSeq`, the decision it is parked on, and the operator intent it
652
+ * names.
653
+ */
654
+ export async function restoreCheckpointContext(
655
+ log: SessionLog,
656
+ document: Checkpoint,
657
+ ): Promise<RestoredCheckpoint> {
658
+ const history = await readFoldedHistory(log, { throughSeq: document.throughSeq })
659
+ const messages = history.map((entry) => entry.message)
660
+ const messageIds = new Map<Message, MessageId>()
661
+ for (const entry of history) {
662
+ if (entry.messageId) messageIds.set(entry.message, entry.messageId)
663
+ }
664
+ const park = (await readParks(log, { turnId: document.turnId }))
665
+ .filter((candidate) => candidate.checkpointId === document.checkpointId)
666
+ .at(-1)
667
+ // The operator intent a checkpoint names survives compaction: when the
668
+ // fold no longer holds it, its own record (with any replacement) does.
669
+ const intentId = document.latestUserMessageId
670
+ const intent =
671
+ intentId === undefined
672
+ ? undefined
673
+ : (history.find((entry) => entry.messageId === intentId)?.message ??
674
+ (await readRecordedMessage(log, intentId, document.throughSeq)))
675
+ if (intentId !== undefined && intent === undefined) {
676
+ throw new Error(
677
+ `Checkpoint latestUserMessage names message ${intentId}, which its session log does not hold`,
678
+ )
679
+ }
680
+ // Guidance delivered attached to a tool result: the intent is the note.
681
+ const guidance =
682
+ intent?.role === 'tool' && typeof intent.content === 'string'
683
+ ? readSteeringNote(intent.content)
684
+ : undefined
685
+ const operatorIntent =
686
+ guidance !== undefined ? createRuntimeContextMessage(guidance, 'steering') : intent
687
+ return {
688
+ id: document.checkpointId,
689
+ document,
690
+ messages,
691
+ messageIds,
692
+ ...(park ? { pending: park.pending } : {}),
693
+ ...(operatorIntent ? { latestUserMessage: snapshotUserIntent(operatorIntent) } : {}),
694
+ }
695
+ }
696
+
697
+ /**
698
+ * A message as its own record left it (with any `message_replaced` applied),
699
+ * whether or not a compaction has since dropped it from the fold.
700
+ */
701
+ async function readRecordedMessage(
702
+ log: SessionLog,
703
+ messageId: MessageId,
704
+ throughSeq: number,
705
+ ): Promise<Message | undefined> {
706
+ let found: { content: unknown; spill?: unknown } | undefined
707
+ for await (const { record } of log.read({ throughSeq })) {
708
+ const entry = record as SessionRecord & {
709
+ messageId?: string
710
+ targetMessageId?: string
711
+ content?: unknown
712
+ spill?: unknown
713
+ }
714
+ if (
715
+ (entry.type === 'message' && entry.messageId === messageId) ||
716
+ (entry.type === 'message_replaced' && entry.targetMessageId === messageId)
717
+ ) {
718
+ found = { content: entry.content, ...(entry.spill ? { spill: entry.spill } : {}) }
719
+ }
720
+ }
721
+ if (!found) return undefined
722
+ if (found.spill) {
723
+ return JSON.parse(
724
+ await log.readSpill(found.spill as Parameters<SessionLog['readSpill']>[0]),
725
+ ) as Message
726
+ }
727
+ return found.content as Message
728
+ }
729
+
730
+ function withDefined<K extends string, V>(key: K, value: V | undefined): { [P in K]?: V } {
731
+ return (value === undefined ? {} : { [key]: value }) as { [P in K]?: V }
732
+ }