@namzu/sdk 48.3.1 → 50.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (838) hide show
  1. package/CHANGELOG.md +542 -0
  2. package/README.md +137 -125
  3. package/dist/agents/QueryAgent.d.ts.map +1 -1
  4. package/dist/agents/QueryAgent.js +1 -0
  5. package/dist/agents/QueryAgent.js.map +1 -1
  6. package/dist/agents/examples/SupervisorAgent.d.ts.map +1 -1
  7. package/dist/agents/examples/SupervisorAgent.js +1 -0
  8. package/dist/agents/examples/SupervisorAgent.js.map +1 -1
  9. package/dist/agents/runAgent.d.ts +2 -0
  10. package/dist/agents/runAgent.d.ts.map +1 -1
  11. package/dist/agents/runAgent.js +1 -0
  12. package/dist/agents/runAgent.js.map +1 -1
  13. package/dist/authorization/shell-lexer.d.ts.map +1 -1
  14. package/dist/authorization/shell-lexer.js +16 -1
  15. package/dist/authorization/shell-lexer.js.map +1 -1
  16. package/dist/bridge/acp/permission.d.ts +8 -2
  17. package/dist/bridge/acp/permission.d.ts.map +1 -1
  18. package/dist/bridge/acp/permission.js +1 -0
  19. package/dist/bridge/acp/permission.js.map +1 -1
  20. package/dist/bridge/acp/server.d.ts +25 -1
  21. package/dist/bridge/acp/server.d.ts.map +1 -1
  22. package/dist/bridge/acp/server.js +205 -21
  23. package/dist/bridge/acp/server.js.map +1 -1
  24. package/dist/bridge/acp/tasks.d.ts +5 -0
  25. package/dist/bridge/acp/tasks.d.ts.map +1 -0
  26. package/dist/bridge/acp/tasks.js +19 -0
  27. package/dist/bridge/acp/tasks.js.map +1 -0
  28. package/dist/bridge/acp/update.d.ts.map +1 -1
  29. package/dist/bridge/acp/update.js +148 -13
  30. package/dist/bridge/acp/update.js.map +1 -1
  31. package/dist/config/registry.d.ts +2 -0
  32. package/dist/config/registry.d.ts.map +1 -1
  33. package/dist/config/registry.js +23 -3
  34. package/dist/config/registry.js.map +1 -1
  35. package/dist/config/runtime.d.ts +31 -31
  36. package/dist/connector/mcp/adapter.d.ts.map +1 -1
  37. package/dist/connector/mcp/adapter.js +11 -4
  38. package/dist/connector/mcp/adapter.js.map +1 -1
  39. package/dist/connector/mcp/client.d.ts.map +1 -1
  40. package/dist/connector/mcp/client.js +6 -3
  41. package/dist/connector/mcp/client.js.map +1 -1
  42. package/dist/connector/mcp/discovery.d.ts +9 -5
  43. package/dist/connector/mcp/discovery.d.ts.map +1 -1
  44. package/dist/connector/mcp/discovery.js +16 -8
  45. package/dist/connector/mcp/discovery.js.map +1 -1
  46. package/dist/connector/mcp/mcp-toolset.d.ts +3 -0
  47. package/dist/connector/mcp/mcp-toolset.d.ts.map +1 -1
  48. package/dist/connector/mcp/mcp-toolset.js +20 -2
  49. package/dist/connector/mcp/mcp-toolset.js.map +1 -1
  50. package/dist/connector/mcp/reconnect.d.ts +2 -0
  51. package/dist/connector/mcp/reconnect.d.ts.map +1 -1
  52. package/dist/connector/mcp/reconnect.js +36 -5
  53. package/dist/connector/mcp/reconnect.js.map +1 -1
  54. package/dist/constants/acp/index.d.ts +3 -0
  55. package/dist/constants/acp/index.d.ts.map +1 -1
  56. package/dist/constants/acp/index.js +3 -0
  57. package/dist/constants/acp/index.js.map +1 -1
  58. package/dist/contracts/a2a.d.ts +80 -80
  59. package/dist/contracts/schemas.d.ts +2 -2
  60. package/dist/contracts/session/schemas.d.ts +10 -10
  61. package/dist/manager/agent/lifecycle.d.ts +11 -0
  62. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  63. package/dist/manager/agent/lifecycle.js +178 -3
  64. package/dist/manager/agent/lifecycle.js.map +1 -1
  65. package/dist/manager/plan/lifecycle.d.ts +7 -8
  66. package/dist/manager/plan/lifecycle.d.ts.map +1 -1
  67. package/dist/manager/plan/lifecycle.js +7 -8
  68. package/dist/manager/plan/lifecycle.js.map +1 -1
  69. package/dist/manager/resident/consumption.d.ts +8 -8
  70. package/dist/manager/resident/learning-cycle.d.ts +2 -2
  71. package/dist/manager/resident/learning-observation.d.ts +12 -12
  72. package/dist/manager/resident/learning.d.ts +82 -82
  73. package/dist/manager/resident/outbox.d.ts +8 -8
  74. package/dist/manager/resident/proposal.d.ts +2 -2
  75. package/dist/manager/resident/store.d.ts +10 -10
  76. package/dist/manager/session/attribution.d.ts +1 -0
  77. package/dist/manager/session/attribution.d.ts.map +1 -1
  78. package/dist/manager/session/attribution.js +9 -1
  79. package/dist/manager/session/attribution.js.map +1 -1
  80. package/dist/manager/session/streamed-message-identity.d.ts +6 -0
  81. package/dist/manager/session/streamed-message-identity.d.ts.map +1 -0
  82. package/dist/manager/session/streamed-message-identity.js +14 -0
  83. package/dist/manager/session/streamed-message-identity.js.map +1 -0
  84. package/dist/manager/session/turn-recorder.d.ts.map +1 -1
  85. package/dist/manager/session/turn-recorder.js +4 -3
  86. package/dist/manager/session/turn-recorder.js.map +1 -1
  87. package/dist/pals/activity/causality.d.ts +23 -0
  88. package/dist/pals/activity/causality.d.ts.map +1 -0
  89. package/dist/pals/activity/causality.js +205 -0
  90. package/dist/pals/activity/causality.js.map +1 -0
  91. package/dist/pals/activity/projection.d.ts +5 -0
  92. package/dist/pals/activity/projection.d.ts.map +1 -0
  93. package/dist/pals/activity/projection.js +79 -0
  94. package/dist/pals/activity/projection.js.map +1 -0
  95. package/dist/pals/activity/source.d.ts +16 -0
  96. package/dist/pals/activity/source.d.ts.map +1 -0
  97. package/dist/pals/activity/source.js +235 -0
  98. package/dist/pals/activity/source.js.map +1 -0
  99. package/dist/pals/activity/subscription-policy.d.ts +38 -0
  100. package/dist/pals/activity/subscription-policy.d.ts.map +1 -0
  101. package/dist/pals/activity/subscription-policy.js +183 -0
  102. package/dist/pals/activity/subscription-policy.js.map +1 -0
  103. package/dist/pals/activity/subscription-schema.d.ts +353 -0
  104. package/dist/pals/activity/subscription-schema.d.ts.map +1 -0
  105. package/dist/pals/activity/subscription-schema.js +24 -0
  106. package/dist/pals/activity/subscription-schema.js.map +1 -0
  107. package/dist/pals/activity/subscription-store.d.ts +25 -0
  108. package/dist/pals/activity/subscription-store.d.ts.map +1 -0
  109. package/dist/pals/activity/subscription-store.js +152 -0
  110. package/dist/pals/activity/subscription-store.js.map +1 -0
  111. package/dist/pals/activity/subscription-types.d.ts +42 -0
  112. package/dist/pals/activity/subscription-types.d.ts.map +1 -0
  113. package/dist/pals/activity/subscription-types.js +2 -0
  114. package/dist/pals/activity/subscription-types.js.map +1 -0
  115. package/dist/pals/activity/subscriptions.d.ts +32 -0
  116. package/dist/pals/activity/subscriptions.d.ts.map +1 -0
  117. package/dist/pals/activity/subscriptions.js +151 -0
  118. package/dist/pals/activity/subscriptions.js.map +1 -0
  119. package/dist/pals/activity/types.d.ts +77 -0
  120. package/dist/pals/activity/types.d.ts.map +1 -0
  121. package/dist/pals/activity/types.js +2 -0
  122. package/dist/pals/activity/types.js.map +1 -0
  123. package/dist/pals/channels/ingress.d.ts +9 -0
  124. package/dist/pals/channels/ingress.d.ts.map +1 -0
  125. package/dist/pals/channels/ingress.js +131 -0
  126. package/dist/pals/channels/ingress.js.map +1 -0
  127. package/dist/pals/channels/routes.d.ts +20 -0
  128. package/dist/pals/channels/routes.d.ts.map +1 -0
  129. package/dist/pals/channels/routes.js +111 -0
  130. package/dist/pals/channels/routes.js.map +1 -0
  131. package/dist/pals/channels/routing.d.ts +37 -0
  132. package/dist/pals/channels/routing.d.ts.map +1 -0
  133. package/dist/pals/channels/routing.js +150 -0
  134. package/dist/pals/channels/routing.js.map +1 -0
  135. package/dist/pals/channels/schema.d.ts +234 -0
  136. package/dist/pals/channels/schema.d.ts.map +1 -0
  137. package/dist/pals/channels/schema.js +94 -0
  138. package/dist/pals/channels/schema.js.map +1 -0
  139. package/dist/pals/channels/types.d.ts +115 -0
  140. package/dist/pals/channels/types.d.ts.map +1 -0
  141. package/dist/pals/channels/types.js +2 -0
  142. package/dist/pals/channels/types.js.map +1 -0
  143. package/dist/pals/communication/broker.d.ts +8 -0
  144. package/dist/pals/communication/broker.d.ts.map +1 -0
  145. package/dist/pals/communication/broker.js +121 -0
  146. package/dist/pals/communication/broker.js.map +1 -0
  147. package/dist/pals/communication/dispatch.d.ts +4 -0
  148. package/dist/pals/communication/dispatch.d.ts.map +1 -0
  149. package/dist/pals/communication/dispatch.js +57 -0
  150. package/dist/pals/communication/dispatch.js.map +1 -0
  151. package/dist/pals/communication/inbound.d.ts +9 -0
  152. package/dist/pals/communication/inbound.d.ts.map +1 -0
  153. package/dist/pals/communication/inbound.js +155 -0
  154. package/dist/pals/communication/inbound.js.map +1 -0
  155. package/dist/pals/communication/ingress-dispatch.d.ts +5 -0
  156. package/dist/pals/communication/ingress-dispatch.d.ts.map +1 -0
  157. package/dist/pals/communication/ingress-dispatch.js +51 -0
  158. package/dist/pals/communication/ingress-dispatch.js.map +1 -0
  159. package/dist/pals/communication/ingress-inbound.d.ts +9 -0
  160. package/dist/pals/communication/ingress-inbound.d.ts.map +1 -0
  161. package/dist/pals/communication/ingress-inbound.js +222 -0
  162. package/dist/pals/communication/ingress-inbound.js.map +1 -0
  163. package/dist/pals/communication/ingress-schema.d.ts +7829 -0
  164. package/dist/pals/communication/ingress-schema.d.ts.map +1 -0
  165. package/dist/pals/communication/ingress-schema.js +479 -0
  166. package/dist/pals/communication/ingress-schema.js.map +1 -0
  167. package/dist/pals/communication/ingress-types.d.ts +187 -0
  168. package/dist/pals/communication/ingress-types.d.ts.map +1 -0
  169. package/dist/pals/communication/ingress-types.js +73 -0
  170. package/dist/pals/communication/ingress-types.js.map +1 -0
  171. package/dist/pals/communication/operator.d.ts +75 -0
  172. package/dist/pals/communication/operator.d.ts.map +1 -0
  173. package/dist/pals/communication/operator.js +217 -0
  174. package/dist/pals/communication/operator.js.map +1 -0
  175. package/dist/pals/communication/policy.d.ts +41 -0
  176. package/dist/pals/communication/policy.d.ts.map +1 -0
  177. package/dist/pals/communication/policy.js +138 -0
  178. package/dist/pals/communication/policy.js.map +1 -0
  179. package/dist/pals/communication/schema.d.ts +2000 -0
  180. package/dist/pals/communication/schema.d.ts.map +1 -0
  181. package/dist/pals/communication/schema.js +170 -0
  182. package/dist/pals/communication/schema.js.map +1 -0
  183. package/dist/pals/communication/store.d.ts +61 -0
  184. package/dist/pals/communication/store.d.ts.map +1 -0
  185. package/dist/pals/communication/store.js +450 -0
  186. package/dist/pals/communication/store.js.map +1 -0
  187. package/dist/pals/communication/tools.d.ts +23 -0
  188. package/dist/pals/communication/tools.d.ts.map +1 -0
  189. package/dist/pals/communication/tools.js +107 -0
  190. package/dist/pals/communication/tools.js.map +1 -0
  191. package/dist/pals/communication/types.d.ts +168 -0
  192. package/dist/pals/communication/types.d.ts.map +1 -0
  193. package/dist/pals/communication/types.js +24 -0
  194. package/dist/pals/communication/types.js.map +1 -0
  195. package/dist/pals/communication/verify.d.ts +22 -0
  196. package/dist/pals/communication/verify.d.ts.map +1 -0
  197. package/dist/pals/communication/verify.js +142 -0
  198. package/dist/pals/communication/verify.js.map +1 -0
  199. package/dist/pals/lifecycle.d.ts +37 -0
  200. package/dist/pals/lifecycle.d.ts.map +1 -0
  201. package/dist/pals/lifecycle.js +22 -0
  202. package/dist/pals/lifecycle.js.map +1 -0
  203. package/dist/pals/prompt.d.ts +30 -0
  204. package/dist/pals/prompt.d.ts.map +1 -0
  205. package/dist/pals/prompt.js +65 -0
  206. package/dist/pals/prompt.js.map +1 -0
  207. package/dist/pals/reference-images.d.ts +44 -0
  208. package/dist/pals/reference-images.d.ts.map +1 -0
  209. package/dist/pals/reference-images.js +248 -0
  210. package/dist/pals/reference-images.js.map +1 -0
  211. package/dist/pals/runtime.d.ts +46 -0
  212. package/dist/pals/runtime.d.ts.map +1 -0
  213. package/dist/pals/runtime.js +624 -0
  214. package/dist/pals/runtime.js.map +1 -0
  215. package/dist/pals/store.d.ts +26 -0
  216. package/dist/pals/store.d.ts.map +1 -0
  217. package/dist/pals/store.js +334 -0
  218. package/dist/pals/store.js.map +1 -0
  219. package/dist/pals/types.d.ts +145 -0
  220. package/dist/pals/types.d.ts.map +1 -0
  221. package/dist/pals/types.js +2 -0
  222. package/dist/pals/types.js.map +1 -0
  223. package/dist/peers/envelope.js +1 -1
  224. package/dist/peers/envelope.js.map +1 -1
  225. package/dist/peers/protocol.d.ts +83 -83
  226. package/dist/peers/record.d.ts +10 -10
  227. package/dist/plugin/lifecycle.d.ts +14 -10
  228. package/dist/plugin/lifecycle.d.ts.map +1 -1
  229. package/dist/plugin/lifecycle.js +178 -41
  230. package/dist/plugin/lifecycle.js.map +1 -1
  231. package/dist/plugin/shell-hook.d.ts.map +1 -1
  232. package/dist/plugin/shell-hook.js +7 -2
  233. package/dist/plugin/shell-hook.js.map +1 -1
  234. package/dist/process/kill-tree.d.ts.map +1 -1
  235. package/dist/process/kill-tree.js +9 -1
  236. package/dist/process/kill-tree.js.map +1 -1
  237. package/dist/prompt/resident-learning.js +2 -2
  238. package/dist/prompt/resident-learning.js.map +1 -1
  239. package/dist/prompt/resident-step.d.ts +2 -2
  240. package/dist/prompt/resident-step.js +4 -4
  241. package/dist/prompt/resident-step.js.map +1 -1
  242. package/dist/provider/errors.d.ts +19 -0
  243. package/dist/provider/errors.d.ts.map +1 -1
  244. package/dist/provider/errors.js +123 -2
  245. package/dist/provider/errors.js.map +1 -1
  246. package/dist/public-runtime.d.ts +43 -15
  247. package/dist/public-runtime.d.ts.map +1 -1
  248. package/dist/public-runtime.js +37 -9
  249. package/dist/public-runtime.js.map +1 -1
  250. package/dist/public-tools.d.ts +8 -3
  251. package/dist/public-tools.d.ts.map +1 -1
  252. package/dist/public-tools.js +8 -3
  253. package/dist/public-tools.js.map +1 -1
  254. package/dist/public-types.d.ts +27 -7
  255. package/dist/public-types.d.ts.map +1 -1
  256. package/dist/registry/tool/presentation.d.ts +1 -0
  257. package/dist/registry/tool/presentation.d.ts.map +1 -1
  258. package/dist/registry/tool/presentation.js +9 -7
  259. package/dist/registry/tool/presentation.js.map +1 -1
  260. package/dist/registry/tool/screen.d.ts.map +1 -1
  261. package/dist/registry/tool/screen.js +33 -2
  262. package/dist/registry/tool/screen.js.map +1 -1
  263. package/dist/runtime/harness-session/index.d.ts +5 -0
  264. package/dist/runtime/harness-session/index.d.ts.map +1 -0
  265. package/dist/runtime/harness-session/index.js +928 -0
  266. package/dist/runtime/harness-session/index.js.map +1 -0
  267. package/dist/runtime/harness-session/journal.d.ts +37 -0
  268. package/dist/runtime/harness-session/journal.d.ts.map +1 -0
  269. package/dist/runtime/harness-session/journal.js +177 -0
  270. package/dist/runtime/harness-session/journal.js.map +1 -0
  271. package/dist/runtime/harness-session/saved-view.d.ts +8 -0
  272. package/dist/runtime/harness-session/saved-view.d.ts.map +1 -0
  273. package/dist/runtime/harness-session/saved-view.js +112 -0
  274. package/dist/runtime/harness-session/saved-view.js.map +1 -0
  275. package/dist/runtime/jobs/awaited-jobs.d.ts +2 -1
  276. package/dist/runtime/jobs/awaited-jobs.d.ts.map +1 -1
  277. package/dist/runtime/jobs/awaited-jobs.js +2 -1
  278. package/dist/runtime/jobs/awaited-jobs.js.map +1 -1
  279. package/dist/runtime/jobs/registry.d.ts +56 -1
  280. package/dist/runtime/jobs/registry.d.ts.map +1 -1
  281. package/dist/runtime/jobs/registry.js +377 -39
  282. package/dist/runtime/jobs/registry.js.map +1 -1
  283. package/dist/runtime/query/abandon-turn.d.ts +12 -1
  284. package/dist/runtime/query/abandon-turn.d.ts.map +1 -1
  285. package/dist/runtime/query/abandon-turn.js +3 -1
  286. package/dist/runtime/query/abandon-turn.js.map +1 -1
  287. package/dist/runtime/query/checkpoint.d.ts +4 -0
  288. package/dist/runtime/query/checkpoint.d.ts.map +1 -1
  289. package/dist/runtime/query/checkpoint.js +10 -0
  290. package/dist/runtime/query/checkpoint.js.map +1 -1
  291. package/dist/runtime/query/durable-inbound.d.ts +5 -0
  292. package/dist/runtime/query/durable-inbound.d.ts.map +1 -0
  293. package/dist/runtime/query/durable-inbound.js +89 -0
  294. package/dist/runtime/query/durable-inbound.js.map +1 -0
  295. package/dist/runtime/query/events.d.ts +4 -0
  296. package/dist/runtime/query/events.d.ts.map +1 -1
  297. package/dist/runtime/query/events.js +22 -5
  298. package/dist/runtime/query/events.js.map +1 -1
  299. package/dist/runtime/query/executor/tool-call-admission.d.ts +5 -1
  300. package/dist/runtime/query/executor/tool-call-admission.d.ts.map +1 -1
  301. package/dist/runtime/query/executor/tool-call-admission.js +85 -13
  302. package/dist/runtime/query/executor/tool-call-admission.js.map +1 -1
  303. package/dist/runtime/query/executor.d.ts +41 -18
  304. package/dist/runtime/query/executor.d.ts.map +1 -1
  305. package/dist/runtime/query/executor.js +227 -114
  306. package/dist/runtime/query/executor.js.map +1 -1
  307. package/dist/runtime/query/index.d.ts +9 -0
  308. package/dist/runtime/query/index.d.ts.map +1 -1
  309. package/dist/runtime/query/index.js +41 -5
  310. package/dist/runtime/query/index.js.map +1 -1
  311. package/dist/runtime/query/iteration/index.d.ts +18 -6
  312. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  313. package/dist/runtime/query/iteration/index.js +176 -75
  314. package/dist/runtime/query/iteration/index.js.map +1 -1
  315. package/dist/runtime/query/iteration/outstanding-work.d.ts +9 -5
  316. package/dist/runtime/query/iteration/outstanding-work.d.ts.map +1 -1
  317. package/dist/runtime/query/iteration/outstanding-work.js +63 -6
  318. package/dist/runtime/query/iteration/outstanding-work.js.map +1 -1
  319. package/dist/runtime/query/iteration/phases/context.d.ts +8 -0
  320. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  321. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  322. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  323. package/dist/runtime/query/iteration/phases/tool-review.js +106 -17
  324. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  325. package/dist/runtime/query/iteration/step-shaping.d.ts +2 -0
  326. package/dist/runtime/query/iteration/step-shaping.d.ts.map +1 -1
  327. package/dist/runtime/query/iteration/step-shaping.js +5 -1
  328. package/dist/runtime/query/iteration/step-shaping.js.map +1 -1
  329. package/dist/runtime/query/observation-context.d.ts +2 -2
  330. package/dist/runtime/query/observation-context.d.ts.map +1 -1
  331. package/dist/runtime/query/observation-context.js +20 -13
  332. package/dist/runtime/query/observation-context.js.map +1 -1
  333. package/dist/runtime/query/prepare-turn.js +2 -2
  334. package/dist/runtime/query/prepare-turn.js.map +1 -1
  335. package/dist/runtime/query/prompt-cache.d.ts +1 -0
  336. package/dist/runtime/query/prompt-cache.d.ts.map +1 -1
  337. package/dist/runtime/query/prompt-cache.js +2 -0
  338. package/dist/runtime/query/prompt-cache.js.map +1 -1
  339. package/dist/runtime/query/prompt.d.ts +2 -0
  340. package/dist/runtime/query/prompt.d.ts.map +1 -1
  341. package/dist/runtime/query/prompt.js +23 -1
  342. package/dist/runtime/query/prompt.js.map +1 -1
  343. package/dist/runtime/query/repeat-call.d.ts +12 -3
  344. package/dist/runtime/query/repeat-call.d.ts.map +1 -1
  345. package/dist/runtime/query/repeat-call.js +33 -10
  346. package/dist/runtime/query/repeat-call.js.map +1 -1
  347. package/dist/runtime/query/resume-pending.d.ts +5 -6
  348. package/dist/runtime/query/resume-pending.d.ts.map +1 -1
  349. package/dist/runtime/query/resume-pending.js +30 -3
  350. package/dist/runtime/query/resume-pending.js.map +1 -1
  351. package/dist/runtime/query/resume-session.js +1 -1
  352. package/dist/runtime/query/resume-session.js.map +1 -1
  353. package/dist/runtime/query/review-policy.d.ts +8 -1
  354. package/dist/runtime/query/review-policy.d.ts.map +1 -1
  355. package/dist/runtime/query/review-policy.js +6 -0
  356. package/dist/runtime/query/review-policy.js.map +1 -1
  357. package/dist/runtime/query/saved-presentation.d.ts +13 -0
  358. package/dist/runtime/query/saved-presentation.d.ts.map +1 -0
  359. package/dist/runtime/query/saved-presentation.js +63 -0
  360. package/dist/runtime/query/saved-presentation.js.map +1 -0
  361. package/dist/runtime/query/steering.d.ts +6 -9
  362. package/dist/runtime/query/steering.d.ts.map +1 -1
  363. package/dist/runtime/query/steering.js.map +1 -1
  364. package/dist/runtime/query/tool-executions.d.ts +7 -3
  365. package/dist/runtime/query/tool-executions.d.ts.map +1 -1
  366. package/dist/runtime/query/tool-executions.js +89 -9
  367. package/dist/runtime/query/tool-executions.js.map +1 -1
  368. package/dist/runtime/query/tooling.d.ts +3 -1
  369. package/dist/runtime/query/tooling.d.ts.map +1 -1
  370. package/dist/runtime/query/tooling.js +3 -0
  371. package/dist/runtime/query/tooling.js.map +1 -1
  372. package/dist/scheduler/completion-inbox.d.ts +25 -1
  373. package/dist/scheduler/completion-inbox.d.ts.map +1 -1
  374. package/dist/scheduler/completion-inbox.js +102 -8
  375. package/dist/scheduler/completion-inbox.js.map +1 -1
  376. package/dist/scheduler/delegating.d.ts.map +1 -1
  377. package/dist/scheduler/delegating.js +5 -0
  378. package/dist/scheduler/delegating.js.map +1 -1
  379. package/dist/scheduler/local.d.ts.map +1 -1
  380. package/dist/scheduler/local.js +2 -0
  381. package/dist/scheduler/local.js.map +1 -1
  382. package/dist/session/summary/materialize.d.ts +10 -6
  383. package/dist/session/summary/materialize.d.ts.map +1 -1
  384. package/dist/session/summary/materialize.js +41 -8
  385. package/dist/session/summary/materialize.js.map +1 -1
  386. package/dist/store/budget/ledger.d.ts +9 -0
  387. package/dist/store/budget/ledger.d.ts.map +1 -1
  388. package/dist/store/budget/ledger.js +58 -6
  389. package/dist/store/budget/ledger.js.map +1 -1
  390. package/dist/store/evidence/index-page.d.ts +12 -12
  391. package/dist/store/evidence/source-text.d.ts +4 -4
  392. package/dist/store/index.d.ts +1 -0
  393. package/dist/store/index.d.ts.map +1 -1
  394. package/dist/store/index.js +1 -0
  395. package/dist/store/index.js.map +1 -1
  396. package/dist/store/memory/disk.d.ts +7 -2
  397. package/dist/store/memory/disk.d.ts.map +1 -1
  398. package/dist/store/memory/disk.js +58 -5
  399. package/dist/store/memory/disk.js.map +1 -1
  400. package/dist/store/memory/index.d.ts +9 -0
  401. package/dist/store/memory/index.d.ts.map +1 -1
  402. package/dist/store/memory/index.js +43 -5
  403. package/dist/store/memory/index.js.map +1 -1
  404. package/dist/store/memory/markdown.d.ts +7 -2
  405. package/dist/store/memory/markdown.d.ts.map +1 -1
  406. package/dist/store/memory/markdown.js +33 -0
  407. package/dist/store/memory/markdown.js.map +1 -1
  408. package/dist/store/memory/memory.d.ts +7 -2
  409. package/dist/store/memory/memory.d.ts.map +1 -1
  410. package/dist/store/memory/memory.js +34 -0
  411. package/dist/store/memory/memory.js.map +1 -1
  412. package/dist/store/memory/revision.d.ts +16 -0
  413. package/dist/store/memory/revision.d.ts.map +1 -0
  414. package/dist/store/memory/revision.js +144 -0
  415. package/dist/store/memory/revision.js.map +1 -0
  416. package/dist/store/session/disk.d.ts +9 -4
  417. package/dist/store/session/disk.d.ts.map +1 -1
  418. package/dist/store/session/disk.js +57 -11
  419. package/dist/store/session/disk.js.map +1 -1
  420. package/dist/store/session/memory.d.ts +5 -3
  421. package/dist/store/session/memory.d.ts.map +1 -1
  422. package/dist/store/session/memory.js +24 -7
  423. package/dist/store/session/memory.js.map +1 -1
  424. package/dist/store/session-log/core.d.ts +26 -6
  425. package/dist/store/session-log/core.d.ts.map +1 -1
  426. package/dist/store/session-log/core.js +61 -8
  427. package/dist/store/session-log/core.js.map +1 -1
  428. package/dist/store/session-log/disk.d.ts +2 -2
  429. package/dist/store/session-log/disk.d.ts.map +1 -1
  430. package/dist/store/session-log/disk.js +1 -0
  431. package/dist/store/session-log/disk.js.map +1 -1
  432. package/dist/store/session-log/fold.d.ts +7 -0
  433. package/dist/store/session-log/fold.d.ts.map +1 -1
  434. package/dist/store/session-log/fold.js +21 -0
  435. package/dist/store/session-log/fold.js.map +1 -1
  436. package/dist/store/session-log/index.d.ts +5 -3
  437. package/dist/store/session-log/index.d.ts.map +1 -1
  438. package/dist/store/session-log/index.js +3 -1
  439. package/dist/store/session-log/index.js.map +1 -1
  440. package/dist/store/session-log/memory.d.ts +1 -1
  441. package/dist/store/session-log/memory.d.ts.map +1 -1
  442. package/dist/store/session-log/memory.js +1 -0
  443. package/dist/store/session-log/memory.js.map +1 -1
  444. package/dist/store/session-log/spill.d.ts +10 -3
  445. package/dist/store/session-log/spill.d.ts.map +1 -1
  446. package/dist/store/session-log/spill.js +70 -5
  447. package/dist/store/session-log/spill.js.map +1 -1
  448. package/dist/store/session-log/structured-result.d.ts +21 -0
  449. package/dist/store/session-log/structured-result.d.ts.map +1 -0
  450. package/dist/store/session-log/structured-result.js +67 -0
  451. package/dist/store/session-log/structured-result.js.map +1 -0
  452. package/dist/store/task/disk.d.ts +11 -0
  453. package/dist/store/task/disk.d.ts.map +1 -1
  454. package/dist/store/task/disk.js +41 -2
  455. package/dist/store/task/disk.js.map +1 -1
  456. package/dist/store/task/memory.d.ts.map +1 -1
  457. package/dist/store/task/memory.js +15 -3
  458. package/dist/store/task/memory.js.map +1 -1
  459. package/dist/tools/admit-facts.d.ts +13 -0
  460. package/dist/tools/admit-facts.d.ts.map +1 -0
  461. package/dist/tools/admit-facts.js +142 -0
  462. package/dist/tools/admit-facts.js.map +1 -0
  463. package/dist/tools/builtins/bash.d.ts +4 -1
  464. package/dist/tools/builtins/bash.d.ts.map +1 -1
  465. package/dist/tools/builtins/bash.js +108 -22
  466. package/dist/tools/builtins/bash.js.map +1 -1
  467. package/dist/tools/builtins/browser.d.ts +10 -10
  468. package/dist/tools/builtins/computer-use.d.ts +90 -90
  469. package/dist/tools/builtins/edit.d.ts +17 -0
  470. package/dist/tools/builtins/edit.d.ts.map +1 -1
  471. package/dist/tools/builtins/edit.js +34 -0
  472. package/dist/tools/builtins/edit.js.map +1 -1
  473. package/dist/tools/builtins/file-write-result.d.ts.map +1 -1
  474. package/dist/tools/builtins/file-write-result.js +13 -0
  475. package/dist/tools/builtins/file-write-result.js.map +1 -1
  476. package/dist/tools/builtins/glob.d.ts.map +1 -1
  477. package/dist/tools/builtins/glob.js +12 -0
  478. package/dist/tools/builtins/glob.js.map +1 -1
  479. package/dist/tools/builtins/grep.d.ts.map +1 -1
  480. package/dist/tools/builtins/grep.js +14 -0
  481. package/dist/tools/builtins/grep.js.map +1 -1
  482. package/dist/tools/builtins/index.d.ts +2 -0
  483. package/dist/tools/builtins/index.d.ts.map +1 -1
  484. package/dist/tools/builtins/index.js +1 -0
  485. package/dist/tools/builtins/index.js.map +1 -1
  486. package/dist/tools/builtins/job.d.ts.map +1 -1
  487. package/dist/tools/builtins/job.js +4 -1
  488. package/dist/tools/builtins/job.js.map +1 -1
  489. package/dist/tools/builtins/lsp.d.ts +2 -2
  490. package/dist/tools/builtins/read-file.d.ts.map +1 -1
  491. package/dist/tools/builtins/read-file.js +49 -0
  492. package/dist/tools/builtins/read-file.js.map +1 -1
  493. package/dist/tools/builtins/view-image.d.ts +24 -0
  494. package/dist/tools/builtins/view-image.d.ts.map +1 -0
  495. package/dist/tools/builtins/view-image.js +385 -0
  496. package/dist/tools/builtins/view-image.js.map +1 -0
  497. package/dist/tools/builtins/wait-for-job-bounds.d.ts +8 -4
  498. package/dist/tools/builtins/wait-for-job-bounds.d.ts.map +1 -1
  499. package/dist/tools/builtins/wait-for-job-bounds.js +43 -8
  500. package/dist/tools/builtins/wait-for-job-bounds.js.map +1 -1
  501. package/dist/tools/builtins/wait-for-job.d.ts +3 -0
  502. package/dist/tools/builtins/wait-for-job.d.ts.map +1 -1
  503. package/dist/tools/builtins/wait-for-job.js +127 -15
  504. package/dist/tools/builtins/wait-for-job.js.map +1 -1
  505. package/dist/tools/builtins/write-file.d.ts.map +1 -1
  506. package/dist/tools/builtins/write-file.js +1 -0
  507. package/dist/tools/builtins/write-file.js.map +1 -1
  508. package/dist/tools/command-shell.d.ts +37 -2
  509. package/dist/tools/command-shell.d.ts.map +1 -1
  510. package/dist/tools/command-shell.js +100 -3
  511. package/dist/tools/command-shell.js.map +1 -1
  512. package/dist/tools/coordinator/agent.d.ts +9 -19
  513. package/dist/tools/coordinator/agent.d.ts.map +1 -1
  514. package/dist/tools/coordinator/agent.js.map +1 -1
  515. package/dist/tools/coordinator/index.d.ts.map +1 -1
  516. package/dist/tools/coordinator/index.js +127 -67
  517. package/dist/tools/coordinator/index.js.map +1 -1
  518. package/dist/tools/coordinator/wait-with-idle-bound.d.ts +2 -0
  519. package/dist/tools/coordinator/wait-with-idle-bound.d.ts.map +1 -1
  520. package/dist/tools/coordinator/wait-with-idle-bound.js +1 -1
  521. package/dist/tools/coordinator/wait-with-idle-bound.js.map +1 -1
  522. package/dist/tools/defineTool.d.ts.map +1 -1
  523. package/dist/tools/defineTool.js +4 -0
  524. package/dist/tools/defineTool.js.map +1 -1
  525. package/dist/tools/failure-facts.d.ts +8 -0
  526. package/dist/tools/failure-facts.d.ts.map +1 -0
  527. package/dist/tools/failure-facts.js +24 -0
  528. package/dist/tools/failure-facts.js.map +1 -0
  529. package/dist/tools/host-output.d.ts +24 -0
  530. package/dist/tools/host-output.d.ts.map +1 -0
  531. package/dist/tools/host-output.js +117 -0
  532. package/dist/tools/host-output.js.map +1 -0
  533. package/dist/tools/memory/delete.d.ts.map +1 -1
  534. package/dist/tools/memory/delete.js +38 -3
  535. package/dist/tools/memory/delete.js.map +1 -1
  536. package/dist/tools/memory/read.d.ts.map +1 -1
  537. package/dist/tools/memory/read.js +38 -2
  538. package/dist/tools/memory/read.js.map +1 -1
  539. package/dist/tools/memory/search.d.ts.map +1 -1
  540. package/dist/tools/memory/search.js +38 -7
  541. package/dist/tools/memory/search.js.map +1 -1
  542. package/dist/tools/memory/update.d.ts.map +1 -1
  543. package/dist/tools/memory/update.js +30 -3
  544. package/dist/tools/memory/update.js.map +1 -1
  545. package/dist/tools/oem-code-pages.d.ts +8 -0
  546. package/dist/tools/oem-code-pages.d.ts.map +1 -0
  547. package/dist/tools/oem-code-pages.js +23 -0
  548. package/dist/tools/oem-code-pages.js.map +1 -0
  549. package/dist/tools/schedules/schedule-tool.d.ts.map +1 -1
  550. package/dist/tools/schedules/schedule-tool.js +35 -6
  551. package/dist/tools/schedules/schedule-tool.js.map +1 -1
  552. package/dist/tools/schedules/types.d.ts +23 -3
  553. package/dist/tools/schedules/types.d.ts.map +1 -1
  554. package/dist/tools/task/list.d.ts.map +1 -1
  555. package/dist/tools/task/list.js +14 -6
  556. package/dist/tools/task/list.js.map +1 -1
  557. package/dist/tools/task/present.d.ts.map +1 -1
  558. package/dist/tools/task/present.js +26 -6
  559. package/dist/tools/task/present.js.map +1 -1
  560. package/dist/tools/task/update.d.ts.map +1 -1
  561. package/dist/tools/task/update.js +12 -5
  562. package/dist/tools/task/update.js.map +1 -1
  563. package/dist/tools/text-window.d.ts +19 -0
  564. package/dist/tools/text-window.d.ts.map +1 -0
  565. package/dist/tools/text-window.js +83 -0
  566. package/dist/tools/text-window.js.map +1 -0
  567. package/dist/toolsets/manager.d.ts +24 -0
  568. package/dist/toolsets/manager.d.ts.map +1 -1
  569. package/dist/toolsets/manager.js +105 -2
  570. package/dist/toolsets/manager.js.map +1 -1
  571. package/dist/turn/memory-recall.d.ts +2 -0
  572. package/dist/turn/memory-recall.d.ts.map +1 -1
  573. package/dist/turn/memory-recall.js +3 -1
  574. package/dist/turn/memory-recall.js.map +1 -1
  575. package/dist/types/acp/index.d.ts +137 -1
  576. package/dist/types/acp/index.d.ts.map +1 -1
  577. package/dist/types/agent/base.d.ts +3 -0
  578. package/dist/types/agent/base.d.ts.map +1 -1
  579. package/dist/types/agent/manager.d.ts +8 -23
  580. package/dist/types/agent/manager.d.ts.map +1 -1
  581. package/dist/types/agent/scheduler.d.ts +10 -1
  582. package/dist/types/agent/scheduler.d.ts.map +1 -1
  583. package/dist/types/agent/task.d.ts +4 -0
  584. package/dist/types/agent/task.d.ts.map +1 -1
  585. package/dist/types/authorization/index.d.ts +30 -30
  586. package/dist/types/connector/mcp.d.ts +7 -0
  587. package/dist/types/connector/mcp.d.ts.map +1 -1
  588. package/dist/types/errors/catalog.d.ts.map +1 -1
  589. package/dist/types/errors/catalog.js +4 -2
  590. package/dist/types/errors/catalog.js.map +1 -1
  591. package/dist/types/harness/schema.d.ts +354 -0
  592. package/dist/types/harness/schema.d.ts.map +1 -0
  593. package/dist/types/harness/schema.js +203 -0
  594. package/dist/types/harness/schema.js.map +1 -0
  595. package/dist/types/harness/session.d.ts +278 -0
  596. package/dist/types/harness/session.d.ts.map +1 -0
  597. package/dist/types/harness/session.js +2 -0
  598. package/dist/types/harness/session.js.map +1 -0
  599. package/dist/types/hitl/index.d.ts +12 -0
  600. package/dist/types/hitl/index.d.ts.map +1 -1
  601. package/dist/types/hitl/index.js.map +1 -1
  602. package/dist/types/job/index.d.ts +47 -0
  603. package/dist/types/job/index.d.ts.map +1 -0
  604. package/dist/types/job/index.js +2 -0
  605. package/dist/types/job/index.js.map +1 -0
  606. package/dist/types/memory/index.d.ts +29 -0
  607. package/dist/types/memory/index.d.ts.map +1 -1
  608. package/dist/types/memory/index.js +6 -0
  609. package/dist/types/memory/index.js.map +1 -1
  610. package/dist/types/message/inbound-delivery.d.ts +44 -0
  611. package/dist/types/message/inbound-delivery.d.ts.map +1 -0
  612. package/dist/types/message/inbound-delivery.js +14 -0
  613. package/dist/types/message/inbound-delivery.js.map +1 -0
  614. package/dist/types/message/index.d.ts +4 -1
  615. package/dist/types/message/index.d.ts.map +1 -1
  616. package/dist/types/message/index.js +5 -1
  617. package/dist/types/message/index.js.map +1 -1
  618. package/dist/types/plugin/index.d.ts +18 -8
  619. package/dist/types/plugin/index.d.ts.map +1 -1
  620. package/dist/types/plugin/index.js +5 -2
  621. package/dist/types/plugin/index.js.map +1 -1
  622. package/dist/types/sandbox/index.d.ts +39 -2
  623. package/dist/types/sandbox/index.d.ts.map +1 -1
  624. package/dist/types/sandbox/index.js.map +1 -1
  625. package/dist/types/session/checkpoint.d.ts +24 -17
  626. package/dist/types/session/checkpoint.d.ts.map +1 -1
  627. package/dist/types/session/checkpoint.js +1 -0
  628. package/dist/types/session/checkpoint.js.map +1 -1
  629. package/dist/types/session/events.d.ts +23 -1
  630. package/dist/types/session/events.d.ts.map +1 -1
  631. package/dist/types/session/events.js.map +1 -1
  632. package/dist/types/session/records.d.ts +1514 -565
  633. package/dist/types/session/records.d.ts.map +1 -1
  634. package/dist/types/session/records.js +89 -1
  635. package/dist/types/session/records.js.map +1 -1
  636. package/dist/types/session/step.d.ts +2 -0
  637. package/dist/types/session/step.d.ts.map +1 -1
  638. package/dist/types/session/step.js.map +1 -1
  639. package/dist/types/session/store.d.ts +19 -10
  640. package/dist/types/session/store.d.ts.map +1 -1
  641. package/dist/types/session/tool-execution.d.ts +6 -0
  642. package/dist/types/session/tool-execution.d.ts.map +1 -1
  643. package/dist/types/structured-output/index.d.ts +12 -2
  644. package/dist/types/structured-output/index.d.ts.map +1 -1
  645. package/dist/types/summary/ref.d.ts +3 -1
  646. package/dist/types/summary/ref.d.ts.map +1 -1
  647. package/dist/types/tool/index.d.ts +32 -4
  648. package/dist/types/tool/index.d.ts.map +1 -1
  649. package/dist/types/tool/index.js.map +1 -1
  650. package/dist/types/tool/presentation.d.ts +106 -0
  651. package/dist/types/tool/presentation.d.ts.map +1 -1
  652. package/dist/utils/json-snapshot.d.ts +6 -2
  653. package/dist/utils/json-snapshot.d.ts.map +1 -1
  654. package/dist/utils/json-snapshot.js +19 -9
  655. package/dist/utils/json-snapshot.js.map +1 -1
  656. package/dist/utils/structured-result-json.d.ts +5 -0
  657. package/dist/utils/structured-result-json.d.ts.map +1 -0
  658. package/dist/utils/structured-result-json.js +10 -0
  659. package/dist/utils/structured-result-json.js.map +1 -0
  660. package/package.json +1 -1
  661. package/src/agents/QueryAgent.ts +1 -0
  662. package/src/agents/examples/SupervisorAgent.ts +1 -0
  663. package/src/agents/runAgent.ts +3 -0
  664. package/src/authorization/shell-lexer.ts +16 -1
  665. package/src/bridge/acp/permission.ts +17 -3
  666. package/src/bridge/acp/server.ts +271 -25
  667. package/src/bridge/acp/tasks.ts +23 -0
  668. package/src/bridge/acp/update.ts +167 -13
  669. package/src/config/registry.ts +24 -3
  670. package/src/connector/mcp/adapter.ts +16 -4
  671. package/src/connector/mcp/client.ts +6 -2
  672. package/src/connector/mcp/discovery.ts +29 -8
  673. package/src/connector/mcp/mcp-toolset.ts +25 -4
  674. package/src/connector/mcp/reconnect.ts +34 -4
  675. package/src/constants/acp/index.ts +4 -0
  676. package/src/manager/agent/lifecycle.ts +230 -3
  677. package/src/manager/plan/lifecycle.ts +11 -9
  678. package/src/manager/session/attribution.ts +12 -2
  679. package/src/manager/session/streamed-message-identity.ts +21 -0
  680. package/src/manager/session/turn-recorder.ts +4 -3
  681. package/src/pals/activity/causality.ts +261 -0
  682. package/src/pals/activity/projection.ts +89 -0
  683. package/src/pals/activity/source.ts +240 -0
  684. package/src/pals/activity/subscription-policy.ts +230 -0
  685. package/src/pals/activity/subscription-schema.ts +27 -0
  686. package/src/pals/activity/subscription-store.ts +172 -0
  687. package/src/pals/activity/subscription-types.ts +48 -0
  688. package/src/pals/activity/subscriptions.ts +209 -0
  689. package/src/pals/activity/types.ts +108 -0
  690. package/src/pals/channels/ingress.ts +153 -0
  691. package/src/pals/channels/routes.ts +118 -0
  692. package/src/pals/channels/routing.ts +197 -0
  693. package/src/pals/channels/schema.ts +108 -0
  694. package/src/pals/channels/types.ts +156 -0
  695. package/src/pals/communication/broker.ts +131 -0
  696. package/src/pals/communication/dispatch.ts +66 -0
  697. package/src/pals/communication/inbound.ts +193 -0
  698. package/src/pals/communication/ingress-dispatch.ts +63 -0
  699. package/src/pals/communication/ingress-inbound.ts +269 -0
  700. package/src/pals/communication/ingress-schema.ts +526 -0
  701. package/src/pals/communication/ingress-types.ts +336 -0
  702. package/src/pals/communication/operator.ts +315 -0
  703. package/src/pals/communication/policy.ts +174 -0
  704. package/src/pals/communication/schema.ts +173 -0
  705. package/src/pals/communication/store.ts +577 -0
  706. package/src/pals/communication/tools.ts +139 -0
  707. package/src/pals/communication/types.ts +227 -0
  708. package/src/pals/communication/verify.ts +220 -0
  709. package/src/pals/lifecycle.ts +54 -0
  710. package/src/pals/prompt.ts +101 -0
  711. package/src/pals/reference-images.ts +322 -0
  712. package/src/pals/runtime.ts +670 -0
  713. package/src/pals/store.ts +369 -0
  714. package/src/pals/types.ts +157 -0
  715. package/src/peers/envelope.ts +1 -1
  716. package/src/plugin/lifecycle.ts +217 -46
  717. package/src/plugin/shell-hook.ts +8 -2
  718. package/src/process/kill-tree.ts +10 -1
  719. package/src/prompt/resident-learning.ts +2 -2
  720. package/src/prompt/resident-step.ts +4 -4
  721. package/src/provider/errors.ts +135 -2
  722. package/src/public-runtime.ts +119 -12
  723. package/src/public-tools.ts +13 -1
  724. package/src/public-types.ts +69 -7
  725. package/src/registry/tool/presentation.ts +9 -4
  726. package/src/registry/tool/screen.ts +34 -2
  727. package/src/runtime/harness-session/index.ts +1125 -0
  728. package/src/runtime/harness-session/journal.ts +209 -0
  729. package/src/runtime/harness-session/saved-view.ts +122 -0
  730. package/src/runtime/jobs/awaited-jobs.ts +2 -1
  731. package/src/runtime/jobs/registry.ts +423 -50
  732. package/src/runtime/query/abandon-turn.ts +18 -2
  733. package/src/runtime/query/checkpoint.ts +11 -0
  734. package/src/runtime/query/durable-inbound.ts +101 -0
  735. package/src/runtime/query/events.ts +22 -5
  736. package/src/runtime/query/executor/tool-call-admission.ts +125 -32
  737. package/src/runtime/query/executor.ts +316 -130
  738. package/src/runtime/query/index.ts +48 -5
  739. package/src/runtime/query/iteration/index.ts +253 -114
  740. package/src/runtime/query/iteration/outstanding-work.ts +57 -7
  741. package/src/runtime/query/iteration/phases/context.ts +8 -0
  742. package/src/runtime/query/iteration/phases/tool-review.ts +124 -22
  743. package/src/runtime/query/iteration/step-shaping.ts +9 -1
  744. package/src/runtime/query/observation-context.ts +22 -16
  745. package/src/runtime/query/prepare-turn.ts +2 -2
  746. package/src/runtime/query/prompt-cache.ts +3 -0
  747. package/src/runtime/query/prompt.ts +32 -1
  748. package/src/runtime/query/repeat-call.ts +40 -10
  749. package/src/runtime/query/resume-pending.ts +60 -7
  750. package/src/runtime/query/resume-session.ts +1 -1
  751. package/src/runtime/query/review-policy.ts +23 -2
  752. package/src/runtime/query/saved-presentation.ts +70 -0
  753. package/src/runtime/query/steering.ts +6 -9
  754. package/src/runtime/query/tool-executions.ts +108 -9
  755. package/src/runtime/query/tooling.ts +6 -1
  756. package/src/scheduler/completion-inbox.ts +108 -7
  757. package/src/scheduler/delegating.ts +5 -0
  758. package/src/scheduler/local.ts +2 -0
  759. package/src/session/summary/materialize.ts +51 -9
  760. package/src/store/budget/ledger.ts +60 -5
  761. package/src/store/index.ts +1 -0
  762. package/src/store/memory/disk.ts +82 -7
  763. package/src/store/memory/index.ts +66 -7
  764. package/src/store/memory/markdown.ts +54 -2
  765. package/src/store/memory/memory.ts +52 -2
  766. package/src/store/memory/revision.ts +158 -0
  767. package/src/store/session/disk.ts +77 -10
  768. package/src/store/session/memory.ts +32 -7
  769. package/src/store/session-log/core.ts +118 -11
  770. package/src/store/session-log/disk.ts +9 -2
  771. package/src/store/session-log/fold.ts +22 -0
  772. package/src/store/session-log/index.ts +5 -0
  773. package/src/store/session-log/memory.ts +2 -1
  774. package/src/store/session-log/spill.ts +89 -6
  775. package/src/store/session-log/structured-result.ts +96 -0
  776. package/src/store/task/disk.ts +46 -2
  777. package/src/store/task/memory.ts +13 -3
  778. package/src/tools/admit-facts.ts +145 -0
  779. package/src/tools/builtins/bash.ts +132 -24
  780. package/src/tools/builtins/edit.ts +42 -0
  781. package/src/tools/builtins/file-write-result.ts +14 -0
  782. package/src/tools/builtins/glob.ts +12 -0
  783. package/src/tools/builtins/grep.ts +14 -0
  784. package/src/tools/builtins/index.ts +2 -0
  785. package/src/tools/builtins/job.ts +4 -1
  786. package/src/tools/builtins/read-file.ts +57 -0
  787. package/src/tools/builtins/view-image.ts +409 -0
  788. package/src/tools/builtins/wait-for-job-bounds.ts +45 -7
  789. package/src/tools/builtins/wait-for-job.ts +159 -36
  790. package/src/tools/builtins/write-file.ts +4 -2
  791. package/src/tools/command-shell.ts +132 -5
  792. package/src/tools/coordinator/agent.ts +9 -19
  793. package/src/tools/coordinator/index.ts +150 -75
  794. package/src/tools/coordinator/wait-with-idle-bound.ts +3 -1
  795. package/src/tools/defineTool.ts +4 -0
  796. package/src/tools/failure-facts.ts +24 -0
  797. package/src/tools/host-output.ts +136 -0
  798. package/src/tools/memory/delete.ts +33 -3
  799. package/src/tools/memory/read.ts +35 -2
  800. package/src/tools/memory/search.ts +38 -7
  801. package/src/tools/memory/update.ts +28 -3
  802. package/src/tools/oem-code-pages.ts +22 -0
  803. package/src/tools/schedules/schedule-tool.ts +38 -5
  804. package/src/tools/schedules/types.ts +23 -3
  805. package/src/tools/task/list.ts +15 -7
  806. package/src/tools/task/present.ts +37 -7
  807. package/src/tools/task/update.ts +12 -5
  808. package/src/tools/text-window.ts +87 -0
  809. package/src/toolsets/manager.ts +132 -2
  810. package/src/turn/memory-recall.ts +5 -1
  811. package/src/types/acp/index.ts +150 -4
  812. package/src/types/agent/base.ts +3 -0
  813. package/src/types/agent/manager.ts +8 -23
  814. package/src/types/agent/scheduler.ts +10 -1
  815. package/src/types/agent/task.ts +4 -0
  816. package/src/types/connector/mcp.ts +7 -0
  817. package/src/types/errors/catalog.ts +4 -2
  818. package/src/types/harness/schema.ts +203 -0
  819. package/src/types/harness/session.ts +306 -0
  820. package/src/types/hitl/index.ts +17 -1
  821. package/src/types/job/index.ts +42 -0
  822. package/src/types/memory/index.ts +43 -0
  823. package/src/types/message/inbound-delivery.ts +63 -0
  824. package/src/types/message/index.ts +8 -1
  825. package/src/types/plugin/index.ts +11 -6
  826. package/src/types/sandbox/index.ts +46 -0
  827. package/src/types/session/checkpoint.ts +4 -1
  828. package/src/types/session/events.ts +23 -1
  829. package/src/types/session/records.ts +114 -2
  830. package/src/types/session/step.ts +2 -0
  831. package/src/types/session/store.ts +23 -9
  832. package/src/types/session/tool-execution.ts +6 -0
  833. package/src/types/structured-output/index.ts +13 -2
  834. package/src/types/summary/ref.ts +3 -1
  835. package/src/types/tool/index.ts +39 -5
  836. package/src/types/tool/presentation.ts +121 -0
  837. package/src/utils/json-snapshot.ts +26 -9
  838. package/src/utils/structured-result-json.ts +10 -0
