@namzu/sdk 48.3.1 → 50.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 (838) hide show
  1. package/CHANGELOG.md +542 -0
  2. package/README.md +137 -125
  3. package/dist/agents/QueryAgent.d.ts.map +1 -1
  4. package/dist/agents/QueryAgent.js +1 -0
  5. package/dist/agents/QueryAgent.js.map +1 -1
  6. package/dist/agents/examples/SupervisorAgent.d.ts.map +1 -1
  7. package/dist/agents/examples/SupervisorAgent.js +1 -0
  8. package/dist/agents/examples/SupervisorAgent.js.map +1 -1
  9. package/dist/agents/runAgent.d.ts +2 -0
  10. package/dist/agents/runAgent.d.ts.map +1 -1
  11. package/dist/agents/runAgent.js +1 -0
  12. package/dist/agents/runAgent.js.map +1 -1
  13. package/dist/authorization/shell-lexer.d.ts.map +1 -1
  14. package/dist/authorization/shell-lexer.js +16 -1
  15. package/dist/authorization/shell-lexer.js.map +1 -1
  16. package/dist/bridge/acp/permission.d.ts +8 -2
  17. package/dist/bridge/acp/permission.d.ts.map +1 -1
  18. package/dist/bridge/acp/permission.js +1 -0
  19. package/dist/bridge/acp/permission.js.map +1 -1
  20. package/dist/bridge/acp/server.d.ts +25 -1
  21. package/dist/bridge/acp/server.d.ts.map +1 -1
  22. package/dist/bridge/acp/server.js +205 -21
  23. package/dist/bridge/acp/server.js.map +1 -1
  24. package/dist/bridge/acp/tasks.d.ts +5 -0
  25. package/dist/bridge/acp/tasks.d.ts.map +1 -0
  26. package/dist/bridge/acp/tasks.js +19 -0
  27. package/dist/bridge/acp/tasks.js.map +1 -0
  28. package/dist/bridge/acp/update.d.ts.map +1 -1
  29. package/dist/bridge/acp/update.js +148 -13
  30. package/dist/bridge/acp/update.js.map +1 -1
  31. package/dist/config/registry.d.ts +2 -0
  32. package/dist/config/registry.d.ts.map +1 -1
  33. package/dist/config/registry.js +23 -3
  34. package/dist/config/registry.js.map +1 -1
  35. package/dist/config/runtime.d.ts +31 -31
  36. package/dist/connector/mcp/adapter.d.ts.map +1 -1
  37. package/dist/connector/mcp/adapter.js +11 -4
  38. package/dist/connector/mcp/adapter.js.map +1 -1
  39. package/dist/connector/mcp/client.d.ts.map +1 -1
  40. package/dist/connector/mcp/client.js +6 -3
  41. package/dist/connector/mcp/client.js.map +1 -1
  42. package/dist/connector/mcp/discovery.d.ts +9 -5
  43. package/dist/connector/mcp/discovery.d.ts.map +1 -1
  44. package/dist/connector/mcp/discovery.js +16 -8
  45. package/dist/connector/mcp/discovery.js.map +1 -1
  46. package/dist/connector/mcp/mcp-toolset.d.ts +3 -0
  47. package/dist/connector/mcp/mcp-toolset.d.ts.map +1 -1
  48. package/dist/connector/mcp/mcp-toolset.js +20 -2
  49. package/dist/connector/mcp/mcp-toolset.js.map +1 -1
  50. package/dist/connector/mcp/reconnect.d.ts +2 -0
  51. package/dist/connector/mcp/reconnect.d.ts.map +1 -1
  52. package/dist/connector/mcp/reconnect.js +36 -5
  53. package/dist/connector/mcp/reconnect.js.map +1 -1
  54. package/dist/constants/acp/index.d.ts +3 -0
  55. package/dist/constants/acp/index.d.ts.map +1 -1
  56. package/dist/constants/acp/index.js +3 -0
  57. package/dist/constants/acp/index.js.map +1 -1
  58. package/dist/contracts/a2a.d.ts +80 -80
  59. package/dist/contracts/schemas.d.ts +2 -2
  60. package/dist/contracts/session/schemas.d.ts +10 -10
  61. package/dist/manager/agent/lifecycle.d.ts +11 -0
  62. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  63. package/dist/manager/agent/lifecycle.js +178 -3
  64. package/dist/manager/agent/lifecycle.js.map +1 -1
  65. package/dist/manager/plan/lifecycle.d.ts +7 -8
  66. package/dist/manager/plan/lifecycle.d.ts.map +1 -1
  67. package/dist/manager/plan/lifecycle.js +7 -8
  68. package/dist/manager/plan/lifecycle.js.map +1 -1
  69. package/dist/manager/resident/consumption.d.ts +8 -8
  70. package/dist/manager/resident/learning-cycle.d.ts +2 -2
  71. package/dist/manager/resident/learning-observation.d.ts +12 -12
  72. package/dist/manager/resident/learning.d.ts +82 -82
  73. package/dist/manager/resident/outbox.d.ts +8 -8
  74. package/dist/manager/resident/proposal.d.ts +2 -2
  75. package/dist/manager/resident/store.d.ts +10 -10
  76. package/dist/manager/session/attribution.d.ts +1 -0
  77. package/dist/manager/session/attribution.d.ts.map +1 -1
  78. package/dist/manager/session/attribution.js +9 -1
  79. package/dist/manager/session/attribution.js.map +1 -1
  80. package/dist/manager/session/streamed-message-identity.d.ts +6 -0
  81. package/dist/manager/session/streamed-message-identity.d.ts.map +1 -0
  82. package/dist/manager/session/streamed-message-identity.js +14 -0
  83. package/dist/manager/session/streamed-message-identity.js.map +1 -0
  84. package/dist/manager/session/turn-recorder.d.ts.map +1 -1
  85. package/dist/manager/session/turn-recorder.js +4 -3
  86. package/dist/manager/session/turn-recorder.js.map +1 -1
  87. package/dist/pals/activity/causality.d.ts +23 -0
  88. package/dist/pals/activity/causality.d.ts.map +1 -0
  89. package/dist/pals/activity/causality.js +205 -0
  90. package/dist/pals/activity/causality.js.map +1 -0
  91. package/dist/pals/activity/projection.d.ts +5 -0
  92. package/dist/pals/activity/projection.d.ts.map +1 -0
  93. package/dist/pals/activity/projection.js +79 -0
  94. package/dist/pals/activity/projection.js.map +1 -0
  95. package/dist/pals/activity/source.d.ts +16 -0
  96. package/dist/pals/activity/source.d.ts.map +1 -0
  97. package/dist/pals/activity/source.js +235 -0
  98. package/dist/pals/activity/source.js.map +1 -0
  99. package/dist/pals/activity/subscription-policy.d.ts +38 -0
  100. package/dist/pals/activity/subscription-policy.d.ts.map +1 -0
  101. package/dist/pals/activity/subscription-policy.js +183 -0
  102. package/dist/pals/activity/subscription-policy.js.map +1 -0
  103. package/dist/pals/activity/subscription-schema.d.ts +353 -0
  104. package/dist/pals/activity/subscription-schema.d.ts.map +1 -0
  105. package/dist/pals/activity/subscription-schema.js +24 -0
  106. package/dist/pals/activity/subscription-schema.js.map +1 -0
  107. package/dist/pals/activity/subscription-store.d.ts +25 -0
  108. package/dist/pals/activity/subscription-store.d.ts.map +1 -0
  109. package/dist/pals/activity/subscription-store.js +152 -0
  110. package/dist/pals/activity/subscription-store.js.map +1 -0
  111. package/dist/pals/activity/subscription-types.d.ts +42 -0
  112. package/dist/pals/activity/subscription-types.d.ts.map +1 -0
  113. package/dist/pals/activity/subscription-types.js +2 -0
  114. package/dist/pals/activity/subscription-types.js.map +1 -0
  115. package/dist/pals/activity/subscriptions.d.ts +32 -0
  116. package/dist/pals/activity/subscriptions.d.ts.map +1 -0
  117. package/dist/pals/activity/subscriptions.js +151 -0
  118. package/dist/pals/activity/subscriptions.js.map +1 -0
  119. package/dist/pals/activity/types.d.ts +77 -0
  120. package/dist/pals/activity/types.d.ts.map +1 -0
  121. package/dist/pals/activity/types.js +2 -0
  122. package/dist/pals/activity/types.js.map +1 -0
  123. package/dist/pals/channels/ingress.d.ts +9 -0
  124. package/dist/pals/channels/ingress.d.ts.map +1 -0
  125. package/dist/pals/channels/ingress.js +131 -0
  126. package/dist/pals/channels/ingress.js.map +1 -0
  127. package/dist/pals/channels/routes.d.ts +20 -0
  128. package/dist/pals/channels/routes.d.ts.map +1 -0
  129. package/dist/pals/channels/routes.js +111 -0
  130. package/dist/pals/channels/routes.js.map +1 -0
  131. package/dist/pals/channels/routing.d.ts +37 -0
  132. package/dist/pals/channels/routing.d.ts.map +1 -0
  133. package/dist/pals/channels/routing.js +150 -0
  134. package/dist/pals/channels/routing.js.map +1 -0
  135. package/dist/pals/channels/schema.d.ts +234 -0
  136. package/dist/pals/channels/schema.d.ts.map +1 -0
  137. package/dist/pals/channels/schema.js +94 -0
  138. package/dist/pals/channels/schema.js.map +1 -0
  139. package/dist/pals/channels/types.d.ts +115 -0
  140. package/dist/pals/channels/types.d.ts.map +1 -0
  141. package/dist/pals/channels/types.js +2 -0
  142. package/dist/pals/channels/types.js.map +1 -0
  143. package/dist/pals/communication/broker.d.ts +8 -0
  144. package/dist/pals/communication/broker.d.ts.map +1 -0
  145. package/dist/pals/communication/broker.js +121 -0
  146. package/dist/pals/communication/broker.js.map +1 -0
  147. package/dist/pals/communication/dispatch.d.ts +4 -0
  148. package/dist/pals/communication/dispatch.d.ts.map +1 -0
  149. package/dist/pals/communication/dispatch.js +57 -0
  150. package/dist/pals/communication/dispatch.js.map +1 -0
  151. package/dist/pals/communication/inbound.d.ts +9 -0
  152. package/dist/pals/communication/inbound.d.ts.map +1 -0
  153. package/dist/pals/communication/inbound.js +155 -0
  154. package/dist/pals/communication/inbound.js.map +1 -0
  155. package/dist/pals/communication/ingress-dispatch.d.ts +5 -0
  156. package/dist/pals/communication/ingress-dispatch.d.ts.map +1 -0
  157. package/dist/pals/communication/ingress-dispatch.js +51 -0
  158. package/dist/pals/communication/ingress-dispatch.js.map +1 -0
  159. package/dist/pals/communication/ingress-inbound.d.ts +9 -0
  160. package/dist/pals/communication/ingress-inbound.d.ts.map +1 -0
  161. package/dist/pals/communication/ingress-inbound.js +222 -0
  162. package/dist/pals/communication/ingress-inbound.js.map +1 -0
  163. package/dist/pals/communication/ingress-schema.d.ts +7829 -0
  164. package/dist/pals/communication/ingress-schema.d.ts.map +1 -0
  165. package/dist/pals/communication/ingress-schema.js +479 -0
  166. package/dist/pals/communication/ingress-schema.js.map +1 -0
  167. package/dist/pals/communication/ingress-types.d.ts +187 -0
  168. package/dist/pals/communication/ingress-types.d.ts.map +1 -0
  169. package/dist/pals/communication/ingress-types.js +73 -0
  170. package/dist/pals/communication/ingress-types.js.map +1 -0
  171. package/dist/pals/communication/operator.d.ts +75 -0
  172. package/dist/pals/communication/operator.d.ts.map +1 -0
  173. package/dist/pals/communication/operator.js +217 -0
  174. package/dist/pals/communication/operator.js.map +1 -0
  175. package/dist/pals/communication/policy.d.ts +41 -0
  176. package/dist/pals/communication/policy.d.ts.map +1 -0
  177. package/dist/pals/communication/policy.js +138 -0
  178. package/dist/pals/communication/policy.js.map +1 -0
  179. package/dist/pals/communication/schema.d.ts +2000 -0
  180. package/dist/pals/communication/schema.d.ts.map +1 -0
  181. package/dist/pals/communication/schema.js +170 -0
  182. package/dist/pals/communication/schema.js.map +1 -0
  183. package/dist/pals/communication/store.d.ts +61 -0
  184. package/dist/pals/communication/store.d.ts.map +1 -0
  185. package/dist/pals/communication/store.js +450 -0
  186. package/dist/pals/communication/store.js.map +1 -0
  187. package/dist/pals/communication/tools.d.ts +23 -0
  188. package/dist/pals/communication/tools.d.ts.map +1 -0
  189. package/dist/pals/communication/tools.js +107 -0
  190. package/dist/pals/communication/tools.js.map +1 -0
  191. package/dist/pals/communication/types.d.ts +168 -0
  192. package/dist/pals/communication/types.d.ts.map +1 -0
  193. package/dist/pals/communication/types.js +24 -0
  194. package/dist/pals/communication/types.js.map +1 -0
  195. package/dist/pals/communication/verify.d.ts +22 -0
  196. package/dist/pals/communication/verify.d.ts.map +1 -0
  197. package/dist/pals/communication/verify.js +142 -0
  198. package/dist/pals/communication/verify.js.map +1 -0
  199. package/dist/pals/lifecycle.d.ts +37 -0
  200. package/dist/pals/lifecycle.d.ts.map +1 -0
  201. package/dist/pals/lifecycle.js +22 -0
  202. package/dist/pals/lifecycle.js.map +1 -0
  203. package/dist/pals/prompt.d.ts +30 -0
  204. package/dist/pals/prompt.d.ts.map +1 -0
  205. package/dist/pals/prompt.js +65 -0
  206. package/dist/pals/prompt.js.map +1 -0
  207. package/dist/pals/reference-images.d.ts +44 -0
  208. package/dist/pals/reference-images.d.ts.map +1 -0
  209. package/dist/pals/reference-images.js +248 -0
  210. package/dist/pals/reference-images.js.map +1 -0
  211. package/dist/pals/runtime.d.ts +46 -0
  212. package/dist/pals/runtime.d.ts.map +1 -0
  213. package/dist/pals/runtime.js +624 -0
  214. package/dist/pals/runtime.js.map +1 -0
  215. package/dist/pals/store.d.ts +26 -0
  216. package/dist/pals/store.d.ts.map +1 -0
  217. package/dist/pals/store.js +334 -0
  218. package/dist/pals/store.js.map +1 -0
  219. package/dist/pals/types.d.ts +145 -0
  220. package/dist/pals/types.d.ts.map +1 -0
  221. package/dist/pals/types.js +2 -0
  222. package/dist/pals/types.js.map +1 -0
  223. package/dist/peers/envelope.js +1 -1
  224. package/dist/peers/envelope.js.map +1 -1
  225. package/dist/peers/protocol.d.ts +83 -83
  226. package/dist/peers/record.d.ts +10 -10
  227. package/dist/plugin/lifecycle.d.ts +14 -10
  228. package/dist/plugin/lifecycle.d.ts.map +1 -1
  229. package/dist/plugin/lifecycle.js +178 -41
  230. package/dist/plugin/lifecycle.js.map +1 -1
  231. package/dist/plugin/shell-hook.d.ts.map +1 -1
  232. package/dist/plugin/shell-hook.js +7 -2
  233. package/dist/plugin/shell-hook.js.map +1 -1
  234. package/dist/process/kill-tree.d.ts.map +1 -1
  235. package/dist/process/kill-tree.js +9 -1
  236. package/dist/process/kill-tree.js.map +1 -1
  237. package/dist/prompt/resident-learning.js +2 -2
  238. package/dist/prompt/resident-learning.js.map +1 -1
  239. package/dist/prompt/resident-step.d.ts +2 -2
  240. package/dist/prompt/resident-step.js +4 -4
  241. package/dist/prompt/resident-step.js.map +1 -1
  242. package/dist/provider/errors.d.ts +19 -0
  243. package/dist/provider/errors.d.ts.map +1 -1
  244. package/dist/provider/errors.js +123 -2
  245. package/dist/provider/errors.js.map +1 -1
  246. package/dist/public-runtime.d.ts +43 -15
  247. package/dist/public-runtime.d.ts.map +1 -1
  248. package/dist/public-runtime.js +37 -9
  249. package/dist/public-runtime.js.map +1 -1
  250. package/dist/public-tools.d.ts +8 -3
  251. package/dist/public-tools.d.ts.map +1 -1
  252. package/dist/public-tools.js +8 -3
  253. package/dist/public-tools.js.map +1 -1
  254. package/dist/public-types.d.ts +27 -7
  255. package/dist/public-types.d.ts.map +1 -1
  256. package/dist/registry/tool/presentation.d.ts +1 -0
  257. package/dist/registry/tool/presentation.d.ts.map +1 -1
  258. package/dist/registry/tool/presentation.js +9 -7
  259. package/dist/registry/tool/presentation.js.map +1 -1
  260. package/dist/registry/tool/screen.d.ts.map +1 -1
  261. package/dist/registry/tool/screen.js +33 -2
  262. package/dist/registry/tool/screen.js.map +1 -1
  263. package/dist/runtime/harness-session/index.d.ts +5 -0
  264. package/dist/runtime/harness-session/index.d.ts.map +1 -0
  265. package/dist/runtime/harness-session/index.js +928 -0
  266. package/dist/runtime/harness-session/index.js.map +1 -0
  267. package/dist/runtime/harness-session/journal.d.ts +37 -0
  268. package/dist/runtime/harness-session/journal.d.ts.map +1 -0
  269. package/dist/runtime/harness-session/journal.js +177 -0
  270. package/dist/runtime/harness-session/journal.js.map +1 -0
  271. package/dist/runtime/harness-session/saved-view.d.ts +8 -0
  272. package/dist/runtime/harness-session/saved-view.d.ts.map +1 -0
  273. package/dist/runtime/harness-session/saved-view.js +112 -0
  274. package/dist/runtime/harness-session/saved-view.js.map +1 -0
  275. package/dist/runtime/jobs/awaited-jobs.d.ts +2 -1
  276. package/dist/runtime/jobs/awaited-jobs.d.ts.map +1 -1
  277. package/dist/runtime/jobs/awaited-jobs.js +2 -1
  278. package/dist/runtime/jobs/awaited-jobs.js.map +1 -1
  279. package/dist/runtime/jobs/registry.d.ts +56 -1
  280. package/dist/runtime/jobs/registry.d.ts.map +1 -1
  281. package/dist/runtime/jobs/registry.js +377 -39
  282. package/dist/runtime/jobs/registry.js.map +1 -1
  283. package/dist/runtime/query/abandon-turn.d.ts +12 -1
  284. package/dist/runtime/query/abandon-turn.d.ts.map +1 -1
  285. package/dist/runtime/query/abandon-turn.js +3 -1
  286. package/dist/runtime/query/abandon-turn.js.map +1 -1
  287. package/dist/runtime/query/checkpoint.d.ts +4 -0
  288. package/dist/runtime/query/checkpoint.d.ts.map +1 -1
  289. package/dist/runtime/query/checkpoint.js +10 -0
  290. package/dist/runtime/query/checkpoint.js.map +1 -1
  291. package/dist/runtime/query/durable-inbound.d.ts +5 -0
  292. package/dist/runtime/query/durable-inbound.d.ts.map +1 -0
  293. package/dist/runtime/query/durable-inbound.js +89 -0
  294. package/dist/runtime/query/durable-inbound.js.map +1 -0
  295. package/dist/runtime/query/events.d.ts +4 -0
  296. package/dist/runtime/query/events.d.ts.map +1 -1
  297. package/dist/runtime/query/events.js +22 -5
  298. package/dist/runtime/query/events.js.map +1 -1
  299. package/dist/runtime/query/executor/tool-call-admission.d.ts +5 -1
  300. package/dist/runtime/query/executor/tool-call-admission.d.ts.map +1 -1
  301. package/dist/runtime/query/executor/tool-call-admission.js +85 -13
  302. package/dist/runtime/query/executor/tool-call-admission.js.map +1 -1
  303. package/dist/runtime/query/executor.d.ts +41 -18
  304. package/dist/runtime/query/executor.d.ts.map +1 -1
  305. package/dist/runtime/query/executor.js +227 -114
  306. package/dist/runtime/query/executor.js.map +1 -1
  307. package/dist/runtime/query/index.d.ts +9 -0
  308. package/dist/runtime/query/index.d.ts.map +1 -1
  309. package/dist/runtime/query/index.js +41 -5
  310. package/dist/runtime/query/index.js.map +1 -1
  311. package/dist/runtime/query/iteration/index.d.ts +18 -6
  312. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  313. package/dist/runtime/query/iteration/index.js +176 -75
  314. package/dist/runtime/query/iteration/index.js.map +1 -1
  315. package/dist/runtime/query/iteration/outstanding-work.d.ts +9 -5
  316. package/dist/runtime/query/iteration/outstanding-work.d.ts.map +1 -1
  317. package/dist/runtime/query/iteration/outstanding-work.js +63 -6
  318. package/dist/runtime/query/iteration/outstanding-work.js.map +1 -1
  319. package/dist/runtime/query/iteration/phases/context.d.ts +8 -0
  320. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  321. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  322. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  323. package/dist/runtime/query/iteration/phases/tool-review.js +106 -17
  324. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  325. package/dist/runtime/query/iteration/step-shaping.d.ts +2 -0
  326. package/dist/runtime/query/iteration/step-shaping.d.ts.map +1 -1
  327. package/dist/runtime/query/iteration/step-shaping.js +5 -1
  328. package/dist/runtime/query/iteration/step-shaping.js.map +1 -1
  329. package/dist/runtime/query/observation-context.d.ts +2 -2
  330. package/dist/runtime/query/observation-context.d.ts.map +1 -1
  331. package/dist/runtime/query/observation-context.js +20 -13
  332. package/dist/runtime/query/observation-context.js.map +1 -1
  333. package/dist/runtime/query/prepare-turn.js +2 -2
  334. package/dist/runtime/query/prepare-turn.js.map +1 -1
  335. package/dist/runtime/query/prompt-cache.d.ts +1 -0
  336. package/dist/runtime/query/prompt-cache.d.ts.map +1 -1
  337. package/dist/runtime/query/prompt-cache.js +2 -0
  338. package/dist/runtime/query/prompt-cache.js.map +1 -1
  339. package/dist/runtime/query/prompt.d.ts +2 -0
  340. package/dist/runtime/query/prompt.d.ts.map +1 -1
  341. package/dist/runtime/query/prompt.js +23 -1
  342. package/dist/runtime/query/prompt.js.map +1 -1
  343. package/dist/runtime/query/repeat-call.d.ts +12 -3
  344. package/dist/runtime/query/repeat-call.d.ts.map +1 -1
  345. package/dist/runtime/query/repeat-call.js +33 -10
  346. package/dist/runtime/query/repeat-call.js.map +1 -1
  347. package/dist/runtime/query/resume-pending.d.ts +5 -6
  348. package/dist/runtime/query/resume-pending.d.ts.map +1 -1
  349. package/dist/runtime/query/resume-pending.js +30 -3
  350. package/dist/runtime/query/resume-pending.js.map +1 -1
  351. package/dist/runtime/query/resume-session.js +1 -1
  352. package/dist/runtime/query/resume-session.js.map +1 -1
  353. package/dist/runtime/query/review-policy.d.ts +8 -1
  354. package/dist/runtime/query/review-policy.d.ts.map +1 -1
  355. package/dist/runtime/query/review-policy.js +6 -0
  356. package/dist/runtime/query/review-policy.js.map +1 -1
  357. package/dist/runtime/query/saved-presentation.d.ts +13 -0
  358. package/dist/runtime/query/saved-presentation.d.ts.map +1 -0
  359. package/dist/runtime/query/saved-presentation.js +63 -0
  360. package/dist/runtime/query/saved-presentation.js.map +1 -0
  361. package/dist/runtime/query/steering.d.ts +6 -9
  362. package/dist/runtime/query/steering.d.ts.map +1 -1
  363. package/dist/runtime/query/steering.js.map +1 -1
  364. package/dist/runtime/query/tool-executions.d.ts +7 -3
  365. package/dist/runtime/query/tool-executions.d.ts.map +1 -1
  366. package/dist/runtime/query/tool-executions.js +89 -9
  367. package/dist/runtime/query/tool-executions.js.map +1 -1
  368. package/dist/runtime/query/tooling.d.ts +3 -1
  369. package/dist/runtime/query/tooling.d.ts.map +1 -1
  370. package/dist/runtime/query/tooling.js +3 -0
  371. package/dist/runtime/query/tooling.js.map +1 -1
  372. package/dist/scheduler/completion-inbox.d.ts +25 -1
  373. package/dist/scheduler/completion-inbox.d.ts.map +1 -1
  374. package/dist/scheduler/completion-inbox.js +102 -8
  375. package/dist/scheduler/completion-inbox.js.map +1 -1
  376. package/dist/scheduler/delegating.d.ts.map +1 -1
  377. package/dist/scheduler/delegating.js +5 -0
  378. package/dist/scheduler/delegating.js.map +1 -1
  379. package/dist/scheduler/local.d.ts.map +1 -1
  380. package/dist/scheduler/local.js +2 -0
  381. package/dist/scheduler/local.js.map +1 -1
  382. package/dist/session/summary/materialize.d.ts +10 -6
  383. package/dist/session/summary/materialize.d.ts.map +1 -1
  384. package/dist/session/summary/materialize.js +41 -8
  385. package/dist/session/summary/materialize.js.map +1 -1
  386. package/dist/store/budget/ledger.d.ts +9 -0
  387. package/dist/store/budget/ledger.d.ts.map +1 -1
  388. package/dist/store/budget/ledger.js +58 -6
  389. package/dist/store/budget/ledger.js.map +1 -1
  390. package/dist/store/evidence/index-page.d.ts +12 -12
  391. package/dist/store/evidence/source-text.d.ts +4 -4
  392. package/dist/store/index.d.ts +1 -0
  393. package/dist/store/index.d.ts.map +1 -1
  394. package/dist/store/index.js +1 -0
  395. package/dist/store/index.js.map +1 -1
  396. package/dist/store/memory/disk.d.ts +7 -2
  397. package/dist/store/memory/disk.d.ts.map +1 -1
  398. package/dist/store/memory/disk.js +58 -5
  399. package/dist/store/memory/disk.js.map +1 -1
  400. package/dist/store/memory/index.d.ts +9 -0
  401. package/dist/store/memory/index.d.ts.map +1 -1
  402. package/dist/store/memory/index.js +43 -5
  403. package/dist/store/memory/index.js.map +1 -1
  404. package/dist/store/memory/markdown.d.ts +7 -2
  405. package/dist/store/memory/markdown.d.ts.map +1 -1
  406. package/dist/store/memory/markdown.js +33 -0
  407. package/dist/store/memory/markdown.js.map +1 -1
  408. package/dist/store/memory/memory.d.ts +7 -2
  409. package/dist/store/memory/memory.d.ts.map +1 -1
  410. package/dist/store/memory/memory.js +34 -0
  411. package/dist/store/memory/memory.js.map +1 -1
  412. package/dist/store/memory/revision.d.ts +16 -0
  413. package/dist/store/memory/revision.d.ts.map +1 -0
  414. package/dist/store/memory/revision.js +144 -0
  415. package/dist/store/memory/revision.js.map +1 -0
  416. package/dist/store/session/disk.d.ts +9 -4
  417. package/dist/store/session/disk.d.ts.map +1 -1
  418. package/dist/store/session/disk.js +57 -11
  419. package/dist/store/session/disk.js.map +1 -1
  420. package/dist/store/session/memory.d.ts +5 -3
  421. package/dist/store/session/memory.d.ts.map +1 -1
  422. package/dist/store/session/memory.js +24 -7
  423. package/dist/store/session/memory.js.map +1 -1
  424. package/dist/store/session-log/core.d.ts +26 -6
  425. package/dist/store/session-log/core.d.ts.map +1 -1
  426. package/dist/store/session-log/core.js +61 -8
  427. package/dist/store/session-log/core.js.map +1 -1
  428. package/dist/store/session-log/disk.d.ts +2 -2
  429. package/dist/store/session-log/disk.d.ts.map +1 -1
  430. package/dist/store/session-log/disk.js +1 -0
  431. package/dist/store/session-log/disk.js.map +1 -1
  432. package/dist/store/session-log/fold.d.ts +7 -0
  433. package/dist/store/session-log/fold.d.ts.map +1 -1
  434. package/dist/store/session-log/fold.js +21 -0
  435. package/dist/store/session-log/fold.js.map +1 -1
  436. package/dist/store/session-log/index.d.ts +5 -3
  437. package/dist/store/session-log/index.d.ts.map +1 -1
  438. package/dist/store/session-log/index.js +3 -1
  439. package/dist/store/session-log/index.js.map +1 -1
  440. package/dist/store/session-log/memory.d.ts +1 -1
  441. package/dist/store/session-log/memory.d.ts.map +1 -1
  442. package/dist/store/session-log/memory.js +1 -0
  443. package/dist/store/session-log/memory.js.map +1 -1
  444. package/dist/store/session-log/spill.d.ts +10 -3
  445. package/dist/store/session-log/spill.d.ts.map +1 -1
  446. package/dist/store/session-log/spill.js +70 -5
  447. package/dist/store/session-log/spill.js.map +1 -1
  448. package/dist/store/session-log/structured-result.d.ts +21 -0
  449. package/dist/store/session-log/structured-result.d.ts.map +1 -0
  450. package/dist/store/session-log/structured-result.js +67 -0
  451. package/dist/store/session-log/structured-result.js.map +1 -0
  452. package/dist/store/task/disk.d.ts +11 -0
  453. package/dist/store/task/disk.d.ts.map +1 -1
  454. package/dist/store/task/disk.js +41 -2
  455. package/dist/store/task/disk.js.map +1 -1
  456. package/dist/store/task/memory.d.ts.map +1 -1
  457. package/dist/store/task/memory.js +15 -3
  458. package/dist/store/task/memory.js.map +1 -1
  459. package/dist/tools/admit-facts.d.ts +13 -0
  460. package/dist/tools/admit-facts.d.ts.map +1 -0
  461. package/dist/tools/admit-facts.js +142 -0
  462. package/dist/tools/admit-facts.js.map +1 -0
  463. package/dist/tools/builtins/bash.d.ts +4 -1
  464. package/dist/tools/builtins/bash.d.ts.map +1 -1
  465. package/dist/tools/builtins/bash.js +108 -22
  466. package/dist/tools/builtins/bash.js.map +1 -1
  467. package/dist/tools/builtins/browser.d.ts +10 -10
  468. package/dist/tools/builtins/computer-use.d.ts +90 -90
  469. package/dist/tools/builtins/edit.d.ts +17 -0
  470. package/dist/tools/builtins/edit.d.ts.map +1 -1
  471. package/dist/tools/builtins/edit.js +34 -0
  472. package/dist/tools/builtins/edit.js.map +1 -1
  473. package/dist/tools/builtins/file-write-result.d.ts.map +1 -1
  474. package/dist/tools/builtins/file-write-result.js +13 -0
  475. package/dist/tools/builtins/file-write-result.js.map +1 -1
  476. package/dist/tools/builtins/glob.d.ts.map +1 -1
  477. package/dist/tools/builtins/glob.js +12 -0
  478. package/dist/tools/builtins/glob.js.map +1 -1
  479. package/dist/tools/builtins/grep.d.ts.map +1 -1
  480. package/dist/tools/builtins/grep.js +14 -0
  481. package/dist/tools/builtins/grep.js.map +1 -1
  482. package/dist/tools/builtins/index.d.ts +2 -0
  483. package/dist/tools/builtins/index.d.ts.map +1 -1
  484. package/dist/tools/builtins/index.js +1 -0
  485. package/dist/tools/builtins/index.js.map +1 -1
  486. package/dist/tools/builtins/job.d.ts.map +1 -1
  487. package/dist/tools/builtins/job.js +4 -1
  488. package/dist/tools/builtins/job.js.map +1 -1
  489. package/dist/tools/builtins/lsp.d.ts +2 -2
  490. package/dist/tools/builtins/read-file.d.ts.map +1 -1
  491. package/dist/tools/builtins/read-file.js +49 -0
  492. package/dist/tools/builtins/read-file.js.map +1 -1
  493. package/dist/tools/builtins/view-image.d.ts +24 -0
  494. package/dist/tools/builtins/view-image.d.ts.map +1 -0
  495. package/dist/tools/builtins/view-image.js +385 -0
  496. package/dist/tools/builtins/view-image.js.map +1 -0
  497. package/dist/tools/builtins/wait-for-job-bounds.d.ts +8 -4
  498. package/dist/tools/builtins/wait-for-job-bounds.d.ts.map +1 -1
  499. package/dist/tools/builtins/wait-for-job-bounds.js +43 -8
  500. package/dist/tools/builtins/wait-for-job-bounds.js.map +1 -1
  501. package/dist/tools/builtins/wait-for-job.d.ts +3 -0
  502. package/dist/tools/builtins/wait-for-job.d.ts.map +1 -1
  503. package/dist/tools/builtins/wait-for-job.js +127 -15
  504. package/dist/tools/builtins/wait-for-job.js.map +1 -1
  505. package/dist/tools/builtins/write-file.d.ts.map +1 -1
  506. package/dist/tools/builtins/write-file.js +1 -0
  507. package/dist/tools/builtins/write-file.js.map +1 -1
  508. package/dist/tools/command-shell.d.ts +37 -2
  509. package/dist/tools/command-shell.d.ts.map +1 -1
  510. package/dist/tools/command-shell.js +100 -3
  511. package/dist/tools/command-shell.js.map +1 -1
  512. package/dist/tools/coordinator/agent.d.ts +9 -19
  513. package/dist/tools/coordinator/agent.d.ts.map +1 -1
  514. package/dist/tools/coordinator/agent.js.map +1 -1
  515. package/dist/tools/coordinator/index.d.ts.map +1 -1
  516. package/dist/tools/coordinator/index.js +127 -67
  517. package/dist/tools/coordinator/index.js.map +1 -1
  518. package/dist/tools/coordinator/wait-with-idle-bound.d.ts +2 -0
  519. package/dist/tools/coordinator/wait-with-idle-bound.d.ts.map +1 -1
  520. package/dist/tools/coordinator/wait-with-idle-bound.js +1 -1
  521. package/dist/tools/coordinator/wait-with-idle-bound.js.map +1 -1
  522. package/dist/tools/defineTool.d.ts.map +1 -1
  523. package/dist/tools/defineTool.js +4 -0
  524. package/dist/tools/defineTool.js.map +1 -1
  525. package/dist/tools/failure-facts.d.ts +8 -0
  526. package/dist/tools/failure-facts.d.ts.map +1 -0
  527. package/dist/tools/failure-facts.js +24 -0
  528. package/dist/tools/failure-facts.js.map +1 -0
  529. package/dist/tools/host-output.d.ts +24 -0
  530. package/dist/tools/host-output.d.ts.map +1 -0
  531. package/dist/tools/host-output.js +117 -0
  532. package/dist/tools/host-output.js.map +1 -0
  533. package/dist/tools/memory/delete.d.ts.map +1 -1
  534. package/dist/tools/memory/delete.js +38 -3
  535. package/dist/tools/memory/delete.js.map +1 -1
  536. package/dist/tools/memory/read.d.ts.map +1 -1
  537. package/dist/tools/memory/read.js +38 -2
  538. package/dist/tools/memory/read.js.map +1 -1
  539. package/dist/tools/memory/search.d.ts.map +1 -1
  540. package/dist/tools/memory/search.js +38 -7
  541. package/dist/tools/memory/search.js.map +1 -1
  542. package/dist/tools/memory/update.d.ts.map +1 -1
  543. package/dist/tools/memory/update.js +30 -3
  544. package/dist/tools/memory/update.js.map +1 -1
  545. package/dist/tools/oem-code-pages.d.ts +8 -0
  546. package/dist/tools/oem-code-pages.d.ts.map +1 -0
  547. package/dist/tools/oem-code-pages.js +23 -0
  548. package/dist/tools/oem-code-pages.js.map +1 -0
  549. package/dist/tools/schedules/schedule-tool.d.ts.map +1 -1
  550. package/dist/tools/schedules/schedule-tool.js +35 -6
  551. package/dist/tools/schedules/schedule-tool.js.map +1 -1
  552. package/dist/tools/schedules/types.d.ts +23 -3
  553. package/dist/tools/schedules/types.d.ts.map +1 -1
  554. package/dist/tools/task/list.d.ts.map +1 -1
  555. package/dist/tools/task/list.js +14 -6
  556. package/dist/tools/task/list.js.map +1 -1
  557. package/dist/tools/task/present.d.ts.map +1 -1
  558. package/dist/tools/task/present.js +26 -6
  559. package/dist/tools/task/present.js.map +1 -1
  560. package/dist/tools/task/update.d.ts.map +1 -1
  561. package/dist/tools/task/update.js +12 -5
  562. package/dist/tools/task/update.js.map +1 -1
  563. package/dist/tools/text-window.d.ts +19 -0
  564. package/dist/tools/text-window.d.ts.map +1 -0
  565. package/dist/tools/text-window.js +83 -0
  566. package/dist/tools/text-window.js.map +1 -0
  567. package/dist/toolsets/manager.d.ts +24 -0
  568. package/dist/toolsets/manager.d.ts.map +1 -1
  569. package/dist/toolsets/manager.js +105 -2
  570. package/dist/toolsets/manager.js.map +1 -1
  571. package/dist/turn/memory-recall.d.ts +2 -0
  572. package/dist/turn/memory-recall.d.ts.map +1 -1
  573. package/dist/turn/memory-recall.js +3 -1
  574. package/dist/turn/memory-recall.js.map +1 -1
  575. package/dist/types/acp/index.d.ts +137 -1
  576. package/dist/types/acp/index.d.ts.map +1 -1
  577. package/dist/types/agent/base.d.ts +3 -0
  578. package/dist/types/agent/base.d.ts.map +1 -1
  579. package/dist/types/agent/manager.d.ts +8 -23
  580. package/dist/types/agent/manager.d.ts.map +1 -1
  581. package/dist/types/agent/scheduler.d.ts +10 -1
  582. package/dist/types/agent/scheduler.d.ts.map +1 -1
  583. package/dist/types/agent/task.d.ts +4 -0
  584. package/dist/types/agent/task.d.ts.map +1 -1
  585. package/dist/types/authorization/index.d.ts +30 -30
  586. package/dist/types/connector/mcp.d.ts +7 -0
  587. package/dist/types/connector/mcp.d.ts.map +1 -1
  588. package/dist/types/errors/catalog.d.ts.map +1 -1
  589. package/dist/types/errors/catalog.js +4 -2
  590. package/dist/types/errors/catalog.js.map +1 -1
  591. package/dist/types/harness/schema.d.ts +354 -0
  592. package/dist/types/harness/schema.d.ts.map +1 -0
  593. package/dist/types/harness/schema.js +203 -0
  594. package/dist/types/harness/schema.js.map +1 -0
  595. package/dist/types/harness/session.d.ts +278 -0
  596. package/dist/types/harness/session.d.ts.map +1 -0
  597. package/dist/types/harness/session.js +2 -0
  598. package/dist/types/harness/session.js.map +1 -0
  599. package/dist/types/hitl/index.d.ts +12 -0
  600. package/dist/types/hitl/index.d.ts.map +1 -1
  601. package/dist/types/hitl/index.js.map +1 -1
  602. package/dist/types/job/index.d.ts +47 -0
  603. package/dist/types/job/index.d.ts.map +1 -0
  604. package/dist/types/job/index.js +2 -0
  605. package/dist/types/job/index.js.map +1 -0
  606. package/dist/types/memory/index.d.ts +29 -0
  607. package/dist/types/memory/index.d.ts.map +1 -1
  608. package/dist/types/memory/index.js +6 -0
  609. package/dist/types/memory/index.js.map +1 -1
  610. package/dist/types/message/inbound-delivery.d.ts +44 -0
  611. package/dist/types/message/inbound-delivery.d.ts.map +1 -0
  612. package/dist/types/message/inbound-delivery.js +14 -0
  613. package/dist/types/message/inbound-delivery.js.map +1 -0
  614. package/dist/types/message/index.d.ts +4 -1
  615. package/dist/types/message/index.d.ts.map +1 -1
  616. package/dist/types/message/index.js +5 -1
  617. package/dist/types/message/index.js.map +1 -1
  618. package/dist/types/plugin/index.d.ts +18 -8
  619. package/dist/types/plugin/index.d.ts.map +1 -1
  620. package/dist/types/plugin/index.js +5 -2
  621. package/dist/types/plugin/index.js.map +1 -1
  622. package/dist/types/sandbox/index.d.ts +39 -2
  623. package/dist/types/sandbox/index.d.ts.map +1 -1
  624. package/dist/types/sandbox/index.js.map +1 -1
  625. package/dist/types/session/checkpoint.d.ts +24 -17
  626. package/dist/types/session/checkpoint.d.ts.map +1 -1
  627. package/dist/types/session/checkpoint.js +1 -0
  628. package/dist/types/session/checkpoint.js.map +1 -1
  629. package/dist/types/session/events.d.ts +23 -1
  630. package/dist/types/session/events.d.ts.map +1 -1
  631. package/dist/types/session/events.js.map +1 -1
  632. package/dist/types/session/records.d.ts +1514 -565
  633. package/dist/types/session/records.d.ts.map +1 -1
  634. package/dist/types/session/records.js +89 -1
  635. package/dist/types/session/records.js.map +1 -1
  636. package/dist/types/session/step.d.ts +2 -0
  637. package/dist/types/session/step.d.ts.map +1 -1
  638. package/dist/types/session/step.js.map +1 -1
  639. package/dist/types/session/store.d.ts +19 -10
  640. package/dist/types/session/store.d.ts.map +1 -1
  641. package/dist/types/session/tool-execution.d.ts +6 -0
  642. package/dist/types/session/tool-execution.d.ts.map +1 -1
  643. package/dist/types/structured-output/index.d.ts +12 -2
  644. package/dist/types/structured-output/index.d.ts.map +1 -1
  645. package/dist/types/summary/ref.d.ts +3 -1
  646. package/dist/types/summary/ref.d.ts.map +1 -1
  647. package/dist/types/tool/index.d.ts +32 -4
  648. package/dist/types/tool/index.d.ts.map +1 -1
  649. package/dist/types/tool/index.js.map +1 -1
  650. package/dist/types/tool/presentation.d.ts +106 -0
  651. package/dist/types/tool/presentation.d.ts.map +1 -1
  652. package/dist/utils/json-snapshot.d.ts +6 -2
  653. package/dist/utils/json-snapshot.d.ts.map +1 -1
  654. package/dist/utils/json-snapshot.js +19 -9
  655. package/dist/utils/json-snapshot.js.map +1 -1
  656. package/dist/utils/structured-result-json.d.ts +5 -0
  657. package/dist/utils/structured-result-json.d.ts.map +1 -0
  658. package/dist/utils/structured-result-json.js +10 -0
  659. package/dist/utils/structured-result-json.js.map +1 -0
  660. package/package.json +1 -1
  661. package/src/agents/QueryAgent.ts +1 -0
  662. package/src/agents/examples/SupervisorAgent.ts +1 -0
  663. package/src/agents/runAgent.ts +3 -0
  664. package/src/authorization/shell-lexer.ts +16 -1
  665. package/src/bridge/acp/permission.ts +17 -3
  666. package/src/bridge/acp/server.ts +271 -25
  667. package/src/bridge/acp/tasks.ts +23 -0
  668. package/src/bridge/acp/update.ts +167 -13
  669. package/src/config/registry.ts +24 -3
  670. package/src/connector/mcp/adapter.ts +16 -4
  671. package/src/connector/mcp/client.ts +6 -2
  672. package/src/connector/mcp/discovery.ts +29 -8
  673. package/src/connector/mcp/mcp-toolset.ts +25 -4
  674. package/src/connector/mcp/reconnect.ts +34 -4
  675. package/src/constants/acp/index.ts +4 -0
  676. package/src/manager/agent/lifecycle.ts +230 -3
  677. package/src/manager/plan/lifecycle.ts +11 -9
  678. package/src/manager/session/attribution.ts +12 -2
  679. package/src/manager/session/streamed-message-identity.ts +21 -0
  680. package/src/manager/session/turn-recorder.ts +4 -3
  681. package/src/pals/activity/causality.ts +261 -0
  682. package/src/pals/activity/projection.ts +89 -0
  683. package/src/pals/activity/source.ts +240 -0
  684. package/src/pals/activity/subscription-policy.ts +230 -0
  685. package/src/pals/activity/subscription-schema.ts +27 -0
  686. package/src/pals/activity/subscription-store.ts +172 -0
  687. package/src/pals/activity/subscription-types.ts +48 -0
  688. package/src/pals/activity/subscriptions.ts +209 -0
  689. package/src/pals/activity/types.ts +108 -0
  690. package/src/pals/channels/ingress.ts +153 -0
  691. package/src/pals/channels/routes.ts +118 -0
  692. package/src/pals/channels/routing.ts +197 -0
  693. package/src/pals/channels/schema.ts +108 -0
  694. package/src/pals/channels/types.ts +156 -0
  695. package/src/pals/communication/broker.ts +131 -0
  696. package/src/pals/communication/dispatch.ts +66 -0
  697. package/src/pals/communication/inbound.ts +193 -0
  698. package/src/pals/communication/ingress-dispatch.ts +63 -0
  699. package/src/pals/communication/ingress-inbound.ts +269 -0
  700. package/src/pals/communication/ingress-schema.ts +526 -0
  701. package/src/pals/communication/ingress-types.ts +336 -0
  702. package/src/pals/communication/operator.ts +315 -0
  703. package/src/pals/communication/policy.ts +174 -0
  704. package/src/pals/communication/schema.ts +173 -0
  705. package/src/pals/communication/store.ts +577 -0
  706. package/src/pals/communication/tools.ts +139 -0
  707. package/src/pals/communication/types.ts +227 -0
  708. package/src/pals/communication/verify.ts +220 -0
  709. package/src/pals/lifecycle.ts +54 -0
  710. package/src/pals/prompt.ts +101 -0
  711. package/src/pals/reference-images.ts +322 -0
  712. package/src/pals/runtime.ts +670 -0
  713. package/src/pals/store.ts +369 -0
  714. package/src/pals/types.ts +157 -0
  715. package/src/peers/envelope.ts +1 -1
  716. package/src/plugin/lifecycle.ts +217 -46
  717. package/src/plugin/shell-hook.ts +8 -2
  718. package/src/process/kill-tree.ts +10 -1
  719. package/src/prompt/resident-learning.ts +2 -2
  720. package/src/prompt/resident-step.ts +4 -4
  721. package/src/provider/errors.ts +135 -2
  722. package/src/public-runtime.ts +119 -12
  723. package/src/public-tools.ts +13 -1
  724. package/src/public-types.ts +69 -7
  725. package/src/registry/tool/presentation.ts +9 -4
  726. package/src/registry/tool/screen.ts +34 -2
  727. package/src/runtime/harness-session/index.ts +1125 -0
  728. package/src/runtime/harness-session/journal.ts +209 -0
  729. package/src/runtime/harness-session/saved-view.ts +122 -0
  730. package/src/runtime/jobs/awaited-jobs.ts +2 -1
  731. package/src/runtime/jobs/registry.ts +423 -50
  732. package/src/runtime/query/abandon-turn.ts +18 -2
  733. package/src/runtime/query/checkpoint.ts +11 -0
  734. package/src/runtime/query/durable-inbound.ts +101 -0
  735. package/src/runtime/query/events.ts +22 -5
  736. package/src/runtime/query/executor/tool-call-admission.ts +125 -32
  737. package/src/runtime/query/executor.ts +316 -130
  738. package/src/runtime/query/index.ts +48 -5
  739. package/src/runtime/query/iteration/index.ts +253 -114
  740. package/src/runtime/query/iteration/outstanding-work.ts +57 -7
  741. package/src/runtime/query/iteration/phases/context.ts +8 -0
  742. package/src/runtime/query/iteration/phases/tool-review.ts +124 -22
  743. package/src/runtime/query/iteration/step-shaping.ts +9 -1
  744. package/src/runtime/query/observation-context.ts +22 -16
  745. package/src/runtime/query/prepare-turn.ts +2 -2
  746. package/src/runtime/query/prompt-cache.ts +3 -0
  747. package/src/runtime/query/prompt.ts +32 -1
  748. package/src/runtime/query/repeat-call.ts +40 -10
  749. package/src/runtime/query/resume-pending.ts +60 -7
  750. package/src/runtime/query/resume-session.ts +1 -1
  751. package/src/runtime/query/review-policy.ts +23 -2
  752. package/src/runtime/query/saved-presentation.ts +70 -0
  753. package/src/runtime/query/steering.ts +6 -9
  754. package/src/runtime/query/tool-executions.ts +108 -9
  755. package/src/runtime/query/tooling.ts +6 -1
  756. package/src/scheduler/completion-inbox.ts +108 -7
  757. package/src/scheduler/delegating.ts +5 -0
  758. package/src/scheduler/local.ts +2 -0
  759. package/src/session/summary/materialize.ts +51 -9
  760. package/src/store/budget/ledger.ts +60 -5
  761. package/src/store/index.ts +1 -0
  762. package/src/store/memory/disk.ts +82 -7
  763. package/src/store/memory/index.ts +66 -7
  764. package/src/store/memory/markdown.ts +54 -2
  765. package/src/store/memory/memory.ts +52 -2
  766. package/src/store/memory/revision.ts +158 -0
  767. package/src/store/session/disk.ts +77 -10
  768. package/src/store/session/memory.ts +32 -7
  769. package/src/store/session-log/core.ts +118 -11
  770. package/src/store/session-log/disk.ts +9 -2
  771. package/src/store/session-log/fold.ts +22 -0
  772. package/src/store/session-log/index.ts +5 -0
  773. package/src/store/session-log/memory.ts +2 -1
  774. package/src/store/session-log/spill.ts +89 -6
  775. package/src/store/session-log/structured-result.ts +96 -0
  776. package/src/store/task/disk.ts +46 -2
  777. package/src/store/task/memory.ts +13 -3
  778. package/src/tools/admit-facts.ts +145 -0
  779. package/src/tools/builtins/bash.ts +132 -24
  780. package/src/tools/builtins/edit.ts +42 -0
  781. package/src/tools/builtins/file-write-result.ts +14 -0
  782. package/src/tools/builtins/glob.ts +12 -0
  783. package/src/tools/builtins/grep.ts +14 -0
  784. package/src/tools/builtins/index.ts +2 -0
  785. package/src/tools/builtins/job.ts +4 -1
  786. package/src/tools/builtins/read-file.ts +57 -0
  787. package/src/tools/builtins/view-image.ts +409 -0
  788. package/src/tools/builtins/wait-for-job-bounds.ts +45 -7
  789. package/src/tools/builtins/wait-for-job.ts +159 -36
  790. package/src/tools/builtins/write-file.ts +4 -2
  791. package/src/tools/command-shell.ts +132 -5
  792. package/src/tools/coordinator/agent.ts +9 -19
  793. package/src/tools/coordinator/index.ts +150 -75
  794. package/src/tools/coordinator/wait-with-idle-bound.ts +3 -1
  795. package/src/tools/defineTool.ts +4 -0
  796. package/src/tools/failure-facts.ts +24 -0
  797. package/src/tools/host-output.ts +136 -0
  798. package/src/tools/memory/delete.ts +33 -3
  799. package/src/tools/memory/read.ts +35 -2
  800. package/src/tools/memory/search.ts +38 -7
  801. package/src/tools/memory/update.ts +28 -3
  802. package/src/tools/oem-code-pages.ts +22 -0
  803. package/src/tools/schedules/schedule-tool.ts +38 -5
  804. package/src/tools/schedules/types.ts +23 -3
  805. package/src/tools/task/list.ts +15 -7
  806. package/src/tools/task/present.ts +37 -7
  807. package/src/tools/task/update.ts +12 -5
  808. package/src/tools/text-window.ts +87 -0
  809. package/src/toolsets/manager.ts +132 -2
  810. package/src/turn/memory-recall.ts +5 -1
  811. package/src/types/acp/index.ts +150 -4
  812. package/src/types/agent/base.ts +3 -0
  813. package/src/types/agent/manager.ts +8 -23
  814. package/src/types/agent/scheduler.ts +10 -1
  815. package/src/types/agent/task.ts +4 -0
  816. package/src/types/connector/mcp.ts +7 -0
  817. package/src/types/errors/catalog.ts +4 -2
  818. package/src/types/harness/schema.ts +203 -0
  819. package/src/types/harness/session.ts +306 -0
  820. package/src/types/hitl/index.ts +17 -1
  821. package/src/types/job/index.ts +42 -0
  822. package/src/types/memory/index.ts +43 -0
  823. package/src/types/message/inbound-delivery.ts +63 -0
  824. package/src/types/message/index.ts +8 -1
  825. package/src/types/plugin/index.ts +11 -6
  826. package/src/types/sandbox/index.ts +46 -0
  827. package/src/types/session/checkpoint.ts +4 -1
  828. package/src/types/session/events.ts +23 -1
  829. package/src/types/session/records.ts +114 -2
  830. package/src/types/session/step.ts +2 -0
  831. package/src/types/session/store.ts +23 -9
  832. package/src/types/session/tool-execution.ts +6 -0
  833. package/src/types/structured-output/index.ts +13 -2
  834. package/src/types/summary/ref.ts +3 -1
  835. package/src/types/tool/index.ts +39 -5
  836. package/src/types/tool/presentation.ts +121 -0
  837. package/src/utils/json-snapshot.ts +26 -9
  838. package/src/utils/structured-result-json.ts +10 -0
