@namzu/sdk 49.0.0 → 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 (737) hide show
  1. package/CHANGELOG.md +507 -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/runtime.d.ts +31 -31
  32. package/dist/connector/mcp/adapter.d.ts.map +1 -1
  33. package/dist/connector/mcp/adapter.js +11 -4
  34. package/dist/connector/mcp/adapter.js.map +1 -1
  35. package/dist/connector/mcp/client.d.ts.map +1 -1
  36. package/dist/connector/mcp/client.js +6 -3
  37. package/dist/connector/mcp/client.js.map +1 -1
  38. package/dist/constants/acp/index.d.ts +3 -0
  39. package/dist/constants/acp/index.d.ts.map +1 -1
  40. package/dist/constants/acp/index.js +3 -0
  41. package/dist/constants/acp/index.js.map +1 -1
  42. package/dist/contracts/a2a.d.ts +80 -80
  43. package/dist/contracts/schemas.d.ts +2 -2
  44. package/dist/contracts/session/schemas.d.ts +10 -10
  45. package/dist/manager/agent/lifecycle.d.ts +11 -0
  46. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  47. package/dist/manager/agent/lifecycle.js +178 -3
  48. package/dist/manager/agent/lifecycle.js.map +1 -1
  49. package/dist/manager/plan/lifecycle.d.ts +7 -8
  50. package/dist/manager/plan/lifecycle.d.ts.map +1 -1
  51. package/dist/manager/plan/lifecycle.js +7 -8
  52. package/dist/manager/plan/lifecycle.js.map +1 -1
  53. package/dist/manager/resident/consumption.d.ts +8 -8
  54. package/dist/manager/resident/learning-cycle.d.ts +2 -2
  55. package/dist/manager/resident/learning-observation.d.ts +12 -12
  56. package/dist/manager/resident/learning.d.ts +82 -82
  57. package/dist/manager/resident/outbox.d.ts +8 -8
  58. package/dist/manager/resident/proposal.d.ts +2 -2
  59. package/dist/manager/resident/store.d.ts +10 -10
  60. package/dist/manager/session/attribution.d.ts +1 -0
  61. package/dist/manager/session/attribution.d.ts.map +1 -1
  62. package/dist/manager/session/attribution.js +9 -1
  63. package/dist/manager/session/attribution.js.map +1 -1
  64. package/dist/manager/session/streamed-message-identity.d.ts +6 -0
  65. package/dist/manager/session/streamed-message-identity.d.ts.map +1 -0
  66. package/dist/manager/session/streamed-message-identity.js +14 -0
  67. package/dist/manager/session/streamed-message-identity.js.map +1 -0
  68. package/dist/manager/session/turn-recorder.d.ts.map +1 -1
  69. package/dist/manager/session/turn-recorder.js +4 -3
  70. package/dist/manager/session/turn-recorder.js.map +1 -1
  71. package/dist/pals/activity/causality.d.ts +23 -0
  72. package/dist/pals/activity/causality.d.ts.map +1 -0
  73. package/dist/pals/activity/causality.js +205 -0
  74. package/dist/pals/activity/causality.js.map +1 -0
  75. package/dist/pals/activity/projection.d.ts +5 -0
  76. package/dist/pals/activity/projection.d.ts.map +1 -0
  77. package/dist/pals/activity/projection.js +79 -0
  78. package/dist/pals/activity/projection.js.map +1 -0
  79. package/dist/pals/activity/source.d.ts +16 -0
  80. package/dist/pals/activity/source.d.ts.map +1 -0
  81. package/dist/pals/activity/source.js +235 -0
  82. package/dist/pals/activity/source.js.map +1 -0
  83. package/dist/pals/activity/subscription-policy.d.ts +38 -0
  84. package/dist/pals/activity/subscription-policy.d.ts.map +1 -0
  85. package/dist/pals/activity/subscription-policy.js +183 -0
  86. package/dist/pals/activity/subscription-policy.js.map +1 -0
  87. package/dist/pals/activity/subscription-schema.d.ts +353 -0
  88. package/dist/pals/activity/subscription-schema.d.ts.map +1 -0
  89. package/dist/pals/activity/subscription-schema.js +24 -0
  90. package/dist/pals/activity/subscription-schema.js.map +1 -0
  91. package/dist/pals/activity/subscription-store.d.ts +25 -0
  92. package/dist/pals/activity/subscription-store.d.ts.map +1 -0
  93. package/dist/pals/activity/subscription-store.js +152 -0
  94. package/dist/pals/activity/subscription-store.js.map +1 -0
  95. package/dist/pals/activity/subscription-types.d.ts +42 -0
  96. package/dist/pals/activity/subscription-types.d.ts.map +1 -0
  97. package/dist/pals/activity/subscription-types.js +2 -0
  98. package/dist/pals/activity/subscription-types.js.map +1 -0
  99. package/dist/pals/activity/subscriptions.d.ts +32 -0
  100. package/dist/pals/activity/subscriptions.d.ts.map +1 -0
  101. package/dist/pals/activity/subscriptions.js +151 -0
  102. package/dist/pals/activity/subscriptions.js.map +1 -0
  103. package/dist/pals/activity/types.d.ts +77 -0
  104. package/dist/pals/activity/types.d.ts.map +1 -0
  105. package/dist/pals/activity/types.js +2 -0
  106. package/dist/pals/activity/types.js.map +1 -0
  107. package/dist/pals/channels/ingress.d.ts +9 -0
  108. package/dist/pals/channels/ingress.d.ts.map +1 -0
  109. package/dist/pals/channels/ingress.js +131 -0
  110. package/dist/pals/channels/ingress.js.map +1 -0
  111. package/dist/pals/channels/routes.d.ts +20 -0
  112. package/dist/pals/channels/routes.d.ts.map +1 -0
  113. package/dist/pals/channels/routes.js +111 -0
  114. package/dist/pals/channels/routes.js.map +1 -0
  115. package/dist/pals/channels/routing.d.ts +37 -0
  116. package/dist/pals/channels/routing.d.ts.map +1 -0
  117. package/dist/pals/channels/routing.js +150 -0
  118. package/dist/pals/channels/routing.js.map +1 -0
  119. package/dist/pals/channels/schema.d.ts +234 -0
  120. package/dist/pals/channels/schema.d.ts.map +1 -0
  121. package/dist/pals/channels/schema.js +94 -0
  122. package/dist/pals/channels/schema.js.map +1 -0
  123. package/dist/pals/channels/types.d.ts +115 -0
  124. package/dist/pals/channels/types.d.ts.map +1 -0
  125. package/dist/pals/channels/types.js +2 -0
  126. package/dist/pals/channels/types.js.map +1 -0
  127. package/dist/pals/communication/broker.d.ts +8 -0
  128. package/dist/pals/communication/broker.d.ts.map +1 -0
  129. package/dist/pals/communication/broker.js +121 -0
  130. package/dist/pals/communication/broker.js.map +1 -0
  131. package/dist/pals/communication/dispatch.d.ts +4 -0
  132. package/dist/pals/communication/dispatch.d.ts.map +1 -0
  133. package/dist/pals/communication/dispatch.js +57 -0
  134. package/dist/pals/communication/dispatch.js.map +1 -0
  135. package/dist/pals/communication/inbound.d.ts +9 -0
  136. package/dist/pals/communication/inbound.d.ts.map +1 -0
  137. package/dist/pals/communication/inbound.js +155 -0
  138. package/dist/pals/communication/inbound.js.map +1 -0
  139. package/dist/pals/communication/ingress-dispatch.d.ts +5 -0
  140. package/dist/pals/communication/ingress-dispatch.d.ts.map +1 -0
  141. package/dist/pals/communication/ingress-dispatch.js +51 -0
  142. package/dist/pals/communication/ingress-dispatch.js.map +1 -0
  143. package/dist/pals/communication/ingress-inbound.d.ts +9 -0
  144. package/dist/pals/communication/ingress-inbound.d.ts.map +1 -0
  145. package/dist/pals/communication/ingress-inbound.js +222 -0
  146. package/dist/pals/communication/ingress-inbound.js.map +1 -0
  147. package/dist/pals/communication/ingress-schema.d.ts +7829 -0
  148. package/dist/pals/communication/ingress-schema.d.ts.map +1 -0
  149. package/dist/pals/communication/ingress-schema.js +479 -0
  150. package/dist/pals/communication/ingress-schema.js.map +1 -0
  151. package/dist/pals/communication/ingress-types.d.ts +187 -0
  152. package/dist/pals/communication/ingress-types.d.ts.map +1 -0
  153. package/dist/pals/communication/ingress-types.js +73 -0
  154. package/dist/pals/communication/ingress-types.js.map +1 -0
  155. package/dist/pals/communication/operator.d.ts +75 -0
  156. package/dist/pals/communication/operator.d.ts.map +1 -0
  157. package/dist/pals/communication/operator.js +217 -0
  158. package/dist/pals/communication/operator.js.map +1 -0
  159. package/dist/pals/communication/policy.d.ts +41 -0
  160. package/dist/pals/communication/policy.d.ts.map +1 -0
  161. package/dist/pals/communication/policy.js +138 -0
  162. package/dist/pals/communication/policy.js.map +1 -0
  163. package/dist/pals/communication/schema.d.ts +2000 -0
  164. package/dist/pals/communication/schema.d.ts.map +1 -0
  165. package/dist/pals/communication/schema.js +170 -0
  166. package/dist/pals/communication/schema.js.map +1 -0
  167. package/dist/pals/communication/store.d.ts +61 -0
  168. package/dist/pals/communication/store.d.ts.map +1 -0
  169. package/dist/pals/communication/store.js +450 -0
  170. package/dist/pals/communication/store.js.map +1 -0
  171. package/dist/pals/communication/tools.d.ts +23 -0
  172. package/dist/pals/communication/tools.d.ts.map +1 -0
  173. package/dist/pals/communication/tools.js +107 -0
  174. package/dist/pals/communication/tools.js.map +1 -0
  175. package/dist/pals/communication/types.d.ts +168 -0
  176. package/dist/pals/communication/types.d.ts.map +1 -0
  177. package/dist/pals/communication/types.js +24 -0
  178. package/dist/pals/communication/types.js.map +1 -0
  179. package/dist/pals/communication/verify.d.ts +22 -0
  180. package/dist/pals/communication/verify.d.ts.map +1 -0
  181. package/dist/pals/communication/verify.js +142 -0
  182. package/dist/pals/communication/verify.js.map +1 -0
  183. package/dist/pals/lifecycle.d.ts +37 -0
  184. package/dist/pals/lifecycle.d.ts.map +1 -0
  185. package/dist/pals/lifecycle.js +22 -0
  186. package/dist/pals/lifecycle.js.map +1 -0
  187. package/dist/pals/prompt.d.ts +30 -0
  188. package/dist/pals/prompt.d.ts.map +1 -0
  189. package/dist/pals/prompt.js +65 -0
  190. package/dist/pals/prompt.js.map +1 -0
  191. package/dist/pals/reference-images.d.ts +44 -0
  192. package/dist/pals/reference-images.d.ts.map +1 -0
  193. package/dist/pals/reference-images.js +248 -0
  194. package/dist/pals/reference-images.js.map +1 -0
  195. package/dist/pals/runtime.d.ts +46 -0
  196. package/dist/pals/runtime.d.ts.map +1 -0
  197. package/dist/pals/runtime.js +624 -0
  198. package/dist/pals/runtime.js.map +1 -0
  199. package/dist/pals/store.d.ts +26 -0
  200. package/dist/pals/store.d.ts.map +1 -0
  201. package/dist/pals/store.js +334 -0
  202. package/dist/pals/store.js.map +1 -0
  203. package/dist/pals/types.d.ts +145 -0
  204. package/dist/pals/types.d.ts.map +1 -0
  205. package/dist/pals/types.js +2 -0
  206. package/dist/pals/types.js.map +1 -0
  207. package/dist/peers/envelope.js +1 -1
  208. package/dist/peers/envelope.js.map +1 -1
  209. package/dist/peers/protocol.d.ts +83 -83
  210. package/dist/peers/record.d.ts +10 -10
  211. package/dist/plugin/shell-hook.d.ts.map +1 -1
  212. package/dist/plugin/shell-hook.js +7 -2
  213. package/dist/plugin/shell-hook.js.map +1 -1
  214. package/dist/process/kill-tree.d.ts.map +1 -1
  215. package/dist/process/kill-tree.js +9 -1
  216. package/dist/process/kill-tree.js.map +1 -1
  217. package/dist/provider/errors.d.ts +19 -0
  218. package/dist/provider/errors.d.ts.map +1 -1
  219. package/dist/provider/errors.js +123 -2
  220. package/dist/provider/errors.js.map +1 -1
  221. package/dist/public-runtime.d.ts +41 -13
  222. package/dist/public-runtime.d.ts.map +1 -1
  223. package/dist/public-runtime.js +35 -7
  224. package/dist/public-runtime.js.map +1 -1
  225. package/dist/public-tools.d.ts +8 -3
  226. package/dist/public-tools.d.ts.map +1 -1
  227. package/dist/public-tools.js +8 -3
  228. package/dist/public-tools.js.map +1 -1
  229. package/dist/public-types.d.ts +27 -7
  230. package/dist/public-types.d.ts.map +1 -1
  231. package/dist/registry/tool/presentation.d.ts +1 -0
  232. package/dist/registry/tool/presentation.d.ts.map +1 -1
  233. package/dist/registry/tool/presentation.js +9 -7
  234. package/dist/registry/tool/presentation.js.map +1 -1
  235. package/dist/runtime/harness-session/index.d.ts +5 -0
  236. package/dist/runtime/harness-session/index.d.ts.map +1 -0
  237. package/dist/runtime/harness-session/index.js +928 -0
  238. package/dist/runtime/harness-session/index.js.map +1 -0
  239. package/dist/runtime/harness-session/journal.d.ts +37 -0
  240. package/dist/runtime/harness-session/journal.d.ts.map +1 -0
  241. package/dist/runtime/harness-session/journal.js +177 -0
  242. package/dist/runtime/harness-session/journal.js.map +1 -0
  243. package/dist/runtime/harness-session/saved-view.d.ts +8 -0
  244. package/dist/runtime/harness-session/saved-view.d.ts.map +1 -0
  245. package/dist/runtime/harness-session/saved-view.js +112 -0
  246. package/dist/runtime/harness-session/saved-view.js.map +1 -0
  247. package/dist/runtime/jobs/awaited-jobs.d.ts +2 -1
  248. package/dist/runtime/jobs/awaited-jobs.d.ts.map +1 -1
  249. package/dist/runtime/jobs/awaited-jobs.js +2 -1
  250. package/dist/runtime/jobs/awaited-jobs.js.map +1 -1
  251. package/dist/runtime/jobs/registry.d.ts +56 -1
  252. package/dist/runtime/jobs/registry.d.ts.map +1 -1
  253. package/dist/runtime/jobs/registry.js +351 -34
  254. package/dist/runtime/jobs/registry.js.map +1 -1
  255. package/dist/runtime/query/abandon-turn.d.ts +12 -1
  256. package/dist/runtime/query/abandon-turn.d.ts.map +1 -1
  257. package/dist/runtime/query/abandon-turn.js +3 -1
  258. package/dist/runtime/query/abandon-turn.js.map +1 -1
  259. package/dist/runtime/query/checkpoint.d.ts +4 -0
  260. package/dist/runtime/query/checkpoint.d.ts.map +1 -1
  261. package/dist/runtime/query/checkpoint.js +10 -0
  262. package/dist/runtime/query/checkpoint.js.map +1 -1
  263. package/dist/runtime/query/durable-inbound.d.ts +5 -0
  264. package/dist/runtime/query/durable-inbound.d.ts.map +1 -0
  265. package/dist/runtime/query/durable-inbound.js +89 -0
  266. package/dist/runtime/query/durable-inbound.js.map +1 -0
  267. package/dist/runtime/query/events.d.ts +4 -0
  268. package/dist/runtime/query/events.d.ts.map +1 -1
  269. package/dist/runtime/query/events.js +22 -5
  270. package/dist/runtime/query/events.js.map +1 -1
  271. package/dist/runtime/query/executor/tool-call-admission.d.ts +5 -1
  272. package/dist/runtime/query/executor/tool-call-admission.d.ts.map +1 -1
  273. package/dist/runtime/query/executor/tool-call-admission.js +85 -13
  274. package/dist/runtime/query/executor/tool-call-admission.js.map +1 -1
  275. package/dist/runtime/query/executor.d.ts +41 -18
  276. package/dist/runtime/query/executor.d.ts.map +1 -1
  277. package/dist/runtime/query/executor.js +227 -114
  278. package/dist/runtime/query/executor.js.map +1 -1
  279. package/dist/runtime/query/index.d.ts +3 -0
  280. package/dist/runtime/query/index.d.ts.map +1 -1
  281. package/dist/runtime/query/index.js +21 -4
  282. package/dist/runtime/query/index.js.map +1 -1
  283. package/dist/runtime/query/iteration/index.d.ts +18 -6
  284. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  285. package/dist/runtime/query/iteration/index.js +144 -67
  286. package/dist/runtime/query/iteration/index.js.map +1 -1
  287. package/dist/runtime/query/iteration/outstanding-work.d.ts +9 -5
  288. package/dist/runtime/query/iteration/outstanding-work.d.ts.map +1 -1
  289. package/dist/runtime/query/iteration/outstanding-work.js +61 -6
  290. package/dist/runtime/query/iteration/outstanding-work.js.map +1 -1
  291. package/dist/runtime/query/iteration/phases/context.d.ts +4 -0
  292. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  293. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  294. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  295. package/dist/runtime/query/iteration/phases/tool-review.js +99 -16
  296. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  297. package/dist/runtime/query/observation-context.d.ts +2 -2
  298. package/dist/runtime/query/observation-context.d.ts.map +1 -1
  299. package/dist/runtime/query/observation-context.js +20 -13
  300. package/dist/runtime/query/observation-context.js.map +1 -1
  301. package/dist/runtime/query/prepare-turn.js +2 -2
  302. package/dist/runtime/query/prepare-turn.js.map +1 -1
  303. package/dist/runtime/query/prompt-cache.d.ts +1 -0
  304. package/dist/runtime/query/prompt-cache.d.ts.map +1 -1
  305. package/dist/runtime/query/prompt-cache.js +2 -0
  306. package/dist/runtime/query/prompt-cache.js.map +1 -1
  307. package/dist/runtime/query/prompt.d.ts +2 -0
  308. package/dist/runtime/query/prompt.d.ts.map +1 -1
  309. package/dist/runtime/query/prompt.js +23 -1
  310. package/dist/runtime/query/prompt.js.map +1 -1
  311. package/dist/runtime/query/repeat-call.d.ts +12 -3
  312. package/dist/runtime/query/repeat-call.d.ts.map +1 -1
  313. package/dist/runtime/query/repeat-call.js +33 -10
  314. package/dist/runtime/query/repeat-call.js.map +1 -1
  315. package/dist/runtime/query/resume-pending.d.ts +5 -6
  316. package/dist/runtime/query/resume-pending.d.ts.map +1 -1
  317. package/dist/runtime/query/resume-pending.js +30 -3
  318. package/dist/runtime/query/resume-pending.js.map +1 -1
  319. package/dist/runtime/query/resume-session.js +1 -1
  320. package/dist/runtime/query/resume-session.js.map +1 -1
  321. package/dist/runtime/query/review-policy.d.ts +8 -1
  322. package/dist/runtime/query/review-policy.d.ts.map +1 -1
  323. package/dist/runtime/query/review-policy.js +6 -0
  324. package/dist/runtime/query/review-policy.js.map +1 -1
  325. package/dist/runtime/query/saved-presentation.d.ts +13 -0
  326. package/dist/runtime/query/saved-presentation.d.ts.map +1 -0
  327. package/dist/runtime/query/saved-presentation.js +63 -0
  328. package/dist/runtime/query/saved-presentation.js.map +1 -0
  329. package/dist/runtime/query/steering.d.ts +6 -9
  330. package/dist/runtime/query/steering.d.ts.map +1 -1
  331. package/dist/runtime/query/steering.js.map +1 -1
  332. package/dist/runtime/query/tool-executions.d.ts +7 -3
  333. package/dist/runtime/query/tool-executions.d.ts.map +1 -1
  334. package/dist/runtime/query/tool-executions.js +89 -9
  335. package/dist/runtime/query/tool-executions.js.map +1 -1
  336. package/dist/runtime/query/tooling.d.ts +3 -1
  337. package/dist/runtime/query/tooling.d.ts.map +1 -1
  338. package/dist/runtime/query/tooling.js +3 -0
  339. package/dist/runtime/query/tooling.js.map +1 -1
  340. package/dist/scheduler/completion-inbox.d.ts +25 -1
  341. package/dist/scheduler/completion-inbox.d.ts.map +1 -1
  342. package/dist/scheduler/completion-inbox.js +102 -8
  343. package/dist/scheduler/completion-inbox.js.map +1 -1
  344. package/dist/scheduler/delegating.d.ts.map +1 -1
  345. package/dist/scheduler/delegating.js +5 -0
  346. package/dist/scheduler/delegating.js.map +1 -1
  347. package/dist/scheduler/local.d.ts.map +1 -1
  348. package/dist/scheduler/local.js +2 -0
  349. package/dist/scheduler/local.js.map +1 -1
  350. package/dist/session/summary/materialize.d.ts +10 -6
  351. package/dist/session/summary/materialize.d.ts.map +1 -1
  352. package/dist/session/summary/materialize.js +41 -8
  353. package/dist/session/summary/materialize.js.map +1 -1
  354. package/dist/store/budget/ledger.d.ts +9 -0
  355. package/dist/store/budget/ledger.d.ts.map +1 -1
  356. package/dist/store/budget/ledger.js +58 -6
  357. package/dist/store/budget/ledger.js.map +1 -1
  358. package/dist/store/evidence/index-page.d.ts +12 -12
  359. package/dist/store/evidence/source-text.d.ts +4 -4
  360. package/dist/store/session/disk.d.ts +9 -4
  361. package/dist/store/session/disk.d.ts.map +1 -1
  362. package/dist/store/session/disk.js +57 -11
  363. package/dist/store/session/disk.js.map +1 -1
  364. package/dist/store/session/memory.d.ts +5 -3
  365. package/dist/store/session/memory.d.ts.map +1 -1
  366. package/dist/store/session/memory.js +24 -7
  367. package/dist/store/session/memory.js.map +1 -1
  368. package/dist/store/session-log/core.d.ts +26 -6
  369. package/dist/store/session-log/core.d.ts.map +1 -1
  370. package/dist/store/session-log/core.js +61 -8
  371. package/dist/store/session-log/core.js.map +1 -1
  372. package/dist/store/session-log/disk.d.ts +2 -2
  373. package/dist/store/session-log/disk.d.ts.map +1 -1
  374. package/dist/store/session-log/disk.js +1 -0
  375. package/dist/store/session-log/disk.js.map +1 -1
  376. package/dist/store/session-log/fold.d.ts +7 -0
  377. package/dist/store/session-log/fold.d.ts.map +1 -1
  378. package/dist/store/session-log/fold.js +21 -0
  379. package/dist/store/session-log/fold.js.map +1 -1
  380. package/dist/store/session-log/index.d.ts +5 -3
  381. package/dist/store/session-log/index.d.ts.map +1 -1
  382. package/dist/store/session-log/index.js +3 -1
  383. package/dist/store/session-log/index.js.map +1 -1
  384. package/dist/store/session-log/memory.d.ts +1 -1
  385. package/dist/store/session-log/memory.d.ts.map +1 -1
  386. package/dist/store/session-log/memory.js +1 -0
  387. package/dist/store/session-log/memory.js.map +1 -1
  388. package/dist/store/session-log/spill.d.ts +10 -3
  389. package/dist/store/session-log/spill.d.ts.map +1 -1
  390. package/dist/store/session-log/spill.js +70 -5
  391. package/dist/store/session-log/spill.js.map +1 -1
  392. package/dist/store/session-log/structured-result.d.ts +21 -0
  393. package/dist/store/session-log/structured-result.d.ts.map +1 -0
  394. package/dist/store/session-log/structured-result.js +67 -0
  395. package/dist/store/session-log/structured-result.js.map +1 -0
  396. package/dist/store/task/disk.d.ts +11 -0
  397. package/dist/store/task/disk.d.ts.map +1 -1
  398. package/dist/store/task/disk.js +41 -2
  399. package/dist/store/task/disk.js.map +1 -1
  400. package/dist/store/task/memory.d.ts.map +1 -1
  401. package/dist/store/task/memory.js +15 -3
  402. package/dist/store/task/memory.js.map +1 -1
  403. package/dist/tools/admit-facts.d.ts +13 -0
  404. package/dist/tools/admit-facts.d.ts.map +1 -0
  405. package/dist/tools/admit-facts.js +142 -0
  406. package/dist/tools/admit-facts.js.map +1 -0
  407. package/dist/tools/builtins/bash.d.ts +4 -1
  408. package/dist/tools/builtins/bash.d.ts.map +1 -1
  409. package/dist/tools/builtins/bash.js +108 -22
  410. package/dist/tools/builtins/bash.js.map +1 -1
  411. package/dist/tools/builtins/browser.d.ts +10 -10
  412. package/dist/tools/builtins/computer-use.d.ts +90 -90
  413. package/dist/tools/builtins/edit.d.ts +17 -0
  414. package/dist/tools/builtins/edit.d.ts.map +1 -1
  415. package/dist/tools/builtins/edit.js +34 -0
  416. package/dist/tools/builtins/edit.js.map +1 -1
  417. package/dist/tools/builtins/file-write-result.d.ts.map +1 -1
  418. package/dist/tools/builtins/file-write-result.js +13 -0
  419. package/dist/tools/builtins/file-write-result.js.map +1 -1
  420. package/dist/tools/builtins/glob.d.ts.map +1 -1
  421. package/dist/tools/builtins/glob.js +12 -0
  422. package/dist/tools/builtins/glob.js.map +1 -1
  423. package/dist/tools/builtins/grep.d.ts.map +1 -1
  424. package/dist/tools/builtins/grep.js +14 -0
  425. package/dist/tools/builtins/grep.js.map +1 -1
  426. package/dist/tools/builtins/index.d.ts +2 -0
  427. package/dist/tools/builtins/index.d.ts.map +1 -1
  428. package/dist/tools/builtins/index.js +1 -0
  429. package/dist/tools/builtins/index.js.map +1 -1
  430. package/dist/tools/builtins/job.d.ts.map +1 -1
  431. package/dist/tools/builtins/job.js +4 -1
  432. package/dist/tools/builtins/job.js.map +1 -1
  433. package/dist/tools/builtins/lsp.d.ts +2 -2
  434. package/dist/tools/builtins/read-file.d.ts.map +1 -1
  435. package/dist/tools/builtins/read-file.js +49 -0
  436. package/dist/tools/builtins/read-file.js.map +1 -1
  437. package/dist/tools/builtins/view-image.d.ts +24 -0
  438. package/dist/tools/builtins/view-image.d.ts.map +1 -0
  439. package/dist/tools/builtins/view-image.js +385 -0
  440. package/dist/tools/builtins/view-image.js.map +1 -0
  441. package/dist/tools/builtins/wait-for-job-bounds.d.ts +2 -0
  442. package/dist/tools/builtins/wait-for-job-bounds.d.ts.map +1 -1
  443. package/dist/tools/builtins/wait-for-job-bounds.js +1 -0
  444. package/dist/tools/builtins/wait-for-job-bounds.js.map +1 -1
  445. package/dist/tools/builtins/wait-for-job.d.ts +2 -0
  446. package/dist/tools/builtins/wait-for-job.d.ts.map +1 -1
  447. package/dist/tools/builtins/wait-for-job.js +104 -6
  448. package/dist/tools/builtins/wait-for-job.js.map +1 -1
  449. package/dist/tools/builtins/write-file.d.ts.map +1 -1
  450. package/dist/tools/builtins/write-file.js +1 -0
  451. package/dist/tools/builtins/write-file.js.map +1 -1
  452. package/dist/tools/command-shell.d.ts +37 -2
  453. package/dist/tools/command-shell.d.ts.map +1 -1
  454. package/dist/tools/command-shell.js +100 -3
  455. package/dist/tools/command-shell.js.map +1 -1
  456. package/dist/tools/coordinator/agent.d.ts +9 -19
  457. package/dist/tools/coordinator/agent.d.ts.map +1 -1
  458. package/dist/tools/coordinator/agent.js.map +1 -1
  459. package/dist/tools/coordinator/index.d.ts.map +1 -1
  460. package/dist/tools/coordinator/index.js +127 -67
  461. package/dist/tools/coordinator/index.js.map +1 -1
  462. package/dist/tools/coordinator/wait-with-idle-bound.d.ts +2 -0
  463. package/dist/tools/coordinator/wait-with-idle-bound.d.ts.map +1 -1
  464. package/dist/tools/coordinator/wait-with-idle-bound.js +1 -1
  465. package/dist/tools/coordinator/wait-with-idle-bound.js.map +1 -1
  466. package/dist/tools/defineTool.d.ts.map +1 -1
  467. package/dist/tools/defineTool.js +4 -0
  468. package/dist/tools/defineTool.js.map +1 -1
  469. package/dist/tools/failure-facts.d.ts +8 -0
  470. package/dist/tools/failure-facts.d.ts.map +1 -0
  471. package/dist/tools/failure-facts.js +24 -0
  472. package/dist/tools/failure-facts.js.map +1 -0
  473. package/dist/tools/host-output.d.ts +24 -0
  474. package/dist/tools/host-output.d.ts.map +1 -0
  475. package/dist/tools/host-output.js +117 -0
  476. package/dist/tools/host-output.js.map +1 -0
  477. package/dist/tools/oem-code-pages.d.ts +8 -0
  478. package/dist/tools/oem-code-pages.d.ts.map +1 -0
  479. package/dist/tools/oem-code-pages.js +23 -0
  480. package/dist/tools/oem-code-pages.js.map +1 -0
  481. package/dist/tools/schedules/schedule-tool.d.ts.map +1 -1
  482. package/dist/tools/schedules/schedule-tool.js +35 -6
  483. package/dist/tools/schedules/schedule-tool.js.map +1 -1
  484. package/dist/tools/schedules/types.d.ts +23 -3
  485. package/dist/tools/schedules/types.d.ts.map +1 -1
  486. package/dist/tools/task/list.d.ts.map +1 -1
  487. package/dist/tools/task/list.js +14 -6
  488. package/dist/tools/task/list.js.map +1 -1
  489. package/dist/tools/task/present.d.ts.map +1 -1
  490. package/dist/tools/task/present.js +26 -6
  491. package/dist/tools/task/present.js.map +1 -1
  492. package/dist/tools/task/update.d.ts.map +1 -1
  493. package/dist/tools/task/update.js +12 -5
  494. package/dist/tools/task/update.js.map +1 -1
  495. package/dist/tools/text-window.d.ts +19 -0
  496. package/dist/tools/text-window.d.ts.map +1 -0
  497. package/dist/tools/text-window.js +83 -0
  498. package/dist/tools/text-window.js.map +1 -0
  499. package/dist/toolsets/manager.d.ts +11 -0
  500. package/dist/toolsets/manager.d.ts.map +1 -1
  501. package/dist/toolsets/manager.js +45 -1
  502. package/dist/toolsets/manager.js.map +1 -1
  503. package/dist/types/acp/index.d.ts +137 -1
  504. package/dist/types/acp/index.d.ts.map +1 -1
  505. package/dist/types/agent/base.d.ts +3 -0
  506. package/dist/types/agent/base.d.ts.map +1 -1
  507. package/dist/types/agent/manager.d.ts +8 -23
  508. package/dist/types/agent/manager.d.ts.map +1 -1
  509. package/dist/types/agent/scheduler.d.ts +10 -1
  510. package/dist/types/agent/scheduler.d.ts.map +1 -1
  511. package/dist/types/agent/task.d.ts +4 -0
  512. package/dist/types/agent/task.d.ts.map +1 -1
  513. package/dist/types/authorization/index.d.ts +30 -30
  514. package/dist/types/connector/mcp.d.ts +7 -0
  515. package/dist/types/connector/mcp.d.ts.map +1 -1
  516. package/dist/types/errors/catalog.d.ts.map +1 -1
  517. package/dist/types/errors/catalog.js +4 -2
  518. package/dist/types/errors/catalog.js.map +1 -1
  519. package/dist/types/harness/schema.d.ts +354 -0
  520. package/dist/types/harness/schema.d.ts.map +1 -0
  521. package/dist/types/harness/schema.js +203 -0
  522. package/dist/types/harness/schema.js.map +1 -0
  523. package/dist/types/harness/session.d.ts +278 -0
  524. package/dist/types/harness/session.d.ts.map +1 -0
  525. package/dist/types/harness/session.js +2 -0
  526. package/dist/types/harness/session.js.map +1 -0
  527. package/dist/types/hitl/index.d.ts +12 -0
  528. package/dist/types/hitl/index.d.ts.map +1 -1
  529. package/dist/types/hitl/index.js.map +1 -1
  530. package/dist/types/job/index.d.ts +47 -0
  531. package/dist/types/job/index.d.ts.map +1 -0
  532. package/dist/types/job/index.js +2 -0
  533. package/dist/types/job/index.js.map +1 -0
  534. package/dist/types/message/inbound-delivery.d.ts +44 -0
  535. package/dist/types/message/inbound-delivery.d.ts.map +1 -0
  536. package/dist/types/message/inbound-delivery.js +14 -0
  537. package/dist/types/message/inbound-delivery.js.map +1 -0
  538. package/dist/types/message/index.d.ts +4 -1
  539. package/dist/types/message/index.d.ts.map +1 -1
  540. package/dist/types/message/index.js +5 -1
  541. package/dist/types/message/index.js.map +1 -1
  542. package/dist/types/plugin/index.d.ts +6 -6
  543. package/dist/types/sandbox/index.d.ts +39 -2
  544. package/dist/types/sandbox/index.d.ts.map +1 -1
  545. package/dist/types/sandbox/index.js.map +1 -1
  546. package/dist/types/session/checkpoint.d.ts +24 -17
  547. package/dist/types/session/checkpoint.d.ts.map +1 -1
  548. package/dist/types/session/checkpoint.js +1 -0
  549. package/dist/types/session/checkpoint.js.map +1 -1
  550. package/dist/types/session/events.d.ts +23 -1
  551. package/dist/types/session/events.d.ts.map +1 -1
  552. package/dist/types/session/events.js.map +1 -1
  553. package/dist/types/session/records.d.ts +1514 -565
  554. package/dist/types/session/records.d.ts.map +1 -1
  555. package/dist/types/session/records.js +89 -1
  556. package/dist/types/session/records.js.map +1 -1
  557. package/dist/types/session/step.d.ts +2 -0
  558. package/dist/types/session/step.d.ts.map +1 -1
  559. package/dist/types/session/step.js.map +1 -1
  560. package/dist/types/session/store.d.ts +19 -10
  561. package/dist/types/session/store.d.ts.map +1 -1
  562. package/dist/types/session/tool-execution.d.ts +6 -0
  563. package/dist/types/session/tool-execution.d.ts.map +1 -1
  564. package/dist/types/structured-output/index.d.ts +12 -2
  565. package/dist/types/structured-output/index.d.ts.map +1 -1
  566. package/dist/types/summary/ref.d.ts +3 -1
  567. package/dist/types/summary/ref.d.ts.map +1 -1
  568. package/dist/types/tool/index.d.ts +32 -4
  569. package/dist/types/tool/index.d.ts.map +1 -1
  570. package/dist/types/tool/index.js.map +1 -1
  571. package/dist/types/tool/presentation.d.ts +106 -0
  572. package/dist/types/tool/presentation.d.ts.map +1 -1
  573. package/dist/utils/json-snapshot.d.ts +6 -2
  574. package/dist/utils/json-snapshot.d.ts.map +1 -1
  575. package/dist/utils/json-snapshot.js +19 -9
  576. package/dist/utils/json-snapshot.js.map +1 -1
  577. package/dist/utils/structured-result-json.d.ts +5 -0
  578. package/dist/utils/structured-result-json.d.ts.map +1 -0
  579. package/dist/utils/structured-result-json.js +10 -0
  580. package/dist/utils/structured-result-json.js.map +1 -0
  581. package/package.json +1 -1
  582. package/src/agents/QueryAgent.ts +1 -0
  583. package/src/agents/examples/SupervisorAgent.ts +1 -0
  584. package/src/agents/runAgent.ts +3 -0
  585. package/src/authorization/shell-lexer.ts +16 -1
  586. package/src/bridge/acp/permission.ts +17 -3
  587. package/src/bridge/acp/server.ts +271 -25
  588. package/src/bridge/acp/tasks.ts +23 -0
  589. package/src/bridge/acp/update.ts +167 -13
  590. package/src/connector/mcp/adapter.ts +16 -4
  591. package/src/connector/mcp/client.ts +6 -2
  592. package/src/constants/acp/index.ts +4 -0
  593. package/src/manager/agent/lifecycle.ts +230 -3
  594. package/src/manager/plan/lifecycle.ts +11 -9
  595. package/src/manager/session/attribution.ts +12 -2
  596. package/src/manager/session/streamed-message-identity.ts +21 -0
  597. package/src/manager/session/turn-recorder.ts +4 -3
  598. package/src/pals/activity/causality.ts +261 -0
  599. package/src/pals/activity/projection.ts +89 -0
  600. package/src/pals/activity/source.ts +240 -0
  601. package/src/pals/activity/subscription-policy.ts +230 -0
  602. package/src/pals/activity/subscription-schema.ts +27 -0
  603. package/src/pals/activity/subscription-store.ts +172 -0
  604. package/src/pals/activity/subscription-types.ts +48 -0
  605. package/src/pals/activity/subscriptions.ts +209 -0
  606. package/src/pals/activity/types.ts +108 -0
  607. package/src/pals/channels/ingress.ts +153 -0
  608. package/src/pals/channels/routes.ts +118 -0
  609. package/src/pals/channels/routing.ts +197 -0
  610. package/src/pals/channels/schema.ts +108 -0
  611. package/src/pals/channels/types.ts +156 -0
  612. package/src/pals/communication/broker.ts +131 -0
  613. package/src/pals/communication/dispatch.ts +66 -0
  614. package/src/pals/communication/inbound.ts +193 -0
  615. package/src/pals/communication/ingress-dispatch.ts +63 -0
  616. package/src/pals/communication/ingress-inbound.ts +269 -0
  617. package/src/pals/communication/ingress-schema.ts +526 -0
  618. package/src/pals/communication/ingress-types.ts +336 -0
  619. package/src/pals/communication/operator.ts +315 -0
  620. package/src/pals/communication/policy.ts +174 -0
  621. package/src/pals/communication/schema.ts +173 -0
  622. package/src/pals/communication/store.ts +577 -0
  623. package/src/pals/communication/tools.ts +139 -0
  624. package/src/pals/communication/types.ts +227 -0
  625. package/src/pals/communication/verify.ts +220 -0
  626. package/src/pals/lifecycle.ts +54 -0
  627. package/src/pals/prompt.ts +101 -0
  628. package/src/pals/reference-images.ts +322 -0
  629. package/src/pals/runtime.ts +670 -0
  630. package/src/pals/store.ts +369 -0
  631. package/src/pals/types.ts +157 -0
  632. package/src/peers/envelope.ts +1 -1
  633. package/src/plugin/shell-hook.ts +8 -2
  634. package/src/process/kill-tree.ts +10 -1
  635. package/src/provider/errors.ts +135 -2
  636. package/src/public-runtime.ts +117 -12
  637. package/src/public-tools.ts +13 -1
  638. package/src/public-types.ts +69 -7
  639. package/src/registry/tool/presentation.ts +9 -4
  640. package/src/runtime/harness-session/index.ts +1125 -0
  641. package/src/runtime/harness-session/journal.ts +209 -0
  642. package/src/runtime/harness-session/saved-view.ts +122 -0
  643. package/src/runtime/jobs/awaited-jobs.ts +2 -1
  644. package/src/runtime/jobs/registry.ts +397 -41
  645. package/src/runtime/query/abandon-turn.ts +18 -2
  646. package/src/runtime/query/checkpoint.ts +11 -0
  647. package/src/runtime/query/durable-inbound.ts +101 -0
  648. package/src/runtime/query/events.ts +22 -5
  649. package/src/runtime/query/executor/tool-call-admission.ts +125 -32
  650. package/src/runtime/query/executor.ts +316 -130
  651. package/src/runtime/query/index.ts +24 -4
  652. package/src/runtime/query/iteration/index.ts +218 -104
  653. package/src/runtime/query/iteration/outstanding-work.ts +55 -7
  654. package/src/runtime/query/iteration/phases/context.ts +4 -0
  655. package/src/runtime/query/iteration/phases/tool-review.ts +118 -21
  656. package/src/runtime/query/observation-context.ts +22 -16
  657. package/src/runtime/query/prepare-turn.ts +2 -2
  658. package/src/runtime/query/prompt-cache.ts +3 -0
  659. package/src/runtime/query/prompt.ts +32 -1
  660. package/src/runtime/query/repeat-call.ts +40 -10
  661. package/src/runtime/query/resume-pending.ts +60 -7
  662. package/src/runtime/query/resume-session.ts +1 -1
  663. package/src/runtime/query/review-policy.ts +23 -2
  664. package/src/runtime/query/saved-presentation.ts +70 -0
  665. package/src/runtime/query/steering.ts +6 -9
  666. package/src/runtime/query/tool-executions.ts +108 -9
  667. package/src/runtime/query/tooling.ts +6 -1
  668. package/src/scheduler/completion-inbox.ts +108 -7
  669. package/src/scheduler/delegating.ts +5 -0
  670. package/src/scheduler/local.ts +2 -0
  671. package/src/session/summary/materialize.ts +51 -9
  672. package/src/store/budget/ledger.ts +60 -5
  673. package/src/store/session/disk.ts +77 -10
  674. package/src/store/session/memory.ts +32 -7
  675. package/src/store/session-log/core.ts +118 -11
  676. package/src/store/session-log/disk.ts +9 -2
  677. package/src/store/session-log/fold.ts +22 -0
  678. package/src/store/session-log/index.ts +5 -0
  679. package/src/store/session-log/memory.ts +2 -1
  680. package/src/store/session-log/spill.ts +89 -6
  681. package/src/store/session-log/structured-result.ts +96 -0
  682. package/src/store/task/disk.ts +46 -2
  683. package/src/store/task/memory.ts +13 -3
  684. package/src/tools/admit-facts.ts +145 -0
  685. package/src/tools/builtins/bash.ts +132 -24
  686. package/src/tools/builtins/edit.ts +42 -0
  687. package/src/tools/builtins/file-write-result.ts +14 -0
  688. package/src/tools/builtins/glob.ts +12 -0
  689. package/src/tools/builtins/grep.ts +14 -0
  690. package/src/tools/builtins/index.ts +2 -0
  691. package/src/tools/builtins/job.ts +4 -1
  692. package/src/tools/builtins/read-file.ts +57 -0
  693. package/src/tools/builtins/view-image.ts +409 -0
  694. package/src/tools/builtins/wait-for-job-bounds.ts +3 -0
  695. package/src/tools/builtins/wait-for-job.ts +141 -32
  696. package/src/tools/builtins/write-file.ts +4 -2
  697. package/src/tools/command-shell.ts +132 -5
  698. package/src/tools/coordinator/agent.ts +9 -19
  699. package/src/tools/coordinator/index.ts +150 -75
  700. package/src/tools/coordinator/wait-with-idle-bound.ts +3 -1
  701. package/src/tools/defineTool.ts +4 -0
  702. package/src/tools/failure-facts.ts +24 -0
  703. package/src/tools/host-output.ts +136 -0
  704. package/src/tools/oem-code-pages.ts +22 -0
  705. package/src/tools/schedules/schedule-tool.ts +38 -5
  706. package/src/tools/schedules/types.ts +23 -3
  707. package/src/tools/task/list.ts +15 -7
  708. package/src/tools/task/present.ts +37 -7
  709. package/src/tools/task/update.ts +12 -5
  710. package/src/tools/text-window.ts +87 -0
  711. package/src/toolsets/manager.ts +58 -1
  712. package/src/types/acp/index.ts +150 -4
  713. package/src/types/agent/base.ts +3 -0
  714. package/src/types/agent/manager.ts +8 -23
  715. package/src/types/agent/scheduler.ts +10 -1
  716. package/src/types/agent/task.ts +4 -0
  717. package/src/types/connector/mcp.ts +7 -0
  718. package/src/types/errors/catalog.ts +4 -2
  719. package/src/types/harness/schema.ts +203 -0
  720. package/src/types/harness/session.ts +306 -0
  721. package/src/types/hitl/index.ts +17 -1
  722. package/src/types/job/index.ts +42 -0
  723. package/src/types/message/inbound-delivery.ts +63 -0
  724. package/src/types/message/index.ts +8 -1
  725. package/src/types/sandbox/index.ts +46 -0
  726. package/src/types/session/checkpoint.ts +4 -1
  727. package/src/types/session/events.ts +23 -1
  728. package/src/types/session/records.ts +114 -2
  729. package/src/types/session/step.ts +2 -0
  730. package/src/types/session/store.ts +23 -9
  731. package/src/types/session/tool-execution.ts +6 -0
  732. package/src/types/structured-output/index.ts +13 -2
  733. package/src/types/summary/ref.ts +3 -1
  734. package/src/types/tool/index.ts +39 -5
  735. package/src/types/tool/presentation.ts +121 -0
  736. package/src/utils/json-snapshot.ts +26 -9
  737. package/src/utils/structured-result-json.ts +10 -0
