@namzu/sdk 49.0.0 → 50.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (742) hide show
  1. package/CHANGELOG.md +541 -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/provider/strict-schema.d.ts +28 -0
  222. package/dist/provider/strict-schema.d.ts.map +1 -1
  223. package/dist/provider/strict-schema.js +86 -0
  224. package/dist/provider/strict-schema.js.map +1 -1
  225. package/dist/public-runtime.d.ts +42 -14
  226. package/dist/public-runtime.d.ts.map +1 -1
  227. package/dist/public-runtime.js +36 -8
  228. package/dist/public-runtime.js.map +1 -1
  229. package/dist/public-tools.d.ts +8 -3
  230. package/dist/public-tools.d.ts.map +1 -1
  231. package/dist/public-tools.js +8 -3
  232. package/dist/public-tools.js.map +1 -1
  233. package/dist/public-types.d.ts +27 -7
  234. package/dist/public-types.d.ts.map +1 -1
  235. package/dist/registry/tool/presentation.d.ts +1 -0
  236. package/dist/registry/tool/presentation.d.ts.map +1 -1
  237. package/dist/registry/tool/presentation.js +9 -7
  238. package/dist/registry/tool/presentation.js.map +1 -1
  239. package/dist/runtime/harness-session/index.d.ts +5 -0
  240. package/dist/runtime/harness-session/index.d.ts.map +1 -0
  241. package/dist/runtime/harness-session/index.js +928 -0
  242. package/dist/runtime/harness-session/index.js.map +1 -0
  243. package/dist/runtime/harness-session/journal.d.ts +37 -0
  244. package/dist/runtime/harness-session/journal.d.ts.map +1 -0
  245. package/dist/runtime/harness-session/journal.js +177 -0
  246. package/dist/runtime/harness-session/journal.js.map +1 -0
  247. package/dist/runtime/harness-session/saved-view.d.ts +8 -0
  248. package/dist/runtime/harness-session/saved-view.d.ts.map +1 -0
  249. package/dist/runtime/harness-session/saved-view.js +112 -0
  250. package/dist/runtime/harness-session/saved-view.js.map +1 -0
  251. package/dist/runtime/jobs/awaited-jobs.d.ts +2 -1
  252. package/dist/runtime/jobs/awaited-jobs.d.ts.map +1 -1
  253. package/dist/runtime/jobs/awaited-jobs.js +2 -1
  254. package/dist/runtime/jobs/awaited-jobs.js.map +1 -1
  255. package/dist/runtime/jobs/registry.d.ts +56 -1
  256. package/dist/runtime/jobs/registry.d.ts.map +1 -1
  257. package/dist/runtime/jobs/registry.js +351 -34
  258. package/dist/runtime/jobs/registry.js.map +1 -1
  259. package/dist/runtime/query/abandon-turn.d.ts +12 -1
  260. package/dist/runtime/query/abandon-turn.d.ts.map +1 -1
  261. package/dist/runtime/query/abandon-turn.js +3 -1
  262. package/dist/runtime/query/abandon-turn.js.map +1 -1
  263. package/dist/runtime/query/checkpoint.d.ts +4 -0
  264. package/dist/runtime/query/checkpoint.d.ts.map +1 -1
  265. package/dist/runtime/query/checkpoint.js +10 -0
  266. package/dist/runtime/query/checkpoint.js.map +1 -1
  267. package/dist/runtime/query/durable-inbound.d.ts +5 -0
  268. package/dist/runtime/query/durable-inbound.d.ts.map +1 -0
  269. package/dist/runtime/query/durable-inbound.js +89 -0
  270. package/dist/runtime/query/durable-inbound.js.map +1 -0
  271. package/dist/runtime/query/events.d.ts +4 -0
  272. package/dist/runtime/query/events.d.ts.map +1 -1
  273. package/dist/runtime/query/events.js +22 -5
  274. package/dist/runtime/query/events.js.map +1 -1
  275. package/dist/runtime/query/executor/tool-call-admission.d.ts +5 -1
  276. package/dist/runtime/query/executor/tool-call-admission.d.ts.map +1 -1
  277. package/dist/runtime/query/executor/tool-call-admission.js +85 -13
  278. package/dist/runtime/query/executor/tool-call-admission.js.map +1 -1
  279. package/dist/runtime/query/executor.d.ts +41 -18
  280. package/dist/runtime/query/executor.d.ts.map +1 -1
  281. package/dist/runtime/query/executor.js +227 -114
  282. package/dist/runtime/query/executor.js.map +1 -1
  283. package/dist/runtime/query/index.d.ts +3 -0
  284. package/dist/runtime/query/index.d.ts.map +1 -1
  285. package/dist/runtime/query/index.js +21 -4
  286. package/dist/runtime/query/index.js.map +1 -1
  287. package/dist/runtime/query/iteration/index.d.ts +18 -6
  288. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  289. package/dist/runtime/query/iteration/index.js +144 -67
  290. package/dist/runtime/query/iteration/index.js.map +1 -1
  291. package/dist/runtime/query/iteration/outstanding-work.d.ts +9 -5
  292. package/dist/runtime/query/iteration/outstanding-work.d.ts.map +1 -1
  293. package/dist/runtime/query/iteration/outstanding-work.js +61 -6
  294. package/dist/runtime/query/iteration/outstanding-work.js.map +1 -1
  295. package/dist/runtime/query/iteration/phases/context.d.ts +4 -0
  296. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  297. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  298. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  299. package/dist/runtime/query/iteration/phases/tool-review.js +99 -16
  300. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  301. package/dist/runtime/query/observation-context.d.ts +2 -2
  302. package/dist/runtime/query/observation-context.d.ts.map +1 -1
  303. package/dist/runtime/query/observation-context.js +20 -13
  304. package/dist/runtime/query/observation-context.js.map +1 -1
  305. package/dist/runtime/query/prepare-turn.js +2 -2
  306. package/dist/runtime/query/prepare-turn.js.map +1 -1
  307. package/dist/runtime/query/prompt-cache.d.ts +1 -0
  308. package/dist/runtime/query/prompt-cache.d.ts.map +1 -1
  309. package/dist/runtime/query/prompt-cache.js +2 -0
  310. package/dist/runtime/query/prompt-cache.js.map +1 -1
  311. package/dist/runtime/query/prompt.d.ts +2 -0
  312. package/dist/runtime/query/prompt.d.ts.map +1 -1
  313. package/dist/runtime/query/prompt.js +23 -1
  314. package/dist/runtime/query/prompt.js.map +1 -1
  315. package/dist/runtime/query/repeat-call.d.ts +12 -3
  316. package/dist/runtime/query/repeat-call.d.ts.map +1 -1
  317. package/dist/runtime/query/repeat-call.js +33 -10
  318. package/dist/runtime/query/repeat-call.js.map +1 -1
  319. package/dist/runtime/query/resume-pending.d.ts +5 -6
  320. package/dist/runtime/query/resume-pending.d.ts.map +1 -1
  321. package/dist/runtime/query/resume-pending.js +30 -3
  322. package/dist/runtime/query/resume-pending.js.map +1 -1
  323. package/dist/runtime/query/resume-session.js +1 -1
  324. package/dist/runtime/query/resume-session.js.map +1 -1
  325. package/dist/runtime/query/review-policy.d.ts +8 -1
  326. package/dist/runtime/query/review-policy.d.ts.map +1 -1
  327. package/dist/runtime/query/review-policy.js +6 -0
  328. package/dist/runtime/query/review-policy.js.map +1 -1
  329. package/dist/runtime/query/saved-presentation.d.ts +13 -0
  330. package/dist/runtime/query/saved-presentation.d.ts.map +1 -0
  331. package/dist/runtime/query/saved-presentation.js +63 -0
  332. package/dist/runtime/query/saved-presentation.js.map +1 -0
  333. package/dist/runtime/query/steering.d.ts +6 -9
  334. package/dist/runtime/query/steering.d.ts.map +1 -1
  335. package/dist/runtime/query/steering.js.map +1 -1
  336. package/dist/runtime/query/tool-executions.d.ts +7 -3
  337. package/dist/runtime/query/tool-executions.d.ts.map +1 -1
  338. package/dist/runtime/query/tool-executions.js +89 -9
  339. package/dist/runtime/query/tool-executions.js.map +1 -1
  340. package/dist/runtime/query/tooling.d.ts +3 -1
  341. package/dist/runtime/query/tooling.d.ts.map +1 -1
  342. package/dist/runtime/query/tooling.js +3 -0
  343. package/dist/runtime/query/tooling.js.map +1 -1
  344. package/dist/scheduler/completion-inbox.d.ts +25 -1
  345. package/dist/scheduler/completion-inbox.d.ts.map +1 -1
  346. package/dist/scheduler/completion-inbox.js +102 -8
  347. package/dist/scheduler/completion-inbox.js.map +1 -1
  348. package/dist/scheduler/delegating.d.ts.map +1 -1
  349. package/dist/scheduler/delegating.js +5 -0
  350. package/dist/scheduler/delegating.js.map +1 -1
  351. package/dist/scheduler/local.d.ts.map +1 -1
  352. package/dist/scheduler/local.js +2 -0
  353. package/dist/scheduler/local.js.map +1 -1
  354. package/dist/session/summary/materialize.d.ts +10 -6
  355. package/dist/session/summary/materialize.d.ts.map +1 -1
  356. package/dist/session/summary/materialize.js +41 -8
  357. package/dist/session/summary/materialize.js.map +1 -1
  358. package/dist/store/budget/ledger.d.ts +9 -0
  359. package/dist/store/budget/ledger.d.ts.map +1 -1
  360. package/dist/store/budget/ledger.js +58 -6
  361. package/dist/store/budget/ledger.js.map +1 -1
  362. package/dist/store/evidence/index-page.d.ts +12 -12
  363. package/dist/store/evidence/source-text.d.ts +4 -4
  364. package/dist/store/session/disk.d.ts +9 -4
  365. package/dist/store/session/disk.d.ts.map +1 -1
  366. package/dist/store/session/disk.js +57 -11
  367. package/dist/store/session/disk.js.map +1 -1
  368. package/dist/store/session/memory.d.ts +5 -3
  369. package/dist/store/session/memory.d.ts.map +1 -1
  370. package/dist/store/session/memory.js +24 -7
  371. package/dist/store/session/memory.js.map +1 -1
  372. package/dist/store/session-log/core.d.ts +26 -6
  373. package/dist/store/session-log/core.d.ts.map +1 -1
  374. package/dist/store/session-log/core.js +61 -8
  375. package/dist/store/session-log/core.js.map +1 -1
  376. package/dist/store/session-log/disk.d.ts +2 -2
  377. package/dist/store/session-log/disk.d.ts.map +1 -1
  378. package/dist/store/session-log/disk.js +1 -0
  379. package/dist/store/session-log/disk.js.map +1 -1
  380. package/dist/store/session-log/fold.d.ts +7 -0
  381. package/dist/store/session-log/fold.d.ts.map +1 -1
  382. package/dist/store/session-log/fold.js +21 -0
  383. package/dist/store/session-log/fold.js.map +1 -1
  384. package/dist/store/session-log/index.d.ts +5 -3
  385. package/dist/store/session-log/index.d.ts.map +1 -1
  386. package/dist/store/session-log/index.js +3 -1
  387. package/dist/store/session-log/index.js.map +1 -1
  388. package/dist/store/session-log/memory.d.ts +1 -1
  389. package/dist/store/session-log/memory.d.ts.map +1 -1
  390. package/dist/store/session-log/memory.js +1 -0
  391. package/dist/store/session-log/memory.js.map +1 -1
  392. package/dist/store/session-log/spill.d.ts +10 -3
  393. package/dist/store/session-log/spill.d.ts.map +1 -1
  394. package/dist/store/session-log/spill.js +70 -5
  395. package/dist/store/session-log/spill.js.map +1 -1
  396. package/dist/store/session-log/structured-result.d.ts +21 -0
  397. package/dist/store/session-log/structured-result.d.ts.map +1 -0
  398. package/dist/store/session-log/structured-result.js +67 -0
  399. package/dist/store/session-log/structured-result.js.map +1 -0
  400. package/dist/store/task/disk.d.ts +11 -0
  401. package/dist/store/task/disk.d.ts.map +1 -1
  402. package/dist/store/task/disk.js +41 -2
  403. package/dist/store/task/disk.js.map +1 -1
  404. package/dist/store/task/memory.d.ts.map +1 -1
  405. package/dist/store/task/memory.js +15 -3
  406. package/dist/store/task/memory.js.map +1 -1
  407. package/dist/tools/admit-facts.d.ts +13 -0
  408. package/dist/tools/admit-facts.d.ts.map +1 -0
  409. package/dist/tools/admit-facts.js +142 -0
  410. package/dist/tools/admit-facts.js.map +1 -0
  411. package/dist/tools/builtins/bash.d.ts +4 -1
  412. package/dist/tools/builtins/bash.d.ts.map +1 -1
  413. package/dist/tools/builtins/bash.js +108 -22
  414. package/dist/tools/builtins/bash.js.map +1 -1
  415. package/dist/tools/builtins/browser.d.ts +10 -10
  416. package/dist/tools/builtins/computer-use.d.ts +90 -90
  417. package/dist/tools/builtins/edit.d.ts +17 -0
  418. package/dist/tools/builtins/edit.d.ts.map +1 -1
  419. package/dist/tools/builtins/edit.js +46 -1
  420. package/dist/tools/builtins/edit.js.map +1 -1
  421. package/dist/tools/builtins/file-write-result.d.ts.map +1 -1
  422. package/dist/tools/builtins/file-write-result.js +13 -0
  423. package/dist/tools/builtins/file-write-result.js.map +1 -1
  424. package/dist/tools/builtins/glob.d.ts.map +1 -1
  425. package/dist/tools/builtins/glob.js +12 -0
  426. package/dist/tools/builtins/glob.js.map +1 -1
  427. package/dist/tools/builtins/grep.d.ts.map +1 -1
  428. package/dist/tools/builtins/grep.js +14 -0
  429. package/dist/tools/builtins/grep.js.map +1 -1
  430. package/dist/tools/builtins/index.d.ts +2 -0
  431. package/dist/tools/builtins/index.d.ts.map +1 -1
  432. package/dist/tools/builtins/index.js +1 -0
  433. package/dist/tools/builtins/index.js.map +1 -1
  434. package/dist/tools/builtins/job.d.ts.map +1 -1
  435. package/dist/tools/builtins/job.js +4 -1
  436. package/dist/tools/builtins/job.js.map +1 -1
  437. package/dist/tools/builtins/lsp.d.ts +2 -2
  438. package/dist/tools/builtins/read-file.d.ts.map +1 -1
  439. package/dist/tools/builtins/read-file.js +49 -0
  440. package/dist/tools/builtins/read-file.js.map +1 -1
  441. package/dist/tools/builtins/view-image.d.ts +24 -0
  442. package/dist/tools/builtins/view-image.d.ts.map +1 -0
  443. package/dist/tools/builtins/view-image.js +385 -0
  444. package/dist/tools/builtins/view-image.js.map +1 -0
  445. package/dist/tools/builtins/wait-for-job-bounds.d.ts +2 -0
  446. package/dist/tools/builtins/wait-for-job-bounds.d.ts.map +1 -1
  447. package/dist/tools/builtins/wait-for-job-bounds.js +1 -0
  448. package/dist/tools/builtins/wait-for-job-bounds.js.map +1 -1
  449. package/dist/tools/builtins/wait-for-job.d.ts +2 -0
  450. package/dist/tools/builtins/wait-for-job.d.ts.map +1 -1
  451. package/dist/tools/builtins/wait-for-job.js +104 -6
  452. package/dist/tools/builtins/wait-for-job.js.map +1 -1
  453. package/dist/tools/builtins/write-file.d.ts.map +1 -1
  454. package/dist/tools/builtins/write-file.js +1 -0
  455. package/dist/tools/builtins/write-file.js.map +1 -1
  456. package/dist/tools/command-shell.d.ts +37 -2
  457. package/dist/tools/command-shell.d.ts.map +1 -1
  458. package/dist/tools/command-shell.js +100 -3
  459. package/dist/tools/command-shell.js.map +1 -1
  460. package/dist/tools/coordinator/agent.d.ts +9 -19
  461. package/dist/tools/coordinator/agent.d.ts.map +1 -1
  462. package/dist/tools/coordinator/agent.js.map +1 -1
  463. package/dist/tools/coordinator/index.d.ts.map +1 -1
  464. package/dist/tools/coordinator/index.js +127 -67
  465. package/dist/tools/coordinator/index.js.map +1 -1
  466. package/dist/tools/coordinator/wait-with-idle-bound.d.ts +2 -0
  467. package/dist/tools/coordinator/wait-with-idle-bound.d.ts.map +1 -1
  468. package/dist/tools/coordinator/wait-with-idle-bound.js +1 -1
  469. package/dist/tools/coordinator/wait-with-idle-bound.js.map +1 -1
  470. package/dist/tools/defineTool.d.ts.map +1 -1
  471. package/dist/tools/defineTool.js +4 -0
  472. package/dist/tools/defineTool.js.map +1 -1
  473. package/dist/tools/failure-facts.d.ts +8 -0
  474. package/dist/tools/failure-facts.d.ts.map +1 -0
  475. package/dist/tools/failure-facts.js +24 -0
  476. package/dist/tools/failure-facts.js.map +1 -0
  477. package/dist/tools/host-output.d.ts +24 -0
  478. package/dist/tools/host-output.d.ts.map +1 -0
  479. package/dist/tools/host-output.js +117 -0
  480. package/dist/tools/host-output.js.map +1 -0
  481. package/dist/tools/oem-code-pages.d.ts +8 -0
  482. package/dist/tools/oem-code-pages.d.ts.map +1 -0
  483. package/dist/tools/oem-code-pages.js +23 -0
  484. package/dist/tools/oem-code-pages.js.map +1 -0
  485. package/dist/tools/schedules/schedule-tool.d.ts.map +1 -1
  486. package/dist/tools/schedules/schedule-tool.js +35 -6
  487. package/dist/tools/schedules/schedule-tool.js.map +1 -1
  488. package/dist/tools/schedules/types.d.ts +23 -3
  489. package/dist/tools/schedules/types.d.ts.map +1 -1
  490. package/dist/tools/task/list.d.ts.map +1 -1
  491. package/dist/tools/task/list.js +14 -6
  492. package/dist/tools/task/list.js.map +1 -1
  493. package/dist/tools/task/present.d.ts.map +1 -1
  494. package/dist/tools/task/present.js +26 -6
  495. package/dist/tools/task/present.js.map +1 -1
  496. package/dist/tools/task/update.d.ts.map +1 -1
  497. package/dist/tools/task/update.js +12 -5
  498. package/dist/tools/task/update.js.map +1 -1
  499. package/dist/tools/text-window.d.ts +19 -0
  500. package/dist/tools/text-window.d.ts.map +1 -0
  501. package/dist/tools/text-window.js +83 -0
  502. package/dist/tools/text-window.js.map +1 -0
  503. package/dist/toolsets/manager.d.ts +11 -0
  504. package/dist/toolsets/manager.d.ts.map +1 -1
  505. package/dist/toolsets/manager.js +45 -1
  506. package/dist/toolsets/manager.js.map +1 -1
  507. package/dist/types/acp/index.d.ts +137 -1
  508. package/dist/types/acp/index.d.ts.map +1 -1
  509. package/dist/types/agent/base.d.ts +3 -0
  510. package/dist/types/agent/base.d.ts.map +1 -1
  511. package/dist/types/agent/manager.d.ts +8 -23
  512. package/dist/types/agent/manager.d.ts.map +1 -1
  513. package/dist/types/agent/scheduler.d.ts +10 -1
  514. package/dist/types/agent/scheduler.d.ts.map +1 -1
  515. package/dist/types/agent/task.d.ts +4 -0
  516. package/dist/types/agent/task.d.ts.map +1 -1
  517. package/dist/types/authorization/index.d.ts +30 -30
  518. package/dist/types/connector/mcp.d.ts +7 -0
  519. package/dist/types/connector/mcp.d.ts.map +1 -1
  520. package/dist/types/errors/catalog.d.ts.map +1 -1
  521. package/dist/types/errors/catalog.js +4 -2
  522. package/dist/types/errors/catalog.js.map +1 -1
  523. package/dist/types/harness/schema.d.ts +354 -0
  524. package/dist/types/harness/schema.d.ts.map +1 -0
  525. package/dist/types/harness/schema.js +203 -0
  526. package/dist/types/harness/schema.js.map +1 -0
  527. package/dist/types/harness/session.d.ts +278 -0
  528. package/dist/types/harness/session.d.ts.map +1 -0
  529. package/dist/types/harness/session.js +2 -0
  530. package/dist/types/harness/session.js.map +1 -0
  531. package/dist/types/hitl/index.d.ts +12 -0
  532. package/dist/types/hitl/index.d.ts.map +1 -1
  533. package/dist/types/hitl/index.js.map +1 -1
  534. package/dist/types/job/index.d.ts +47 -0
  535. package/dist/types/job/index.d.ts.map +1 -0
  536. package/dist/types/job/index.js +2 -0
  537. package/dist/types/job/index.js.map +1 -0
  538. package/dist/types/message/inbound-delivery.d.ts +44 -0
  539. package/dist/types/message/inbound-delivery.d.ts.map +1 -0
  540. package/dist/types/message/inbound-delivery.js +14 -0
  541. package/dist/types/message/inbound-delivery.js.map +1 -0
  542. package/dist/types/message/index.d.ts +4 -1
  543. package/dist/types/message/index.d.ts.map +1 -1
  544. package/dist/types/message/index.js +5 -1
  545. package/dist/types/message/index.js.map +1 -1
  546. package/dist/types/plugin/index.d.ts +6 -6
  547. package/dist/types/sandbox/index.d.ts +39 -2
  548. package/dist/types/sandbox/index.d.ts.map +1 -1
  549. package/dist/types/sandbox/index.js.map +1 -1
  550. package/dist/types/session/checkpoint.d.ts +24 -17
  551. package/dist/types/session/checkpoint.d.ts.map +1 -1
  552. package/dist/types/session/checkpoint.js +1 -0
  553. package/dist/types/session/checkpoint.js.map +1 -1
  554. package/dist/types/session/events.d.ts +23 -1
  555. package/dist/types/session/events.d.ts.map +1 -1
  556. package/dist/types/session/events.js.map +1 -1
  557. package/dist/types/session/records.d.ts +1514 -565
  558. package/dist/types/session/records.d.ts.map +1 -1
  559. package/dist/types/session/records.js +89 -1
  560. package/dist/types/session/records.js.map +1 -1
  561. package/dist/types/session/step.d.ts +2 -0
  562. package/dist/types/session/step.d.ts.map +1 -1
  563. package/dist/types/session/step.js.map +1 -1
  564. package/dist/types/session/store.d.ts +19 -10
  565. package/dist/types/session/store.d.ts.map +1 -1
  566. package/dist/types/session/tool-execution.d.ts +6 -0
  567. package/dist/types/session/tool-execution.d.ts.map +1 -1
  568. package/dist/types/structured-output/index.d.ts +12 -2
  569. package/dist/types/structured-output/index.d.ts.map +1 -1
  570. package/dist/types/summary/ref.d.ts +3 -1
  571. package/dist/types/summary/ref.d.ts.map +1 -1
  572. package/dist/types/tool/index.d.ts +32 -4
  573. package/dist/types/tool/index.d.ts.map +1 -1
  574. package/dist/types/tool/index.js.map +1 -1
  575. package/dist/types/tool/presentation.d.ts +106 -0
  576. package/dist/types/tool/presentation.d.ts.map +1 -1
  577. package/dist/utils/json-snapshot.d.ts +6 -2
  578. package/dist/utils/json-snapshot.d.ts.map +1 -1
  579. package/dist/utils/json-snapshot.js +19 -9
  580. package/dist/utils/json-snapshot.js.map +1 -1
  581. package/dist/utils/structured-result-json.d.ts +5 -0
  582. package/dist/utils/structured-result-json.d.ts.map +1 -0
  583. package/dist/utils/structured-result-json.js +10 -0
  584. package/dist/utils/structured-result-json.js.map +1 -0
  585. package/package.json +1 -1
  586. package/src/agents/QueryAgent.ts +1 -0
  587. package/src/agents/examples/SupervisorAgent.ts +1 -0
  588. package/src/agents/runAgent.ts +3 -0
  589. package/src/authorization/shell-lexer.ts +16 -1
  590. package/src/bridge/acp/permission.ts +17 -3
  591. package/src/bridge/acp/server.ts +271 -25
  592. package/src/bridge/acp/tasks.ts +23 -0
  593. package/src/bridge/acp/update.ts +167 -13
  594. package/src/connector/mcp/adapter.ts +16 -4
  595. package/src/connector/mcp/client.ts +6 -2
  596. package/src/constants/acp/index.ts +4 -0
  597. package/src/manager/agent/lifecycle.ts +230 -3
  598. package/src/manager/plan/lifecycle.ts +11 -9
  599. package/src/manager/session/attribution.ts +12 -2
  600. package/src/manager/session/streamed-message-identity.ts +21 -0
  601. package/src/manager/session/turn-recorder.ts +4 -3
  602. package/src/pals/activity/causality.ts +261 -0
  603. package/src/pals/activity/projection.ts +89 -0
  604. package/src/pals/activity/source.ts +240 -0
  605. package/src/pals/activity/subscription-policy.ts +230 -0
  606. package/src/pals/activity/subscription-schema.ts +27 -0
  607. package/src/pals/activity/subscription-store.ts +172 -0
  608. package/src/pals/activity/subscription-types.ts +48 -0
  609. package/src/pals/activity/subscriptions.ts +209 -0
  610. package/src/pals/activity/types.ts +108 -0
  611. package/src/pals/channels/ingress.ts +153 -0
  612. package/src/pals/channels/routes.ts +118 -0
  613. package/src/pals/channels/routing.ts +197 -0
  614. package/src/pals/channels/schema.ts +108 -0
  615. package/src/pals/channels/types.ts +156 -0
  616. package/src/pals/communication/broker.ts +131 -0
  617. package/src/pals/communication/dispatch.ts +66 -0
  618. package/src/pals/communication/inbound.ts +193 -0
  619. package/src/pals/communication/ingress-dispatch.ts +63 -0
  620. package/src/pals/communication/ingress-inbound.ts +269 -0
  621. package/src/pals/communication/ingress-schema.ts +526 -0
  622. package/src/pals/communication/ingress-types.ts +336 -0
  623. package/src/pals/communication/operator.ts +315 -0
  624. package/src/pals/communication/policy.ts +174 -0
  625. package/src/pals/communication/schema.ts +173 -0
  626. package/src/pals/communication/store.ts +577 -0
  627. package/src/pals/communication/tools.ts +139 -0
  628. package/src/pals/communication/types.ts +227 -0
  629. package/src/pals/communication/verify.ts +220 -0
  630. package/src/pals/lifecycle.ts +54 -0
  631. package/src/pals/prompt.ts +101 -0
  632. package/src/pals/reference-images.ts +322 -0
  633. package/src/pals/runtime.ts +670 -0
  634. package/src/pals/store.ts +369 -0
  635. package/src/pals/types.ts +157 -0
  636. package/src/peers/envelope.ts +1 -1
  637. package/src/plugin/shell-hook.ts +8 -2
  638. package/src/process/kill-tree.ts +10 -1
  639. package/src/provider/errors.ts +135 -2
  640. package/src/provider/strict-schema.ts +90 -0
  641. package/src/public-runtime.ts +118 -12
  642. package/src/public-tools.ts +13 -1
  643. package/src/public-types.ts +69 -7
  644. package/src/registry/tool/presentation.ts +9 -4
  645. package/src/runtime/harness-session/index.ts +1125 -0
  646. package/src/runtime/harness-session/journal.ts +209 -0
  647. package/src/runtime/harness-session/saved-view.ts +122 -0
  648. package/src/runtime/jobs/awaited-jobs.ts +2 -1
  649. package/src/runtime/jobs/registry.ts +397 -41
  650. package/src/runtime/query/abandon-turn.ts +18 -2
  651. package/src/runtime/query/checkpoint.ts +11 -0
  652. package/src/runtime/query/durable-inbound.ts +101 -0
  653. package/src/runtime/query/events.ts +22 -5
  654. package/src/runtime/query/executor/tool-call-admission.ts +125 -32
  655. package/src/runtime/query/executor.ts +316 -130
  656. package/src/runtime/query/index.ts +24 -4
  657. package/src/runtime/query/iteration/index.ts +218 -104
  658. package/src/runtime/query/iteration/outstanding-work.ts +55 -7
  659. package/src/runtime/query/iteration/phases/context.ts +4 -0
  660. package/src/runtime/query/iteration/phases/tool-review.ts +118 -21
  661. package/src/runtime/query/observation-context.ts +22 -16
  662. package/src/runtime/query/prepare-turn.ts +2 -2
  663. package/src/runtime/query/prompt-cache.ts +3 -0
  664. package/src/runtime/query/prompt.ts +32 -1
  665. package/src/runtime/query/repeat-call.ts +40 -10
  666. package/src/runtime/query/resume-pending.ts +60 -7
  667. package/src/runtime/query/resume-session.ts +1 -1
  668. package/src/runtime/query/review-policy.ts +23 -2
  669. package/src/runtime/query/saved-presentation.ts +70 -0
  670. package/src/runtime/query/steering.ts +6 -9
  671. package/src/runtime/query/tool-executions.ts +108 -9
  672. package/src/runtime/query/tooling.ts +6 -1
  673. package/src/scheduler/completion-inbox.ts +108 -7
  674. package/src/scheduler/delegating.ts +5 -0
  675. package/src/scheduler/local.ts +2 -0
  676. package/src/session/summary/materialize.ts +51 -9
  677. package/src/store/budget/ledger.ts +60 -5
  678. package/src/store/session/disk.ts +77 -10
  679. package/src/store/session/memory.ts +32 -7
  680. package/src/store/session-log/core.ts +118 -11
  681. package/src/store/session-log/disk.ts +9 -2
  682. package/src/store/session-log/fold.ts +22 -0
  683. package/src/store/session-log/index.ts +5 -0
  684. package/src/store/session-log/memory.ts +2 -1
  685. package/src/store/session-log/spill.ts +89 -6
  686. package/src/store/session-log/structured-result.ts +96 -0
  687. package/src/store/task/disk.ts +46 -2
  688. package/src/store/task/memory.ts +13 -3
  689. package/src/tools/admit-facts.ts +145 -0
  690. package/src/tools/builtins/bash.ts +132 -24
  691. package/src/tools/builtins/edit.ts +54 -1
  692. package/src/tools/builtins/file-write-result.ts +14 -0
  693. package/src/tools/builtins/glob.ts +12 -0
  694. package/src/tools/builtins/grep.ts +14 -0
  695. package/src/tools/builtins/index.ts +2 -0
  696. package/src/tools/builtins/job.ts +4 -1
  697. package/src/tools/builtins/read-file.ts +57 -0
  698. package/src/tools/builtins/view-image.ts +409 -0
  699. package/src/tools/builtins/wait-for-job-bounds.ts +3 -0
  700. package/src/tools/builtins/wait-for-job.ts +141 -32
  701. package/src/tools/builtins/write-file.ts +4 -2
  702. package/src/tools/command-shell.ts +132 -5
  703. package/src/tools/coordinator/agent.ts +9 -19
  704. package/src/tools/coordinator/index.ts +150 -75
  705. package/src/tools/coordinator/wait-with-idle-bound.ts +3 -1
  706. package/src/tools/defineTool.ts +4 -0
  707. package/src/tools/failure-facts.ts +24 -0
  708. package/src/tools/host-output.ts +136 -0
  709. package/src/tools/oem-code-pages.ts +22 -0
  710. package/src/tools/schedules/schedule-tool.ts +38 -5
  711. package/src/tools/schedules/types.ts +23 -3
  712. package/src/tools/task/list.ts +15 -7
  713. package/src/tools/task/present.ts +37 -7
  714. package/src/tools/task/update.ts +12 -5
  715. package/src/tools/text-window.ts +87 -0
  716. package/src/toolsets/manager.ts +58 -1
  717. package/src/types/acp/index.ts +150 -4
  718. package/src/types/agent/base.ts +3 -0
  719. package/src/types/agent/manager.ts +8 -23
  720. package/src/types/agent/scheduler.ts +10 -1
  721. package/src/types/agent/task.ts +4 -0
  722. package/src/types/connector/mcp.ts +7 -0
  723. package/src/types/errors/catalog.ts +4 -2
  724. package/src/types/harness/schema.ts +203 -0
  725. package/src/types/harness/session.ts +306 -0
  726. package/src/types/hitl/index.ts +17 -1
  727. package/src/types/job/index.ts +42 -0
  728. package/src/types/message/inbound-delivery.ts +63 -0
  729. package/src/types/message/index.ts +8 -1
  730. package/src/types/sandbox/index.ts +46 -0
  731. package/src/types/session/checkpoint.ts +4 -1
  732. package/src/types/session/events.ts +23 -1
  733. package/src/types/session/records.ts +114 -2
  734. package/src/types/session/step.ts +2 -0
  735. package/src/types/session/store.ts +23 -9
  736. package/src/types/session/tool-execution.ts +6 -0
  737. package/src/types/structured-output/index.ts +13 -2
  738. package/src/types/summary/ref.ts +3 -1
  739. package/src/types/tool/index.ts +39 -5
  740. package/src/types/tool/presentation.ts +121 -0
  741. package/src/utils/json-snapshot.ts +26 -9
  742. package/src/utils/structured-result-json.ts +10 -0