@@ -0,0 +1,63 @@
1
+ import type { SessionLogHead } from '../../store/session-log/core.js'
2
+ import type { MessageId, SessionId, TurnId } from '../ids/index.js'
3
+ import type { RuntimeContextMessageSource, UserMessage } from './index.js'
4
+
5
+ /** Host provenance only; this reference grants no operator authority. */
6
+ export interface InboundDeliveryRef {
7
+ readonly namespace: string
8
+ readonly id: string
9
+ readonly digest: string
10
+ }
11
+
12
+ /** Bounded validation for persisted or JavaScript-authored delivery references. */
13
+ export function isInboundDeliveryRef(value: unknown): value is InboundDeliveryRef {
14
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) return false
15
+ const candidate = value as Record<string, unknown>
16
+ return ['namespace', 'id', 'digest'].every((key) => {
17
+ const field = candidate[key]
18
+ return (
19
+ typeof field === 'string' &&
20
+ field.length > 0 &&
21
+ field.length <= 512 &&
22
+ [...field].every(
23
+ (character) => character.charCodeAt(0) >= 32 && character.charCodeAt(0) !== 127,
24
+ )
25
+ )
26
+ })
27
+ }
28
+
29
+ /** Durable delivery carries host context and cannot acquire operator authority. */
30
+ export type DurableInboundMessage = UserMessage & {
31
+ readonly source: RuntimeContextMessageSource & {
32
+ readonly kind: Exclude<RuntimeContextMessageSource['kind'], 'steering'>
33
+ readonly deliveryRef: InboundDeliveryRef
34
+ }
35
+ }
36
+
37
+ export interface InboundDeliveryClaim {
38
+ readonly claimId: string
39
+ readonly ref: InboundDeliveryRef
40
+ readonly message: DurableInboundMessage
41
+ }
42
+
43
+ /** Exact ordinary session-log append, flushed before the host acknowledges it. */
44
+ export interface InboundDeliveryReceipt {
45
+ readonly claimId: string
46
+ readonly ref: InboundDeliveryRef
47
+ readonly sessionId: SessionId
48
+ readonly turnId: TurnId
49
+ readonly messageId: MessageId
50
+ readonly through: SessionLogHead
51
+ }
52
+
53
+ /** Host-owned durable input. Claim, write and acknowledgement failures stop execution. */
54
+ export interface DurableInboundSource {
55
+ claim(context: {
56
+ readonly sessionId: SessionId
57
+ readonly turnId: TurnId
58
+ readonly signal: AbortSignal
59
+ }): Promise<readonly InboundDeliveryClaim[]>
60
+ recorded(receipts: readonly InboundDeliveryReceipt[]): Promise<void>
61
+ /** Wake only. An aborted wait must remove its listener. */
62
+ wait?(signal: AbortSignal): Promise<void>
63
+ }
@@ -1,4 +1,5 @@
1
1
  import type { GoalId, MessageId } from '../ids/index.js'