@@ -0,0 +1,306 @@
1
+ import type { ReviewMode } from '../../runtime/query/review-policy.js'
2
+ import type { SessionLog } from '../../store/session-log/index.js'
3
+ /**
4
+ * A session whose execution and tools belong to a host-composed external harness.
5
+ * SDK code contains no vendor import, process runner or credential discovery.
6
+ * Existing Namzu query/LLMProvider/tool execution is unchanged.
7
+ */
8
+ import type {
9
+ MessageId,
10
+ ProjectId,
11
+ SessionId,
12
+ TenantId,
13
+ ToolUseId,
14
+ TopicId,
15
+ TurnId,
16
+ } from '../ids/index.js'
17
+ import type { Message } from '../message/index.js'
18
+ import type { ReasoningEffort } from '../provider/index.js'
19
+ import type { SessionEvent } from '../session/events.js'
20
+
21
+ export type HarnessJson =
22
+ | null
23
+ | boolean
24
+ | number
25
+ | string
26
+ | readonly HarnessJson[]
27
+ | { readonly [key: string]: HarnessJson }
28
+
29
+ /** Native IDs remain opaque strings and are NEVER parsed as Namzu UUIDs. */
30
+ export interface HarnessBinding {
31
+ readonly v: 1
32
+ readonly engineId: string
33
+ /** Host-owned opaque identity for executable/state-home/account selection; no credentials. */
34
+ readonly profileRef: string
35
+ /** Exact native conversation/thread identifier, not a shared root or Namzu session ID. */
36
+ readonly nativeSessionId: string
37
+ /** Canonical absolute native execution directory, confirmed by the adapter. */
38
+ readonly cwd: string
39
+ /** Verified initial selection; later changes are captured per turn, never engine changes. */
40
+ readonly initialModel: string
41
+ }
42
+
43
+ export interface HarnessScope {
44
+ readonly sessionId: SessionId
45
+ readonly tenantId: TenantId
46
+ readonly projectId: ProjectId
47
+ readonly topicId: TopicId
48
+ readonly cwd: string
49
+ }
50
+
51
+ /** Values established from the installed engine/protocol, never copied from Namzu providers. */
52
+ export interface HarnessCapabilities {
53
+ readonly persistentSessions: boolean
54
+ readonly history: 'snapshot' | 'unavailable'
55
+ readonly models: 'discover' | 'configured' | 'unavailable'
56
+ readonly permissions: 'interactive' | 'deny-only' | 'unavailable'
57
+ readonly interrupt: 'native-terminal' | 'process-stop' | 'unavailable'
58
+ readonly attachments: readonly ('image' | 'file')[]
59
+ readonly effortLevels?: readonly ReasoningEffort[]
60
+ /** Common UI may offer only modes actually mapped by this engine. */
61
+ readonly reviewModes: readonly ReviewMode[]
62
+ }
63
+
64
+ export interface HarnessModel {
65
+ readonly id: string
66
+ readonly label: string
67
+ readonly effortLevels?: readonly ReasoningEffort[]
68
+ readonly defaultEffort?: ReasoningEffort
69
+ }
70
+
71
+ export interface HarnessNativeTurn {
72
+ readonly nativeSessionId: string
73
+ readonly nativeTurnId: string
74
+ /** Explicit operation correlation when the engine exposes no native turn ID. */
75
+ readonly turnIdSource?: 'engine' | 'operation'
76
+ }
77
+
78
+ export interface HarnessNativeItem extends HarnessNativeTurn {
79
+ readonly nativeItemId: string
80
+ }
81
+
82
+ export interface HarnessPublicTextPart {
83
+ readonly id: string
84
+ readonly text: string
85
+ readonly phase?: 'commentary' | 'final_answer'
86
+ }
87
+
88
+ export type HarnessDecision =
89
+ | { readonly kind: 'approve-once'; readonly updatedInput?: HarnessJson }
90
+ | { readonly kind: 'reject'; readonly feedback?: string }
91
+ | { readonly kind: 'cancel' }
92
+
93
+ export interface HarnessReviewRequest extends HarnessNativeTurn {
94
+ readonly requestId: string
95
+ readonly nativeItemId?: string
96
+ readonly kind: 'command' | 'file-change' | 'tool'
97
+ readonly title: string
98
+ /** Public proposed operation only. No raw RPC frame, credentials or private thinking. */
99
+ readonly input: HarnessJson
100
+ readonly decisions: readonly HarnessDecision['kind'][]
101
+ }
102
+
103
+ /** A NEW, namespaced port union. No new existing SessionEvent discriminants. */
104
+ export type HarnessEvent =
105
+ | (HarnessNativeTurn & { readonly kind: 'turn-started'; readonly model?: string })
106
+ | (HarnessNativeItem & { readonly kind: 'message-started' })
107
+ | (HarnessNativeItem & {
108
+ readonly kind: 'text-delta'
109
+ readonly text: string
110
+ readonly part?: Pick<HarnessPublicTextPart, 'id' | 'phase'>
111
+ })
112
+ | (HarnessNativeItem & {
113
+ readonly kind: 'message-completed'
114
+ readonly content: string
115
+ readonly parts?: readonly HarnessPublicTextPart[]
116
+ readonly stopReason: import('../session/stop-reason.js').MessageStopReason
117
+ })
118
+ | (HarnessNativeItem & {
119
+ readonly kind: 'reasoning'
120
+ readonly blockId: string
121
+ readonly status: 'pending' | 'completed'
122
+ /** Only engine-documented public summary/thinking; never replay/signature material. */
123
+ readonly text?: string
124
+ })
125
+ | (HarnessNativeItem & {
126
+ readonly kind: 'tool-started'
127
+ readonly name: string
128
+ readonly input: HarnessJson
129
+ })
130
+ | (HarnessNativeItem & { readonly kind: 'tool-output'; readonly text: string })
131
+ | (HarnessNativeItem & {
132
+ readonly kind: 'tool-completed'
133
+ readonly name: string
134
+ readonly result: string
135
+ readonly status: 'completed' | 'failed' | 'declined' | 'cancelled'
136
+ readonly durationMs?: number
137
+ })
138
+ | { readonly kind: 'review-requested'; readonly request: HarnessReviewRequest }
139
+ | (HarnessNativeTurn & { readonly kind: 'review-resolved'; readonly requestId: string })
140
+ | (HarnessNativeTurn & {
141
+ readonly kind: 'turn-completed'
142
+ readonly status: 'completed' | 'failed' | 'cancelled'
143
+ readonly finalItemId?: string
144
+ readonly result?: string
145
+ readonly error?: { readonly code: string; readonly message: string }
146
+ })
147
+ | {
148
+ readonly kind: 'connection-lost'
149
+ readonly code: string
150
+ /** True never implies that native work stopped. */
151
+ readonly mayBeRunning: boolean
152
+ }
153
+
154
+ /** Resolve after validation/persistence/publication, never await a human answer here. */
155
+ export type HarnessEventSink = (event: HarnessEvent) => Promise<void>
156
+
157
+ export interface HarnessPrompt {
158
+ /** Actual host operation identity for this admitted prompt, persisted before send. */
159
+ readonly operationId: string
160
+ readonly prompt: string
161
+ readonly model: string
162
+ readonly effort?: ReasoningEffort
163
+ readonly permissionMode: ReviewMode
164
+ readonly signal?: AbortSignal
165
+ }
166
+
167
+ export interface HarnessHistorySnapshot {
168
+ readonly binding: HarnessBinding
169
+ readonly activeTurn?: HarnessNativeTurn
170
+ /** Authoritative lifecycle/items, not byte-for-byte replay of ephemeral deltas. */
171
+ readonly events: readonly Exclude<
172
+ HarnessEvent,
173
+ { readonly kind: 'text-delta' | 'tool-output' | 'connection-lost' }
174
+ >[]
175
+ readonly pendingReviews: readonly HarnessReviewRequest[]
176
+ readonly complete: boolean
177
+ }
178
+
179
+ export interface HarnessConnection {
180
+ readonly binding: HarnessBinding
181
+ readonly capabilities: HarnessCapabilities
182
+ models(signal?: AbortSignal): Promise<readonly HarnessModel[]>
183
+ /** ACK may follow terminal event. It must not resurrect a finished turn. */
184
+ dispatch(input: HarnessPrompt): Promise<HarnessNativeTurn>
185
+ /** Receipt means requested only; SDK waits for correlated terminal/confirmed owned stop. */
186
+ interrupt(turn: HarnessNativeTurn): Promise<{ readonly requested: true }>
187
+ /** Validate exact current native request, then send one of that request's decisions. */
188
+ respond(
189
+ request: HarnessReviewRequest,
190
+ decision: HarnessDecision,
191
+ ): Promise<{ readonly sent: true }>
192
+ /** Never resends a prompt. Absence/incomplete history leaves explicit reconciliation required. */
193
+ readHistory(signal?: AbortSignal): Promise<HarnessHistorySnapshot>
194
+ /** Success confirms own process/children stopped; rejection retains handle for retry. */
195
+ close(): Promise<{ readonly stopped: true }>
196
+ }
197
+
198
+ export interface HarnessAdapter {
199
+ readonly engineId: string
200
+ readonly profileRef: string
201
+ /** Subscribe BEFORE spawn/initialize/open/resume so early items/requests cannot be lost. */
202
+ open(
203
+ input: {
204
+ readonly cwd: string
205
+ readonly model?: string
206
+ readonly resume?: HarnessBinding
207
+ readonly signal?: AbortSignal
208
+ },
209
+ onEvent: HarnessEventSink,
210
+ ): Promise<HarnessConnection>
211
+ }
212
+
213
+ export interface HarnessAdmissionRequest {
214
+ readonly kind: 'open' | 'run' | 'approval' | 'reconnect'
215
+ readonly scope: HarnessScope
216
+ readonly binding?: HarnessBinding
217
+ readonly nativeTurn?: HarnessNativeTurn
218
+ readonly review?: HarnessReviewRequest
219
+ }
220
+
221
+ export interface HarnessSessionOptions {
222
+ readonly scope: HarnessScope
223
+ readonly sessionLog: SessionLog
224
+ readonly adapter: HarnessAdapter
225
+ /** REQUIRED current trusted host boundary: canonical cwd/trust/user ownership, ordinary only. */
226
+ readonly assertAdmission: (
227
+ request: HarnessAdmissionRequest,
228
+ signal?: AbortSignal,
229
+ ) => Promise<void>
230
+ readonly onEvent: (event: SessionEvent) => void | Promise<void>
231
+ readonly onReview: (request: HarnessReviewRequest) => void | Promise<void>
232
+ }
233
+
234
+ export interface HarnessTurnOutcome {
235
+ readonly turnId: TurnId
236
+ readonly nativeTurn: HarnessNativeTurn
237
+ readonly status: 'completed' | 'failed' | 'cancelled'
238
+ readonly messages: readonly Message[]
239
+ }
240
+
241
+ export interface HarnessSession {
242
+ readonly scope: HarnessScope
243
+ readonly binding: HarnessBinding | undefined
244
+ /** Exact admitted turn pointer for host cancellation; never a model-supplied ID. */
245
+ readonly currentTurnId: TurnId | undefined
246
+ readonly status:
247
+ | 'disconnected'
248
+ | 'idle'
249
+ | 'running'
250
+ | 'waiting'
251
+ | 'reconciliation-required'
252
+ | 'closed'
253
+ /** Public durable text only; no native process startup. */
254
+ history(): Promise<readonly Message[]>
255
+ /** Reject concurrent turn operations. CLI/desktop owns its visible queue. */
256
+ run(input: Omit<HarnessPrompt, 'operationId'>): Promise<HarnessTurnOutcome>
257
+ /** Exact expected turn pointer prevents a stale Stop from cancelling the next turn. */
258
+ cancel(expectedTurnId: TurnId): Promise<{ readonly stopped: true; readonly turnId: TurnId }>
259
+ /** SDK adds current writer generation/request digest internally; renderer cannot supply authority. */
260
+ respond(request: HarnessReviewRequest, decision: HarnessDecision): Promise<void>
261
+ reconnect(signal?: AbortSignal): Promise<void>
262
+ close(): Promise<void>
263
+ }
264
+
265
+ /** Typed journal receipts stored in the existing session_updated record. */
266
+ export type HarnessJournalTransition =
267
+ | {
268
+ readonly kind: 'dispatch-prepared'
269
+ /** Actual admitted selection; engine binding remains immutable. */
270
+ readonly model?: string
271
+ readonly effort?: ReasoningEffort
272
+ readonly permissionMode?: ReviewMode
273
+ readonly operationId: string
274
+ readonly turnId: TurnId
275
+ readonly promptId: MessageId
276
+ readonly digest: string
277
+ }
278
+ | {
279
+ readonly kind: 'dispatch-accepted'
280
+ readonly operationId: string
281
+ readonly turnId: TurnId
282
+ readonly nativeTurn: HarnessNativeTurn
283
+ }
284
+ | {
285
+ readonly kind: 'item-bound'
286
+ readonly turnId: TurnId
287
+ readonly nativeItem: HarnessNativeItem
288
+ readonly messageId?: MessageId
289
+ readonly toolUseId?: ToolUseId
290
+ }
291
+ | {
292
+ readonly kind: 'review-requested'
293
+ readonly turnId: TurnId
294
+ readonly request: HarnessReviewRequest
295
+ readonly digest: string
296
+ }
297
+ | {
298
+ readonly kind: 'review-decided'
299
+ readonly turnId: TurnId
300
+ readonly requestId: string
301
+ readonly requestDigest: string
302
+ readonly decisionDigest: string
303
+ readonly decision: HarnessDecision
304
+ }
305
+ | { readonly kind: 'review-resolved'; readonly turnId: TurnId; readonly requestId: string }
306
+ | { readonly kind: 'connection-lost'; readonly turnId?: TurnId; readonly code: string }
@@ -3,6 +3,12 @@ import type { CheckpointId, PlanId, SessionId, TurnId } from '../ids/index.js'
3
3
 