@@ -0,0 +1,336 @@
1
+ import type { SessionId, TurnId } from '../../types/ids/index.js'
2
+ import type {
3
+ DurableInboundSource,
4
+ InboundDeliveryReceipt,
5
+ InboundDeliveryRef,
6
+ } from '../../types/message/inbound-delivery.js'
7
+ import type { PalActivityFact, PalActivityScope } from '../activity/types.js'
8
+ import type { PalDefinition, PalStore } from '../types.js'
9
+ import {
10
+ type PalAddress,
11
+ type PalAuthorizationRequest,
12
+ type PalConversationAccess,
13
+ type PalDeliveryClaim,
14
+ type PalInboxMessage,
15
+ type PalMessageAuthorization,
16
+ type PalMessageGrant,
17
+ type PalMessageIntent,
18
+ type PalMessageReceipt,
19
+ type PalRouteKey,
20
+ authorizationRequest,
21
+ } from './types.js'
22
+
23
+ export interface PalObservationRouteKey {
24
+ readonly v: 1
25
+ readonly kind: 'observation'
26
+ readonly recipient: PalAddress
27
+ readonly subscriptionId: string
28
+ readonly scope: PalActivityScope
29
+ }
30
+
31
+ /** Native identity from a trusted connection verifier; no credential is stored. */
32
+ export interface PalChannelIdentity {
33
+ readonly provider: string
34
+ readonly connectionId: string
35
+ readonly externalTenantId: string
36
+ readonly nativeConversationId: string
37
+ readonly nativeChannelId: string | null
38
+ readonly nativeThreadId: string | null
39
+ }
40
+
41
+ export interface PalChannelRouteKey extends PalChannelIdentity {
42
+ readonly v: 1
43
+ readonly kind: 'channel'
44
+ readonly recipient: PalAddress
45
+ }
46
+
47
+ /**
48
+ * Route key for the operator's own ordinary conversation addressing one Pal. One
49
+ * operator conversation opens one distinct Pal conversation; it never reuses a
50
+ * Pal-to-Pal route and carries no Pal sender address.
51
+ */
52
+ export interface PalOperatorRouteKey {
53
+ readonly v: 1
54
+ readonly kind: 'operator'
55
+ readonly recipient: PalAddress
56
+ readonly conversationId: SessionId
57
+ }
58
+
59
+ export interface PalObservationSource {
60
+ readonly kind: 'host-observation'
61
+ readonly subscriptionId: string
62
+ readonly scope: PalActivityScope
63
+ }
64
+
65
+ /** Actor is captured per event, independently from conversation routing. */
66
+ export interface PalChannelSource extends PalChannelIdentity {
67
+ readonly kind: 'channel'
68
+ readonly tenantId: PalAddress['tenantId']
69
+ readonly actorId: string
70
+ readonly eventId: string
71
+ }
72
+
73
+ /**
74
+ * The host-captured identity of the owner's ordinary (non-Pal) conversation.
75
+ * It is not a Pal address and cannot impersonate one; the model never selects it.
76
+ */
77
+ export interface PalOperatorSource {
78
+ readonly kind: 'operator-conversation'
79
+ readonly tenantId: PalAddress['tenantId']
80
+ readonly sessionId: SessionId
81
+ }
82
+
83
+ export interface PalIngressIntentBase {
84
+ readonly id: string
85
+ readonly digest: string
86
+ readonly operationId: string
87
+ readonly recipient: PalAddress
88
+ readonly grant: PalMessageGrant
89
+ readonly createdAt: number
90
+ readonly replyTo: null
91
+ }
92
+
93
+ export interface PalObservationIntent extends PalIngressIntentBase {
94
+ readonly kind: 'observation'
95
+ readonly source: PalObservationSource
96
+ readonly routeKey: PalObservationRouteKey
97
+ readonly fact: PalActivityFact
98
+ /** Host-resolved original delivery causality, containing this publishing subscription once. */
99
+ readonly subscriptionTrail: readonly string[]
100
+ }
101
+
102
+ export interface PalChannelIntent extends PalIngressIntentBase {
103
+ readonly kind: 'channel'
104
+ readonly source: PalChannelSource
105
+ readonly routeKey: PalChannelRouteKey
106
+ readonly body: string
107
+ }
108
+
109
+ /** A message the owner sent from an ordinary conversation, after approving it there. */
110
+ export interface PalOperatorIntent extends PalIngressIntentBase {
111
+ readonly kind: 'operator'
112
+ readonly source: PalOperatorSource
113
+ readonly routeKey: PalOperatorRouteKey
114
+ readonly body: string
115
+ }
116
+
117
+ /** Legacy Pal intents retain their original shape and namespace. */
118
+ export type PalIngressIntent =
119
+ | PalMessageIntent
120
+ | PalObservationIntent
121
+ | PalChannelIntent
122
+ | PalOperatorIntent
123
+ export type PalIngressIntentDraft =
124
+ | Omit<PalMessageIntent, 'id' | 'digest'>
125
+ | Omit<PalObservationIntent, 'id' | 'digest'>
126
+ | Omit<PalChannelIntent, 'id' | 'digest'>
127
+ | Omit<PalOperatorIntent, 'id' | 'digest'>
128
+ export type PalIngressDigestInput =
129
+ | Omit<PalMessageIntent, 'digest'>
130
+ | Omit<PalObservationIntent, 'digest'>
131
+ | Omit<PalChannelIntent, 'digest'>
132
+ | Omit<PalOperatorIntent, 'digest'>
133
+ export type PalIngressRouteKey =
134
+ | PalRouteKey
135
+ | PalObservationRouteKey
136
+ | PalChannelRouteKey
137
+ | PalOperatorRouteKey
138
+
139
+ export interface PalIngressRouteBinding {
140
+ readonly id: string
141
+ readonly key: PalIngressRouteKey
142
+ readonly sessionId: SessionId
143
+ readonly profileRevision: number
144
+ readonly revision: number
145
+ readonly phase: 'reserved' | 'active'
146
+ }
147
+
148
+ export interface PalIngressDeliveryState {
149
+ readonly ordinal: number
150
+ readonly routeId: string
151
+ readonly phase: 'pending' | 'claimed' | 'recorded'
152
+ readonly claim: PalDeliveryClaim | null
153
+ readonly receipt: InboundDeliveryReceipt | null
154
+ }
155
+
156
+ export type PalIngressInboxMessage =
157
+ | PalInboxMessage
158
+ | ((PalObservationIntent | PalChannelIntent | PalOperatorIntent) & PalIngressDeliveryState)
159
+ export type PalIngressAcceptanceReceipt = PalMessageReceipt
160
+
161
+ export interface PalIngressSnapshot {
162
+ readonly recipient: PalAddress
163
+ readonly revision: number
164
+ readonly routes: readonly PalIngressRouteBinding[]
165
+ readonly messages: readonly PalIngressInboxMessage[]
166
+ }
167
+
168
+ export interface PalIngressVerificationContext {
169
+ readonly binding: PalIngressRouteBinding
170
+ readonly access: PalConversationAccess
171
+ readonly definition: PalDefinition
172
+ }
173
+
174
+ /** One recipient ledger and unresolved-claim barrier across every input family. Trusted host only. */
175
+ export interface PalIngressStore {
176
+ readIngress(recipient: PalAddress): Promise<PalIngressSnapshot | null>
177
+ acceptIngress(
178
+ intent: PalIngressIntent,
179
+ recipientRevision: number,
180
+ conversationId?: SessionId,
181
+ ): Promise<PalIngressAcceptanceReceipt>
182
+ routeIngress(key: PalIngressRouteKey): Promise<PalIngressRouteBinding | null>
183
+ activateIngress(
184
+ binding: PalIngressRouteBinding,
185
+ context: PalIngressVerificationContext,
186
+ ): Promise<PalIngressRouteBinding>
187
+ claimIngress(
188
+ binding: PalIngressRouteBinding,
189
+ request: {
190
+ readonly turnId: TurnId
191
+ readonly generation: number
192
+ readonly content: (message: PalIngressInboxMessage) => string
193
+ },
194
+ ): Promise<PalIngressInboxMessage | null>
195
+ recordedIngress(
196
+ message: PalIngressInboxMessage,
197
+ receipt: InboundDeliveryReceipt,
198
+ context: PalIngressVerificationContext,
199
+ ): Promise<PalIngressInboxMessage>
200
+ /** Requires complete original evidence plus a fenced, stopped prior writer. */
201
+ releaseUnrecordedIngress(
202
+ message: PalIngressInboxMessage,
203
+ context: PalIngressVerificationContext,
204
+ ): Promise<PalIngressInboxMessage>
205
+ }
206
+
207
+ export type PalIngressAuthorizationRequest =
208
+ | PalAuthorizationRequest
209
+ | (Omit<PalObservationIntent, 'id' | 'digest' | 'operationId' | 'grant' | 'createdAt'> & {
210
+ readonly phase: 'accept' | 'deliver' | 'wake'
211
+ })
212
+ | (Omit<PalChannelIntent, 'id' | 'digest' | 'operationId' | 'grant' | 'createdAt'> & {
213
+ readonly phase: 'accept' | 'deliver' | 'wake'
214
+ })
215
+ | (Omit<PalOperatorIntent, 'id' | 'digest' | 'operationId' | 'grant' | 'createdAt'> & {
216
+ readonly phase: 'accept' | 'deliver' | 'wake'
217
+ })
218
+
219
+ export interface PalIngressHostPort {
220
+ ensureConversation(binding: PalIngressRouteBinding, signal: AbortSignal): Promise<void>
221
+ openConversation(
222
+ binding: PalIngressRouteBinding,
223
+ signal: AbortSignal,
224
+ ): Promise<PalConversationAccess>
225
+ notify?(recipient: PalAddress): void | Promise<void>
226
+ wait?(binding: PalIngressRouteBinding, signal: AbortSignal): Promise<void>
227
+ runConversation(
228
+ binding: PalIngressRouteBinding,
229
+ source: DurableInboundSource,
230
+ signal: AbortSignal,
231
+ ): Promise<void>
232
+ }
233
+
234
+ export interface PalIngressOptions {
235
+ readonly store: PalIngressStore
236
+ readonly pals: PalStore
237
+ /** Required current disclosure/receive or wake authority; acceptance audit is not continuing consent. */
238
+ readonly authorize: (request: PalIngressAuthorizationRequest) => Promise<PalMessageAuthorization>
239
+ readonly host?: PalIngressHostPort
240
+ }
241
+
242
+ export interface PalIngressSourceOptions extends PalIngressOptions {
243
+ readonly binding: PalIngressRouteBinding
244
+ readonly host: PalIngressHostPort
245
+ }
246
+
247
+ export type PalIngressDispatchOutcome =
248
+ | { readonly status: 'idle'; readonly reason: 'empty' | 'unresolved' }
249
+ | { readonly status: 'blocked'; readonly reason: string }
250
+ | { readonly status: 'ran'; readonly binding: PalIngressRouteBinding }
251
+
252
+ export const PAL_OBSERVATION_NAMESPACE = 'namzu-pal-observation/1'
253
+ export const PAL_CHANNEL_NAMESPACE = 'namzu-pal-channel/1'
254
+ export const PAL_OPERATOR_NAMESPACE = 'namzu-pal-operator/1'
255
+
256
+ export function ingressMessageRef(
257
+ message: Pick<PalIngressInboxMessage, 'id' | 'digest'> & {
258
+ readonly kind?: 'observation' | 'channel' | 'operator'
259
+ },
260
+ ): InboundDeliveryRef {
261
+ return {
262
+ namespace:
263
+ message.kind === 'observation'
264
+ ? PAL_OBSERVATION_NAMESPACE
265
+ : message.kind === 'channel'
266
+ ? PAL_CHANNEL_NAMESPACE
267
+ : message.kind === 'operator'
268
+ ? PAL_OPERATOR_NAMESPACE
269
+ : 'namzu-pal-message/1',
270
+ id: message.id,
271
+ digest: message.digest,
272
+ }
273
+ }
274
+
275
+ /**
276
+ * The runtime-context kind a delivery is recorded under. An operator-conversation
277
+ * message reuses `peer-message` (a message from another conversation) so the public
278
+ * runtime-context union is unchanged; its rendered envelope, not this kind, names
279
+ * the owner's conversation as the source.
280
+ */
281
+ export function ingressRuntimeContextKind(
282
+ message: PalIngressIntent,
283
+ ): 'peer-message' | 'host-observation' | 'channel-message' {
284
+ if (!('kind' in message)) return 'peer-message'
285
+ if (message.kind === 'observation') return 'host-observation'
286
+ return message.kind === 'channel' ? 'channel-message' : 'peer-message'
287
+ }
288
+
289
+ export function ingressAuthorizationRequest(
290
+ message: PalIngressIntent,
291
+ phase: 'accept' | 'deliver' | 'wake',
292
+ ): PalIngressAuthorizationRequest {
293
+ if (!('kind' in message))
294
+ return authorizationRequest(message, phase === 'accept' ? 'send' : phase)
295
+ const common = {
296
+ phase,
297
+ kind: message.kind,
298
+ source: message.source,
299
+ recipient: message.recipient,
300
+ routeKey: message.routeKey,
301
+ replyTo: null,
302
+ }
303
+ if (message.kind === 'observation')
304
+ return {
305
+ ...common,
306
+ kind: 'observation',
307
+ source: message.source,
308
+ routeKey: message.routeKey,
309
+ fact: message.fact,
310
+ subscriptionTrail: message.subscriptionTrail,
311
+ }
312
+ if (message.kind === 'operator')
313
+ return {
314
+ ...common,
315
+ kind: 'operator',
316
+ source: message.source,
317
+ routeKey: message.routeKey,
318
+ body: message.body,
319
+ }
320
+ return {
321
+ ...common,
322
+ kind: 'channel',
323
+ source: message.source,
324
+ routeKey: message.routeKey,
325
+ body: message.body,
326
+ }
327
+ }
328
+
329
+ export function currentIngressRecipient(
330
+ pals: PalStore,
331
+ binding: PalIngressRouteBinding,
332
+ ): PalDefinition {
333
+ const pal = pals.get(binding.key.recipient.palId)
334
+ if (!pal || pal.paused) throw new Error('Recipient Pal is paused or unavailable.')
335
+ return pals.getRevision(pal.id, binding.profileRevision)
336
+ }
@@ -0,0 +1,315 @@
1
+ import { z } from 'zod'
2
+ import { defineTool } from '../../tools/defineTool.js'
3
+ import type { SessionId, TenantId } from '../../types/ids/index.js'
4
+ import type { ToolContext, ToolDefinition } from '../../types/tool/index.js'
5
+ import { isEntityId } from '../../utils/id.js'
6
+ import type { PalStore } from '../types.js'
7
+ import {
8
+ checkedIngressIntent,
9
+ ingressIntentDigest,
10
+ ingressIntentId,
11
+ operatorSourceSchema,
12
+ } from './ingress-schema.js'
13
+ import type {
14
+ PalIngressAuthorizationRequest,
15
+ PalIngressHostPort,
16
+ PalIngressStore,
17
+ PalOperatorIntent,
18
+ PalOperatorRouteKey,
19
+ PalOperatorSource,
20
+ } from './ingress-types.js'
21
+ import { addressSchema, freezeCommunicationValue, hash, intentSchema, label } from './schema.js'
22
+ import type { PalAddress, PalMessageAuthorization, PalMessageReceipt } from './types.js'
23
+
24
+ /**
25
+ * The host-captured identity of the owner's ordinary conversation. The model
26
+ * never supplies it: the tool reads it from the executing call, and it carries no
27
+ * Pal address, so it cannot be mistaken for a sending Pal.
28
+ */
29
+ export interface PalOperatorConversation {
30
+ readonly tenantId: TenantId
31
+ readonly sessionId: SessionId
32
+ }
33
+
34
+ export interface PalOperatorSendRequest {
35
+ /** Stable captured tool-call identity; retries must retain it. */
36
+ readonly operationId: string
37
+ readonly recipient: PalAddress
38
+ readonly body: string
39
+ }
40
+
41
+ export interface PalOperatorMessageSender {
42
+ send(
43
+ conversation: PalOperatorConversation,
44
+ request: PalOperatorSendRequest,
45
+ ): Promise<PalMessageReceipt>
46
+ }
47
+
48
+ export interface PalOperatorMessageBrokerOptions {
49
+ readonly store: PalIngressStore
50
+ readonly pals: PalStore
51
+ /**
52
+ * Current host authority for an operator-conversation `accept`. The host's tool
53
+ * review is the owner's approval; this callback records the audit grant and may
54
+ * still refuse. There is no permissive default.
55
+ */
56
+ readonly authorize: (request: PalIngressAuthorizationRequest) => Promise<PalMessageAuthorization>
57
+ /** Optional wake hint after the durable acceptance; failure cannot revoke it. */
58
+ readonly host?: Pick<PalIngressHostPort, 'notify'>
59
+ readonly now?: () => number
60
+ readonly onNotificationError?: (
61
+ error: unknown,
62
+ receipt: PalMessageReceipt,
63
+ ) => void | Promise<void>
64
+ }
65
+
66
+ const conversationSchema = operatorSourceSchema.omit({ kind: true })
67
+ const requestSchema = z
68
+ .object({
69
+ operationId: label,
70
+ recipient: addressSchema,
71
+ body: intentSchema.shape.body,
72
+ })
73
+ .strict()
74
+
75
+ /**
76
+ * Accepts a message from the owner's ordinary conversation into one Pal's durable
77
+ * inbox. Acceptance is a receipt, never delivery, an answer or completed work.
78
+ * Pal-to-Pal sending is a different path and is unchanged.
79
+ */
80
+ export class PalOperatorMessageBroker implements PalOperatorMessageSender {
81
+ constructor(private readonly options: PalOperatorMessageBrokerOptions) {
82
+ if (
83
+ typeof options?.authorize !== 'function' ||
84
+ typeof options.store?.acceptIngress !== 'function'
85
+ )
86
+ throw new TypeError('Operator Pal messaging requires a store and explicit authorization.')
87
+ }
88
+ async send(
89
+ conversationInput: PalOperatorConversation,
90
+ requestInput: PalOperatorSendRequest,
91
+ ): Promise<PalMessageReceipt> {
92
+ const conversation = freezeCommunicationValue(conversationSchema.parse(conversationInput))
93
+ const request = freezeCommunicationValue(requestSchema.parse(requestInput))
94
+ const { pals, store } = this.options
95
+ if (request.recipient.tenantId !== conversation.tenantId)
96
+ throw new Error('Cross-tenant Pal messages are refused.')
97
+ const target = pals.get(request.recipient.palId)
98
+ if (!target) throw new Error('Recipient Pal is unavailable.')
99
+ if (target.paused) throw new Error('Recipient Pal is paused.')
100
+ const source: PalOperatorSource = {
101
+ kind: 'operator-conversation',
102
+ tenantId: conversation.tenantId,
103
+ sessionId: conversation.sessionId,
104
+ }
105
+ const routeKey: PalOperatorRouteKey = {
106
+ v: 1,
107
+ kind: 'operator',
108
+ recipient: request.recipient,
109
+ conversationId: conversation.sessionId,
110
+ }
111
+ const authorization = await this.options.authorize(
112
+ freezeCommunicationValue({
113
+ phase: 'accept' as const,
114
+ kind: 'operator' as const,
115
+ source,
116
+ recipient: request.recipient,
117
+ routeKey,
118
+ body: request.body,
119
+ replyTo: null,
120
+ }),
121
+ )
122
+ if (!authorization.allow) throw new Error(`Pal send refused: ${authorization.reason}`)
123
+ // Authorization is asynchronous: a Pal paused or removed meanwhile gets nothing.
124
+ const current = pals.get(request.recipient.palId)
125
+ if (!current || current.paused) throw new Error('Recipient Pal was paused before acceptance.')
126
+ const draft: Omit<PalOperatorIntent, 'id' | 'digest'> = {
127
+ kind: 'operator',
128
+ operationId: request.operationId,
129
+ source,
130
+ recipient: request.recipient,
131
+ routeKey,
132
+ body: request.body,
133
+ replyTo: null,
134
+ grant: authorization.grant,
135
+ createdAt: (this.options.now ?? Date.now)(),
136
+ }
137
+ const id = ingressIntentId(draft)
138
+ const intent = checkedIngressIntent({
139
+ ...draft,
140
+ id,
141
+ digest: ingressIntentDigest({ ...draft, id }),
142
+ })
143
+ const accepted = await store.acceptIngress(intent, target.revision)
144
+ const report = (error: unknown) => {
145
+ try {
146
+ void Promise.resolve(this.options.onNotificationError?.(error, accepted)).catch(
147
+ () => undefined,
148
+ )
149
+ } catch {
150
+ /* Acceptance already committed. */
151
+ }
152
+ }
153
+ try {
154
+ void Promise.resolve(this.options.host?.notify?.(request.recipient)).catch(report)
155
+ } catch (error) {
156
+ report(error)
157
+ }
158
+ return accepted
159
+ }
160
+ }
161
+
162
+ /** One Pal the owner's conversation may address; names only, no host paths or credentials. */
163
+ export interface PalOperatorRecipient {
164
+ readonly palId: string
165
+ readonly name: string
166
+ readonly description?: string
167
+ readonly paused: boolean
168
+ /**
169
+ * Whether this application is running no conversation for the Pal. It is this
170
+ * process's view only, so a Pal busy in another app can still read `true`.
171
+ */
172
+ readonly idle: boolean
173
+ }
174
+
175
+ export interface PalOperatorMessagingToolsOptions {
176
+ /** Fixed by the host; a Pal outside this tenant is never addressable. */
177
+ readonly tenantId: TenantId
178
+ readonly sender: PalOperatorMessageSender
179
+ /** The current tenant's Pals. Paused Pals may be listed; sending to them refuses. */
180
+ readonly listPals: (
181
+ context: ToolContext,
182
+ ) => readonly PalOperatorRecipient[] | Promise<readonly PalOperatorRecipient[]>
183
+ /** Synchronous, display-only name for review prompts and rows. */
184
+ readonly recipientName?: (palId: string) => string | undefined
185
+ }
186
+
187
+ const sendSchema = z
188
+ .object({
189
+ palId: addressSchema.shape.palId.describe('ID of the Pal to message, from list_pals.'),
190
+ body: intentSchema.shape.body.describe(
191
+ 'The explicit task or message for that Pal. Write it so it makes sense without this conversation.',
192
+ ),
193
+ })
194
+ .strict()
195
+ const listSchema = z.object({}).strict()
196
+ const recipientSchema = z
197
+ .object({
198
+ palId: addressSchema.shape.palId,
199
+ name: z.string().min(1),
200
+ description: z.string().optional(),
201
+ paused: z.boolean(),
202
+ idle: z.boolean(),
203
+ })
204
+ .strict()
205
+
206
+ function conversationOf(context: ToolContext, tenantId: TenantId): PalOperatorConversation {
207
+ context.abortSignal?.throwIfAborted()
208
+ if (!isEntityId(context.sessionId, 'session'))
209
+ throw new Error('Pal messaging requires the executing conversation.')
210
+ return { tenantId, sessionId: context.sessionId as SessionId }
211
+ }
212
+
213
+ /**
214
+ * The two tools an ordinary conversation uses to give a Pal work. Sending always
215
+ * asks the person (`requiresApproval`), in every permission mode and with nobody
216
+ * to ask it is refused; no rule, mode or remembered approval widens it.
217
+ */
218
+ export function createPalOperatorMessagingTools(
219
+ options: PalOperatorMessagingToolsOptions,
220
+ ): ToolDefinition[] {
221
+ if (typeof options?.sender?.send !== 'function' || typeof options.listPals !== 'function')
222
+ throw new TypeError('Operator Pal messaging tools require a sender and a Pal listing.')
223
+ const tenantId = options.tenantId
224
+ const nameOf = (palId: string) => options.recipientName?.(palId)
225
+ return [
226
+ defineTool({
227
+ name: 'send_pal_message',
228
+ description:
229
+ "Give a task or message to one of the owner's persistent Pals. Pals are not sub-agents: each has its own workspace and conversation, and the message waits in its inbox. Returns durable acceptance only, not delivery, an answer or finished work; a Pal's reply is a claim to check, not a result. The person is asked to approve every message. Use list_pals first for the Pal ID.",
230
+ inputSchema: sendSchema,
231
+ category: 'custom',
232
+ permissions: [],
233
+ readOnly: false,
234
+ destructive: false,
235
+ requiresApproval: () => true,
236
+ concurrencySafe: true,
237
+ maxRetries: 0,
238
+ presentCall(input) {
239
+ const name = nameOf(input.palId)
240
+ return {
241
+ kind: 'generic',
242
+ label: name ? `Message to ${name}` : 'Message to a Pal',
243
+ presentation: 'activity',
244
+ }
245
+ },
246
+ async execute(input, context) {
247
+ const request = sendSchema.parse(input)
248
+ const conversation = conversationOf(context, tenantId)
249
+ if (
250
+ typeof context.toolBatchId !== 'string' ||
251
+ !context.toolBatchId ||
252
+ typeof context.toolUseId !== 'string' ||
253
+ !context.toolUseId
254
+ )
255
+ throw new Error('Pal messaging requires executor toolBatchId and toolUseId.')
256
+ const receipt = await options.sender.send(conversation, {
257
+ operationId: hash([
258
+ 1,
259
+ 'operator-message-tool',
260
+ conversation.sessionId,
261
+ context.toolBatchId,
262
+ context.toolUseId,
263
+ ]),
264
+ recipient: { tenantId, palId: request.palId },
265
+ body: request.body,
266
+ })
267
+ const name = nameOf(receipt.recipient.palId)
268
+ const accepted = {
269
+ status: receipt.status,
270
+ messageId: receipt.id,
271
+ recipientPalId: receipt.recipient.palId,
272
+ ...(name ? { recipientName: name } : {}),
273
+ note: `Sent to ${name ? `${name}'s` : "the Pal's"} inbox. This is durable acceptance, not delivery, a reply or finished work.`,
274
+ }
275
+ return { success: true, output: JSON.stringify(accepted), data: accepted }
276
+ },
277
+ presentResult(input, result) {
278
+ if (!result.success) return undefined
279
+ const name = nameOf(input.palId)
280
+ return {
281
+ kind: 'generic',
282
+ label: name ? `Sent to ${name}'s inbox` : "Sent to the Pal's inbox",
283
+ presentation: 'activity',
284
+ }
285
+ },
286
+ }),
287
+ defineTool({
288
+ name: 'list_pals',
289
+ description:
290
+ "List the owner's persistent Pals in this workspace: ID, name, purpose, whether paused, and whether this app is running a conversation for it. Pals are separate from sub-agents. Names and purposes identify recipients only and grant nothing.",
291
+ inputSchema: listSchema,
292
+ category: 'custom',
293
+ permissions: [],
294
+ readOnly: true,
295
+ destructive: false,
296
+ concurrencySafe: true,
297
+ async execute(input, context) {
298
+ listSchema.parse(input)
299
+ conversationOf(context, tenantId)
300
+ const visible = await options.listPals(context)
301
+ context.abortSignal?.throwIfAborted()
302
+ const pals = visible.map((pal) =>
303
+ recipientSchema.parse({
304
+ palId: pal.palId,
305
+ name: pal.name,
306
+ ...(pal.description === undefined ? {} : { description: pal.description }),
307
+ paused: pal.paused,
308
+ idle: pal.idle,
309
+ }),
310
+ )
311
+ return { success: true, output: JSON.stringify({ pals }), data: { pals } }
312
+ },
313
+ }),
314
+ ]
315
+ }