2
+ import { type InboundDeliveryRef, isInboundDeliveryRef } from './inbound-delivery.js'
2
3
 
3
4
  export type MessageRole = 'system' | 'user' | 'assistant' | 'tool'
4
5
 
@@ -350,6 +351,8 @@ export const RUNTIME_CONTEXT_MESSAGE_KINDS = [
350
351
  'advisory',
351
352
  'answer-review',
352
353
  'auto-continuation',
354
+ 'channel-message',
355
+ 'host-observation',
353
356
  'job-exit',
354
357
  'limit-finalization',
355
358
  'peer-message',
@@ -367,6 +370,8 @@ export type RuntimeContextMessageKind = (typeof RUNTIME_CONTEXT_MESSAGE_KINDS)[n
367
370
  export interface RuntimeContextMessageSource {
368
371
  readonly type: 'runtime-context'
369
372
  readonly kind: RuntimeContextMessageKind
373
+ /** Optional durable host delivery identity; it never grants operator authority. */
374
+ readonly deliveryRef?: InboundDeliveryRef
370
375
  }
371
376
 
372
377
  export type UserMessageSource =
@@ -422,11 +427,13 @@ export function isRuntimeContextMessageSource(
422
427
  const candidate = value as {
423
428
  readonly type?: unknown
424
429
  readonly kind?: unknown
430
+ readonly deliveryRef?: unknown
425
431
  }
426
432
  return (
427
433
  candidate.type === 'runtime-context' &&
428
434
  typeof candidate.kind === 'string' &&
429
- (RUNTIME_CONTEXT_MESSAGE_KINDS as readonly string[]).includes(candidate.kind)
435
+ (RUNTIME_CONTEXT_MESSAGE_KINDS as readonly string[]).includes(candidate.kind) &&
436
+ (candidate.deliveryRef === undefined || isInboundDeliveryRef(candidate.deliveryRef))
430
437
  )
431
438
  }
432
439
 
@@ -371,6 +371,8 @@ export interface PluginMCPServerConfig {
371
371
  readonly command: string
372
372
  readonly args?: readonly string[]
373
373
  readonly env?: Readonly<Record<string, string>>
374
+ /** Maximum time to connect and discover this server. Default 10,000 ms. */
375
+ readonly connectTimeoutMs?: number
374
376
  }
375
377
 
376
378
  // ---------------------------------------------------------------------------
@@ -392,12 +394,15 @@ export interface PluginManifest {
392
394
  readonly personas?: readonly string[]
393
395
  }
394
396
 
395
- export const PluginMCPServerConfigSchema = z.object({
396
- name: z.string().min(1),
397
- command: z.string().min(1),
398
- args: z.array(z.string()).optional(),
399
- env: z.record(z.string()).optional(),
400
- })
397
+ export const PluginMCPServerConfigSchema = z
398
+ .object({
399
+ name: z.string().min(1),
400
+ command: z.string().min(1),
401
+ args: z.array(z.string()).optional(),
402
+ env: z.record(z.string()).optional(),
403
+ connectTimeoutMs: z.number().int().positive().max(3_600_000).optional(),
404
+ })
405
+ .strict()
401
406
 
402
407
  export const PluginManifestSchema = z.object({
403
408
  name: z
@@ -226,6 +226,12 @@ export interface SandboxDetachedProcess {
226
226
  readonly child: import('node:child_process').ChildProcess
227
227
  /** Signal everything the sandbox started for this process, inside the boundary and out. */
228
228
  kill(signal: NodeJS.Signals): void
229
+ /**
230
+ * Stop and confirm the entire owned process tree ended. Remote wrappers
231
+ * provide this when closing the host child alone cannot prove guest exit.
232
+ * Reject on an unconfirmed stop; retain ownership so the caller can retry.
233
+ */
234
+ terminate?(signal?: NodeJS.Signals): Promise<void>
229
235
  }
230
236
 
231
237
  export interface SandboxSpawnOptions {
@@ -233,6 +239,39 @@ export interface SandboxSpawnOptions {
233
239
  readonly env?: Record<string, string>
234
240
  }
235
241
 
242
+ /** Host-selected guest process options; never inherits the operator environment. */
243
+ export interface SandboxStdioOptions extends SandboxSpawnOptions {
244
+ readonly signal?: AbortSignal
245
+ /** Rechecked at admission and before every write/operation, e.g. Pal writer/lifetime. */
246
+ readonly assertExecutionAllowed?: () => void | Promise<void>
247
+ }
248
+
249
+ export interface SandboxStdioEvent {
250
+ readonly stream: 'stdout' | 'stderr'
251
+ readonly data: Uint8Array
252
+ }
253
+
254
+ /** A trusted host's ownership barrier for one application request. */
255
+ export interface SandboxStdioOperation {
256
+ /** Call only after an exact application reply, or before dispatch was attempted. */
257
+ complete(): void
258
+ /** Permanently fence this allocation until computer stop. Never replay the request. */
259
+ outcomeUnknown(): void
260
+ }
261
+
262
+ /** Interactive pipes for an allocation-owned guest process, not a host child. */
263
+ export interface SandboxStdioChannel {
264
+ /** One bounded, backpressured consumer. Bytes preserve binary and UTF-8 boundaries. */
265
+ readonly events: AsyncIterable<SandboxStdioEvent>
266
+ write(data: string | Uint8Array, signal?: AbortSignal): Promise<void>
267
+ /** Idle services do not prevent takeover; each actual request must hold this barrier. */
268
+ beginOperation(signal?: AbortSignal): Promise<SandboxStdioOperation>
269
+ /** Confirm this server's process group stopped; does not quiesce external applications. */
270
+ close(): Promise<void>
271
+ /** Resolves only on confirmed process-group exit; rejects on lost confirmation. */
272
+ readonly closed: Promise<void>
273
+ }
274
+
236
275
  /**
237
276
  * One host-side end of a TCP connection opened from inside the sandbox.
238
277
  *
@@ -310,6 +349,13 @@ export interface Sandbox {
310
349
  opts?: SandboxSpawnOptions,
311
350
  ): SandboxDetachedProcess
312
351
 
352
+ /** Optional interactive guest stdio. Never falls back to a host subprocess. */
353
+ openStdio?(
354
+ command: string,
355
+ args?: readonly string[],
356
+ options?: SandboxStdioOptions,
357
+ ): Promise<SandboxStdioChannel>
358
+
313
359
  /**
314
360
  * Narrow or widen what this sandbox can reach, while it is running.
315
361
  *
@@ -40,12 +40,14 @@ export interface Checkpoint {
40
40
  /**
41
41
  * Review corrections already consumed at this checkpoint, independent of
42
42
  * compactable history: host structured-output review, prose-answer review
43
- * and native structured-output correction.
43
+ * and tool/native structured-output correction.
44
44
  */
45
45
  readonly review: {
46
46
  readonly structuredAttempts: number
47
47
  readonly answerAttempts: number
48
48
  readonly nativeStructuredAttempts: number
49
+ /** Tool-output corrections; absent in older v1 checkpoints and restored as zero. */
50
+ readonly toolStructuredAttempts?: number
49
51
  }
50
52
  /** The turn's current operator/goal/steering message, independent of compaction. */
51
53
  readonly latestUserMessageId?: MessageId
@@ -120,6 +122,7 @@ export const CheckpointSchema = z
120
122
  structuredAttempts: count,
121
123
  answerAttempts: count,
122
124
  nativeStructuredAttempts: count,
125
+ toolStructuredAttempts: count.optional(),
123
126
  })
124
127
  .strict(),
125
128
  latestUserMessageId: id<MessageId>('message').optional(),
@@ -18,7 +18,7 @@ import type { Message } from '../message/index.js'
18
18
  import type { PlanStep } from '../plan/index.js'
19
19
  import type { PluginHookEvent, PluginHookResult } from '../plugin/index.js'
20
20
  import type { TaskStatus } from '../task/index.js'
21
- import type { ToolResultView } from '../tool/presentation.js'
21
+ import type { ToolFacts, ToolResultView } from '../tool/presentation.js'
22
22
  import type { CancelCause } from './cancel-cause.js'
23
23
  import type { FencingToken } from './durable.js'
24
24
  import type { Lineage } from './lineage.js'
@@ -416,12 +416,30 @@ type CoreSessionEvent =
416
416
  type: 'tool_completed'
417
417
  /** Bounded result view; omitted when output was overridden or truncated. */
418
418
  presentation?: ToolResultView
419
+ /**
420
+ * What a saved conversation keeps of a call that has no diff: one
421
+ * label line (or a command's first line), never the output. Live
422
+ * hosts ignore it and draw the real result.
423
+ */
424
+ savedPresentation?: ToolResultView
425
+ /**
426
+ * What the call did, as typed fields for the person's view (see
427
+ * `ToolResult.facts`). Absent when a post-tool hook replaced the
428
+ * output, so a redaction is never undone by a structured copy.
429
+ */
430
+ facts?: ToolFacts
419
431
  sessionId: SessionId
420
432
  turnId: TurnId
421
433
  toolUseId: ToolUseId
422
434
  toolName: string
423
435
  result: string
424
436
  isError: boolean
437
+ /** Executor-classified provider argument failure; absent for host policy, rewrites and cancellation. */
438
+ inputFailure?: 'invalid_json' | 'schema_validation' | 'input_truncated'
439
+ /** Execution was deliberately skipped by a pre-tool hook; a non-error receipt, not a produced output. */
440
+ skipped?: true
441
+ /** Opt-in successful structured_output JSON after screening and post-tool hooks, before preview capping. Not an accepted result. */
442
+ structuredResultJson?: string
425
443
  /** See {@link tool_executing}'s `via`. Carried on both, so a
426
444
  * consumer can pair them without holding the start event. */
427
445
  via?: {
@@ -939,6 +957,8 @@ type CoreSessionEvent =
939
957
  */
940
958
  blockedBy?: readonly TaskId[]
941
959
  owner?: string
960
+ /** The present-continuous form the model gave ("Running the tests"); absent when it gave none. */
961
+ activeForm?: string
942
962
  }
943
963
  | {
944
964
  type: 'task_updated'
@@ -950,6 +970,8 @@ type CoreSessionEvent =
950
970
  owner?: string
951
971
  /** See `task_created`. Carried on updates because an edge can be added later. */
952
972
  blockedBy?: readonly TaskId[]
973
+ /** See `task_created`. */
974
+ activeForm?: string
953
975
  /**
954
976
  * The task was removed from the list (`task_update` with status
955
977
  * `deleted`). `status` and `subject` are what it had when it went.
@@ -1,5 +1,10 @@
1
1
  import { z } from 'zod'
2
2
  import { type EntityIdKind, isEntityId } from '../../utils/id.js'
3
+ import {
4
+ STRUCTURED_RESULT_MAX_BYTES,
5
+ parseStructuredResultJson,
6
+ } from '../../utils/structured-result-json.js'
7
+ import { HarnessBindingSchema, HarnessJournalTransitionSchema } from '../harness/schema.js'
3
8
  import type { HITLDecisionRequest, HITLResumeDecision } from '../hitl/index.js'
4
9
  import type {
5
10
  CheckpointId,
@@ -11,7 +16,7 @@ import type {
11
16
  TopicId,
12
17
  TurnId,
13
18
  } from '../ids/index.js'
14
- import type { Message } from '../message/index.js'
19
+ import { type Message, isRuntimeContextMessageSource } from '../message/index.js'
15
20
  import type { ActorRef } from './actor.js'
16
21
  import { CostInfoSchema, TokenUsageSchema, TurnBudgetBindingSchema } from './checkpoint.js'
17
22
  import {
@@ -70,7 +75,15 @@ const MESSAGE_ROLES = new Set(['system', 'user', 'assistant', 'tool'])
70
75
  * schema checks the discriminant and leaves the content to the message types.
71
76
  */
72
77
  const messageBody = z.custom<Message>(
73
- (value) => isPlainObject(value) && MESSAGE_ROLES.has(value.role as string),
78
+ (value) => {
79
+ if (!isPlainObject(value) || !MESSAGE_ROLES.has(value.role as string)) return false
80
+ const source = value.source
81
+ return (
82
+ !isPlainObject(source) ||
83
+ source.type !== 'runtime-context' ||
84
+ isRuntimeContextMessageSource(source)
85
+ )
86
+ },
74
87
  { message: 'expected a message with a system, user, assistant or tool role' },
75
88
  )
76
89
 
@@ -276,6 +289,16 @@ const spill = z
276
289
  })
277
290
  .strict()
278
291
 
292
+ const structuredResultSpill = spill
293
+ .extend({
294
+ path: text.regex(/^tool-results\/[a-f0-9]{64}\.txt$/),
295
+ manifest: text.regex(/^tool-results\/[a-f0-9]{64}\.txt\.manifest\.json$/),
296
+ bytes: positive.max(STRUCTURED_RESULT_MAX_BYTES),
297
+ })
298
+ .refine((ref) => ref.manifest === `${ref.path}.manifest.json`, {
299
+ message: 'a structured spill manifest must name its body',
300
+ })
301
+
279
302
  const subSessionKind = z.enum(['agent_spawn', 'user_handoff', 'intervention'])
280
303
 
281
304
  const actorRef = z.custom<ActorRef>(
@@ -319,6 +342,7 @@ function inTurn<T extends string, S extends z.ZodRawShape>(type: T, shape: S) {
319
342
  // Session
320
343
 
321
344
  export const SessionStartedRecordSchema = recordSchema('session_started', {
345
+ harness: HarnessBindingSchema.optional(),
322
346
  projectId,
323
347
  tenantId: tenantId.optional(),
324
348
  topicId: topicId.optional(),
@@ -340,6 +364,7 @@ export const SessionStartedRecordSchema = recordSchema('session_started', {
340
364
  })
341
365
 
342
366
  export const SessionUpdatedRecordSchema = recordSchema('session_updated', {
367
+ harness: HarnessJournalTransitionSchema.optional(),
343
368
  title: text.optional(),
344
369
  titleSource: z.enum(['derived', 'named']).optional(),
345
370
  archived: z.boolean().optional(),
@@ -382,6 +407,8 @@ export const TurnCompletedRecordSchema = inTurn('turn_completed', {
382
407
  /** The settled answer, or a preview of it when `resultSpill` holds the whole text. */
383
408
  result: text,
384
409
  resultSpill: spill.optional(),
410
+ /** Accepted JSON stored separately; settlement.structuredOutput is then absent. */
411
+ structuredOutputSpill: structuredResultSpill.optional(),
385
412
  stopReason: stopReason.optional(),
386
413
  cancelCause: cancelCause.optional(),
387
414
  budget: tokenBudgetSummary.optional(),
@@ -787,6 +814,83 @@ export const SessionRecordSchema = z
787
814
  message: `${r.type} happens only inside a turn and must carry turnId`,
788
815
  })
789
816
  }
817
+ if (
818
+ r.type === 'tool_completed' &&
819
+ r.inputFailure !== undefined &&
820
+ (!['invalid_json', 'schema_validation', 'input_truncated'].includes(
821
+ r.inputFailure as string,
822
+ ) ||
823
+ r.isError !== true)
824
+ ) {
825
+ context.addIssue({
826
+ code: z.ZodIssueCode.custom,
827
+ path: ['inputFailure'],
828
+ message: 'inputFailure must classify a failed tool admission',
829
+ })
830
+ }
831
+ if (
832
+ r.type === 'tool_completed' &&
833
+ r.skipped !== undefined &&
834
+ (r.skipped !== true || r.isError !== false || r.inputFailure !== undefined)
835
+ ) {
836
+ context.addIssue({
837
+ code: z.ZodIssueCode.custom,
838
+ path: ['skipped'],
839
+ message: 'skipped must classify a non-error pre-tool hook skip without an input failure',
840
+ })
841
+ }
842
+ if (
843
+ r.type === 'tool_completed' &&
844
+ (r.structuredResultJson !== undefined || r.structuredResultSpill !== undefined)
845
+ ) {
846
+ let validJson = false
847
+ try {
848
+ if (r.structuredResultSpill !== undefined) {
849
+ validJson =
850
+ r.structuredResultJson === undefined &&
851
+ structuredResultSpill.safeParse(r.structuredResultSpill).success
852
+ } else {
853
+ parseStructuredResultJson(r.structuredResultJson)
854
+ validJson = true
855
+ }
856
+ } catch {
857
+ // Retained evidence is never repaired or downgraded to a preview.
858
+ }
859
+ if (
860
+ !validJson ||
861
+ r.toolName !== 'structured_output' ||
862
+ r.isError !== false ||
863
+ r.skipped !== undefined ||
864
+ r.inputFailure !== undefined ||
865
+ r.via !== undefined
866
+ ) {
867
+ context.addIssue({
868
+ code: z.ZodIssueCode.custom,
869
+ path: [
870
+ r.structuredResultSpill !== undefined
871
+ ? 'structuredResultSpill'
872
+ : 'structuredResultJson',
873
+ ],
874
+ message:
875
+ 'structured result evidence must hold JSON or a spill from a successful direct structured_output execution, never both',
876
+ })
877
+ }
878
+ }
879
+ if (r.type === 'turn_completed' && r.structuredOutputSpill !== undefined) {
880
+ const settlement = r.settlement as Record<string, unknown>
881
+ if (
882
+ settlement.status !== 'completed' ||
883
+ settlement.resultSource !== 'structured_output' ||
884
+ settlement.structuredOutput !== undefined
885
+ ) {
886
+ context.addIssue({
887
+ code: z.ZodIssueCode.custom,
888
+ path: ['structuredOutputSpill'],
889
+ message:
890
+ 'a structured output spill requires a completed structured_output settlement without inline structuredOutput',
891
+ })
892
+ }
893
+ }
790
894
  if (r.type === 'message') {
791
895
  const content = r.content as { role: unknown }
792
896
  if (r.role !== content.role) {
@@ -851,6 +955,14 @@ export type SessionEventRecord<T extends PersistedSessionEventType = PersistedSe
851
955
  T extends PersistedSessionEventType
852
956
  ? Omit<EventOf<T>, 'sessionId' | 'turnId' | 'lineage' | 'v' | 'seq' | 'generation'> &
853
957
  RecordEnvelope &
958
+ (T extends 'tool_completed'
959
+ ? { readonly structuredResultSpill?: z.infer<typeof structuredResultSpill> }
960
+ : T extends 'turn_completed'
961
+ ? {
962
+ readonly resultSpill?: z.infer<typeof spill>
963
+ readonly structuredOutputSpill?: z.infer<typeof structuredResultSpill>
964
+ }
965
+ : unknown) &
854
966
  (T extends TurnBoundSessionEventType ? { readonly turnId: TurnId } : unknown)
855
967
  : never
856
968
 
@@ -159,6 +159,8 @@ export interface StepToolResult {
159
159
  /** Text form, after the model-visible output budget was applied. */
160
160
  output: string
161
161
  isError: boolean
162
+ /** The pre-tool hook skipped this call; its receipt is not an executed answer. */
163
+ skipped?: true
162
164
  durationMs: number
163
165
  }
164
166
 
@@ -16,7 +16,7 @@ import type {
16
16
  SubSessionKind,
17
17
  } from '../../types/session/sub-session.js'
18
18
  import type { SessionSummaryRef } from '../../types/summary/ref.js'
19
- import type { SessionId, TenantId } from '../ids/index.js'
19
+ import type { SessionId, TenantId, TurnId } from '../ids/index.js'
20
20
  import type { ProjectId, SubSessionId, SummaryId, TopicId } from '../session/ids.js'
21
21
 
22
22
  /**
@@ -145,6 +145,10 @@ export interface SessionView {
145
145
  * callers never get a fallback and must branch on missing explicitly.
146
146
  */
147
147
  export interface SessionStore {
148
+ /** Explicit opt-in to immutable turn-keyed summaries. Omission does not support child continuation. */
149
+ readonly supportsInvocationSummaries?: boolean
150
+ /** Opt in only when updateSession and recordSummary enforce owner-version CAS. */
151
+ readonly supportsOwnerVersionCas?: boolean
148
152
  // Project CRUD ------------------------------------------------------------
149
153
 
150
154
  createProject(params: CreateProjectParams, tenantId: TenantId): Promise<Project>
@@ -241,7 +245,8 @@ export interface SessionStore {
241
245
  * into.
242
246
  *
243
247
  * **In-process only, stated rather than implied.** `DiskSessionStore`
244
- * writes atomically, but its read-compare-write is not a critical section,
248
+ * serializes session writes across instances using the same root within a
249
+ * process. Its read-compare-write is not a cross-process critical section,
245
250
  * so two PROCESSES can still both pass the check. Closing that needs a
246
251
  * lease with an expiry — not a PID registry, because a Session is durable
247
252
  * and written from hosts where a PID is not a checkable fact. The same
@@ -359,21 +364,30 @@ export interface SessionStore {
359
364
  * writes commit as one logical unit; mid-crash recovery is replay via
360
365
  * `SessionSummaryMaterializer.recover()`.
361
366
  *
362
- * Rejects with {@link SessionAlreadySummarizedError} if a summary already
363
- * exists for the session (re-materialization forbidden; see
364
- * session-hierarchy.md §4.7 immutability invariant).
367
+ * Summaries are immutable per `(sessionRef, turnRef)`. An absent `turnRef`
368
+ * preserves the original single conversation-summary contract. A supplied
369
+ * `turnRef` seals one invocation without replacing any previous summary.
370
+ * Rejects a different summary at an already sealed key.
371
+ * With expectedOwnerVersion, refuse before persisting or flipping status if
372
+ * the current session owner changed. Omission preserves the legacy behavior.
365
373
  */
366
374
  recordSummary(
367
375
  summary: SessionSummaryRef & { materializedBy: 'kernel' },
368
376
  tenantId: TenantId,
377
+ expectedOwnerVersion?: number,
369
378
  ): Promise<void>
370
379
 
371
380
  /**
372
- * Loads the persisted summary for a session. Returns `null` when none has
373
- * been materialized. Cross-tenant reads reject with `TenantIsolationError`
374
- * (Convention #17).
381
+ * Loads the original conversation summary, or the exact invocation summary
382
+ * when `turnId` is supplied. Returns `null` when that key is unsealed; it
383
+ * never substitutes the original or newest summary for a missing invocation.
384
+ * Cross-tenant reads reject with `TenantIsolationError` (Convention #17).
375
385
  */
376
- getSummary(sessionId: SessionId, tenantId: TenantId): Promise<SessionSummaryRef | null>
386
+ getSummary(
387
+ sessionId: SessionId,
388
+ tenantId: TenantId,
389
+ turnId?: TurnId,
390
+ ): Promise<SessionSummaryRef | null>
377
391
  }
378
392
 
379
393
  /**
@@ -14,6 +14,12 @@ export interface CompletedToolRecord {
14
14
  readonly toolName: string
15
15
  readonly result: string
16
16
  readonly isError: boolean
17
+ /** Trusted admission classification retained with the completion, absent in legacy records. */
18
+ readonly inputFailure?: 'invalid_json' | 'schema_validation' | 'input_truncated'
19
+ /** Trusted pre-tool hook skip, absent in legacy records; the tool produced no output. */
20
+ readonly skipped?: true
21
+ /** Opt-in screened, post-hook JSON from a successful structured_output; independent of the bounded receipt. */
22
+ readonly structuredResultJson?: string
17
23
  }
18
24
 
19
25
  /** The latest recorded execution boundary of a tool call, not its inferred external effect. */
@@ -17,8 +17,19 @@ export interface StructuredOutputConfig<TSchema extends z.ZodType = z.ZodType> {
17
17
  mode?: 'tool' | 'native'
18
18
 
19
19
  /**
20
- * Turns spent re-prompting when the model answers in prose or fails
21
- * validation. Defaults to {@link DEFAULT_STRUCTURED_OUTPUT_RETRIES}.
20
+ * Tool mode only. Default `receipt` settles from the bounded tool message.
21
+ * `durable` also records the screened, post-hook JSON before preview capping,
22
+ * so a truncated preview does not destroy the candidate. The session log's
23
+ * record size limit still applies. This is execution evidence, not acceptance;
24
+ * recovered batches retain the existing fresh-inference settlement policy.
25
+ */
26
+ toolResultRetention?: 'receipt' | 'durable'
27
+
28
+ /**
29
+ * Correction opportunities after missing output or model-argument validation
30
+ * failure. Default 2; zero stops after the first invalid response. Tool-mode
31
+ * prose and invalid output calls share a checkpointed counter, once per response.
32
+ * Host review rejections use the separate maxReviews allowance.
22
33
  *
23
34
  * Bounded so a model that cannot satisfy the schema fails loudly rather
24
35
  * than iterating against `maxIterations`.
@@ -20,7 +20,7 @@
20
20
  * `session/summary/errors.ts` — they are NOT pure shapes.
21
21
  */
22
22
 
23
- import type { SessionId, TenantId } from '../ids/index.js'
23
+ import type { SessionId, TenantId, TurnId } from '../ids/index.js'
24
24
  import type { SummaryId } from '../session/ids.js'
25
25
  import type { DeliverableRef } from './deliverable.js'
26
26
 
@@ -53,6 +53,8 @@ export interface SessionSummaryKeyDecision {
53
53
  export interface SessionSummaryRef {
54
54
  readonly id: SummaryId
55
55
  readonly sessionRef: SessionId
56
+ /** Immutable completion of one invocation; omission is the legacy conversation summary. */
57
+ readonly turnRef?: TurnId
56
58
  readonly tenantId: TenantId
57
59
  readonly outcome: SessionSummaryOutcome
58
60
  readonly deliverables: readonly DeliverableRef[]