@@ -34,28 +34,30 @@ export type PlanApprovalHandler = (request: PlanApprovalRequest) => Promise<Plan
34
34
  * (`iteration/phases/context.ts` calls `approve` and `startExecution`),
35
35
  * translates its events onto the session event stream (`EventTranslator.wirePlanManager`),
36
36
  * and settles it on failure (`runtime/query/result.ts` calls `failPlan`). It
37
- * never reports a step outcome and never settles a plan that succeeded.
37
+ * does not infer step outcomes from a turn's final text. The coordinator can
38
+ * report explicitly bound delegated steps; hosts can also report outcomes.
38
39
  *
39
40
  * That is a split, not an omission — `drainQuery` hands the manager to the host
40
41
  * through `onContextCreated({ planManager })` BEFORE the iteration loop starts,
41
42
  * precisely so a host can drive the half the kernel does not. So a grep for
42
- * callers of `updateStepStatus` or `completePlan` inside this package finds
43
- * none, and that is not evidence the methods are dead: the callers are hosts,
44
- * and they are outside the repository. `PlanManager` is exported from
43
+ * callers of `updateStepStatus` or `completePlan` must account for both the
44
+ * coordinator and application hosts. `PlanManager` is exported from
45
45
  * `public-runtime.ts` for this reason.