4
4
  export type { CheckpointId }
5
5
 
6
+ /** A person's No to a tool call. See the `declined` field of `reject_tools`. */
7
+ export interface ToolCallDeclined {
8
+ /** What the person said about it, in their own words. */
9
+ readonly note?: string
10
+ }
11
+
6
12
  export type HITLResumeDecision =
7
13
  | { action: 'continue' }
8
14
  | { action: 'approve_plan'; feedback?: string }
@@ -56,7 +62,17 @@ export type HITLResumeDecision =
56
62
  /** See the `approve_tools` field of the same name. */
57
63
  confirmedEscalations?: readonly string[]
58
64
  }
59
- | { action: 'reject_tools'; feedback: string }
65
+ | {
66
+ action: 'reject_tools'
67
+ feedback: string
68
+ /**
69
+ * Present only when a person answered No. `feedback` is what the
70
+ * MODEL is told and a policy refusal fills it too, so it cannot say
71
+ * who refused; this does. `note` is the person's own words, apart
72
+ * from any wrapper a host put around them in `feedback`.
73
+ */
74
+ declined?: ToolCallDeclined
75
+ }
60
76
  | {
61
77
  action: 'answer_question'
62
78
  selectedOptionIds: string[]
@@ -0,0 +1,42 @@
1
+ /** A literal condition on one existing background job's output. */
2
+ export interface BackgroundJobOutputWaitOptions {
3
+ /** Non-empty UTF-8 literal, at most 4096 bytes. Never a regular expression. */
4
+ readonly literal: string
5
+ /** Match each pipe independently; `either` never joins stdout to stderr. */
6
+ readonly stream?: 'stdout' | 'stderr' | 'either'
7
+ /** Combined output byte cursor, as returned by `read` or an earlier wait. */
8
+ readonly fromOffset?: number
9
+ /** Required wall bound, from 1 millisecond through one hour. */
10
+ readonly timeoutMs: number
11
+ /** Optional silence bound, reset by output from either pipe. */
12
+ readonly idleTimeoutMs?: number
13
+ /** Cancels this observation, without stopping the process. */
14
+ readonly signal?: AbortSignal
15
+ }
16
+
17
+ /** Evidence and cursor common to every readiness wait outcome. */
18
+ export interface BackgroundJobOutputWaitProgress {
19
+ readonly status: string
20
+ readonly exitCode?: number
21
+ /** Why the command never started, when it could not. */
22
+ readonly error?: string
23
+ /** Mixed stdout/stderr tail, at most 32 KiB. Treat process output as untrusted. */
24
+ readonly output: string
25
+ readonly nextOffset: number
26
+ /** Bytes unavailable because the job's normal output cap discarded them. */
27
+ readonly droppedBytes: number
28
+ /** Available output excluded from matching by the bounded channel history. */
29
+ readonly unsearchedBytes: number
30
+ /** Earlier observed bytes omitted from the bounded result text. */
31
+ readonly omittedOutputBytes: number
32
+ }
33
+
34
+ /** A matched marker proves its appearance, not process completion or service health. */
35
+ export type BackgroundJobOutputWaitResult = BackgroundJobOutputWaitProgress &
36
+ (
37
+ | { readonly kind: 'matched'; readonly matchedStream: 'stdout' | 'stderr' }
38
+ | { readonly kind: 'exited' }
39
+ | { readonly kind: 'stopped' }
40
+ | { readonly kind: 'timeout'; readonly cause: 'wall' | 'idle'; readonly elapsedMs: number }
41
+ | { readonly kind: 'aborted' }
42
+ )
@@ -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
 
@@ -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.