@namzu/sdk 42.0.2 → 44.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2100) hide show
  1. package/CHANGELOG.md +540 -0
  2. package/README.md +41 -34
  3. package/dist/advisory/budget.js +3 -3
  4. package/dist/advisory/budget.js.map +1 -1
  5. package/dist/advisory/context.d.ts +5 -5
  6. package/dist/advisory/context.d.ts.map +1 -1
  7. package/dist/advisory/context.js +6 -6
  8. package/dist/advisory/context.js.map +1 -1
  9. package/dist/advisory/evaluator.js +2 -2
  10. package/dist/advisory/evaluator.js.map +1 -1
  11. package/dist/advisory/parse.d.ts +1 -1
  12. package/dist/advisory/parse.js +1 -1
  13. package/dist/agents/AbstractAgent.d.ts +47 -40
  14. package/dist/agents/AbstractAgent.d.ts.map +1 -1
  15. package/dist/agents/AbstractAgent.js +60 -46
  16. package/dist/agents/AbstractAgent.js.map +1 -1
  17. package/dist/agents/PipelineAgent.d.ts +7 -7
  18. package/dist/agents/PipelineAgent.d.ts.map +1 -1
  19. package/dist/agents/PipelineAgent.js +75 -23
  20. package/dist/agents/PipelineAgent.js.map +1 -1
  21. package/dist/agents/ReactiveAgent.d.ts +7 -7
  22. package/dist/agents/ReactiveAgent.d.ts.map +1 -1
  23. package/dist/agents/ReactiveAgent.js +32 -25
  24. package/dist/agents/ReactiveAgent.js.map +1 -1
  25. package/dist/agents/RouterAgent.d.ts +7 -7
  26. package/dist/agents/RouterAgent.d.ts.map +1 -1
  27. package/dist/agents/RouterAgent.js +29 -32
  28. package/dist/agents/RouterAgent.js.map +1 -1
  29. package/dist/agents/SupervisorAgent.d.ts +13 -10
  30. package/dist/agents/SupervisorAgent.d.ts.map +1 -1
  31. package/dist/agents/SupervisorAgent.js +50 -36
  32. package/dist/agents/SupervisorAgent.js.map +1 -1
  33. package/dist/agents/budget.d.ts +17 -4
  34. package/dist/agents/budget.d.ts.map +1 -1
  35. package/dist/agents/budget.js +55 -14
  36. package/dist/agents/budget.js.map +1 -1
  37. package/dist/agents/defineAgent.d.ts +2 -2
  38. package/dist/agents/defineAgent.d.ts.map +1 -1
  39. package/dist/agents/defineAgent.js.map +1 -1
  40. package/dist/agents/handle.d.ts +12 -14
  41. package/dist/agents/handle.d.ts.map +1 -1
  42. package/dist/agents/handle.js +6 -6
  43. package/dist/agents/handle.js.map +1 -1
  44. package/dist/agents/lock.js +4 -4
  45. package/dist/agents/lock.js.map +1 -1
  46. package/dist/agents/runAgent.d.ts +42 -29
  47. package/dist/agents/runAgent.d.ts.map +1 -1
  48. package/dist/agents/runAgent.js +53 -14
  49. package/dist/agents/runAgent.js.map +1 -1
  50. package/dist/agents/storage.d.ts +21 -0
  51. package/dist/agents/storage.d.ts.map +1 -0
  52. package/dist/agents/storage.js +33 -0
  53. package/dist/agents/storage.js.map +1 -0
  54. package/dist/authorization/command-line.d.ts +1 -1
  55. package/dist/authorization/command-line.js +1 -1
  56. package/dist/authorization/gate.js +1 -1
  57. package/dist/authorization/gate.js.map +1 -1
  58. package/dist/authorization/permission-presets.d.ts +4 -4
  59. package/dist/authorization/permission-presets.d.ts.map +1 -1
  60. package/dist/authorization/permission-presets.js +2 -2
  61. package/dist/bridge/a2a/client.d.ts +1 -1
  62. package/dist/bridge/a2a/client.js +2 -2
  63. package/dist/bridge/a2a/client.js.map +1 -1
  64. package/dist/bridge/a2a/context.d.ts +26 -0
  65. package/dist/bridge/a2a/context.d.ts.map +1 -0
  66. package/dist/bridge/a2a/context.js +20 -0
  67. package/dist/bridge/a2a/context.js.map +1 -0
  68. package/dist/bridge/a2a/index.d.ts +4 -2
  69. package/dist/bridge/a2a/index.d.ts.map +1 -1
  70. package/dist/bridge/a2a/index.js +6 -2
  71. package/dist/bridge/a2a/index.js.map +1 -1
  72. package/dist/bridge/a2a/mapper.d.ts +12 -4
  73. package/dist/bridge/a2a/mapper.d.ts.map +1 -1
  74. package/dist/bridge/a2a/mapper.js +38 -31
  75. package/dist/bridge/a2a/mapper.js.map +1 -1
  76. package/dist/bridge/a2a/task.d.ts +39 -7
  77. package/dist/bridge/a2a/task.d.ts.map +1 -1
  78. package/dist/bridge/a2a/task.js +52 -31
  79. package/dist/bridge/a2a/task.js.map +1 -1
  80. package/dist/bridge/acp/permission.d.ts +2 -2
  81. package/dist/bridge/acp/server.d.ts +22 -8
  82. package/dist/bridge/acp/server.d.ts.map +1 -1
  83. package/dist/bridge/acp/server.js +18 -5
  84. package/dist/bridge/acp/server.js.map +1 -1
  85. package/dist/bridge/acp/update.d.ts +4 -4
  86. package/dist/bridge/acp/update.d.ts.map +1 -1
  87. package/dist/bridge/acp/update.js +6 -6
  88. package/dist/bridge/acp/update.js.map +1 -1
  89. package/dist/bridge/external-session.d.ts +43 -0
  90. package/dist/bridge/external-session.d.ts.map +1 -0
  91. package/dist/bridge/external-session.js +28 -0
  92. package/dist/bridge/external-session.js.map +1 -0
  93. package/dist/bridge/sse/index.d.ts +1 -1
  94. package/dist/bridge/sse/index.d.ts.map +1 -1
  95. package/dist/bridge/sse/index.js +1 -1
  96. package/dist/bridge/sse/index.js.map +1 -1
  97. package/dist/bridge/sse/mapper.d.ts +21 -13
  98. package/dist/bridge/sse/mapper.d.ts.map +1 -1
  99. package/dist/bridge/sse/mapper.js +99 -129
  100. package/dist/bridge/sse/mapper.js.map +1 -1
  101. package/dist/bus/breaker.d.ts +6 -6
  102. package/dist/bus/breaker.d.ts.map +1 -1
  103. package/dist/bus/breaker.js +28 -27
  104. package/dist/bus/breaker.js.map +1 -1
  105. package/dist/bus/index.d.ts +2 -2
  106. package/dist/bus/index.d.ts.map +1 -1
  107. package/dist/bus/index.js +6 -6
  108. package/dist/bus/index.js.map +1 -1
  109. package/dist/bus/lock.d.ts +5 -5
  110. package/dist/bus/lock.d.ts.map +1 -1
  111. package/dist/bus/lock.js.map +1 -1
  112. package/dist/bus/ownership.d.ts +8 -8
  113. package/dist/bus/ownership.d.ts.map +1 -1
  114. package/dist/bus/ownership.js.map +1 -1
  115. package/dist/compaction/consolidation.d.ts +23 -11
  116. package/dist/compaction/consolidation.d.ts.map +1 -1
  117. package/dist/compaction/consolidation.js +43 -13
  118. package/dist/compaction/consolidation.js.map +1 -1
  119. package/dist/compaction/context-window.d.ts +4 -4
  120. package/dist/compaction/context-window.js +4 -4
  121. package/dist/compaction/index.d.ts +1 -1
  122. package/dist/compaction/index.d.ts.map +1 -1
  123. package/dist/compaction/index.js +2 -2
  124. package/dist/compaction/index.js.map +1 -1
  125. package/dist/compaction/manager.d.ts +4 -4
  126. package/dist/compaction/manager.js +4 -4
  127. package/dist/compaction/manual.d.ts +2 -2
  128. package/dist/compaction/manual.js +3 -3
  129. package/dist/compaction/manual.js.map +1 -1
  130. package/dist/compaction/plan.d.ts +5 -5
  131. package/dist/compaction/plan.js +4 -4
  132. package/dist/compaction/plan.js.map +1 -1
  133. package/dist/compaction/reducer.d.ts +8 -8
  134. package/dist/compaction/reducer.d.ts.map +1 -1
  135. package/dist/compaction/retention.js +2 -2
  136. package/dist/compaction/salience/bm25.d.ts +2 -2
  137. package/dist/compaction/salience/bm25.js +2 -2
  138. package/dist/compaction/salience/goal.d.ts +3 -3
  139. package/dist/compaction/salience/goal.js +3 -3
  140. package/dist/compaction/salience/minhash.d.ts +1 -1
  141. package/dist/compaction/salience/minhash.js +1 -1
  142. package/dist/compaction/salience/score.d.ts +2 -2
  143. package/dist/compaction/salience/score.js +3 -3
  144. package/dist/compaction/salience/score.js.map +1 -1
  145. package/dist/compaction/salience/tokenize.d.ts +1 -1
  146. package/dist/compaction/salience/tokenize.js +1 -1
  147. package/dist/compaction/verifier.d.ts +6 -6
  148. package/dist/compaction/verifier.js +5 -5
  149. package/dist/compaction/verifier.js.map +1 -1
  150. package/dist/compaction/wire.d.ts +1 -1
  151. package/dist/config/registry.d.ts +4 -4
  152. package/dist/config/registry.js +2 -2
  153. package/dist/config/runtime.d.ts +24 -24
  154. package/dist/config/runtime.js +3 -3
  155. package/dist/connector/http-operation.d.ts +1 -1
  156. package/dist/connector/http-operation.js +1 -1
  157. package/dist/connector/mcp/adapter.js +1 -1
  158. package/dist/connector/mcp/client.d.ts +1 -1
  159. package/dist/connector/mcp/client.js +1 -1
  160. package/dist/connector/mcp/discovery.d.ts +1 -1
  161. package/dist/connector/mcp/discovery.js +1 -1
  162. package/dist/connector/mcp/discovery.js.map +1 -1
  163. package/dist/connector/mcp/policy.d.ts +1 -1
  164. package/dist/connector/mcp/prompt-adapter.d.ts +1 -1
  165. package/dist/connector/mcp/prompt-adapter.js +3 -3
  166. package/dist/connector/mcp/prompt-adapter.js.map +1 -1
  167. package/dist/constants/a2a/index.d.ts +8 -2
  168. package/dist/constants/a2a/index.d.ts.map +1 -1
  169. package/dist/constants/a2a/index.js +9 -2
  170. package/dist/constants/a2a/index.js.map +1 -1
  171. package/dist/constants/continuation.d.ts +1 -1
  172. package/dist/constants/continuation.js +1 -1
  173. package/dist/constants/index.d.ts +0 -1
  174. package/dist/constants/index.d.ts.map +1 -1
  175. package/dist/constants/index.js +0 -1
  176. package/dist/constants/index.js.map +1 -1
  177. package/dist/constants/limits.d.ts +2 -2
  178. package/dist/constants/limits.js +2 -2
  179. package/dist/constants/telemetry/index.d.ts +9 -3
  180. package/dist/constants/telemetry/index.d.ts.map +1 -1
  181. package/dist/constants/telemetry/index.js +14 -12
  182. package/dist/constants/telemetry/index.js.map +1 -1
  183. package/dist/constants/tools/index.d.ts +2 -2
  184. package/dist/constants/tools/index.js +2 -2
  185. package/dist/contracts/a2a.d.ts +2 -2
  186. package/dist/contracts/api.d.ts +11 -126
  187. package/dist/contracts/api.d.ts.map +1 -1
  188. package/dist/contracts/index.d.ts +3 -2
  189. package/dist/contracts/index.d.ts.map +1 -1
  190. package/dist/contracts/index.js +7 -2
  191. package/dist/contracts/index.js.map +1 -1
  192. package/dist/contracts/schemas.d.ts +6 -165
  193. package/dist/contracts/schemas.d.ts.map +1 -1
  194. package/dist/contracts/schemas.js +6 -36
  195. package/dist/contracts/schemas.js.map +1 -1
  196. package/dist/contracts/session/api.d.ts +94 -0
  197. package/dist/contracts/session/api.d.ts.map +1 -0
  198. package/dist/contracts/session/api.js +10 -0
  199. package/dist/contracts/session/api.js.map +1 -0
  200. package/dist/contracts/session/index.d.ts +7 -0
  201. package/dist/contracts/session/index.d.ts.map +1 -0
  202. package/dist/contracts/session/index.js +7 -0
  203. package/dist/contracts/session/index.js.map +1 -0
  204. package/dist/contracts/session/schemas.d.ts +173 -0
  205. package/dist/contracts/session/schemas.d.ts.map +1 -0
  206. package/dist/contracts/session/schemas.js +52 -0
  207. package/dist/contracts/session/schemas.js.map +1 -0
  208. package/dist/contracts/session/turn-status.d.ts +45 -0
  209. package/dist/contracts/session/turn-status.d.ts.map +1 -0
  210. package/dist/contracts/session/turn-status.js +46 -0
  211. package/dist/contracts/session/turn-status.js.map +1 -0
  212. package/dist/contracts/session/turn.d.ts +64 -0
  213. package/dist/contracts/session/turn.d.ts.map +1 -0
  214. package/dist/contracts/session/turn.js +2 -0
  215. package/dist/contracts/session/turn.js.map +1 -0
  216. package/dist/directory/derive-supervisor.d.ts +1 -1
  217. package/dist/directory/derive-supervisor.js +2 -2
  218. package/dist/directory/derive-supervisor.js.map +1 -1
  219. package/dist/directory/derive.d.ts +2 -2
  220. package/dist/directory/derive.d.ts.map +1 -1
  221. package/dist/directory/derive.js +2 -2
  222. package/dist/directory/derive.js.map +1 -1
  223. package/dist/directory/index.d.ts +2 -2
  224. package/dist/directory/index.d.ts.map +1 -1
  225. package/dist/directory/index.js +1 -1
  226. package/dist/directory/index.js.map +1 -1
  227. package/dist/directory/load.js +2 -2
  228. package/dist/directory/load.js.map +1 -1
  229. package/dist/directory/types.d.ts +2 -2
  230. package/dist/directory/types.d.ts.map +1 -1
  231. package/dist/eval/experiment.d.ts +5 -5
  232. package/dist/eval/experiment.d.ts.map +1 -1
  233. package/dist/eval/experiment.js +18 -18
  234. package/dist/eval/experiment.js.map +1 -1
  235. package/dist/eval/from-turn.d.ts +30 -0
  236. package/dist/eval/from-turn.d.ts.map +1 -0
  237. package/dist/eval/from-turn.js +46 -0
  238. package/dist/eval/from-turn.js.map +1 -0
  239. package/dist/eval/harness-verification.js +7 -7
  240. package/dist/eval/harness-verification.js.map +1 -1
  241. package/dist/eval/index.d.ts +2 -2
  242. package/dist/eval/index.d.ts.map +1 -1
  243. package/dist/eval/index.js +1 -1
  244. package/dist/eval/index.js.map +1 -1
  245. package/dist/eval/judge.d.ts +3 -3
  246. package/dist/eval/judge.d.ts.map +1 -1
  247. package/dist/eval/judge.js +6 -6
  248. package/dist/eval/judge.js.map +1 -1
  249. package/dist/eval/scorers.d.ts +8 -8
  250. package/dist/eval/scorers.d.ts.map +1 -1
  251. package/dist/eval/scorers.js +21 -21
  252. package/dist/eval/scorers.js.map +1 -1
  253. package/dist/eval/types.d.ts +12 -12
  254. package/dist/eval/types.d.ts.map +1 -1
  255. package/dist/eval/uncertainty.d.ts +2 -2
  256. package/dist/eval/uncertainty.js +2 -2
  257. package/dist/execution/code-runtime/types.d.ts +4 -4
  258. package/dist/execution/code-runtime/types.js +2 -2
  259. package/dist/execution/code-runtime/worker.d.ts +1 -1
  260. package/dist/execution/code-runtime/worker.js +1 -1
  261. package/dist/invariants/index.d.ts +1 -1
  262. package/dist/manager/agent/child-session.d.ts +49 -0
  263. package/dist/manager/agent/child-session.d.ts.map +1 -0
  264. package/dist/manager/agent/child-session.js +94 -0
  265. package/dist/manager/agent/child-session.js.map +1 -0
  266. package/dist/manager/agent/lifecycle.d.ts +90 -13
  267. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  268. package/dist/manager/agent/lifecycle.js +332 -88
  269. package/dist/manager/agent/lifecycle.js.map +1 -1
  270. package/dist/manager/index.d.ts +1 -2
  271. package/dist/manager/index.d.ts.map +1 -1
  272. package/dist/manager/index.js +1 -2
  273. package/dist/manager/index.js.map +1 -1
  274. package/dist/manager/plan/lifecycle.d.ts +11 -7
  275. package/dist/manager/plan/lifecycle.d.ts.map +1 -1
  276. package/dist/manager/plan/lifecycle.js +12 -9
  277. package/dist/manager/plan/lifecycle.js.map +1 -1
  278. package/dist/manager/resident/consumption.d.ts +12 -6
  279. package/dist/manager/resident/consumption.d.ts.map +1 -1
  280. package/dist/manager/resident/consumption.js +7 -5
  281. package/dist/manager/resident/consumption.js.map +1 -1
  282. package/dist/manager/resident/evidence-recall.d.ts +5 -5
  283. package/dist/manager/resident/evidence-recall.d.ts.map +1 -1
  284. package/dist/manager/resident/evidence-recall.js +9 -9
  285. package/dist/manager/resident/evidence-recall.js.map +1 -1
  286. package/dist/manager/resident/host.d.ts +2 -2
  287. package/dist/manager/resident/host.d.ts.map +1 -1
  288. package/dist/manager/resident/host.js +1 -1
  289. package/dist/manager/resident/learning-cycle.d.ts +8 -4
  290. package/dist/manager/resident/learning-cycle.d.ts.map +1 -1
  291. package/dist/manager/resident/learning-cycle.js +4 -2
  292. package/dist/manager/resident/learning-cycle.js.map +1 -1
  293. package/dist/manager/resident/learning-observation.d.ts +12 -7
  294. package/dist/manager/resident/learning-observation.d.ts.map +1 -1
  295. package/dist/manager/resident/learning-observation.js +8 -4
  296. package/dist/manager/resident/learning-observation.js.map +1 -1
  297. package/dist/manager/resident/learning-store.d.ts +13 -0
  298. package/dist/manager/resident/learning-store.d.ts.map +1 -1
  299. package/dist/manager/resident/learning-store.js +35 -16
  300. package/dist/manager/resident/learning-store.js.map +1 -1
  301. package/dist/manager/resident/learning.d.ts +14 -14
  302. package/dist/manager/resident/outbox.d.ts +4 -4
  303. package/dist/manager/resident/store.d.ts +8 -8
  304. package/dist/manager/resident/tool-evidence.d.ts +15 -10
  305. package/dist/manager/resident/tool-evidence.d.ts.map +1 -1
  306. package/dist/manager/resident/tool-evidence.js +14 -14
  307. package/dist/manager/resident/tool-evidence.js.map +1 -1
  308. package/dist/manager/session/turn-recorder.d.ts +261 -0
  309. package/dist/manager/session/turn-recorder.d.ts.map +1 -0
  310. package/dist/manager/session/turn-recorder.js +1115 -0
  311. package/dist/manager/session/turn-recorder.js.map +1 -0
  312. package/dist/plugin/lifecycle.d.ts +4 -4
  313. package/dist/plugin/lifecycle.d.ts.map +1 -1
  314. package/dist/plugin/lifecycle.js +17 -10
  315. package/dist/plugin/lifecycle.js.map +1 -1
  316. package/dist/plugin/shell-hook.d.ts +35 -12
  317. package/dist/plugin/shell-hook.d.ts.map +1 -1
  318. package/dist/plugin/shell-hook.js +52 -20
  319. package/dist/plugin/shell-hook.js.map +1 -1
  320. package/dist/pricing/index.d.ts +4 -4
  321. package/dist/pricing/index.js +5 -5
  322. package/dist/pricing/index.js.map +1 -1
  323. package/dist/probe/context.d.ts +3 -2
  324. package/dist/probe/context.d.ts.map +1 -1
  325. package/dist/probe/context.js +2 -1
  326. package/dist/probe/context.js.map +1 -1
  327. package/dist/probe/registry.js +1 -1
  328. package/dist/probe/registry.js.map +1 -1
  329. package/dist/prompt/coding-agent-doctrine.d.ts +1 -1
  330. package/dist/prompt/coding-agent-doctrine.js +1 -1
  331. package/dist/prompt/contributions.d.ts +27 -6
  332. package/dist/prompt/contributions.d.ts.map +1 -1
  333. package/dist/prompt/contributions.js +1 -1
  334. package/dist/prompt/contributions.js.map +1 -1
  335. package/dist/prompt/resident-learning.js +2 -2
  336. package/dist/prompt/resident-learning.js.map +1 -1
  337. package/dist/provider/collect-chat-completion.d.ts +2 -2
  338. package/dist/provider/collect-chat-completion.js +3 -3
  339. package/dist/provider/collect-chat-completion.js.map +1 -1
  340. package/dist/provider/conformance.d.ts +8 -1
  341. package/dist/provider/conformance.d.ts.map +1 -1
  342. package/dist/provider/conformance.js +13 -1
  343. package/dist/provider/conformance.js.map +1 -1
  344. package/dist/provider/errors.d.ts +1 -1
  345. package/dist/provider/errors.js +2 -2
  346. package/dist/provider/fallback.d.ts +4 -4
  347. package/dist/provider/fallback.js +6 -6
  348. package/dist/provider/fallback.js.map +1 -1
  349. package/dist/provider/idle-timeout.d.ts +2 -2
  350. package/dist/provider/idle-timeout.d.ts.map +1 -1
  351. package/dist/provider/idle-timeout.js +3 -3
  352. package/dist/provider/idle-timeout.js.map +1 -1
  353. package/dist/provider/instrumentation.d.ts +5 -2
  354. package/dist/provider/instrumentation.d.ts.map +1 -1
  355. package/dist/provider/instrumentation.js +9 -5
  356. package/dist/provider/instrumentation.js.map +1 -1
  357. package/dist/provider/mock.d.ts +1 -1
  358. package/dist/provider/mock.js +1 -1
  359. package/dist/provider/retry.d.ts +2 -2
  360. package/dist/provider/retry.js +6 -6
  361. package/dist/provider/retry.js.map +1 -1
  362. package/dist/provider/stream-text.d.ts +1 -1
  363. package/dist/provider/stream-text.d.ts.map +1 -1
  364. package/dist/provider/stream-text.js +1 -1
  365. package/dist/provider/stream-text.js.map +1 -1
  366. package/dist/provider/thinking-support.js +2 -2
  367. package/dist/provider/thinking-support.js.map +1 -1
  368. package/dist/provider/token-budget.d.ts +2 -2
  369. package/dist/provider/token-budget.d.ts.map +1 -1
  370. package/dist/provider/token-budget.js.map +1 -1
  371. package/dist/public-runtime.d.ts +69 -55
  372. package/dist/public-runtime.d.ts.map +1 -1
  373. package/dist/public-runtime.js +104 -99
  374. package/dist/public-runtime.js.map +1 -1
  375. package/dist/public-tools.d.ts +2 -2
  376. package/dist/public-tools.d.ts.map +1 -1
  377. package/dist/public-tools.js +7 -7
  378. package/dist/public-tools.js.map +1 -1
  379. package/dist/public-types.d.ts +18 -16
  380. package/dist/public-types.d.ts.map +1 -1
  381. package/dist/rag/embedding.js +1 -1
  382. package/dist/rag/embedding.js.map +1 -1
  383. package/dist/read-model/index.d.ts +2 -2
  384. package/dist/read-model/index.d.ts.map +1 -1
  385. package/dist/read-model/index.js +1 -1
  386. package/dist/read-model/index.js.map +1 -1
  387. package/dist/read-model/registry.d.ts +11 -11
  388. package/dist/read-model/registry.d.ts.map +1 -1
  389. package/dist/read-model/registry.js +2 -2
  390. package/dist/read-model/registry.js.map +1 -1
  391. package/dist/read-model/session-status.d.ts +34 -0
  392. package/dist/read-model/session-status.d.ts.map +1 -0
  393. package/dist/read-model/session-status.js +58 -0
  394. package/dist/read-model/session-status.js.map +1 -0
  395. package/dist/registry/command/kernel-commands.d.ts +4 -4
  396. package/dist/registry/command/kernel-commands.d.ts.map +1 -1
  397. package/dist/registry/command/kernel-commands.js +6 -6
  398. package/dist/registry/command/kernel-commands.js.map +1 -1
  399. package/dist/registry/tool/dialect.js +1 -1
  400. package/dist/registry/tool/execute.d.ts +2 -2
  401. package/dist/registry/tool/execute.d.ts.map +1 -1
  402. package/dist/registry/tool/execute.js +19 -7
  403. package/dist/registry/tool/execute.js.map +1 -1
  404. package/dist/registry/tool/portable.d.ts +1 -1
  405. package/dist/registry/tool/portable.js +1 -1
  406. package/dist/registry/tool/presentation.d.ts +1 -1
  407. package/dist/registry/tool/presentation.js +1 -1
  408. package/dist/registry/tool/schema.js +1 -1
  409. package/dist/registry/tool/screen.js +3 -3
  410. package/dist/registry/tool/screen.js.map +1 -1
  411. package/dist/runtime/bidi/index.d.ts +2 -2
  412. package/dist/runtime/bidi/index.d.ts.map +1 -1
  413. package/dist/runtime/bidi/index.js +1 -1
  414. package/dist/runtime/bidi/index.js.map +1 -1
  415. package/dist/runtime/bidi/session.d.ts +14 -11
  416. package/dist/runtime/bidi/session.d.ts.map +1 -1
  417. package/dist/runtime/bidi/session.js +27 -21
  418. package/dist/runtime/bidi/session.js.map +1 -1
  419. package/dist/runtime/jobs/awaited-jobs.d.ts +15 -15
  420. package/dist/runtime/jobs/awaited-jobs.d.ts.map +1 -1
  421. package/dist/runtime/jobs/awaited-jobs.js +13 -13
  422. package/dist/runtime/jobs/awaited-jobs.js.map +1 -1
  423. package/dist/runtime/jobs/registry.d.ts +10 -10
  424. package/dist/runtime/jobs/registry.d.ts.map +1 -1
  425. package/dist/runtime/jobs/registry.js +5 -5
  426. package/dist/runtime/jobs/registry.js.map +1 -1
  427. package/dist/runtime/query/abandon-turn.d.ts +35 -0
  428. package/dist/runtime/query/abandon-turn.d.ts.map +1 -0
  429. package/dist/runtime/query/abandon-turn.js +81 -0
  430. package/dist/runtime/query/abandon-turn.js.map +1 -0
  431. package/dist/runtime/query/approval-policy.d.ts +10 -10
  432. package/dist/runtime/query/approval-policy.d.ts.map +1 -1
  433. package/dist/runtime/query/approval-policy.js +5 -5
  434. package/dist/runtime/query/approval-policy.js.map +1 -1
  435. package/dist/runtime/query/callback-inference.d.ts +1 -1
  436. package/dist/runtime/query/callback-inference.d.ts.map +1 -1
  437. package/dist/runtime/query/callback-inference.js +12 -6
  438. package/dist/runtime/query/callback-inference.js.map +1 -1
  439. package/dist/runtime/query/cancelled-before-start.d.ts +20 -20
  440. package/dist/runtime/query/cancelled-before-start.d.ts.map +1 -1
  441. package/dist/runtime/query/cancelled-before-start.js +72 -55
  442. package/dist/runtime/query/cancelled-before-start.js.map +1 -1
  443. package/dist/runtime/query/checkpoint.d.ts +153 -220
  444. package/dist/runtime/query/checkpoint.d.ts.map +1 -1
  445. package/dist/runtime/query/checkpoint.js +399 -370
  446. package/dist/runtime/query/checkpoint.js.map +1 -1
  447. package/dist/runtime/query/compact-session.d.ts +20 -0
  448. package/dist/runtime/query/compact-session.d.ts.map +1 -0
  449. package/dist/runtime/query/compact-session.js +81 -0
  450. package/dist/runtime/query/compact-session.js.map +1 -0
  451. package/dist/runtime/query/context.d.ts +42 -85
  452. package/dist/runtime/query/context.d.ts.map +1 -1
  453. package/dist/runtime/query/context.js +36 -75
  454. package/dist/runtime/query/context.js.map +1 -1
  455. package/dist/runtime/query/events.d.ts +54 -26
  456. package/dist/runtime/query/events.d.ts.map +1 -1
  457. package/dist/runtime/query/events.js +121 -114
  458. package/dist/runtime/query/events.js.map +1 -1
  459. package/dist/runtime/query/executor/tool-call-admission.d.ts.map +1 -1
  460. package/dist/runtime/query/executor/tool-call-admission.js +6 -5
  461. package/dist/runtime/query/executor/tool-call-admission.js.map +1 -1
  462. package/dist/runtime/query/executor.d.ts +56 -34
  463. package/dist/runtime/query/executor.d.ts.map +1 -1
  464. package/dist/runtime/query/executor.js +165 -85
  465. package/dist/runtime/query/executor.js.map +1 -1
  466. package/dist/runtime/query/file-evidence-seed.d.ts +1 -1
  467. package/dist/runtime/query/file-evidence-seed.d.ts.map +1 -1
  468. package/dist/runtime/query/file-evidence-seed.js +1 -1
  469. package/dist/runtime/query/finalize-turn.d.ts +55 -0
  470. package/dist/runtime/query/finalize-turn.d.ts.map +1 -0
  471. package/dist/runtime/query/finalize-turn.js +129 -0
  472. package/dist/runtime/query/finalize-turn.js.map +1 -0
  473. package/dist/runtime/query/fork/list.d.ts +15 -0
  474. package/dist/runtime/query/fork/list.d.ts.map +1 -0
  475. package/dist/runtime/query/fork/list.js +11 -0
  476. package/dist/runtime/query/fork/list.js.map +1 -0
  477. package/dist/runtime/query/fork/mutate.d.ts +17 -0
  478. package/dist/runtime/query/fork/mutate.d.ts.map +1 -0
  479. package/dist/runtime/query/fork/mutate.js +69 -0
  480. package/dist/runtime/query/fork/mutate.js.map +1 -0
  481. package/dist/runtime/query/fork/prepare.d.ts +52 -0
  482. package/dist/runtime/query/fork/prepare.d.ts.map +1 -0
  483. package/dist/runtime/query/fork/prepare.js +43 -0
  484. package/dist/runtime/query/fork/prepare.js.map +1 -0
  485. package/dist/runtime/query/guard.d.ts +16 -16
  486. package/dist/runtime/query/guard.d.ts.map +1 -1
  487. package/dist/runtime/query/guard.js +16 -16
  488. package/dist/runtime/query/guard.js.map +1 -1
  489. package/dist/runtime/query/guardrail-presets.d.ts +10 -10
  490. package/dist/runtime/query/guardrail-presets.js +12 -12
  491. package/dist/runtime/query/guardrail-presets.js.map +1 -1
  492. package/dist/runtime/query/guardrails.d.ts +4 -4
  493. package/dist/runtime/query/guardrails.js +11 -11
  494. package/dist/runtime/query/guardrails.js.map +1 -1
  495. package/dist/runtime/query/index.d.ts +178 -155
  496. package/dist/runtime/query/index.d.ts.map +1 -1
  497. package/dist/runtime/query/index.js +1294 -1260
  498. package/dist/runtime/query/index.js.map +1 -1
  499. package/dist/runtime/query/iteration/index.d.ts +16 -16
  500. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  501. package/dist/runtime/query/iteration/index.js +285 -243
  502. package/dist/runtime/query/iteration/index.js.map +1 -1
  503. package/dist/runtime/query/iteration/outstanding-work.d.ts +22 -22
  504. package/dist/runtime/query/iteration/outstanding-work.d.ts.map +1 -1
  505. package/dist/runtime/query/iteration/outstanding-work.js +63 -63
  506. package/dist/runtime/query/iteration/outstanding-work.js.map +1 -1
  507. package/dist/runtime/query/iteration/phases/advisory.js +16 -16
  508. package/dist/runtime/query/iteration/phases/advisory.js.map +1 -1
  509. package/dist/runtime/query/iteration/phases/checkpoint.d.ts +2 -2
  510. package/dist/runtime/query/iteration/phases/checkpoint.d.ts.map +1 -1
  511. package/dist/runtime/query/iteration/phases/checkpoint.js +25 -8
  512. package/dist/runtime/query/iteration/phases/checkpoint.js.map +1 -1
  513. package/dist/runtime/query/iteration/phases/compaction.d.ts +2 -2
  514. package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
  515. package/dist/runtime/query/iteration/phases/compaction.js +74 -72
  516. package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
  517. package/dist/runtime/query/iteration/phases/context.d.ts +32 -29
  518. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  519. package/dist/runtime/query/iteration/phases/context.js +29 -29
  520. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  521. package/dist/runtime/query/iteration/phases/plan.d.ts +2 -2
  522. package/dist/runtime/query/iteration/phases/plan.d.ts.map +1 -1
  523. package/dist/runtime/query/iteration/phases/plan.js +5 -4
  524. package/dist/runtime/query/iteration/phases/plan.js.map +1 -1
  525. package/dist/runtime/query/iteration/phases/tool-review.d.ts +2 -2
  526. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  527. package/dist/runtime/query/iteration/phases/tool-review.js +129 -24
  528. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  529. package/dist/runtime/query/iteration/phases/working-memory.d.ts +27 -3
  530. package/dist/runtime/query/iteration/phases/working-memory.d.ts.map +1 -1
  531. package/dist/runtime/query/iteration/phases/working-memory.js +54 -20
  532. package/dist/runtime/query/iteration/phases/working-memory.js.map +1 -1
  533. package/dist/runtime/query/iteration/step-context.d.ts +11 -0
  534. package/dist/runtime/query/iteration/step-context.d.ts.map +1 -0
  535. package/dist/runtime/query/iteration/step-context.js +14 -0
  536. package/dist/runtime/query/iteration/step-context.js.map +1 -0
  537. package/dist/runtime/query/iteration/step-shaping.d.ts +4 -3
  538. package/dist/runtime/query/iteration/step-shaping.d.ts.map +1 -1
  539. package/dist/runtime/query/iteration/step-shaping.js +20 -19
  540. package/dist/runtime/query/iteration/step-shaping.js.map +1 -1
  541. package/dist/runtime/query/iteration/stream-turn.d.ts +5 -3
  542. package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
  543. package/dist/runtime/query/iteration/stream-turn.js +32 -28
  544. package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
  545. package/dist/runtime/query/plugin-hooks.js +1 -1
  546. package/dist/runtime/query/plugin-hooks.js.map +1 -1
  547. package/dist/runtime/query/prepare-turn.d.ts +105 -0
  548. package/dist/runtime/query/prepare-turn.d.ts.map +1 -0
  549. package/dist/runtime/query/prepare-turn.js +779 -0
  550. package/dist/runtime/query/prepare-turn.js.map +1 -0
  551. package/dist/runtime/query/project-instructions.d.ts +5 -4
  552. package/dist/runtime/query/project-instructions.d.ts.map +1 -1
  553. package/dist/runtime/query/project-instructions.js.map +1 -1
  554. package/dist/runtime/query/prompt-cache.js +1 -1
  555. package/dist/runtime/query/prompt-cache.js.map +1 -1
  556. package/dist/runtime/query/prompt.d.ts +3 -3
  557. package/dist/runtime/query/prompt.d.ts.map +1 -1
  558. package/dist/runtime/query/prompt.js +3 -3
  559. package/dist/runtime/query/prompt.js.map +1 -1
  560. package/dist/runtime/query/question-park.d.ts +7 -7
  561. package/dist/runtime/query/question-park.d.ts.map +1 -1
  562. package/dist/runtime/query/question-park.js +5 -5
  563. package/dist/runtime/query/question-park.js.map +1 -1
  564. package/dist/runtime/query/release-turn.d.ts +53 -0
  565. package/dist/runtime/query/release-turn.d.ts.map +1 -0
  566. package/dist/runtime/query/release-turn.js +95 -0
  567. package/dist/runtime/query/release-turn.js.map +1 -0
  568. package/dist/runtime/query/repeat-call.d.ts +2 -2
  569. package/dist/runtime/query/repeat-call.js +7 -7
  570. package/dist/runtime/query/repeat-call.js.map +1 -1
  571. package/dist/runtime/query/result.d.ts +25 -17
  572. package/dist/runtime/query/result.d.ts.map +1 -1
  573. package/dist/runtime/query/result.js +110 -115
  574. package/dist/runtime/query/result.js.map +1 -1
  575. package/dist/runtime/query/resume-pending.d.ts +34 -17
  576. package/dist/runtime/query/resume-pending.d.ts.map +1 -1
  577. package/dist/runtime/query/resume-pending.js +70 -30
  578. package/dist/runtime/query/resume-pending.js.map +1 -1
  579. package/dist/runtime/query/resume-session.d.ts +65 -0
  580. package/dist/runtime/query/resume-session.d.ts.map +1 -0
  581. package/dist/runtime/query/resume-session.js +88 -0
  582. package/dist/runtime/query/resume-session.js.map +1 -0
  583. package/dist/runtime/query/review-policy.d.ts +57 -16
  584. package/dist/runtime/query/review-policy.d.ts.map +1 -1
  585. package/dist/runtime/query/review-policy.js +115 -11
  586. package/dist/runtime/query/review-policy.js.map +1 -1
  587. package/dist/runtime/query/sandbox-lifecycle.d.ts +5 -5
  588. package/dist/runtime/query/sandbox-lifecycle.d.ts.map +1 -1
  589. package/dist/runtime/query/sandbox-lifecycle.js +4 -4
  590. package/dist/runtime/query/sandbox-lifecycle.js.map +1 -1
  591. package/dist/runtime/query/session-storage.d.ts +75 -0
  592. package/dist/runtime/query/session-storage.d.ts.map +1 -0
  593. package/dist/runtime/query/session-storage.js +236 -0
  594. package/dist/runtime/query/session-storage.js.map +1 -0
  595. package/dist/runtime/query/steering.d.ts +9 -3
  596. package/dist/runtime/query/steering.d.ts.map +1 -1
  597. package/dist/runtime/query/steering.js +12 -2
  598. package/dist/runtime/query/steering.js.map +1 -1
  599. package/dist/runtime/query/token-budget.d.ts +19 -5
  600. package/dist/runtime/query/token-budget.d.ts.map +1 -1
  601. package/dist/runtime/query/token-budget.js +43 -74
  602. package/dist/runtime/query/token-budget.js.map +1 -1
  603. package/dist/runtime/query/tool-call-budget.d.ts +6 -5
  604. package/dist/runtime/query/tool-call-budget.d.ts.map +1 -1
  605. package/dist/runtime/query/tool-call-budget.js +10 -12
  606. package/dist/runtime/query/tool-call-budget.js.map +1 -1
  607. package/dist/runtime/query/tool-executions.d.ts +26 -0
  608. package/dist/runtime/query/tool-executions.d.ts.map +1 -0
  609. package/dist/runtime/query/tool-executions.js +66 -0
  610. package/dist/runtime/query/tool-executions.js.map +1 -0
  611. package/dist/runtime/query/tool-grants.d.ts +3 -3
  612. package/dist/runtime/query/tool-grants.js +3 -3
  613. package/dist/runtime/query/tool-output-budget.d.ts +2 -2
  614. package/dist/runtime/query/tool-output-budget.js +4 -4
  615. package/dist/runtime/query/tool-output-budget.js.map +1 -1
  616. package/dist/runtime/query/tool-pause.d.ts +4 -3
  617. package/dist/runtime/query/tool-pause.d.ts.map +1 -1
  618. package/dist/runtime/query/tool-pause.js +5 -4
  619. package/dist/runtime/query/tool-pause.js.map +1 -1
  620. package/dist/runtime/query/tooling.d.ts +15 -10
  621. package/dist/runtime/query/tooling.d.ts.map +1 -1
  622. package/dist/runtime/query/tooling.js +7 -4
  623. package/dist/runtime/query/tooling.js.map +1 -1
  624. package/dist/runtime/query/turn-state.d.ts +56 -0
  625. package/dist/runtime/query/turn-state.d.ts.map +1 -0
  626. package/dist/runtime/query/turn-state.js +99 -0
  627. package/dist/runtime/query/turn-state.js.map +1 -0
  628. package/dist/sandbox/isolation.d.ts +1 -1
  629. package/dist/sandbox/isolation.js +2 -2
  630. package/dist/sandbox/isolation.js.map +1 -1
  631. package/dist/sandbox/provider/local.d.ts +2 -2
  632. package/dist/sandbox/provider/local.js +7 -7
  633. package/dist/sandbox/provider/local.js.map +1 -1
  634. package/dist/scheduler/completion-inbox.d.ts +21 -21
  635. package/dist/scheduler/completion-inbox.js +36 -36
  636. package/dist/scheduler/completion-inbox.js.map +1 -1
  637. package/dist/scheduler/delegating.d.ts +6 -3
  638. package/dist/scheduler/delegating.d.ts.map +1 -1
  639. package/dist/scheduler/delegating.js +15 -8
  640. package/dist/scheduler/delegating.js.map +1 -1
  641. package/dist/scheduler/local.d.ts +10 -8
  642. package/dist/scheduler/local.d.ts.map +1 -1
  643. package/dist/scheduler/local.js +37 -11
  644. package/dist/scheduler/local.js.map +1 -1
  645. package/dist/session/events/index.d.ts +3 -3
  646. package/dist/session/events/index.d.ts.map +1 -1
  647. package/dist/session/events/index.js +4 -8
  648. package/dist/session/events/index.js.map +1 -1
  649. package/dist/session/handoff/broadcast.d.ts +3 -3
  650. package/dist/session/handoff/broadcast.d.ts.map +1 -1
  651. package/dist/session/handoff/broadcast.js +4 -4
  652. package/dist/session/handoff/broadcast.js.map +1 -1
  653. package/dist/session/handoff/events.d.ts +1 -1
  654. package/dist/session/handoff/events.js +1 -1
  655. package/dist/session/handoff/index.d.ts +1 -1
  656. package/dist/session/handoff/index.d.ts.map +1 -1
  657. package/dist/session/handoff/single.d.ts +12 -12
  658. package/dist/session/handoff/single.d.ts.map +1 -1
  659. package/dist/session/handoff/single.js +9 -9
  660. package/dist/session/handoff/single.js.map +1 -1
  661. package/dist/session/handoff/version.d.ts +7 -7
  662. package/dist/session/handoff/version.d.ts.map +1 -1
  663. package/dist/session/handoff/version.js +2 -2
  664. package/dist/session/handoff/version.js.map +1 -1
  665. package/dist/session/home.d.ts +23 -0
  666. package/dist/session/home.d.ts.map +1 -0
  667. package/dist/session/home.js +45 -0
  668. package/dist/session/home.js.map +1 -0
  669. package/dist/session/index.d.ts +1 -0
  670. package/dist/session/index.d.ts.map +1 -1
  671. package/dist/session/index.js +1 -0
  672. package/dist/session/index.js.map +1 -1
  673. package/dist/session/log-hash.d.ts +25 -0
  674. package/dist/session/log-hash.d.ts.map +1 -0
  675. package/dist/session/log-hash.js +82 -0
  676. package/dist/session/log-hash.js.map +1 -0
  677. package/dist/session/messages.d.ts +11 -0
  678. package/dist/session/messages.d.ts.map +1 -0
  679. package/dist/session/messages.js +32 -0
  680. package/dist/session/messages.js.map +1 -0
  681. package/dist/session/paths.d.ts +168 -0
  682. package/dist/session/paths.d.ts.map +1 -0
  683. package/dist/session/paths.js +338 -0
  684. package/dist/session/paths.js.map +1 -0
  685. package/dist/session/retention/archive.d.ts +8 -1
  686. package/dist/session/retention/archive.d.ts.map +1 -1
  687. package/dist/session/retention/archive.js +3 -5
  688. package/dist/session/retention/archive.js.map +1 -1
  689. package/dist/session/status/derive.d.ts +13 -13
  690. package/dist/session/status/derive.d.ts.map +1 -1
  691. package/dist/session/status/derive.js +20 -20
  692. package/dist/session/status/derive.js.map +1 -1
  693. package/dist/session/workspace/git-worktree.d.ts +8 -1
  694. package/dist/session/workspace/git-worktree.d.ts.map +1 -1
  695. package/dist/session/workspace/git-worktree.js +29 -1
  696. package/dist/session/workspace/git-worktree.js.map +1 -1
  697. package/dist/session/workspace/index.d.ts +2 -4
  698. package/dist/session/workspace/index.d.ts.map +1 -1
  699. package/dist/session/workspace/index.js +2 -3
  700. package/dist/session/workspace/index.js.map +1 -1
  701. package/dist/session/workspace/shared-session.d.ts +112 -0
  702. package/dist/session/workspace/shared-session.d.ts.map +1 -0
  703. package/dist/session/workspace/shared-session.js +290 -0
  704. package/dist/session/workspace/shared-session.js.map +1 -0
  705. package/dist/session-query/index.d.ts +67 -0
  706. package/dist/session-query/index.d.ts.map +1 -0
  707. package/dist/session-query/index.js +100 -0
  708. package/dist/session-query/index.js.map +1 -0
  709. package/dist/skills/registry.d.ts +1 -1
  710. package/dist/skills/registry.js +1 -1
  711. package/dist/store/activity/memory.d.ts +3 -3
  712. package/dist/store/activity/memory.d.ts.map +1 -1
  713. package/dist/store/activity/memory.js +4 -4
  714. package/dist/store/activity/memory.js.map +1 -1
  715. package/dist/store/attachment/index.d.ts +4 -4
  716. package/dist/store/attachment/index.d.ts.map +1 -1
  717. package/dist/store/attachment/index.js +3 -3
  718. package/dist/store/attachment/index.js.map +1 -1
  719. package/dist/store/budget/disk.d.ts +59 -0
  720. package/dist/store/budget/disk.d.ts.map +1 -0
  721. package/dist/store/budget/disk.js +179 -0
  722. package/dist/store/budget/disk.js.map +1 -0
  723. package/dist/store/budget/index.d.ts +6 -0
  724. package/dist/store/budget/index.d.ts.map +1 -0
  725. package/dist/store/budget/index.js +6 -0
  726. package/dist/store/budget/index.js.map +1 -0
  727. package/dist/store/budget/ledger.d.ts +156 -0
  728. package/dist/store/budget/ledger.d.ts.map +1 -0
  729. package/dist/store/budget/ledger.js +683 -0
  730. package/dist/store/budget/ledger.js.map +1 -0
  731. package/dist/store/budget/memory.d.ts +18 -0
  732. package/dist/store/budget/memory.d.ts.map +1 -0
  733. package/dist/store/budget/memory.js +31 -0
  734. package/dist/store/budget/memory.js.map +1 -0
  735. package/dist/store/checkpoint/contract.d.ts +140 -0
  736. package/dist/store/checkpoint/contract.d.ts.map +1 -0
  737. package/dist/store/checkpoint/contract.js +91 -0
  738. package/dist/store/checkpoint/contract.js.map +1 -0
  739. package/dist/store/checkpoint/disk.d.ts +44 -0
  740. package/dist/store/checkpoint/disk.d.ts.map +1 -0
  741. package/dist/store/checkpoint/disk.js +168 -0
  742. package/dist/store/checkpoint/disk.js.map +1 -0
  743. package/dist/store/checkpoint/index.d.ts +9 -0
  744. package/dist/store/checkpoint/index.d.ts.map +1 -0
  745. package/dist/store/checkpoint/index.js +7 -0
  746. package/dist/store/checkpoint/index.js.map +1 -0
  747. package/dist/store/checkpoint/memory.d.ts +27 -0
  748. package/dist/store/checkpoint/memory.d.ts.map +1 -0
  749. package/dist/store/checkpoint/memory.js +80 -0
  750. package/dist/store/checkpoint/memory.js.map +1 -0
  751. package/dist/store/checkpoint/prune.d.ts +45 -0
  752. package/dist/store/checkpoint/prune.d.ts.map +1 -0
  753. package/dist/store/checkpoint/prune.js +71 -0
  754. package/dist/store/checkpoint/prune.js.map +1 -0
  755. package/dist/store/config/index.d.ts +1 -1
  756. package/dist/store/config/index.js +1 -1
  757. package/dist/store/evidence/disk.d.ts +25 -8
  758. package/dist/store/evidence/disk.d.ts.map +1 -1
  759. package/dist/store/evidence/disk.js +148 -47
  760. package/dist/store/evidence/disk.js.map +1 -1
  761. package/dist/store/evidence/index-page.d.ts +31 -140
  762. package/dist/store/evidence/index-page.d.ts.map +1 -1
  763. package/dist/store/evidence/index-page.js +59 -129
  764. package/dist/store/evidence/index-page.js.map +1 -1
  765. package/dist/store/evidence/source-text.d.ts +7 -6
  766. package/dist/store/evidence/source-text.d.ts.map +1 -1
  767. package/dist/store/evidence/source-text.js +16 -23
  768. package/dist/store/evidence/source-text.js.map +1 -1
  769. package/dist/store/evidence/types.d.ts +38 -39
  770. package/dist/store/evidence/types.d.ts.map +1 -1
  771. package/dist/store/feedback/conformance.d.ts +6 -6
  772. package/dist/store/feedback/conformance.d.ts.map +1 -1
  773. package/dist/store/feedback/conformance.js +30 -29
  774. package/dist/store/feedback/conformance.js.map +1 -1
  775. package/dist/store/feedback/disk.d.ts +20 -19
  776. package/dist/store/feedback/disk.d.ts.map +1 -1
  777. package/dist/store/feedback/disk.js +53 -53
  778. package/dist/store/feedback/disk.js.map +1 -1
  779. package/dist/store/feedback/index.d.ts +1 -1
  780. package/dist/store/feedback/index.d.ts.map +1 -1
  781. package/dist/store/feedback/index.js +1 -1
  782. package/dist/store/feedback/index.js.map +1 -1
  783. package/dist/store/feedback/memory.d.ts +8 -5
  784. package/dist/store/feedback/memory.d.ts.map +1 -1
  785. package/dist/store/feedback/memory.js +0 -0
  786. package/dist/store/feedback/memory.js.map +1 -1
  787. package/dist/store/feedback/types.d.ts +12 -11
  788. package/dist/store/feedback/types.d.ts.map +1 -1
  789. package/dist/store/feedback/types.js +3 -3
  790. package/dist/store/feedback/types.js.map +1 -1
  791. package/dist/store/index.d.ts +7 -8
  792. package/dist/store/index.d.ts.map +1 -1
  793. package/dist/store/index.js +4 -16
  794. package/dist/store/index.js.map +1 -1
  795. package/dist/store/memory/digest.d.ts +15 -0
  796. package/dist/store/memory/digest.d.ts.map +1 -0
  797. package/dist/store/memory/digest.js +27 -0
  798. package/dist/store/memory/digest.js.map +1 -0
  799. package/dist/store/memory/disk.d.ts.map +1 -1
  800. package/dist/store/memory/disk.js +42 -7
  801. package/dist/store/memory/disk.js.map +1 -1
  802. package/dist/store/memory/index-file.d.ts +56 -0
  803. package/dist/store/memory/index-file.d.ts.map +1 -0
  804. package/dist/store/memory/index-file.js +92 -0
  805. package/dist/store/memory/index-file.js.map +1 -0
  806. package/dist/store/memory/index.d.ts.map +1 -1
  807. package/dist/store/memory/index.js +4 -2
  808. package/dist/store/memory/index.js.map +1 -1
  809. package/dist/store/memory/links.d.ts +15 -0
  810. package/dist/store/memory/links.d.ts.map +1 -0
  811. package/dist/store/memory/links.js +35 -0
  812. package/dist/store/memory/links.js.map +1 -0
  813. package/dist/store/memory/markdown-format.d.ts +88 -0
  814. package/dist/store/memory/markdown-format.d.ts.map +1 -0
  815. package/dist/store/memory/markdown-format.js +222 -0
  816. package/dist/store/memory/markdown-format.js.map +1 -0
  817. package/dist/store/memory/markdown.d.ts +109 -0
  818. package/dist/store/memory/markdown.d.ts.map +1 -0
  819. package/dist/store/memory/markdown.js +606 -0
  820. package/dist/store/memory/markdown.js.map +1 -0
  821. package/dist/store/memory/memory.d.ts.map +1 -1
  822. package/dist/store/memory/memory.js +17 -4
  823. package/dist/store/memory/memory.js.map +1 -1
  824. package/dist/store/memory/naming.d.ts +66 -0
  825. package/dist/store/memory/naming.d.ts.map +1 -0
  826. package/dist/store/memory/naming.js +162 -0
  827. package/dist/store/memory/naming.js.map +1 -0
  828. package/dist/store/memory/origin.d.ts +25 -0
  829. package/dist/store/memory/origin.d.ts.map +1 -0
  830. package/dist/store/memory/origin.js +26 -0
  831. package/dist/store/memory/origin.js.map +1 -0
  832. package/dist/store/session/disk.d.ts +21 -24
  833. package/dist/store/session/disk.d.ts.map +1 -1
  834. package/dist/store/session/disk.js +27 -132
  835. package/dist/store/session/disk.js.map +1 -1
  836. package/dist/store/session/index.d.ts +0 -3
  837. package/dist/store/session/index.d.ts.map +1 -1
  838. package/dist/store/session/index.js +5 -7
  839. package/dist/store/session/index.js.map +1 -1
  840. package/dist/store/session/memory.d.ts +1 -8
  841. package/dist/store/session/memory.d.ts.map +1 -1
  842. package/dist/store/session/memory.js +1 -58
  843. package/dist/store/session/memory.js.map +1 -1
  844. package/dist/store/session-claim.d.ts +30 -0
  845. package/dist/store/session-claim.d.ts.map +1 -0
  846. package/dist/store/session-claim.js +71 -0
  847. package/dist/store/session-claim.js.map +1 -0
  848. package/dist/store/session-index/fts.d.ts +60 -0
  849. package/dist/store/session-index/fts.d.ts.map +1 -0
  850. package/dist/store/session-index/fts.js +160 -0
  851. package/dist/store/session-index/fts.js.map +1 -0
  852. package/dist/store/session-index/index.d.ts +206 -0
  853. package/dist/store/session-index/index.d.ts.map +1 -0
  854. package/dist/store/session-index/index.js +22 -0
  855. package/dist/store/session-index/index.js.map +1 -0
  856. package/dist/store/session-index/rebuild.d.ts +180 -0
  857. package/dist/store/session-index/rebuild.d.ts.map +1 -0
  858. package/dist/store/session-index/rebuild.js +669 -0
  859. package/dist/store/session-index/rebuild.js.map +1 -0
  860. package/dist/store/session-index/refs.d.ts +66 -0
  861. package/dist/store/session-index/refs.d.ts.map +1 -0
  862. package/dist/store/session-index/refs.js +107 -0
  863. package/dist/store/session-index/refs.js.map +1 -0
  864. package/dist/store/session-index/scan.d.ts +42 -0
  865. package/dist/store/session-index/scan.d.ts.map +1 -0
  866. package/dist/store/session-index/scan.js +188 -0
  867. package/dist/store/session-index/scan.js.map +1 -0
  868. package/dist/store/session-index/sqlite.d.ts +76 -0
  869. package/dist/store/session-index/sqlite.d.ts.map +1 -0
  870. package/dist/store/session-index/sqlite.js +547 -0
  871. package/dist/store/session-index/sqlite.js.map +1 -0
  872. package/dist/store/session-log/chain.d.ts +111 -0
  873. package/dist/store/session-log/chain.d.ts.map +1 -0
  874. package/dist/store/session-log/chain.js +212 -0
  875. package/dist/store/session-log/chain.js.map +1 -0
  876. package/dist/store/session-log/conformance.d.ts +61 -0
  877. package/dist/store/session-log/conformance.d.ts.map +1 -0
  878. package/dist/store/session-log/conformance.js +392 -0
  879. package/dist/store/session-log/conformance.js.map +1 -0
  880. package/dist/store/session-log/core.d.ts +203 -0
  881. package/dist/store/session-log/core.d.ts.map +1 -0
  882. package/dist/store/session-log/core.js +516 -0
  883. package/dist/store/session-log/core.js.map +1 -0
  884. package/dist/store/session-log/disk.d.ts +56 -0
  885. package/dist/store/session-log/disk.d.ts.map +1 -0
  886. package/dist/store/session-log/disk.js +169 -0
  887. package/dist/store/session-log/disk.js.map +1 -0
  888. package/dist/store/session-log/fold.d.ts +115 -0
  889. package/dist/store/session-log/fold.d.ts.map +1 -0
  890. package/dist/store/session-log/fold.js +265 -0
  891. package/dist/store/session-log/fold.js.map +1 -0
  892. package/dist/store/session-log/heal.d.ts +34 -0
  893. package/dist/store/session-log/heal.d.ts.map +1 -0
  894. package/dist/store/session-log/heal.js +12 -0
  895. package/dist/store/session-log/heal.js.map +1 -0
  896. package/dist/store/session-log/held-leases.d.ts +56 -0
  897. package/dist/store/session-log/held-leases.d.ts.map +1 -0
  898. package/dist/store/session-log/held-leases.js +67 -0
  899. package/dist/store/session-log/held-leases.js.map +1 -0
  900. package/dist/store/session-log/index.d.ts +10 -0
  901. package/dist/store/session-log/index.d.ts.map +1 -0
  902. package/dist/store/session-log/index.js +16 -0
  903. package/dist/store/session-log/index.js.map +1 -0
  904. package/dist/store/session-log/lease.d.ts +126 -0
  905. package/dist/store/session-log/lease.d.ts.map +1 -0
  906. package/dist/store/session-log/lease.js +226 -0
  907. package/dist/store/session-log/lease.js.map +1 -0
  908. package/dist/store/session-log/memory.d.ts +43 -0
  909. package/dist/store/session-log/memory.d.ts.map +1 -0
  910. package/dist/store/session-log/memory.js +78 -0
  911. package/dist/store/session-log/memory.js.map +1 -0
  912. package/dist/store/session-log/spill.d.ts +109 -0
  913. package/dist/store/session-log/spill.d.ts.map +1 -0
  914. package/dist/store/session-log/spill.js +223 -0
  915. package/dist/store/session-log/spill.js.map +1 -0
  916. package/dist/store/task/context.d.ts +25 -0
  917. package/dist/store/task/context.d.ts.map +1 -0
  918. package/dist/store/task/context.js +18 -0
  919. package/dist/store/task/context.js.map +1 -0
  920. package/dist/store/task/disk.d.ts +29 -26
  921. package/dist/store/task/disk.d.ts.map +1 -1
  922. package/dist/store/task/disk.js +102 -137
  923. package/dist/store/task/disk.js.map +1 -1
  924. package/dist/store/task/memory.d.ts +2 -2
  925. package/dist/store/task/memory.d.ts.map +1 -1
  926. package/dist/store/task/memory.js +10 -6
  927. package/dist/store/task/memory.js.map +1 -1
  928. package/dist/store/topic/index.js +2 -2
  929. package/dist/store/topic/index.js.map +1 -1
  930. package/dist/store/topic/objective.d.ts.map +1 -1
  931. package/dist/store/topic/objective.js +10 -3
  932. package/dist/store/topic/objective.js.map +1 -1
  933. package/dist/store/topic/state.js +1 -1
  934. package/dist/streaming/coalesce.d.ts +3 -3
  935. package/dist/streaming/coalesce.d.ts.map +1 -1
  936. package/dist/streaming/coalesce.js +1 -1
  937. package/dist/streaming/coalesce.js.map +1 -1
  938. package/dist/telemetry/attributes.d.ts +9 -8
  939. package/dist/telemetry/attributes.d.ts.map +1 -1
  940. package/dist/telemetry/attributes.js +6 -5
  941. package/dist/telemetry/attributes.js.map +1 -1
  942. package/dist/telemetry/metrics.d.ts +2 -2
  943. package/dist/telemetry/metrics.d.ts.map +1 -1
  944. package/dist/telemetry/metrics.js +5 -5
  945. package/dist/telemetry/metrics.js.map +1 -1
  946. package/dist/telemetry/runtime-accessors.js +1 -1
  947. package/dist/telemetry/runtime-accessors.js.map +1 -1
  948. package/dist/test-support/ids.d.ts +4 -4
  949. package/dist/test-support/ids.d.ts.map +1 -1
  950. package/dist/test-support/ids.js +3 -3
  951. package/dist/test-support/ids.js.map +1 -1
  952. package/dist/testing.d.ts +4 -6
  953. package/dist/testing.d.ts.map +1 -1
  954. package/dist/testing.js +3 -5
  955. package/dist/testing.js.map +1 -1
  956. package/dist/tools/advisory/index.js +1 -1
  957. package/dist/tools/advisory/index.js.map +1 -1
  958. package/dist/tools/builtins/bash.d.ts +6 -0
  959. package/dist/tools/builtins/bash.d.ts.map +1 -1
  960. package/dist/tools/builtins/bash.js +37 -5
  961. package/dist/tools/builtins/bash.js.map +1 -1
  962. package/dist/tools/builtins/content-fingerprint.d.ts +2 -2
  963. package/dist/tools/builtins/content-fingerprint.js +2 -2
  964. package/dist/tools/builtins/edit-apply.js +1 -1
  965. package/dist/tools/builtins/edit-apply.js.map +1 -1
  966. package/dist/tools/builtins/edit.d.ts.map +1 -1
  967. package/dist/tools/builtins/edit.js +3 -0
  968. package/dist/tools/builtins/edit.js.map +1 -1
  969. package/dist/tools/builtins/glob.d.ts.map +1 -1
  970. package/dist/tools/builtins/glob.js +3 -0
  971. package/dist/tools/builtins/glob.js.map +1 -1
  972. package/dist/tools/builtins/grep.d.ts.map +1 -1
  973. package/dist/tools/builtins/grep.js +3 -0
  974. package/dist/tools/builtins/grep.js.map +1 -1
  975. package/dist/tools/builtins/job.js +5 -5
  976. package/dist/tools/builtins/job.js.map +1 -1
  977. package/dist/tools/builtins/ls.d.ts +1 -1
  978. package/dist/tools/builtins/ls.d.ts.map +1 -1
  979. package/dist/tools/builtins/ls.js +3 -0
  980. package/dist/tools/builtins/ls.js.map +1 -1
  981. package/dist/tools/builtins/lsp.d.ts +1 -1
  982. package/dist/tools/builtins/lsp.d.ts.map +1 -1
  983. package/dist/tools/builtins/lsp.js +5 -2
  984. package/dist/tools/builtins/lsp.js.map +1 -1
  985. package/dist/tools/builtins/read-file.d.ts.map +1 -1
  986. package/dist/tools/builtins/read-file.js +3 -0
  987. package/dist/tools/builtins/read-file.js.map +1 -1
  988. package/dist/tools/builtins/run-code.js +9 -9
  989. package/dist/tools/builtins/run-code.js.map +1 -1
  990. package/dist/tools/builtins/skill.js +3 -3
  991. package/dist/tools/builtins/skill.js.map +1 -1
  992. package/dist/tools/builtins/wait-for-job-bounds.d.ts +4 -4
  993. package/dist/tools/builtins/wait-for-job-bounds.d.ts.map +1 -1
  994. package/dist/tools/builtins/wait-for-job-bounds.js +2 -2
  995. package/dist/tools/builtins/wait-for-job-bounds.js.map +1 -1
  996. package/dist/tools/builtins/wait-for-job.js +3 -3
  997. package/dist/tools/builtins/wait-for-job.js.map +1 -1
  998. package/dist/tools/builtins/web-guidance.d.ts +2 -2
  999. package/dist/tools/builtins/web-guidance.js +2 -2
  1000. package/dist/tools/builtins/web.js +3 -3
  1001. package/dist/tools/builtins/web.js.map +1 -1
  1002. package/dist/tools/builtins/write-file.d.ts.map +1 -1
  1003. package/dist/tools/builtins/write-file.js +3 -0
  1004. package/dist/tools/builtins/write-file.js.map +1 -1
  1005. package/dist/tools/coordinator/agent.d.ts +1 -1
  1006. package/dist/tools/coordinator/agent.js +7 -7
  1007. package/dist/tools/coordinator/agent.js.map +1 -1
  1008. package/dist/tools/coordinator/ask-user-question.d.ts +10 -9
  1009. package/dist/tools/coordinator/ask-user-question.d.ts.map +1 -1
  1010. package/dist/tools/coordinator/ask-user-question.js +9 -8
  1011. package/dist/tools/coordinator/ask-user-question.js.map +1 -1
  1012. package/dist/tools/coordinator/index.d.ts +17 -11
  1013. package/dist/tools/coordinator/index.d.ts.map +1 -1
  1014. package/dist/tools/coordinator/index.js +45 -44
  1015. package/dist/tools/coordinator/index.js.map +1 -1
  1016. package/dist/tools/coordinator/outcome.d.ts +5 -5
  1017. package/dist/tools/coordinator/outcome.js +7 -7
  1018. package/dist/tools/coordinator/outcome.js.map +1 -1
  1019. package/dist/tools/coordinator/plan-dependencies.js +1 -1
  1020. package/dist/tools/coordinator/plan-dependencies.js.map +1 -1
  1021. package/dist/tools/coordinator/wait-with-idle-bound.d.ts +4 -4
  1022. package/dist/tools/coordinator/wait-with-idle-bound.d.ts.map +1 -1
  1023. package/dist/tools/coordinator/wait-with-idle-bound.js +2 -2
  1024. package/dist/tools/coordinator/wait-with-idle-bound.js.map +1 -1
  1025. package/dist/tools/defineTool.d.ts +5 -1
  1026. package/dist/tools/defineTool.d.ts.map +1 -1
  1027. package/dist/tools/defineTool.js +4 -0
  1028. package/dist/tools/defineTool.js.map +1 -1
  1029. package/dist/tools/env-scrub.d.ts +1 -1
  1030. package/dist/tools/env-scrub.js +1 -1
  1031. package/dist/tools/goal/index.d.ts +10 -6
  1032. package/dist/tools/goal/index.d.ts.map +1 -1
  1033. package/dist/tools/goal/index.js +9 -9
  1034. package/dist/tools/goal/index.js.map +1 -1
  1035. package/dist/tools/memory/fields.d.ts +8 -0
  1036. package/dist/tools/memory/fields.d.ts.map +1 -0
  1037. package/dist/tools/memory/fields.js +22 -0
  1038. package/dist/tools/memory/fields.js.map +1 -0
  1039. package/dist/tools/memory/read.d.ts.map +1 -1
  1040. package/dist/tools/memory/read.js +60 -7
  1041. package/dist/tools/memory/read.js.map +1 -1
  1042. package/dist/tools/memory/resolve.d.ts +21 -0
  1043. package/dist/tools/memory/resolve.d.ts.map +1 -0
  1044. package/dist/tools/memory/resolve.js +23 -0
  1045. package/dist/tools/memory/resolve.js.map +1 -0
  1046. package/dist/tools/memory/save.d.ts.map +1 -1
  1047. package/dist/tools/memory/save.js +57 -18
  1048. package/dist/tools/memory/save.js.map +1 -1
  1049. package/dist/tools/memory/search.d.ts.map +1 -1
  1050. package/dist/tools/memory/search.js +9 -2
  1051. package/dist/tools/memory/search.js.map +1 -1
  1052. package/dist/tools/memory/update.d.ts.map +1 -1
  1053. package/dist/tools/memory/update.js +45 -7
  1054. package/dist/tools/memory/update.js.map +1 -1
  1055. package/dist/tools/paths.d.ts +29 -3
  1056. package/dist/tools/paths.d.ts.map +1 -1
  1057. package/dist/tools/paths.js +81 -23
  1058. package/dist/tools/paths.js.map +1 -1
  1059. package/dist/tools/posix-path.js +1 -1
  1060. package/dist/tools/posix-path.js.map +1 -1
  1061. package/dist/tools/resident-history.d.ts +1 -1
  1062. package/dist/tools/resident-history.js +1 -1
  1063. package/dist/tools/resident-tool-evidence.d.ts +1 -1
  1064. package/dist/tools/resident-tool-evidence.d.ts.map +1 -1
  1065. package/dist/tools/resident-tool-evidence.js +1 -1
  1066. package/dist/tools/resident-tool-evidence.js.map +1 -1
  1067. package/dist/tools/task/create.d.ts +2 -2
  1068. package/dist/tools/task/create.d.ts.map +1 -1
  1069. package/dist/tools/task/create.js +3 -2
  1070. package/dist/tools/task/create.js.map +1 -1
  1071. package/dist/tools/task/index.d.ts +16 -2
  1072. package/dist/tools/task/index.d.ts.map +1 -1
  1073. package/dist/tools/task/index.js +4 -3
  1074. package/dist/tools/task/index.js.map +1 -1
  1075. package/dist/tools/task/list.d.ts +4 -2
  1076. package/dist/tools/task/list.d.ts.map +1 -1
  1077. package/dist/tools/task/list.js +8 -4
  1078. package/dist/tools/task/list.js.map +1 -1
  1079. package/dist/turn/LimitChecker.d.ts +30 -0
  1080. package/dist/turn/LimitChecker.d.ts.map +1 -0
  1081. package/dist/turn/LimitChecker.js +57 -0
  1082. package/dist/turn/LimitChecker.js.map +1 -0
  1083. package/dist/turn/command-gate.d.ts +107 -0
  1084. package/dist/turn/command-gate.d.ts.map +1 -0
  1085. package/dist/turn/command-gate.js +221 -0
  1086. package/dist/turn/command-gate.js.map +1 -0
  1087. package/dist/turn/drain.d.ts +138 -0
  1088. package/dist/turn/drain.d.ts.map +1 -0
  1089. package/dist/turn/drain.js +209 -0
  1090. package/dist/turn/drain.js.map +1 -0
  1091. package/dist/turn/evidence-query.d.ts +41 -0
  1092. package/dist/turn/evidence-query.d.ts.map +1 -0
  1093. package/dist/turn/evidence-query.js +270 -0
  1094. package/dist/turn/evidence-query.js.map +1 -0
  1095. package/dist/turn/evidence-recall.d.ts +102 -0
  1096. package/dist/turn/evidence-recall.d.ts.map +1 -0
  1097. package/dist/turn/evidence-recall.js +635 -0
  1098. package/dist/turn/evidence-recall.js.map +1 -0
  1099. package/dist/turn/index.d.ts +17 -0
  1100. package/dist/turn/index.d.ts.map +1 -0
  1101. package/dist/turn/index.js +9 -0
  1102. package/dist/turn/index.js.map +1 -0
  1103. package/dist/turn/json-claim-verifier.d.ts +83 -0
  1104. package/dist/turn/json-claim-verifier.d.ts.map +1 -0
  1105. package/dist/turn/json-claim-verifier.js +200 -0
  1106. package/dist/turn/json-claim-verifier.js.map +1 -0
  1107. package/dist/turn/memory-promoter.d.ts +43 -0
  1108. package/dist/turn/memory-promoter.d.ts.map +1 -0
  1109. package/dist/turn/memory-promoter.js +111 -0
  1110. package/dist/turn/memory-promoter.js.map +1 -0
  1111. package/dist/turn/memory-recall.d.ts +33 -0
  1112. package/dist/turn/memory-recall.d.ts.map +1 -0
  1113. package/dist/turn/memory-recall.js +248 -0
  1114. package/dist/turn/memory-recall.js.map +1 -0
  1115. package/dist/turn/preparation-context-error.d.ts.map +1 -0
  1116. package/dist/turn/preparation-context-error.js.map +1 -0
  1117. package/dist/turn/reporter.d.ts +8 -0
  1118. package/dist/turn/reporter.d.ts.map +1 -0
  1119. package/dist/turn/reporter.js +420 -0
  1120. package/dist/turn/reporter.js.map +1 -0
  1121. package/dist/turn/workspace-fingerprint.d.ts.map +1 -0
  1122. package/dist/turn/workspace-fingerprint.js.map +1 -0
  1123. package/dist/types/activity/index.d.ts +2 -2
  1124. package/dist/types/activity/index.d.ts.map +1 -1
  1125. package/dist/types/advisory/config.d.ts +7 -7
  1126. package/dist/types/advisory/config.d.ts.map +1 -1
  1127. package/dist/types/agent/base.d.ts +71 -44
  1128. package/dist/types/agent/base.d.ts.map +1 -1
  1129. package/dist/types/agent/core.d.ts +10 -10
  1130. package/dist/types/agent/core.d.ts.map +1 -1
  1131. package/dist/types/agent/delegate.d.ts +2 -2
  1132. package/dist/types/agent/factory.d.ts +6 -4
  1133. package/dist/types/agent/factory.d.ts.map +1 -1
  1134. package/dist/types/agent/manager.d.ts +6 -6
  1135. package/dist/types/agent/manager.d.ts.map +1 -1
  1136. package/dist/types/agent/pipeline.d.ts +5 -4
  1137. package/dist/types/agent/pipeline.d.ts.map +1 -1
  1138. package/dist/types/agent/reactive.d.ts +11 -10
  1139. package/dist/types/agent/reactive.d.ts.map +1 -1
  1140. package/dist/types/agent/router.d.ts +1 -1
  1141. package/dist/types/agent/scheduler.d.ts +27 -11
  1142. package/dist/types/agent/scheduler.d.ts.map +1 -1
  1143. package/dist/types/agent/supervisor.d.ts +13 -13
  1144. package/dist/types/agent/task.d.ts +48 -12
  1145. package/dist/types/agent/task.d.ts.map +1 -1
  1146. package/dist/types/agent/working-memory.d.ts +5 -4
  1147. package/dist/types/agent/working-memory.d.ts.map +1 -1
  1148. package/dist/types/authorization/index.d.ts +6 -6
  1149. package/dist/types/bidi/index.d.ts +21 -12
  1150. package/dist/types/bidi/index.d.ts.map +1 -1
  1151. package/dist/types/bus/index.d.ts +34 -28
  1152. package/dist/types/bus/index.d.ts.map +1 -1
  1153. package/dist/types/code-navigation/index.d.ts +1 -1
  1154. package/dist/types/common/index.d.ts +10 -18
  1155. package/dist/types/common/index.d.ts.map +1 -1
  1156. package/dist/types/common/index.js +3 -2
  1157. package/dist/types/common/index.js.map +1 -1
  1158. package/dist/types/connector/core.d.ts +2 -2
  1159. package/dist/types/connector/definition.d.ts +1 -1
  1160. package/dist/types/connector/mcp.d.ts +1 -1
  1161. package/dist/types/errors/catalog.js +4 -4
  1162. package/dist/types/errors/catalog.js.map +1 -1
  1163. package/dist/types/errors/index.d.ts +5 -5
  1164. package/dist/types/errors/index.d.ts.map +1 -1
  1165. package/dist/types/guardrail/index.d.ts +12 -10
  1166. package/dist/types/guardrail/index.d.ts.map +1 -1
  1167. package/dist/types/hitl/index.d.ts +60 -117
  1168. package/dist/types/hitl/index.d.ts.map +1 -1
  1169. package/dist/types/hitl/index.js +1 -1
  1170. package/dist/types/hitl/index.js.map +1 -1
  1171. package/dist/types/hitl/policy.d.ts +8 -6
  1172. package/dist/types/hitl/policy.d.ts.map +1 -1
  1173. package/dist/types/ids/brand.d.ts +10 -3
  1174. package/dist/types/ids/brand.d.ts.map +1 -1
  1175. package/dist/types/ids/brand.js.map +1 -1
  1176. package/dist/types/ids/index.d.ts +10 -4
  1177. package/dist/types/ids/index.d.ts.map +1 -1
  1178. package/dist/types/ids/index.js.map +1 -1
  1179. package/dist/types/memory/index.d.ts +35 -0
  1180. package/dist/types/memory/index.d.ts.map +1 -1
  1181. package/dist/types/memory/index.js +17 -0
  1182. package/dist/types/memory/index.js.map +1 -1
  1183. package/dist/types/message/index.d.ts +4 -4
  1184. package/dist/types/plan/index.d.ts +5 -3
  1185. package/dist/types/plan/index.d.ts.map +1 -1
  1186. package/dist/types/plugin/index.d.ts +27 -19
  1187. package/dist/types/plugin/index.d.ts.map +1 -1
  1188. package/dist/types/plugin/index.js +16 -3
  1189. package/dist/types/plugin/index.js.map +1 -1
  1190. package/dist/types/probe/event-kind.d.ts +3 -3
  1191. package/dist/types/probe/event-kind.d.ts.map +1 -1
  1192. package/dist/types/probe/registry.d.ts +3 -2
  1193. package/dist/types/probe/registry.d.ts.map +1 -1
  1194. package/dist/types/project/entity.d.ts +3 -3
  1195. package/dist/types/provider/config.d.ts +3 -3
  1196. package/dist/types/provider/error.d.ts +1 -1
  1197. package/dist/types/provider/errors.d.ts +2 -2
  1198. package/dist/types/provider/errors.js +2 -2
  1199. package/dist/types/provider/errors.js.map +1 -1
  1200. package/dist/types/provider/interface.d.ts +5 -5
  1201. package/dist/types/provider/model.d.ts +26 -2
  1202. package/dist/types/provider/model.d.ts.map +1 -1
  1203. package/dist/types/router/task-router.d.ts +1 -1
  1204. package/dist/types/sandbox/index.d.ts +14 -14
  1205. package/dist/types/sandbox/index.d.ts.map +1 -1
  1206. package/dist/types/sandbox/index.js +4 -4
  1207. package/dist/types/session/answer-review.d.ts +80 -0
  1208. package/dist/types/session/answer-review.d.ts.map +1 -0
  1209. package/dist/types/session/answer-review.js.map +1 -0
  1210. package/dist/types/session/audit.d.ts +153 -0
  1211. package/dist/types/session/audit.d.ts.map +1 -0
  1212. package/dist/types/session/audit.js +35 -0
  1213. package/dist/types/session/audit.js.map +1 -0
  1214. package/dist/types/session/cancel-cause.d.ts +49 -0
  1215. package/dist/types/session/cancel-cause.d.ts.map +1 -0
  1216. package/dist/types/session/cancel-cause.js +39 -0
  1217. package/dist/types/session/cancel-cause.js.map +1 -0
  1218. package/dist/types/session/checkpoint.d.ts +325 -0
  1219. package/dist/types/session/checkpoint.d.ts.map +1 -0
  1220. package/dist/types/session/checkpoint.js +100 -0
  1221. package/dist/types/session/checkpoint.js.map +1 -0
  1222. package/dist/types/session/config.d.ts +199 -0
  1223. package/dist/types/session/config.d.ts.map +1 -0
  1224. package/dist/types/session/config.js.map +1 -0
  1225. package/dist/types/session/derive-status.d.ts +28 -0
  1226. package/dist/types/session/derive-status.d.ts.map +1 -0
  1227. package/dist/types/session/derive-status.js +49 -0
  1228. package/dist/types/session/derive-status.js.map +1 -0
  1229. package/dist/types/session/durable.d.ts +142 -0
  1230. package/dist/types/session/durable.d.ts.map +1 -0
  1231. package/dist/types/session/durable.js +11 -0
  1232. package/dist/types/session/durable.js.map +1 -0
  1233. package/dist/types/session/entity.d.ts +1 -1
  1234. package/dist/types/session/events.d.ts +1139 -0
  1235. package/dist/types/session/events.d.ts.map +1 -0
  1236. package/dist/types/session/events.js +15 -0
  1237. package/dist/types/session/events.js.map +1 -0
  1238. package/dist/types/session/fork.d.ts +45 -0
  1239. package/dist/types/session/fork.d.ts.map +1 -0
  1240. package/dist/types/session/fork.js +15 -0
  1241. package/dist/types/session/fork.js.map +1 -0
  1242. package/dist/types/session/ids.d.ts +1 -1
  1243. package/dist/types/session/ids.d.ts.map +1 -1
  1244. package/dist/types/session/index.d.ts +20 -1
  1245. package/dist/types/session/index.d.ts.map +1 -1
  1246. package/dist/types/session/index.js +22 -4
  1247. package/dist/types/session/index.js.map +1 -1
  1248. package/dist/types/session/lineage.d.ts +15 -0
  1249. package/dist/types/session/lineage.d.ts.map +1 -0
  1250. package/dist/types/session/lineage.js.map +1 -0
  1251. package/dist/types/session/log-cursor.d.ts +57 -0
  1252. package/dist/types/session/log-cursor.d.ts.map +1 -0
  1253. package/dist/types/session/log-cursor.js +34 -0
  1254. package/dist/types/session/log-cursor.js.map +1 -0
  1255. package/dist/types/session/memory-promotion.d.ts +91 -0
  1256. package/dist/types/session/memory-promotion.d.ts.map +1 -0
  1257. package/dist/types/session/memory-promotion.js +39 -0
  1258. package/dist/types/session/memory-promotion.js.map +1 -0
  1259. package/dist/types/session/messages.d.ts +1 -1
  1260. package/dist/types/session/messages.js +1 -1
  1261. package/dist/types/session/prepare-step.d.ts +278 -0
  1262. package/dist/types/session/prepare-step.d.ts.map +1 -0
  1263. package/dist/types/session/prepare-step.js.map +1 -0
  1264. package/dist/types/session/records.d.ts +5597 -0
  1265. package/dist/types/session/records.d.ts.map +1 -0
  1266. package/dist/types/session/records.js +721 -0
  1267. package/dist/types/session/records.js.map +1 -0
  1268. package/dist/types/session/step.d.ts +195 -0
  1269. package/dist/types/session/step.d.ts.map +1 -0
  1270. package/dist/types/session/step.js +26 -0
  1271. package/dist/types/session/step.js.map +1 -0
  1272. package/dist/types/session/stop-reason.d.ts +67 -0
  1273. package/dist/types/session/stop-reason.d.ts.map +1 -0
  1274. package/dist/types/session/stop-reason.js.map +1 -0
  1275. package/dist/types/session/store.d.ts +2 -43
  1276. package/dist/types/session/store.d.ts.map +1 -1
  1277. package/dist/types/session/tool-execution.d.ts +34 -0
  1278. package/dist/types/session/tool-execution.d.ts.map +1 -0
  1279. package/dist/types/session/tool-execution.js +11 -0
  1280. package/dist/types/session/tool-execution.js.map +1 -0
  1281. package/dist/types/session/turn-state.d.ts +74 -0
  1282. package/dist/types/session/turn-state.d.ts.map +1 -0
  1283. package/dist/types/session/turn-state.js +59 -0
  1284. package/dist/types/session/turn-state.js.map +1 -0
  1285. package/dist/types/session/turn.d.ts +215 -0
  1286. package/dist/types/session/turn.d.ts.map +1 -0
  1287. package/dist/types/session/turn.js +44 -0
  1288. package/dist/types/session/turn.js.map +1 -0
  1289. package/dist/types/structured-output/index.d.ts +2 -2
  1290. package/dist/types/structured-output/index.d.ts.map +1 -1
  1291. package/dist/types/summary/deliverable.d.ts +4 -4
  1292. package/dist/types/summary/deliverable.d.ts.map +1 -1
  1293. package/dist/types/task/index.d.ts +8 -4
  1294. package/dist/types/task/index.d.ts.map +1 -1
  1295. package/dist/types/tool/index.d.ts +73 -26
  1296. package/dist/types/tool/index.d.ts.map +1 -1
  1297. package/dist/types/tool/index.js.map +1 -1
  1298. package/dist/types/topic/entity.d.ts +6 -6
  1299. package/dist/types/topic/objective.d.ts +10 -5
  1300. package/dist/types/topic/objective.d.ts.map +1 -1
  1301. package/dist/types/topic/objective.js.map +1 -1
  1302. package/dist/types/topic/state.d.ts +4 -4
  1303. package/dist/types/topic/store.d.ts +1 -1
  1304. package/dist/types/topic/store.js +1 -1
  1305. package/dist/types/workspace/index.d.ts +1 -1
  1306. package/dist/types/workspace/index.d.ts.map +1 -1
  1307. package/dist/types/workspace/index.js +1 -1
  1308. package/dist/types/workspace/index.js.map +1 -1
  1309. package/dist/types/workspace/ref.d.ts +3 -3
  1310. package/dist/types/workspace/shared-session.d.ts +61 -0
  1311. package/dist/types/workspace/shared-session.d.ts.map +1 -0
  1312. package/dist/types/workspace/shared-session.js +2 -0
  1313. package/dist/types/workspace/shared-session.js.map +1 -0
  1314. package/dist/utils/abort.js +4 -4
  1315. package/dist/utils/abort.js.map +1 -1
  1316. package/dist/utils/atomic-write.d.ts +29 -1
  1317. package/dist/utils/atomic-write.d.ts.map +1 -1
  1318. package/dist/utils/atomic-write.js +60 -4
  1319. package/dist/utils/atomic-write.js.map +1 -1
  1320. package/dist/utils/cost.d.ts +3 -3
  1321. package/dist/utils/cost.d.ts.map +1 -1
  1322. package/dist/utils/cost.js +11 -12
  1323. package/dist/utils/cost.js.map +1 -1
  1324. package/dist/utils/env.d.ts +1 -1
  1325. package/dist/utils/env.js +1 -1
  1326. package/dist/utils/id.d.ts +9 -8
  1327. package/dist/utils/id.d.ts.map +1 -1
  1328. package/dist/utils/id.js +20 -13
  1329. package/dist/utils/id.js.map +1 -1
  1330. package/dist/utils/log/create-logger.js +1 -1
  1331. package/dist/utils/log/create-logger.js.map +1 -1
  1332. package/dist/utils/log/types.js +1 -1
  1333. package/dist/utils/log/types.js.map +1 -1
  1334. package/dist/utils/shell-compress.js +2 -2
  1335. package/dist/utils/shell-compress.js.map +1 -1
  1336. package/dist/utils/uuidv7.d.ts +33 -0
  1337. package/dist/utils/uuidv7.d.ts.map +1 -0
  1338. package/dist/utils/uuidv7.js +70 -0
  1339. package/dist/utils/uuidv7.js.map +1 -0
  1340. package/dist/vault/instrumentation.d.ts +5 -2
  1341. package/dist/vault/instrumentation.d.ts.map +1 -1
  1342. package/dist/vault/instrumentation.js +12 -6
  1343. package/dist/vault/instrumentation.js.map +1 -1
  1344. package/package.json +1 -1
  1345. package/src/advisory/budget.ts +3 -3
  1346. package/src/advisory/context.ts +9 -9
  1347. package/src/advisory/evaluator.ts +2 -2
  1348. package/src/advisory/parse.ts +1 -1
  1349. package/src/agents/AbstractAgent.ts +74 -50
  1350. package/src/agents/PipelineAgent.ts +91 -26
  1351. package/src/agents/ReactiveAgent.ts +35 -29
  1352. package/src/agents/RouterAgent.ts +32 -44
  1353. package/src/agents/SupervisorAgent.ts +55 -41
  1354. package/src/agents/budget.ts +73 -16
  1355. package/src/agents/defineAgent.ts +7 -3
  1356. package/src/agents/handle.ts +17 -19
  1357. package/src/agents/lock.ts +4 -4
  1358. package/src/agents/runAgent.ts +96 -38
  1359. package/src/agents/storage.ts +36 -0
  1360. package/src/authorization/command-line.ts +1 -1
  1361. package/src/authorization/gate.ts +1 -1
  1362. package/src/authorization/permission-presets.ts +4 -4
  1363. package/src/bridge/a2a/client.ts +2 -2
  1364. package/src/bridge/a2a/context.ts +46 -0
  1365. package/src/bridge/a2a/index.ts +12 -5
  1366. package/src/bridge/a2a/mapper.ts +48 -38
  1367. package/src/bridge/a2a/task.ts +91 -37
  1368. package/src/bridge/acp/permission.ts +2 -2
  1369. package/src/bridge/acp/server.ts +45 -11
  1370. package/src/bridge/acp/update.ts +9 -9
  1371. package/src/bridge/external-session.ts +82 -0
  1372. package/src/bridge/sse/index.ts +1 -1
  1373. package/src/bridge/sse/mapper.ts +116 -145
  1374. package/src/bus/breaker.ts +30 -29
  1375. package/src/bus/index.ts +7 -7
  1376. package/src/bus/lock.ts +7 -7
  1377. package/src/bus/ownership.ts +8 -8
  1378. package/src/compaction/consolidation.ts +61 -15
  1379. package/src/compaction/context-window.ts +4 -4
  1380. package/src/compaction/index.ts +2 -2
  1381. package/src/compaction/manager.ts +4 -4
  1382. package/src/compaction/manual.ts +5 -5
  1383. package/src/compaction/plan.ts +8 -8
  1384. package/src/compaction/reducer.ts +8 -8
  1385. package/src/compaction/retention.ts +2 -2
  1386. package/src/compaction/salience/bm25.ts +2 -2
  1387. package/src/compaction/salience/goal.ts +3 -3
  1388. package/src/compaction/salience/minhash.ts +1 -1
  1389. package/src/compaction/salience/score.ts +3 -3
  1390. package/src/compaction/salience/tokenize.ts +1 -1
  1391. package/src/compaction/verifier.ts +7 -7
  1392. package/src/compaction/wire.ts +1 -1
  1393. package/src/config/registry.ts +4 -4
  1394. package/src/config/runtime.ts +3 -3
  1395. package/src/connector/http-operation.ts +1 -1
  1396. package/src/connector/mcp/adapter.ts +1 -1
  1397. package/src/connector/mcp/client.ts +1 -1
  1398. package/src/connector/mcp/discovery.ts +2 -2
  1399. package/src/connector/mcp/policy.ts +1 -1
  1400. package/src/connector/mcp/prompt-adapter.ts +3 -3
  1401. package/src/constants/a2a/index.ts +10 -3
  1402. package/src/constants/continuation.ts +1 -1
  1403. package/src/constants/index.ts +0 -1
  1404. package/src/constants/limits.ts +2 -2
  1405. package/src/constants/telemetry/index.ts +15 -12
  1406. package/src/constants/tools/index.ts +2 -2
  1407. package/src/contracts/api.ts +11 -202
  1408. package/src/contracts/index.ts +8 -15
  1409. package/src/contracts/schemas.ts +6 -39
  1410. package/src/contracts/session/api.ts +150 -0
  1411. package/src/contracts/session/index.ts +29 -0
  1412. package/src/contracts/session/schemas.ts +60 -0
  1413. package/src/contracts/session/turn-status.ts +83 -0
  1414. package/src/contracts/session/turn.ts +67 -0
  1415. package/src/directory/derive-supervisor.ts +2 -2
  1416. package/src/directory/derive.ts +4 -4
  1417. package/src/directory/index.ts +2 -2
  1418. package/src/directory/load.ts +2 -2
  1419. package/src/directory/types.ts +2 -2
  1420. package/src/eval/experiment.ts +23 -23
  1421. package/src/eval/from-turn.ts +50 -0
  1422. package/src/eval/harness-verification.ts +7 -7
  1423. package/src/eval/index.ts +2 -2
  1424. package/src/eval/judge.ts +10 -10
  1425. package/src/eval/scorers.ts +23 -23
  1426. package/src/eval/types.ts +12 -12
  1427. package/src/eval/uncertainty.ts +2 -2
  1428. package/src/execution/code-runtime/types.ts +4 -4
  1429. package/src/execution/code-runtime/worker.ts +1 -1
  1430. package/src/invariants/index.ts +2 -2
  1431. package/src/manager/agent/child-session.ts +120 -0
  1432. package/src/manager/agent/lifecycle.ts +422 -102
  1433. package/src/manager/index.ts +1 -2
  1434. package/src/manager/plan/lifecycle.ts +16 -10
  1435. package/src/manager/resident/consumption.ts +8 -6
  1436. package/src/manager/resident/evidence-recall.ts +14 -14
  1437. package/src/manager/resident/host.ts +2 -2
  1438. package/src/manager/resident/learning-cycle.ts +5 -3
  1439. package/src/manager/resident/learning-observation.ts +9 -4
  1440. package/src/manager/resident/learning-store.ts +46 -16
  1441. package/src/manager/resident/tool-evidence.ts +38 -31
  1442. package/src/manager/session/turn-recorder.ts +1291 -0
  1443. package/src/plugin/lifecycle.ts +20 -13
  1444. package/src/plugin/shell-hook.ts +64 -25
  1445. package/src/pricing/index.ts +5 -5
  1446. package/src/pricing/rates.source.json +5 -5
  1447. package/src/probe/context.ts +5 -3
  1448. package/src/probe/registry.ts +1 -1
  1449. package/src/prompt/coding-agent-doctrine.ts +1 -1
  1450. package/src/prompt/contributions.ts +28 -6
  1451. package/src/prompt/resident-learning.ts +2 -2
  1452. package/src/provider/collect-chat-completion.ts +3 -3
  1453. package/src/provider/conformance.ts +21 -6
  1454. package/src/provider/errors.ts +2 -2
  1455. package/src/provider/fallback.ts +8 -8
  1456. package/src/provider/idle-timeout.ts +4 -4
  1457. package/src/provider/instrumentation.ts +14 -7
  1458. package/src/provider/mock.ts +1 -1
  1459. package/src/provider/retry.ts +7 -7
  1460. package/src/provider/stream-text.ts +1 -1
  1461. package/src/provider/thinking-support.ts +2 -2
  1462. package/src/provider/token-budget.ts +2 -2
  1463. package/src/public-runtime.ts +213 -141
  1464. package/src/public-tools.ts +14 -7
  1465. package/src/public-types.ts +71 -59
  1466. package/src/rag/embedding.ts +1 -1
  1467. package/src/read-model/index.ts +2 -2
  1468. package/src/read-model/registry.ts +11 -11
  1469. package/src/read-model/session-status.ts +87 -0
  1470. package/src/registry/command/kernel-commands.ts +10 -10
  1471. package/src/registry/tool/dialect.ts +1 -1
  1472. package/src/registry/tool/execute.ts +20 -7
  1473. package/src/registry/tool/portable.ts +1 -1
  1474. package/src/registry/tool/presentation.ts +1 -1
  1475. package/src/registry/tool/schema.ts +1 -1
  1476. package/src/registry/tool/screen.ts +3 -3
  1477. package/src/runtime/bidi/index.ts +2 -2
  1478. package/src/runtime/bidi/session.ts +45 -34
  1479. package/src/runtime/jobs/awaited-jobs.ts +13 -13
  1480. package/src/runtime/jobs/registry.ts +11 -11
  1481. package/src/runtime/query/abandon-turn.ts +110 -0
  1482. package/src/runtime/query/approval-policy.ts +13 -13
  1483. package/src/runtime/query/callback-inference.ts +16 -10
  1484. package/src/runtime/query/cancelled-before-start.ts +96 -79
  1485. package/src/runtime/query/checkpoint.ts +519 -420
  1486. package/src/runtime/query/compact-session.ts +92 -0
  1487. package/src/runtime/query/context.ts +80 -136
  1488. package/src/runtime/query/events.ts +159 -126
  1489. package/src/runtime/query/executor/tool-call-admission.ts +6 -5
  1490. package/src/runtime/query/executor.ts +206 -111
  1491. package/src/runtime/query/file-evidence-seed.ts +2 -2
  1492. package/src/runtime/query/finalize-turn.ts +209 -0
  1493. package/src/runtime/query/fork/list.ts +20 -0
  1494. package/src/runtime/query/fork/mutate.ts +82 -0
  1495. package/src/runtime/query/fork/prepare.ts +92 -0
  1496. package/src/runtime/query/guard.ts +22 -22
  1497. package/src/runtime/query/guardrail-presets.ts +12 -12
  1498. package/src/runtime/query/guardrails.ts +11 -11
  1499. package/src/runtime/query/index.ts +1607 -1533
  1500. package/src/runtime/query/iteration/index.ts +304 -253
  1501. package/src/runtime/query/iteration/outstanding-work.ts +65 -65
  1502. package/src/runtime/query/iteration/phases/advisory.ts +16 -16
  1503. package/src/runtime/query/iteration/phases/checkpoint.ts +26 -10
  1504. package/src/runtime/query/iteration/phases/compaction.ts +74 -72
  1505. package/src/runtime/query/iteration/phases/context.ts +57 -60
  1506. package/src/runtime/query/iteration/phases/plan.ts +9 -6
  1507. package/src/runtime/query/iteration/phases/tool-review.ts +141 -27
  1508. package/src/runtime/query/iteration/phases/working-memory.ts +57 -22
  1509. package/src/runtime/query/iteration/step-context.ts +17 -0
  1510. package/src/runtime/query/iteration/step-shaping.ts +21 -24
  1511. package/src/runtime/query/iteration/stream-turn.ts +36 -32
  1512. package/src/runtime/query/plugin-hooks.ts +1 -1
  1513. package/src/runtime/query/prepare-turn.ts +932 -0
  1514. package/src/runtime/query/project-instructions.ts +5 -4
  1515. package/src/runtime/query/prompt-cache.ts +1 -1
  1516. package/src/runtime/query/prompt.ts +5 -5
  1517. package/src/runtime/query/question-park.ts +7 -7
  1518. package/src/runtime/query/release-turn.ts +157 -0
  1519. package/src/runtime/query/repeat-call.ts +7 -7
  1520. package/src/runtime/query/result.ts +123 -131
  1521. package/src/runtime/query/resume-pending.ts +101 -44
  1522. package/src/runtime/query/resume-session.ts +153 -0
  1523. package/src/runtime/query/review-policy.ts +147 -19
  1524. package/src/runtime/query/sandbox-lifecycle.ts +5 -5
  1525. package/src/runtime/query/session-storage.ts +302 -0
  1526. package/src/runtime/query/steering.ts +17 -4
  1527. package/src/runtime/query/token-budget.ts +59 -93
  1528. package/src/runtime/query/tool-call-budget.ts +14 -14
  1529. package/src/runtime/query/tool-executions.ts +77 -0
  1530. package/src/runtime/query/tool-grants.ts +3 -3
  1531. package/src/runtime/query/tool-output-budget.ts +4 -4
  1532. package/src/runtime/query/tool-pause.ts +8 -6
  1533. package/src/runtime/query/tooling.ts +22 -14
  1534. package/src/runtime/query/turn-state.ts +153 -0
  1535. package/src/sandbox/isolation.ts +2 -2
  1536. package/src/sandbox/provider/local.ts +8 -8
  1537. package/src/scheduler/completion-inbox.ts +36 -36
  1538. package/src/scheduler/delegating.ts +27 -13
  1539. package/src/scheduler/local.ts +49 -21
  1540. package/src/session/events/index.ts +10 -14
  1541. package/src/session/handoff/broadcast.ts +7 -7
  1542. package/src/session/handoff/events.ts +1 -1
  1543. package/src/session/handoff/index.ts +1 -1
  1544. package/src/session/handoff/single.ts +21 -21
  1545. package/src/session/handoff/version.ts +11 -7
  1546. package/src/session/home.ts +66 -0
  1547. package/src/session/index.ts +1 -0
  1548. package/src/session/log-hash.ts +115 -0
  1549. package/src/session/messages.ts +39 -0
  1550. package/src/session/paths.ts +449 -0
  1551. package/src/session/retention/archive.ts +13 -5
  1552. package/src/session/status/derive.ts +21 -21
  1553. package/src/session/workspace/git-worktree.ts +31 -2
  1554. package/src/session/workspace/index.ts +5 -8
  1555. package/src/session/workspace/shared-session.ts +354 -0
  1556. package/src/session-query/index.ts +152 -0
  1557. package/src/skills/registry.ts +1 -1
  1558. package/src/store/activity/memory.ts +5 -5
  1559. package/src/store/attachment/index.ts +5 -5
  1560. package/src/store/budget/disk.ts +243 -0
  1561. package/src/store/budget/index.ts +24 -0
  1562. package/src/store/budget/ledger.ts +836 -0
  1563. package/src/store/budget/memory.ts +39 -0
  1564. package/src/store/checkpoint/contract.ts +225 -0
  1565. package/src/store/checkpoint/disk.ts +209 -0
  1566. package/src/store/checkpoint/index.ts +22 -0
  1567. package/src/store/checkpoint/memory.ts +112 -0
  1568. package/src/store/checkpoint/prune.ts +93 -0
  1569. package/src/store/config/index.ts +1 -1
  1570. package/src/store/evidence/disk.ts +185 -81
  1571. package/src/store/evidence/index-page.ts +67 -140
  1572. package/src/store/evidence/source-text.ts +23 -28
  1573. package/src/store/evidence/types.ts +51 -41
  1574. package/src/store/feedback/conformance.ts +37 -35
  1575. package/src/store/feedback/disk.ts +61 -63
  1576. package/src/store/feedback/index.ts +1 -1
  1577. package/src/store/feedback/memory.ts +0 -0
  1578. package/src/store/feedback/types.ts +14 -13
  1579. package/src/store/index.ts +24 -28
  1580. package/src/store/memory/digest.ts +35 -0
  1581. package/src/store/memory/disk.ts +66 -20
  1582. package/src/store/memory/index-file.ts +121 -0
  1583. package/src/store/memory/index.ts +4 -2
  1584. package/src/store/memory/links.ts +37 -0
  1585. package/src/store/memory/markdown-format.ts +276 -0
  1586. package/src/store/memory/markdown.ts +741 -0
  1587. package/src/store/memory/memory.ts +39 -17
  1588. package/src/store/memory/naming.ts +195 -0
  1589. package/src/store/memory/origin.ts +35 -0
  1590. package/src/store/session/disk.ts +27 -200
  1591. package/src/store/session/index.ts +5 -9
  1592. package/src/store/session/memory.ts +1 -78
  1593. package/src/store/session-claim.ts +101 -0
  1594. package/src/store/session-index/fts.ts +215 -0
  1595. package/src/store/session-index/index.ts +253 -0
  1596. package/src/store/session-index/rebuild.ts +869 -0
  1597. package/src/store/session-index/refs.ts +164 -0
  1598. package/src/store/session-index/scan.ts +273 -0
  1599. package/src/store/session-index/sqlite.ts +772 -0
  1600. package/src/store/session-log/chain.ts +314 -0
  1601. package/src/store/session-log/conformance.ts +487 -0
  1602. package/src/store/session-log/core.ts +809 -0
  1603. package/src/store/session-log/disk.ts +217 -0
  1604. package/src/store/session-log/fold.ts +368 -0
  1605. package/src/store/session-log/heal.ts +44 -0
  1606. package/src/store/session-log/held-leases.ts +103 -0
  1607. package/src/store/session-log/index.ts +87 -0
  1608. package/src/store/session-log/lease.ts +354 -0
  1609. package/src/store/session-log/memory.ts +111 -0
  1610. package/src/store/session-log/spill.ts +311 -0
  1611. package/src/store/task/context.ts +33 -0
  1612. package/src/store/task/disk.ts +122 -141
  1613. package/src/store/task/memory.ts +14 -8
  1614. package/src/store/topic/index.ts +2 -2
  1615. package/src/store/topic/objective.ts +12 -3
  1616. package/src/store/topic/state.ts +1 -1
  1617. package/src/streaming/coalesce.ts +8 -7
  1618. package/src/telemetry/attributes.ts +10 -9
  1619. package/src/telemetry/metrics.ts +6 -6
  1620. package/src/telemetry/runtime-accessors.ts +1 -1
  1621. package/src/test-support/ids.ts +5 -6
  1622. package/src/testing.ts +11 -16
  1623. package/src/tools/advisory/index.ts +1 -1
  1624. package/src/tools/builtins/bash.ts +43 -5
  1625. package/src/tools/builtins/content-fingerprint.ts +2 -2
  1626. package/src/tools/builtins/edit-apply.ts +1 -1
  1627. package/src/tools/builtins/edit.ts +3 -0
  1628. package/src/tools/builtins/glob.ts +3 -0
  1629. package/src/tools/builtins/grep.ts +3 -0
  1630. package/src/tools/builtins/job.ts +5 -5
  1631. package/src/tools/builtins/ls.ts +3 -0
  1632. package/src/tools/builtins/lsp.ts +5 -2
  1633. package/src/tools/builtins/read-file.ts +3 -0
  1634. package/src/tools/builtins/run-code.ts +11 -11
  1635. package/src/tools/builtins/skill.ts +3 -3
  1636. package/src/tools/builtins/wait-for-job-bounds.ts +6 -6
  1637. package/src/tools/builtins/wait-for-job.ts +3 -3
  1638. package/src/tools/builtins/web-guidance.ts +2 -2
  1639. package/src/tools/builtins/web.ts +3 -3
  1640. package/src/tools/builtins/write-file.ts +3 -0
  1641. package/src/tools/coordinator/agent.ts +8 -8
  1642. package/src/tools/coordinator/ask-user-question.ts +16 -14
  1643. package/src/tools/coordinator/index.ts +64 -54
  1644. package/src/tools/coordinator/outcome.ts +7 -7
  1645. package/src/tools/coordinator/plan-dependencies.ts +1 -1
  1646. package/src/tools/coordinator/wait-with-idle-bound.ts +6 -6
  1647. package/src/tools/defineTool.ts +9 -1
  1648. package/src/tools/env-scrub.ts +1 -1
  1649. package/src/tools/goal/index.ts +16 -12
  1650. package/src/tools/memory/fields.ts +26 -0
  1651. package/src/tools/memory/read.ts +75 -8
  1652. package/src/tools/memory/resolve.ts +37 -0
  1653. package/src/tools/memory/save.ts +54 -18
  1654. package/src/tools/memory/search.ts +9 -5
  1655. package/src/tools/memory/update.ts +43 -7
  1656. package/src/tools/paths.ts +87 -27
  1657. package/src/tools/posix-path.ts +1 -1
  1658. package/src/tools/resident-history.ts +1 -1
  1659. package/src/tools/resident-tool-evidence.ts +1 -1
  1660. package/src/tools/task/create.ts +7 -3
  1661. package/src/tools/task/index.ts +20 -4
  1662. package/src/tools/task/list.ts +12 -6
  1663. package/src/turn/LimitChecker.ts +99 -0
  1664. package/src/turn/command-gate.ts +294 -0
  1665. package/src/turn/drain.ts +324 -0
  1666. package/src/turn/evidence-query.ts +333 -0
  1667. package/src/turn/evidence-recall.ts +860 -0
  1668. package/src/turn/index.ts +38 -0
  1669. package/src/turn/json-claim-verifier.ts +298 -0
  1670. package/src/turn/memory-promoter.ts +160 -0
  1671. package/src/turn/memory-recall.ts +285 -0
  1672. package/src/turn/reporter.ts +469 -0
  1673. package/src/types/activity/index.ts +2 -2
  1674. package/src/types/advisory/config.ts +7 -7
  1675. package/src/types/agent/base.ts +74 -44
  1676. package/src/types/agent/core.ts +10 -10
  1677. package/src/types/agent/delegate.ts +2 -2
  1678. package/src/types/agent/factory.ts +8 -4
  1679. package/src/types/agent/manager.ts +6 -6
  1680. package/src/types/agent/pipeline.ts +5 -4
  1681. package/src/types/agent/reactive.ts +11 -10
  1682. package/src/types/agent/router.ts +1 -1
  1683. package/src/types/agent/scheduler.ts +28 -11
  1684. package/src/types/agent/supervisor.ts +13 -13
  1685. package/src/types/agent/task.ts +53 -12
  1686. package/src/types/agent/working-memory.ts +6 -4
  1687. package/src/types/bidi/index.ts +31 -12
  1688. package/src/types/bus/index.ts +32 -26
  1689. package/src/types/code-navigation/index.ts +1 -1
  1690. package/src/types/common/index.ts +12 -26
  1691. package/src/types/connector/core.ts +2 -2
  1692. package/src/types/connector/definition.ts +1 -1
  1693. package/src/types/connector/mcp.ts +1 -1
  1694. package/src/types/errors/catalog.ts +4 -4
  1695. package/src/types/errors/index.ts +5 -5
  1696. package/src/types/guardrail/index.ts +12 -10
  1697. package/src/types/hitl/index.ts +81 -125
  1698. package/src/types/hitl/policy.ts +8 -6
  1699. package/src/types/ids/brand.ts +10 -2
  1700. package/src/types/ids/index.ts +10 -4
  1701. package/src/types/memory/index.ts +53 -0
  1702. package/src/types/message/index.ts +4 -4
  1703. package/src/types/plan/index.ts +5 -3
  1704. package/src/types/plugin/index.ts +41 -24
  1705. package/src/types/probe/event-kind.ts +3 -3
  1706. package/src/types/probe/registry.ts +3 -2
  1707. package/src/types/project/entity.ts +3 -3
  1708. package/src/types/provider/config.ts +3 -3
  1709. package/src/types/provider/error.ts +1 -1
  1710. package/src/types/provider/errors.ts +3 -3
  1711. package/src/types/provider/interface.ts +5 -5
  1712. package/src/types/provider/model.ts +26 -2
  1713. package/src/types/router/task-router.ts +1 -1
  1714. package/src/types/sandbox/index.ts +12 -12
  1715. package/src/types/session/answer-review.ts +85 -0
  1716. package/src/types/session/audit.ts +167 -0
  1717. package/src/types/session/cancel-cause.ts +60 -0
  1718. package/src/types/session/checkpoint.ts +167 -0
  1719. package/src/types/session/config.ts +212 -0
  1720. package/src/types/session/derive-status.ts +61 -0
  1721. package/src/types/session/durable.ts +150 -0
  1722. package/src/types/session/entity.ts +1 -1
  1723. package/src/types/session/events.ts +1187 -0
  1724. package/src/types/session/fork.ts +52 -0
  1725. package/src/types/session/ids.ts +1 -1
  1726. package/src/types/session/index.ts +24 -4
  1727. package/src/types/session/lineage.ts +15 -0
  1728. package/src/types/session/log-cursor.ts +69 -0
  1729. package/src/types/session/memory-promotion.ts +116 -0
  1730. package/src/types/session/messages.ts +1 -1
  1731. package/src/types/session/prepare-step.ts +299 -0
  1732. package/src/types/session/records.ts +931 -0
  1733. package/src/types/session/step.ts +214 -0
  1734. package/src/types/session/stop-reason.ts +83 -0
  1735. package/src/types/session/store.ts +5 -52
  1736. package/src/types/session/tool-execution.ts +32 -0
  1737. package/src/types/session/turn-state.ts +136 -0
  1738. package/src/types/session/turn.ts +289 -0
  1739. package/src/types/structured-output/index.ts +4 -4
  1740. package/src/types/summary/deliverable.ts +4 -4
  1741. package/src/types/task/index.ts +8 -4
  1742. package/src/types/tool/index.ts +74 -27
  1743. package/src/types/topic/entity.ts +6 -6
  1744. package/src/types/topic/objective.ts +7 -5
  1745. package/src/types/topic/state.ts +4 -4
  1746. package/src/types/topic/store.ts +1 -1
  1747. package/src/types/workspace/index.ts +8 -8
  1748. package/src/types/workspace/ref.ts +3 -3
  1749. package/src/types/workspace/shared-session.ts +65 -0
  1750. package/src/utils/abort.ts +4 -4
  1751. package/src/utils/atomic-write.ts +67 -4
  1752. package/src/utils/cost.ts +11 -12
  1753. package/src/utils/env.ts +1 -1
  1754. package/src/utils/id.ts +25 -18
  1755. package/src/utils/log/attributes.ts +2 -2
  1756. package/src/utils/log/create-logger.ts +1 -1
  1757. package/src/utils/log/types.ts +1 -1
  1758. package/src/utils/shell-compress.ts +2 -2
  1759. package/src/utils/uuidv7.ts +107 -0
  1760. package/src/vault/instrumentation.ts +21 -8
  1761. package/dist/constants/emergency.d.ts +0 -4
  1762. package/dist/constants/emergency.d.ts.map +0 -1
  1763. package/dist/constants/emergency.js +0 -4
  1764. package/dist/constants/emergency.js.map +0 -1
  1765. package/dist/contracts/run-status.d.ts +0 -17
  1766. package/dist/contracts/run-status.d.ts.map +0 -1
  1767. package/dist/contracts/run-status.js +0 -41
  1768. package/dist/contracts/run-status.js.map +0 -1
  1769. package/dist/eval/from-run.d.ts +0 -30
  1770. package/dist/eval/from-run.d.ts.map +0 -1
  1771. package/dist/eval/from-run.js +0 -46
  1772. package/dist/eval/from-run.js.map +0 -1
  1773. package/dist/manager/run/emergency.d.ts +0 -19
  1774. package/dist/manager/run/emergency.d.ts.map +0 -1
  1775. package/dist/manager/run/emergency.js +0 -122
  1776. package/dist/manager/run/emergency.js.map +0 -1
  1777. package/dist/manager/run/persistence.d.ts +0 -312
  1778. package/dist/manager/run/persistence.d.ts.map +0 -1
  1779. package/dist/manager/run/persistence.js +0 -656
  1780. package/dist/manager/run/persistence.js.map +0 -1
  1781. package/dist/read-model/run-status.d.ts +0 -43
  1782. package/dist/read-model/run-status.d.ts.map +0 -1
  1783. package/dist/read-model/run-status.js +0 -89
  1784. package/dist/read-model/run-status.js.map +0 -1
  1785. package/dist/run/LimitChecker.d.ts +0 -30
  1786. package/dist/run/LimitChecker.d.ts.map +0 -1
  1787. package/dist/run/LimitChecker.js +0 -57
  1788. package/dist/run/LimitChecker.js.map +0 -1
  1789. package/dist/run/command-gate.d.ts +0 -107
  1790. package/dist/run/command-gate.d.ts.map +0 -1
  1791. package/dist/run/command-gate.js +0 -221
  1792. package/dist/run/command-gate.js.map +0 -1
  1793. package/dist/run/drain.d.ts +0 -204
  1794. package/dist/run/drain.d.ts.map +0 -1
  1795. package/dist/run/drain.js +0 -238
  1796. package/dist/run/drain.js.map +0 -1
  1797. package/dist/run/evidence-query.d.ts +0 -41
  1798. package/dist/run/evidence-query.d.ts.map +0 -1
  1799. package/dist/run/evidence-query.js +0 -270
  1800. package/dist/run/evidence-query.js.map +0 -1
  1801. package/dist/run/evidence-recall.d.ts +0 -99
  1802. package/dist/run/evidence-recall.d.ts.map +0 -1
  1803. package/dist/run/evidence-recall.js +0 -633
  1804. package/dist/run/evidence-recall.js.map +0 -1
  1805. package/dist/run/index.d.ts +0 -19
  1806. package/dist/run/index.d.ts.map +0 -1
  1807. package/dist/run/index.js +0 -11
  1808. package/dist/run/index.js.map +0 -1
  1809. package/dist/run/json-claim-verifier.d.ts +0 -83
  1810. package/dist/run/json-claim-verifier.d.ts.map +0 -1
  1811. package/dist/run/json-claim-verifier.js +0 -200
  1812. package/dist/run/json-claim-verifier.js.map +0 -1
  1813. package/dist/run/memory-promoter.d.ts +0 -38
  1814. package/dist/run/memory-promoter.d.ts.map +0 -1
  1815. package/dist/run/memory-promoter.js +0 -109
  1816. package/dist/run/memory-promoter.js.map +0 -1
  1817. package/dist/run/memory-recall.d.ts +0 -25
  1818. package/dist/run/memory-recall.d.ts.map +0 -1
  1819. package/dist/run/memory-recall.js +0 -228
  1820. package/dist/run/memory-recall.js.map +0 -1
  1821. package/dist/run/preparation-context-error.d.ts.map +0 -1
  1822. package/dist/run/preparation-context-error.js.map +0 -1
  1823. package/dist/run/reporter.d.ts +0 -8
  1824. package/dist/run/reporter.d.ts.map +0 -1
  1825. package/dist/run/reporter.js +0 -420
  1826. package/dist/run/reporter.js.map +0 -1
  1827. package/dist/run/token-budget.d.ts +0 -116
  1828. package/dist/run/token-budget.d.ts.map +0 -1
  1829. package/dist/run/token-budget.js +0 -626
  1830. package/dist/run/token-budget.js.map +0 -1
  1831. package/dist/run/workspace-fingerprint.d.ts.map +0 -1
  1832. package/dist/run/workspace-fingerprint.js.map +0 -1
  1833. package/dist/run-query/index.d.ts +0 -90
  1834. package/dist/run-query/index.d.ts.map +0 -1
  1835. package/dist/run-query/index.js +0 -127
  1836. package/dist/run-query/index.js.map +0 -1
  1837. package/dist/runtime/query/finalize-run.d.ts +0 -55
  1838. package/dist/runtime/query/finalize-run.d.ts.map +0 -1
  1839. package/dist/runtime/query/finalize-run.js +0 -113
  1840. package/dist/runtime/query/finalize-run.js.map +0 -1
  1841. package/dist/runtime/query/prepare-run.d.ts +0 -94
  1842. package/dist/runtime/query/prepare-run.d.ts.map +0 -1
  1843. package/dist/runtime/query/prepare-run.js +0 -589
  1844. package/dist/runtime/query/prepare-run.js.map +0 -1
  1845. package/dist/runtime/query/release-run.d.ts +0 -56
  1846. package/dist/runtime/query/release-run.d.ts.map +0 -1
  1847. package/dist/runtime/query/release-run.js +0 -101
  1848. package/dist/runtime/query/release-run.js.map +0 -1
  1849. package/dist/runtime/query/replay/list.d.ts +0 -40
  1850. package/dist/runtime/query/replay/list.d.ts.map +0 -1
  1851. package/dist/runtime/query/replay/list.js +0 -38
  1852. package/dist/runtime/query/replay/list.js.map +0 -1
  1853. package/dist/runtime/query/replay/mutate.d.ts +0 -17
  1854. package/dist/runtime/query/replay/mutate.d.ts.map +0 -1
  1855. package/dist/runtime/query/replay/mutate.js +0 -69
  1856. package/dist/runtime/query/replay/mutate.js.map +0 -1
  1857. package/dist/runtime/query/replay/prepare.d.ts +0 -66
  1858. package/dist/runtime/query/replay/prepare.d.ts.map +0 -1
  1859. package/dist/runtime/query/replay/prepare.js +0 -81
  1860. package/dist/runtime/query/replay/prepare.js.map +0 -1
  1861. package/dist/runtime/query/resume-run.d.ts +0 -103
  1862. package/dist/runtime/query/resume-run.d.ts.map +0 -1
  1863. package/dist/runtime/query/resume-run.js +0 -105
  1864. package/dist/runtime/query/resume-run.js.map +0 -1
  1865. package/dist/runtime/query/run-state.d.ts +0 -57
  1866. package/dist/runtime/query/run-state.d.ts.map +0 -1
  1867. package/dist/runtime/query/run-state.js +0 -96
  1868. package/dist/runtime/query/run-state.js.map +0 -1
  1869. package/dist/session/workspace/path-builder.d.ts +0 -50
  1870. package/dist/session/workspace/path-builder.d.ts.map +0 -1
  1871. package/dist/session/workspace/path-builder.js +0 -51
  1872. package/dist/session/workspace/path-builder.js.map +0 -1
  1873. package/dist/session/workspace/shared-run.d.ts +0 -112
  1874. package/dist/session/workspace/shared-run.d.ts.map +0 -1
  1875. package/dist/session/workspace/shared-run.js +0 -290
  1876. package/dist/session/workspace/shared-run.js.map +0 -1
  1877. package/dist/store/evidence/compaction-archive.d.ts +0 -109
  1878. package/dist/store/evidence/compaction-archive.d.ts.map +0 -1
  1879. package/dist/store/evidence/compaction-archive.js +0 -125
  1880. package/dist/store/evidence/compaction-archive.js.map +0 -1
  1881. package/dist/store/evidence/linked.d.ts +0 -9
  1882. package/dist/store/evidence/linked.d.ts.map +0 -1
  1883. package/dist/store/evidence/linked.js +0 -314
  1884. package/dist/store/evidence/linked.js.map +0 -1
  1885. package/dist/store/evidence/record-chain.d.ts +0 -42
  1886. package/dist/store/evidence/record-chain.d.ts.map +0 -1
  1887. package/dist/store/evidence/record-chain.js +0 -111
  1888. package/dist/store/evidence/record-chain.js.map +0 -1
  1889. package/dist/store/run/checkpoint-disk.d.ts +0 -98
  1890. package/dist/store/run/checkpoint-disk.d.ts.map +0 -1
  1891. package/dist/store/run/checkpoint-disk.js +0 -190
  1892. package/dist/store/run/checkpoint-disk.js.map +0 -1
  1893. package/dist/store/run/checkpoint-memory.d.ts +0 -51
  1894. package/dist/store/run/checkpoint-memory.d.ts.map +0 -1
  1895. package/dist/store/run/checkpoint-memory.js +0 -178
  1896. package/dist/store/run/checkpoint-memory.js.map +0 -1
  1897. package/dist/store/run/claim-disk.d.ts +0 -130
  1898. package/dist/store/run/claim-disk.d.ts.map +0 -1
  1899. package/dist/store/run/claim-disk.js +0 -570
  1900. package/dist/store/run/claim-disk.js.map +0 -1
  1901. package/dist/store/run/conformance.d.ts +0 -159
  1902. package/dist/store/run/conformance.d.ts.map +0 -1
  1903. package/dist/store/run/conformance.js +0 -466
  1904. package/dist/store/run/conformance.js.map +0 -1
  1905. package/dist/store/run/disk.d.ts +0 -189
  1906. package/dist/store/run/disk.d.ts.map +0 -1
  1907. package/dist/store/run/disk.js +0 -804
  1908. package/dist/store/run/disk.js.map +0 -1
  1909. package/dist/store/run/listing.d.ts +0 -118
  1910. package/dist/store/run/listing.d.ts.map +0 -1
  1911. package/dist/store/run/listing.js +0 -333
  1912. package/dist/store/run/listing.js.map +0 -1
  1913. package/dist/store/run/memory.d.ts +0 -55
  1914. package/dist/store/run/memory.d.ts.map +0 -1
  1915. package/dist/store/run/memory.js +0 -176
  1916. package/dist/store/run/memory.js.map +0 -1
  1917. package/dist/store/run/token-budget-disk.d.ts +0 -37
  1918. package/dist/store/run/token-budget-disk.d.ts.map +0 -1
  1919. package/dist/store/run/token-budget-disk.js +0 -211
  1920. package/dist/store/run/token-budget-disk.js.map +0 -1
  1921. package/dist/store/run/tool-executions.d.ts +0 -13
  1922. package/dist/store/run/tool-executions.d.ts.map +0 -1
  1923. package/dist/store/run/tool-executions.js +0 -99
  1924. package/dist/store/run/tool-executions.js.map +0 -1
  1925. package/dist/store/session/sqlite.d.ts +0 -57
  1926. package/dist/store/session/sqlite.d.ts.map +0 -1
  1927. package/dist/store/session/sqlite.js +0 -430
  1928. package/dist/store/session/sqlite.js.map +0 -1
  1929. package/dist/types/run/answer-review.d.ts +0 -79
  1930. package/dist/types/run/answer-review.d.ts.map +0 -1
  1931. package/dist/types/run/answer-review.js.map +0 -1
  1932. package/dist/types/run/audit.d.ts +0 -150
  1933. package/dist/types/run/audit.d.ts.map +0 -1
  1934. package/dist/types/run/audit.js +0 -39
  1935. package/dist/types/run/audit.js.map +0 -1
  1936. package/dist/types/run/cancel-cause.d.ts +0 -49
  1937. package/dist/types/run/cancel-cause.d.ts.map +0 -1
  1938. package/dist/types/run/cancel-cause.js +0 -39
  1939. package/dist/types/run/cancel-cause.js.map +0 -1
  1940. package/dist/types/run/checkpoint-store.d.ts +0 -511
  1941. package/dist/types/run/checkpoint-store.d.ts.map +0 -1
  1942. package/dist/types/run/checkpoint-store.js +0 -12
  1943. package/dist/types/run/checkpoint-store.js.map +0 -1
  1944. package/dist/types/run/config.d.ts +0 -207
  1945. package/dist/types/run/config.d.ts.map +0 -1
  1946. package/dist/types/run/config.js.map +0 -1
  1947. package/dist/types/run/derive-status.d.ts +0 -29
  1948. package/dist/types/run/derive-status.d.ts.map +0 -1
  1949. package/dist/types/run/derive-status.js +0 -49
  1950. package/dist/types/run/derive-status.js.map +0 -1
  1951. package/dist/types/run/emergency.d.ts +0 -32
  1952. package/dist/types/run/emergency.d.ts.map +0 -1
  1953. package/dist/types/run/emergency.js +0 -6
  1954. package/dist/types/run/emergency.js.map +0 -1
  1955. package/dist/types/run/entity.d.ts +0 -151
  1956. package/dist/types/run/entity.d.ts.map +0 -1
  1957. package/dist/types/run/entity.js +0 -2
  1958. package/dist/types/run/entity.js.map +0 -1
  1959. package/dist/types/run/event-cursor.d.ts +0 -90
  1960. package/dist/types/run/event-cursor.d.ts.map +0 -1
  1961. package/dist/types/run/event-cursor.js +0 -47
  1962. package/dist/types/run/event-cursor.js.map +0 -1
  1963. package/dist/types/run/events.d.ts +0 -1064
  1964. package/dist/types/run/events.d.ts.map +0 -1
  1965. package/dist/types/run/events.js +0 -31
  1966. package/dist/types/run/events.js.map +0 -1
  1967. package/dist/types/run/index.d.ts +0 -24
  1968. package/dist/types/run/index.d.ts.map +0 -1
  1969. package/dist/types/run/index.js +0 -23
  1970. package/dist/types/run/index.js.map +0 -1
  1971. package/dist/types/run/lineage.d.ts +0 -15
  1972. package/dist/types/run/lineage.d.ts.map +0 -1
  1973. package/dist/types/run/lineage.js.map +0 -1
  1974. package/dist/types/run/memory-promotion.d.ts +0 -90
  1975. package/dist/types/run/memory-promotion.d.ts.map +0 -1
  1976. package/dist/types/run/memory-promotion.js +0 -38
  1977. package/dist/types/run/memory-promotion.js.map +0 -1
  1978. package/dist/types/run/metadata.d.ts +0 -47
  1979. package/dist/types/run/metadata.d.ts.map +0 -1
  1980. package/dist/types/run/metadata.js +0 -2
  1981. package/dist/types/run/metadata.js.map +0 -1
  1982. package/dist/types/run/prepare-step.d.ts +0 -260
  1983. package/dist/types/run/prepare-step.d.ts.map +0 -1
  1984. package/dist/types/run/prepare-step.js.map +0 -1
  1985. package/dist/types/run/replay.d.ts +0 -53
  1986. package/dist/types/run/replay.d.ts.map +0 -1
  1987. package/dist/types/run/replay.js +0 -15
  1988. package/dist/types/run/replay.js.map +0 -1
  1989. package/dist/types/run/schema-version.d.ts +0 -19
  1990. package/dist/types/run/schema-version.d.ts.map +0 -1
  1991. package/dist/types/run/schema-version.js +0 -18
  1992. package/dist/types/run/schema-version.js.map +0 -1
  1993. package/dist/types/run/state.d.ts +0 -109
  1994. package/dist/types/run/state.d.ts.map +0 -1
  1995. package/dist/types/run/state.js +0 -109
  1996. package/dist/types/run/state.js.map +0 -1
  1997. package/dist/types/run/status.d.ts +0 -26
  1998. package/dist/types/run/status.d.ts.map +0 -1
  1999. package/dist/types/run/status.js +0 -2
  2000. package/dist/types/run/status.js.map +0 -1
  2001. package/dist/types/run/step.d.ts +0 -198
  2002. package/dist/types/run/step.d.ts.map +0 -1
  2003. package/dist/types/run/step.js +0 -26
  2004. package/dist/types/run/step.js.map +0 -1
  2005. package/dist/types/run/stop-reason.d.ts +0 -67
  2006. package/dist/types/run/stop-reason.d.ts.map +0 -1
  2007. package/dist/types/run/stop-reason.js.map +0 -1
  2008. package/dist/types/run/store.d.ts +0 -300
  2009. package/dist/types/run/store.d.ts.map +0 -1
  2010. package/dist/types/run/store.js +0 -2
  2011. package/dist/types/run/store.js.map +0 -1
  2012. package/dist/types/run/subsession-events.d.ts +0 -64
  2013. package/dist/types/run/subsession-events.d.ts.map +0 -1
  2014. package/dist/types/run/subsession-events.js +0 -2
  2015. package/dist/types/run/subsession-events.js.map +0 -1
  2016. package/dist/types/run/token-budget-store.d.ts +0 -29
  2017. package/dist/types/run/token-budget-store.d.ts.map +0 -1
  2018. package/dist/types/run/token-budget-store.js +0 -25
  2019. package/dist/types/run/token-budget-store.js.map +0 -1
  2020. package/dist/types/workspace/shared-run.d.ts +0 -61
  2021. package/dist/types/workspace/shared-run.d.ts.map +0 -1
  2022. package/dist/types/workspace/shared-run.js +0 -2
  2023. package/dist/types/workspace/shared-run.js.map +0 -1
  2024. package/src/constants/emergency.ts +0 -3
  2025. package/src/contracts/run-status.ts +0 -43
  2026. package/src/eval/from-run.ts +0 -48
  2027. package/src/manager/run/emergency.ts +0 -148
  2028. package/src/manager/run/persistence.ts +0 -746
  2029. package/src/read-model/run-status.ts +0 -127
  2030. package/src/run/LimitChecker.ts +0 -99
  2031. package/src/run/command-gate.ts +0 -294
  2032. package/src/run/drain.ts +0 -403
  2033. package/src/run/evidence-query.ts +0 -333
  2034. package/src/run/evidence-recall.ts +0 -854
  2035. package/src/run/index.ts +0 -42
  2036. package/src/run/json-claim-verifier.ts +0 -298
  2037. package/src/run/memory-promoter.ts +0 -147
  2038. package/src/run/memory-recall.ts +0 -254
  2039. package/src/run/reporter.ts +0 -469
  2040. package/src/run/token-budget.ts +0 -733
  2041. package/src/run-query/index.ts +0 -177
  2042. package/src/runtime/query/finalize-run.ts +0 -192
  2043. package/src/runtime/query/prepare-run.ts +0 -718
  2044. package/src/runtime/query/release-run.ts +0 -168
  2045. package/src/runtime/query/replay/list.ts +0 -66
  2046. package/src/runtime/query/replay/mutate.ts +0 -82
  2047. package/src/runtime/query/replay/prepare.ts +0 -147
  2048. package/src/runtime/query/resume-run.ts +0 -202
  2049. package/src/runtime/query/run-state.ts +0 -138
  2050. package/src/session/workspace/path-builder.ts +0 -72
  2051. package/src/session/workspace/shared-run.ts +0 -354
  2052. package/src/store/evidence/compaction-archive.ts +0 -139
  2053. package/src/store/evidence/linked.ts +0 -365
  2054. package/src/store/evidence/record-chain.ts +0 -108
  2055. package/src/store/run/checkpoint-disk.ts +0 -264
  2056. package/src/store/run/checkpoint-memory.ts +0 -216
  2057. package/src/store/run/claim-disk.ts +0 -638
  2058. package/src/store/run/conformance.ts +0 -728
  2059. package/src/store/run/disk.ts +0 -911
  2060. package/src/store/run/listing.ts +0 -422
  2061. package/src/store/run/memory.ts +0 -204
  2062. package/src/store/run/token-budget-disk.ts +0 -250
  2063. package/src/store/run/tool-executions.ts +0 -112
  2064. package/src/store/session/sqlite.ts +0 -584
  2065. package/src/types/run/answer-review.ts +0 -84
  2066. package/src/types/run/audit.ts +0 -164
  2067. package/src/types/run/cancel-cause.ts +0 -60
  2068. package/src/types/run/checkpoint-store.ts +0 -545
  2069. package/src/types/run/config.ts +0 -221
  2070. package/src/types/run/derive-status.ts +0 -62
  2071. package/src/types/run/emergency.ts +0 -28
  2072. package/src/types/run/entity.ts +0 -161
  2073. package/src/types/run/event-cursor.ts +0 -118
  2074. package/src/types/run/events.ts +0 -1146
  2075. package/src/types/run/index.ts +0 -32
  2076. package/src/types/run/lineage.ts +0 -15
  2077. package/src/types/run/memory-promotion.ts +0 -112
  2078. package/src/types/run/metadata.ts +0 -51
  2079. package/src/types/run/prepare-step.ts +0 -281
  2080. package/src/types/run/replay.ts +0 -61
  2081. package/src/types/run/schema-version.ts +0 -19
  2082. package/src/types/run/state.ts +0 -206
  2083. package/src/types/run/status.ts +0 -33
  2084. package/src/types/run/step.ts +0 -217
  2085. package/src/types/run/stop-reason.ts +0 -83
  2086. package/src/types/run/store.ts +0 -325
  2087. package/src/types/run/subsession-events.ts +0 -71
  2088. package/src/types/run/token-budget-store.ts +0 -54
  2089. package/src/types/workspace/shared-run.ts +0 -65
  2090. /package/dist/{run → turn}/preparation-context-error.d.ts +0 -0
  2091. /package/dist/{run → turn}/preparation-context-error.js +0 -0
  2092. /package/dist/{run → turn}/workspace-fingerprint.d.ts +0 -0
  2093. /package/dist/{run → turn}/workspace-fingerprint.js +0 -0
  2094. /package/dist/types/{run → session}/answer-review.js +0 -0
  2095. /package/dist/types/{run → session}/config.js +0 -0
  2096. /package/dist/types/{run → session}/lineage.js +0 -0
  2097. /package/dist/types/{run → session}/prepare-step.js +0 -0
  2098. /package/dist/types/{run → session}/stop-reason.js +0 -0
  2099. /package/src/{run → turn}/preparation-context-error.ts +0 -0
  2100. /package/src/{run → turn}/workspace-fingerprint.ts +0 -0
@@ -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
+ }