46
46
  *
47
47
  * Recorded here because the absence has already been read once as a dead layer
48
48
  * and proposed for deletion. What it would have deleted is a working
49
49
  * human-in-the-loop approval gate.
50
50
  *
51
- * The one genuine gap in the split is tracked separately: nothing settles a
52
- * plan that SUCCEEDED, so its status can reach `failed` or stay `executing`
53
- * but never `completed`. Fixing that needs a decision about what a
54
- * kernel-built plan's steps mean, not a guessed status — see `completePlan`.
51
+ * `completePlan` requires reported outcomes for every step. A plan without
52
+ * those outcomes stays executing until its owner reports them or abandons it;
53
+ * an ended turn is not evidence that its steps succeeded.
55
54
  */
56
55
  export class PlanManager {
57
56
  private currentPlan: Plan | null = null
58
- private readonly scope: { readonly sessionId: SessionId; readonly turnId: TurnId }
57
+ private readonly scope: {
58
+ readonly sessionId: SessionId
59
+ readonly turnId: TurnId
60
+ }
59
61
  private listeners: PlanEventListener[] = []
60
62
  private approvalHandler?: PlanApprovalHandler
61
63
 
@@ -22,7 +22,7 @@ export interface SessionLogAttribution {
22
22
  export async function assertSessionLogAttribution(
23
23
  log: SessionLog,
24
24
  scope: SessionLogAttribution,
25
- options: { readonly requireStarted?: boolean } = {},
25
+ options: { readonly requireStarted?: boolean; readonly execution?: 'kernel' } = {},
26
26
  ): Promise<boolean> {
27
27
  const requiredFields = ['sessionId', 'projectId', 'tenantId', 'topicId'] as const
28
28
  const missingFields = requiredFields.filter(
@@ -69,7 +69,17 @@ export async function assertSessionLogAttribution(
69
69
  if (opened.topicId === undefined || opened.topicId !== scope.topicId) {
70
70
  fields.push('topicId')
71
71
  }
72
- if (fields.length === 0) return true
72
+ if (fields.length === 0) {
73
+ if (options.execution === 'kernel' && opened.harness !== undefined) {
74
+ throw new NamzuError({
75
+ code: 'invalid_config',
76
+ message:
77
+ 'This session is bound to an external execution engine. Continue it through its harness adapter or start a new Namzu session.',
78
+ details: { fields: ['harness'] },
79
+ })
80
+ }
81
+ return true
82
+ }
73
83
 
74
84
  throw new NamzuError({
75
85
  code: 'invalid_config',
@@ -0,0 +1,21 @@
1
+ import type { MessageId } from '../../types/ids/index.js'
2
+ import type { AssistantMessage, Message } from '../../types/message/index.js'
3
+
4
+ // Only the runtime that minted a stream's identity associates a freshly built
5
+ // assistant object here. Caller-authored BaseMessage.id is never an authority.
6
+ const identities = new WeakMap<Message, MessageId>()
7
+
8
+ export function withStreamedMessageIdentity(
9
+ message: AssistantMessage,
10
+ messageId: MessageId,
11
+ ): AssistantMessage {
12
+ identities.set(message, messageId)
13
+ return message
14
+ }
15
+
16
+ /** Consume the trusted stream identity once, when this object is first recorded. */
17
+ export function takeStreamedMessageIdentity(message: Message): MessageId | undefined {
18
+ const identity = identities.get(message)
19
+ identities.delete(message)
20
+ return identity
21
+ }
@@ -54,6 +54,7 @@ import {
54
54
  import { asCheckpointId, generateAuditEventId, generateMessageId } from '../../utils/id.js'
55
55
  import { childSessionEnded } from '../agent/child-session.js'
56
56
  import { assertSessionLogAttribution } from './attribution.js'
57
+ import { takeStreamedMessageIdentity } from './streamed-message-identity.js'
57
58
 
58
59
  /** Which provider and model a cost is priced against. */
59
60
  export interface PricingSubject {
@@ -609,7 +610,7 @@ export class TurnRecorder {
609
610
  }
610
611
  // Claiming a log may repair a torn tail. Refuse a foreign owner
611
612
  // before that mutation, then recheck under the lease below.
612
- await assertSessionLogAttribution(this.log, this.#config)
613
+ await assertSessionLogAttribution(this.log, this.#config, { execution: 'kernel' })
613
614
  if (!options.lease) {
614
615
  const lease = await this.log.claim({
615
616
  holder: this.#leaseHolder,
@@ -657,7 +658,7 @@ export class TurnRecorder {
657
658
  ...(options.session.forkedFrom ? { forkedFrom: options.session.forkedFrom } : {}),
658
659
  })
659
660
  } else {
660
- await assertSessionLogAttribution(this.log, this.#config)
661
+ await assertSessionLogAttribution(this.log, this.#config, { execution: 'kernel' })
661
662
  }
662
663
  if (options.session.forkedFrom) {
663
664
  this.#turn.forkedFrom = options.session.forkedFrom
@@ -1057,7 +1058,7 @@ export class TurnRecorder {
1057
1058
  #idFor(message: Message): MessageId {
1058
1059
  let id = this.#ids.get(message)
1059
1060
  if (!id) {
1060
- id = generateMessageId()
1061
+ id = takeStreamedMessageIdentity(message) ?? generateMessageId()
1061
1062
  this.#ids.set(message, id)
1062
1063
  }
1063
1064
  this.#recorded.set(message, id)
@@ -0,0 +1,261 @@
1
+ import { createHash } from 'node:crypto'
2
+ import { isDeepStrictEqual } from 'node:util'
3
+ import { z } from 'zod'
4
+ import { SessionLogChain, type SessionLogEntry } from '../../store/session-log/chain.js'
5
+ import { stableDigest } from '../../utils/hash.js'
6
+ import {
7
+ activityFactSchema,
8
+ activityScopeSchema,
9
+ ingressBindingSchema,
10
+ ingressInboxSchema,
11
+ ingressIntentDigest,
12
+ ingressIntentId,
13
+ ingressIntentSchema,
14
+ ingressReceiptSchema,
15
+ } from '../communication/ingress-schema.js'
16
+ import { PAL_OBSERVATION_NAMESPACE, type PalIngressStore } from '../communication/ingress-types.js'
17
+ import type { PalStore } from '../types.js'
18
+ import { projectPalActivity } from './projection.js'
19
+ import type { PalActivityFact, PalActivityScope, PalActivitySourceOptions } from './types.js'
20
+
21
+ const requestMarkerSchema = z
22
+ .object({
23
+ type: z.literal('request_envelope'),
24
+ iteration: z.literal(1),
25
+ model: z.string().min(1).max(4096),
26
+ systemPrompt: z.string(),
27
+ toolNames: z.array(z.string().min(1).max(512)).max(16_384),
28
+ toolSchemaDigest: z.string().regex(/^[a-f0-9]{16}$/),
29
+ })
30
+ .refine(
31
+ (value) =>
32
+ new Set(value.toolNames).size === value.toolNames.length &&
33
+ (value.toolNames.length > 0 || value.toolSchemaDigest === stableDigest([])),
34
+ )
35
+
36
+ export class PalActivityCausalityUnavailableError extends Error {
37
+ override readonly name = 'PalActivityCausalityUnavailableError'
38
+ constructor() {
39
+ super('Complete owned original turn delivery evidence is required before activity publication.')
40
+ }
41
+ }
42
+
43
+ export interface PalActivityCausalityOptions {
44
+ readonly pals: PalStore
45
+ readonly ingress: PalIngressStore
46
+ readonly authorize: PalActivitySourceOptions['authorize']
47
+ readonly openJournal: PalActivitySourceOptions['openJournal']
48
+ /** Explicit original prefix budgets; exhaustion rejects rather than assuming independence. */
49
+ readonly maxReadBytes: number
50
+ readonly maxRecords: number
51
+ }
52
+
53
+ /**
54
+ * Build a trusted causality port from original hash-verified records and exact recorded inbox
55
+ * receipts. It resolves no client cursor and grants no wake/action authority. Early turn facts
56
+ * wait for the first recorded provider request, after initial durable input acknowledgement.
57
+ */
58
+ export function createPalActivityCausalityResolver(options: PalActivityCausalityOptions) {
59
+ const { pals, ingress, authorize, openJournal } = options
60
+ const maxReadBytes = z.number().int().positive().safe().parse(options.maxReadBytes)
61
+ const maxRecords = z.number().int().positive().safe().parse(options.maxRecords)
62
+ if (typeof authorize !== 'function' || typeof openJournal !== 'function')
63
+ throw new TypeError(
64
+ 'Pal activity causality requires trusted observation and original journal ports.',
65
+ )
66
+ return async (
67
+ inputScope: PalActivityScope,
68
+ inputFact: PalActivityFact,
69
+ signal: AbortSignal,
70
+ ): Promise<readonly string[]> => {
71
+ const scope = Object.freeze(activityScopeSchema.parse(inputScope))
72
+ const fact = Object.freeze(activityFactSchema.parse(inputFact))
73
+ const unavailable = (): never => {
74
+ throw new PalActivityCausalityUnavailableError()
75
+ }
76
+ const permission = async () => {
77
+ signal.throwIfAborted()
78
+ if ((await authorize(scope, signal)) !== true) unavailable()
79
+ signal.throwIfAborted()
80
+ }
81
+ await permission()
82
+ const definition = pals.getRevision(scope.palId, scope.profileRevision)
83
+ const workspace = definition.workspace
84
+ const journal = await openJournal(scope, signal)
85
+ signal.throwIfAborted()
86
+ if (journal.log.sessionId !== scope.sessionId) unavailable()
87
+ const size = await journal.bytes.size()
88
+ signal.throwIfAborted()
89
+ await permission()
90
+ if (!Number.isSafeInteger(size) || size < 1 || size > maxReadBytes) unavailable()
91
+ const raw = Uint8Array.from(await journal.bytes.read(0, size))
92
+ signal.throwIfAborted()
93
+ if (raw.byteLength !== size || raw.at(-1) !== 10) unavailable()
94
+ const entries: SessionLogEntry[] = []
95
+ const chain = new SessionLogChain({ head: null, sessionId: scope.sessionId })
96
+ let offset = 0
97
+ let generation = 0
98
+ while (offset < raw.length) {
99
+ signal.throwIfAborted()
100
+ if (entries.length >= maxRecords) unavailable()
101
+ const end = raw.indexOf(10, offset)
102
+ if (end < 0) unavailable()
103
+ let entry: SessionLogEntry
104
+ try {
105
+ entry = chain.accept(raw.subarray(offset, end + 1), offset)
106
+ } catch {
107
+ return unavailable()
108
+ }
109
+ if (entry.record.gen < generation) unavailable()
110
+ generation = entry.record.gen
111
+ entries.push(entry)
112
+ offset = end + 1
113
+ }
114
+ const root = entries[0]?.record
115
+ if (
116
+ root?.type !== 'session_started' ||
117
+ root.parent ||
118
+ root.forkedFrom ||
119
+ root.tenantId !== scope.tenantId ||
120
+ root.projectId !== scope.projectId ||
121
+ root.cwd !== workspace ||
122
+ root.origin?.protocol !== 'desktop' ||
123
+ root.origin.externalSessionId !==
124
+ JSON.stringify(['namzu-pal', scope.palId, scope.profileRevision, scope.sessionId])
125
+ )
126
+ unavailable()
127
+ const scopeHash = createHash('sha256')
128
+ .update(
129
+ JSON.stringify([
130
+ 'pal-activity/1',
131
+ scope.tenantId,
132
+ scope.projectId,
133
+ scope.palId,
134
+ scope.profileRevision,
135
+ scope.sessionId,
136
+ workspace,
137
+ ]),
138
+ )
139
+ .digest('hex')
140
+ const original = entries.find((e) => e.record.seq === fact.seq)
141
+ if (
142
+ !original ||
143
+ !isDeepStrictEqual(projectPalActivity(original, scopeHash), fact) ||
144
+ !fact.turnId
145
+ )
146
+ unavailable()
147
+ const turnId = fact.turnId
148
+ const firstRequest = entries.find(
149
+ (e) => e.record.type === 'request_envelope' && e.record.turnId === turnId,
150
+ )
151
+ if (!firstRequest) return unavailable()
152
+ if (!requestMarkerSchema.safeParse(firstRequest.record).success) return unavailable()
153
+ // Initial inbox delivery follows turn_started; include that intake before classifying early facts.
154
+ const through = Math.max(fact.seq, firstRequest.record.seq)
155
+ const state = await ingress.readIngress({ tenantId: scope.tenantId, palId: scope.palId })
156
+ signal.throwIfAborted()
157
+ const trail = new Set<string>()
158
+ for (const entry of entries) {
159
+ const record = entry.record
160
+ if (
161
+ record.seq > through ||
162
+ record.type !== 'message' ||
163
+ record.turnId !== turnId ||
164
+ record.role !== 'user'
165
+ )
166
+ continue
167
+ // Resolving an external spill requires an independently bounded original spill port.
168
+ if (record.spill) unavailable()
169
+ const content = record.content as {
170
+ role?: unknown
171
+ content?: unknown
172
+ source?: {
173
+ type?: unknown
174
+ kind?: unknown
175
+ deliveryRef?: { namespace?: unknown; id?: unknown; digest?: unknown }
176
+ }
177
+ }
178
+ const ref = content?.source?.deliveryRef
179
+ if (
180
+ content?.source?.kind === 'host-observation' &&
181
+ ref?.namespace !== PAL_OBSERVATION_NAMESPACE
182
+ )
183
+ return unavailable()
184
+ if (ref?.namespace !== PAL_OBSERVATION_NAMESPACE) continue
185
+ const storedMessage = state?.messages.find((m) => m.id === ref.id)
186
+ const parsedMessage = ingressInboxSchema.safeParse(storedMessage)
187
+ if (!parsedMessage.success) return unavailable()
188
+ const message = parsedMessage.data
189
+ const {
190
+ ordinal: _ordinal,
191
+ routeId: _routeId,
192
+ phase: _phase,
193
+ claim: _claim,
194
+ receipt: _receipt,
195
+ ...envelope
196
+ } = message
197
+ const canonical = ingressIntentSchema.safeParse(envelope)
198
+ if (
199
+ !canonical.success ||
200
+ message.id !== ingressIntentId(canonical.data) ||
201
+ message.digest !== ingressIntentDigest(canonical.data)
202
+ )
203
+ return unavailable()
204
+ if (
205
+ !message ||
206
+ !('kind' in message) ||
207
+ message.kind !== 'observation' ||
208
+ message.phase !== 'recorded' ||
209
+ !message.claim ||
210
+ !message.receipt ||
211
+ message.digest !== ref.digest ||
212
+ message.receipt.ref.namespace !== PAL_OBSERVATION_NAMESPACE ||
213
+ message.receipt.ref.id !== message.id ||
214
+ message.receipt.ref.digest !== message.digest ||
215
+ message.receipt.messageId !== record.messageId ||
216
+ message.receipt.turnId !== turnId ||
217
+ message.receipt.sessionId !== scope.sessionId ||
218
+ message.receipt.claimId !== message.claim.id ||
219
+ message.claim.turnId !== turnId ||
220
+ message.claim.sessionId !== scope.sessionId ||
221
+ message.claim.generation !== record.gen ||
222
+ message.claim.content !== content.content ||
223
+ content.role !== 'user' ||
224
+ content.source?.type !== 'runtime-context' ||
225
+ content.source.kind !== 'host-observation' ||
226
+ message.receipt.through.pointer.seq < record.seq
227
+ )
228
+ return unavailable()
229
+ const receipt = ingressReceiptSchema.parse(message.receipt)
230
+ const covered = entries.find(
231
+ (candidate) => candidate.record.seq === receipt.through.pointer.seq,
232
+ )
233
+ if (
234
+ !covered ||
235
+ !isDeepStrictEqual(covered.pointer, receipt.through.pointer) ||
236
+ covered.record.gen !== receipt.through.gen ||
237
+ receipt.through.bytes !== covered.pointer.offset + covered.pointer.length
238
+ )
239
+ return unavailable()
240
+ const parsedRoute = ingressBindingSchema.safeParse(
241
+ state?.routes.find((r) => r.id === message.routeId),
242
+ )
243
+ if (!parsedRoute.success) return unavailable()
244
+ const route = parsedRoute.data
245
+ if (
246
+ !route ||
247
+ route.phase !== 'active' ||
248
+ !isDeepStrictEqual(route.key, message.routeKey) ||
249
+ route.sessionId !== scope.sessionId ||
250
+ route.profileRevision !== scope.profileRevision ||
251
+ route.key.recipient.palId !== scope.palId ||
252
+ route.key.recipient.tenantId !== scope.tenantId
253
+ )
254
+ unavailable()
255
+ if (message && 'kind' in message && message.kind === 'observation')
256
+ for (const id of message.subscriptionTrail) trail.add(id)
257
+ }
258
+ await permission()
259
+ return Object.freeze([...trail])
260
+ }
261
+ }
@@ -0,0 +1,89 @@
1
+ import { createHash } from 'node:crypto'
2
+ import { z } from 'zod'
3
+ import type { SessionLogEntry } from '../../store/session-log/chain.js'
4
+ import { isEntityId } from '../../utils/id.js'
5
+ import type { PalActivityFact, PalActivityFactType } from './types.js'
6
+
7
+ const activityId = z.custom<NonNullable<PalActivityFact['activityId']>>((value) =>
8
+ isEntityId(value, 'activity'),
9
+ )
10
+ const checkpointId = z.custom<NonNullable<PalActivityFact['checkpointId']>>((value) =>
11
+ isEntityId(value, 'checkpoint'),
12
+ )
13
+ const toolUseId = z
14
+ .string()
15
+ .min(1)
16
+ .max(512)
17
+ .regex(/^[A-Za-z0-9_.:-]+$/)
18
+ const activityCreated = z.object({
19
+ activityId,
20
+ activityType: z.enum(['tool_call', 'llm_turn', 'sub_agent', 'shell']),
21
+ })
22
+ const activityUpdated = z.object({
23
+ activityId,
24
+ status: z.enum(['pending', 'running', 'completed', 'failed', 'cancelled', 'skipped']),
25
+ })
26
+
27
+ /** Raw journal payloads never escape this closed projection. Unknown types are omitted. */
28
+ export function projectPalActivity(
29
+ entry: SessionLogEntry,
30
+ scopeHash: string,
31
+ ): PalActivityFact | null {
32
+ const { record, pointer } = entry
33
+ let fields: Partial<PalActivityFact>
34
+ switch (record.type) {
35
+ case 'turn_started':
36
+ case 'turn_resuming':
37
+ fields = { status: 'running' }
38
+ break
39
+ case 'turn_paused':
40
+ fields = { checkpointId: checkpointId.parse(record.checkpointId) }
41
+ break
42
+ case 'turn_completed':
43
+ fields = { status: z.enum(['completed', 'cancelled']).parse(record.settlement.status) }
44
+ break
45
+ case 'turn_failed':
46
+ fields = { status: 'failed' }
47
+ break
48
+ case 'activity_created':
49
+ fields = { ...activityCreated.parse(record), status: 'pending' }
50
+ break
51
+ case 'activity_updated':
52
+ fields = activityUpdated.parse(record)
53
+ break
54
+ case 'tool_executing':
55
+ fields = { toolUseId: toolUseId.parse(record.toolUseId), status: 'running' }
56
+ break
57
+ case 'tool_completed':
58
+ fields = {
59
+ toolUseId: toolUseId.parse(record.toolUseId),
60
+ status: z.boolean().parse(record.isError) ? 'failed' : 'completed',
61
+ }
62
+ break
63
+ case 'tool_review_requested':
64
+ fields = {}
65
+ break
66
+ case 'tool_review_completed':
67
+ fields = {
68
+ reviewDecision: z.enum(['approved', 'modified', 'rejected']).parse(record.decision),
69
+ }
70
+ break
71
+ case 'checkpoint_created':
72
+ fields = { checkpointId: checkpointId.parse(record.checkpointId) }
73
+ break
74
+ default:
75
+ return null
76
+ }
77
+ return Object.freeze({
78
+ id: createHash('sha256')
79
+ .update(JSON.stringify(['pal-activity/1', scopeHash, pointer]))
80
+ .digest('hex'),
81
+ type: record.type as PalActivityFactType,
82
+ sessionId: record.sessionId,
83
+ ...('turnId' in record ? { turnId: record.turnId } : {}),
84
+ seq: record.seq,
85
+ generation: record.gen,
86
+ at: record.ts,
87
+ ...fields,
88
+ })
89
+ }