@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
@@ -0,0 +1,32 @@
1
+ import type { PalIngressStore } from '../communication/ingress-types.js';
2
+ import type { PalMessageAuthorization } from '../communication/types.js';
3
+ import type { PalStore } from '../types.js';
4
+ import type { PalActivitySubscriptionAuthorizationRequest, PalActivitySubscriptionResult, PalActivitySubscriptionStore } from './subscription-types.js';
5
+ import type { PalActivityFact, PalActivityReadOptions, PalActivityScope, PalActivitySourceOptions } from './types.js';
6
+ export declare class PalActivitySubscriptionDeniedError extends Error {
7
+ readonly name = "PalActivitySubscriptionDeniedError";
8
+ constructor();
9
+ }
10
+ export interface PalActivitySubscriptionRunnerOptions {
11
+ readonly subscriptions: PalActivitySubscriptionStore;
12
+ readonly ingress: PalIngressStore;
13
+ readonly pals: PalStore;
14
+ readonly openJournal: PalActivitySourceOptions['openJournal'];
15
+ /**
16
+ * Trusted current host policy. Observation, disclosure and receipt are independent decisions;
17
+ * the final `accept` phase must require all three together under current consent.
18
+ */
19
+ readonly authorize: (request: PalActivitySubscriptionAuthorizationRequest, signal: AbortSignal) => Promise<PalMessageAuthorization>;
20
+ /**
21
+ * Resolve prior subscription IDs from original turn delivery evidence retained by the host.
22
+ * An independent turn yields []; unknown or incomplete evidence must reject. Never accept
23
+ * a model, renderer or remote client's assertion about its own provenance.
24
+ */
25
+ readonly resolveCausality: (scope: PalActivityScope, fact: PalActivityFact, signal: AbortSignal) => Promise<readonly string[]>;
26
+ readonly now?: () => number;
27
+ /** Hint only. Observer failures and pending promises cannot prevent acceptance/progress. */
28
+ readonly notify?: (palId: string) => void | Promise<void>;
29
+ }
30
+ /** One bounded page, no daemon and no inference. Progress follows durable inbox acceptance. */
31
+ export declare function publishPalActivityOnce(options: PalActivitySubscriptionRunnerOptions, id: string, input: Omit<PalActivityReadOptions, 'cursor'>): Promise<PalActivitySubscriptionResult>;
32
+ //# sourceMappingURL=subscriptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptions.d.ts","sourceRoot":"","sources":["../../../src/pals/activity/subscriptions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,mCAAmC,CAAA;AAE9F,OAAO,KAAK,EAAE,uBAAuB,EAAmB,MAAM,2BAA2B,CAAA;AACzF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAG3C,OAAO,KAAK,EACX,2CAA2C,EAC3C,6BAA6B,EAC7B,4BAA4B,EAC5B,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EACX,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,wBAAwB,EACxB,MAAM,YAAY,CAAA;AAEnB,qBAAa,kCAAmC,SAAQ,KAAK;IAC5D,SAAkB,IAAI,wCAAuC;;CAI7D;AAED,MAAM,WAAW,oCAAoC;IACpD,QAAQ,CAAC,aAAa,EAAE,4BAA4B,CAAA;IACpD,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;IACjC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAC,aAAa,CAAC,CAAA;IAC7D;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,CACnB,OAAO,EAAE,2CAA2C,EACpD,MAAM,EAAE,WAAW,KACf,OAAO,CAAC,uBAAuB,CAAC,CAAA;IACrC;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,EAAE,CAC1B,KAAK,EAAE,gBAAgB,EACvB,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,WAAW,KACf,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAA;IAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAC3B,4FAA4F;IAC5F,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACzD;AAED,+FAA+F;AAC/F,wBAAsB,sBAAsB,CAC3C,OAAO,EAAE,oCAAoC,EAC7C,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,IAAI,CAAC,sBAAsB,EAAE,QAAQ,CAAC,GAC3C,OAAO,CAAC,6BAA6B,CAAC,CAmJxC"}
@@ -0,0 +1,151 @@
1
+ import { isDeepStrictEqual } from 'node:util';
2
+ import { z } from 'zod';
3
+ import { ingressIntentDigest, ingressIntentId } from '../communication/ingress-schema.js';
4
+ import { freezeCommunicationValue, hash, label } from '../communication/schema.js';
5
+ import { createPalActivitySource } from './source.js';
6
+ import { subscriptionSchema } from './subscription-schema.js';
7
+ export class PalActivitySubscriptionDeniedError extends Error {
8
+ name = 'PalActivitySubscriptionDeniedError';
9
+ constructor() {
10
+ super('Current Pal observation, disclosure and recipient consent are required.');
11
+ }
12
+ }
13
+ /** One bounded page, no daemon and no inference. Progress follows durable inbox acceptance. */
14
+ export async function publishPalActivityOnce(options, id, input) {
15
+ const subscriptionId = z.string().uuid().parse(id);
16
+ const { signal } = input;
17
+ const { subscriptions, ingress, pals, openJournal, authorize, resolveCausality, notify } = options;
18
+ const now = options.now ?? Date.now;
19
+ if (typeof authorize !== 'function' ||
20
+ typeof resolveCausality !== 'function' ||
21
+ typeof openJournal !== 'function')
22
+ throw new TypeError('Pal subscriptions require trusted policy, causality and original journal ports.');
23
+ signal.throwIfAborted();
24
+ const stored = await subscriptions.get(subscriptionId);
25
+ if (!stored)
26
+ throw new PalActivitySubscriptionDeniedError();
27
+ const subscription = freezeCommunicationValue(subscriptionSchema.parse(stored));
28
+ async function current() {
29
+ signal.throwIfAborted();
30
+ const value = await subscriptions.get(subscriptionId);
31
+ signal.throwIfAborted();
32
+ if (!value?.enabled ||
33
+ value.configurationRevision !== subscription.configurationRevision ||
34
+ !isDeepStrictEqual(value.scope, subscription.scope) ||
35
+ !isDeepStrictEqual(value.recipient, subscription.recipient))
36
+ throw new PalActivitySubscriptionDeniedError();
37
+ }
38
+ async function permitted(phase, fact) {
39
+ await current();
40
+ const decision = await authorize(freezeCommunicationValue({
41
+ phase,
42
+ subscription,
43
+ ...(fact ? { fact } : {}),
44
+ }), signal);
45
+ signal.throwIfAborted();
46
+ if (!decision.allow)
47
+ throw new PalActivitySubscriptionDeniedError();
48
+ const grant = freezeCommunicationValue(z.object({ id: label, revision: label }).strict().parse(decision.grant));
49
+ await current();
50
+ return grant;
51
+ }
52
+ const source = createPalActivitySource({
53
+ scope: subscription.scope,
54
+ pals,
55
+ openJournal,
56
+ async authorize() {
57
+ await permitted('observe');
58
+ return true;
59
+ },
60
+ });
61
+ const page = await source.read({
62
+ signal,
63
+ maxRecords: input.maxRecords,
64
+ maxReadBytes: input.maxReadBytes,
65
+ ...(subscription.cursor ? { cursor: subscription.cursor } : {}),
66
+ });
67
+ const accepted = [];
68
+ const suppressed = [];
69
+ for (const fact of page.facts) {
70
+ const observed = await permitted('observe', fact);
71
+ const lineage = z
72
+ .array(z.string().uuid())
73
+ .refine((ids) => new Set(ids).size === ids.length)
74
+ .parse(await resolveCausality(subscription.scope, fact, signal));
75
+ signal.throwIfAborted();
76
+ await current();
77
+ if (lineage.includes(subscription.id)) {
78
+ suppressed.push(fact.id);
79
+ continue;
80
+ }
81
+ const disclosed = await permitted('disclose', fact);
82
+ const received = await permitted('receive', fact);
83
+ const recipient = pals.get(subscription.recipient.palId);
84
+ if (!recipient)
85
+ throw new PalActivitySubscriptionDeniedError();
86
+ const acceptedGrant = await permitted('accept', fact);
87
+ const draft = {
88
+ kind: 'observation',
89
+ operationId: fact.id,
90
+ source: {
91
+ kind: 'host-observation',
92
+ subscriptionId: subscription.id,
93
+ scope: subscription.scope,
94
+ },
95
+ recipient: subscription.recipient,
96
+ routeKey: {
97
+ v: 1,
98
+ kind: 'observation',
99
+ recipient: subscription.recipient,
100
+ subscriptionId: subscription.id,
101
+ scope: subscription.scope,
102
+ },
103
+ fact,
104
+ subscriptionTrail: [...lineage, subscription.id],
105
+ replyTo: null,
106
+ grant: {
107
+ id: hash([
108
+ 'pal-observation-grants/1',
109
+ subscription.id,
110
+ observed.id,
111
+ disclosed.id,
112
+ received.id,
113
+ acceptedGrant.id,
114
+ ]),
115
+ revision: hash([
116
+ subscription.configurationRevision,
117
+ observed.revision,
118
+ disclosed.revision,
119
+ received.revision,
120
+ acceptedGrant.revision,
121
+ ]),
122
+ },
123
+ createdAt: now(),
124
+ };
125
+ const intentId = ingressIntentId(draft);
126
+ const intent = freezeCommunicationValue({
127
+ ...draft,
128
+ id: intentId,
129
+ digest: ingressIntentDigest({ ...draft, id: intentId }),
130
+ });
131
+ await ingress.acceptIngress(intent, recipient.revision);
132
+ accepted.push(intent.id);
133
+ if (notify) {
134
+ try {
135
+ Promise.resolve(notify(subscription.recipient.palId)).catch(() => { });
136
+ }
137
+ catch { }
138
+ }
139
+ }
140
+ await permitted('observe');
141
+ const next = subscription.cursor && isDeepStrictEqual(subscription.cursor, page.cursor)
142
+ ? subscription
143
+ : await subscriptions.advance(subscription, page.cursor);
144
+ return freezeCommunicationValue({
145
+ subscription: next,
146
+ accepted,
147
+ suppressed,
148
+ complete: page.complete,
149
+ });
150
+ }
151
+ //# sourceMappingURL=subscriptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptions.js","sourceRoot":"","sources":["../../../src/pals/activity/subscriptions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ import type { LogBytes } from '../../store/session-log/chain.js';
2
+ import type { SessionLog } from '../../store/session-log/core.js';
3
+ import type { ActivityStatus, ActivityType } from '../../types/activity/index.js';
4
+ import type { ActivityId, CheckpointId, ProjectId, SessionId, TenantId, ToolUseId, TurnId } from '../../types/ids/index.js';
5
+ import type { RecordPointer } from '../../types/session/records.js';
6
+ import type { PalStore } from '../types.js';
7
+ export interface PalActivityScope {
8
+ readonly tenantId: TenantId;
9
+ readonly projectId: ProjectId;
10
+ readonly palId: string;
11
+ readonly profileRevision: number;
12
+ readonly sessionId: SessionId;
13
+ }
14
+ /**
15
+ * An unchanged previously emitted cursor, stored and resolved by the trusted host.
16
+ * Never accept a model, renderer or remote client's anchor directly. scopeHash binds
17
+ * ownership but does not authenticate a cursor; consumed prefixes are not rescanned.
18
+ */
19
+ export interface PalActivityCursor {
20
+ readonly v: 1;
21
+ readonly scopeHash: string;
22
+ readonly root: RecordPointer;
23
+ readonly after: RecordPointer;
24
+ readonly generation: number;
25
+ }
26
+ export type PalActivityFactType = 'turn_started' | 'turn_resuming' | 'turn_paused' | 'turn_completed' | 'turn_failed' | 'activity_created' | 'activity_updated' | 'tool_executing' | 'tool_completed' | 'tool_review_requested' | 'tool_review_completed' | 'checkpoint_created';
27
+ /** Allow-listed facts only. No descriptions, tool names, arguments, results or errors. */
28
+ export interface PalActivityFact {
29
+ readonly id: string;
30
+ readonly type: PalActivityFactType;
31
+ readonly sessionId: SessionId;
32
+ readonly turnId?: TurnId;
33
+ readonly seq: number;
34
+ readonly generation: number;
35
+ readonly at: string;
36
+ readonly activityId?: ActivityId;
37
+ readonly activityType?: ActivityType;
38
+ readonly status?: ActivityStatus;
39
+ readonly toolUseId?: ToolUseId;
40
+ readonly checkpointId?: CheckpointId;
41
+ readonly reviewDecision?: 'approved' | 'modified' | 'rejected';
42
+ }
43
+ /** Host-owned read ports MUST address the same original journal, never a transcript cache. */
44
+ export interface PalActivityJournal {
45
+ readonly log: Pick<SessionLog, 'sessionId'>;
46
+ readonly bytes: LogBytes;
47
+ }
48
+ export interface PalActivitySourceOptions {
49
+ readonly scope: PalActivityScope;
50
+ readonly pals: PalStore;
51
+ /** Current observation consent; checked before opening, original byte reads and output. */
52
+ readonly authorize: (scope: PalActivityScope, signal: AbortSignal) => Promise<boolean>;
53
+ readonly openJournal: (scope: PalActivityScope, signal: AbortSignal) => Promise<PalActivityJournal>;
54
+ }
55
+ export interface PalActivityReadOptions {
56
+ readonly signal: AbortSignal;
57
+ /** Trusted host-stored output of an earlier read; never untrusted client input. */
58
+ readonly cursor?: PalActivityCursor;
59
+ /** Maximum new history records inspected, including omitted records, excluding anchors (1–256). */
60
+ readonly maxRecords: number;
61
+ /** Total bytes requested from the journal, including root/cursor anchors (1–16 MiB). */
62
+ readonly maxReadBytes: number;
63
+ }
64
+ export interface PalActivityPage {
65
+ readonly scope: PalActivityScope;
66
+ readonly facts: readonly PalActivityFact[];
67
+ readonly cursor: PalActivityCursor;
68
+ /** Only the captured byte boundary was reached; later appends require another read. */
69
+ readonly complete: boolean;
70
+ readonly scannedRecords: number;
71
+ readonly readBytes: number;
72
+ }
73
+ export interface PalActivitySource {
74
+ readonly scope: PalActivityScope;
75
+ read(options: PalActivityReadOptions): Promise<PalActivityPage>;
76
+ }
77
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/pals/activity/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/pals/activity/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import type { PalChannelIngressOptions } from './types.js';
2
+ /** Authenticated channel ingress. Raw event fields never choose host credentials or Namzu identities. */
3
+ export declare class PalChannelIngress {
4
+ private readonly connection;
5
+ private readonly options;
6
+ constructor(options: PalChannelIngressOptions);
7
+ accept(raw: unknown, signal?: AbortSignal): Promise<import("../communication/types.js").PalMessageReceipt>;
8
+ }
9
+ //# sourceMappingURL=ingress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingress.d.ts","sourceRoot":"","sources":["../../../src/pals/channels/ingress.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAkC,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAE1F,yGAAyG;AACzG,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAA;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;gBACtC,OAAO,EAAE,wBAAwB;IAYvC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,GAAE,WAA0C;CAwH7E"}
@@ -0,0 +1,131 @@
1
+ import { isDeepStrictEqual } from 'node:util';
2
+ import { ingressIntentDigest, ingressIntentId, ingressIntentSchema, } from '../communication/ingress-schema.js';
3
+ import { addressSchema, freezeCommunicationValue } from '../communication/schema.js';
4
+ import { captureConnection, checkedDecision, checkedIdentity, verifiedMessageSchema, } from './schema.js';
5
+ /** Authenticated channel ingress. Raw event fields never choose host credentials or Namzu identities. */
6
+ export class PalChannelIngress {
7
+ connection;
8
+ options;
9
+ constructor(options) {
10
+ if (typeof options.verify !== 'function' ||
11
+ typeof options.authorize !== 'function' ||
12
+ typeof options.selectRecipient !== 'function')
13
+ throw new Error('Channel ingress requires trusted verification, target selection and current authorization.');
14
+ this.connection = captureConnection(options.connection);
15
+ this.options = Object.freeze({ ...options });
16
+ }
17
+ async accept(raw, signal = new AbortController().signal) {
18
+ signal.throwIfAborted();
19
+ // Capture before the verifier's first asynchronous boundary, including JavaScript host input.
20
+ const event = freezeCommunicationValue(verifiedMessageSchema.parse(await this.options.verify(structuredClone(raw), this.connection, signal)));
21
+ signal.throwIfAborted();
22
+ const source = checkedIdentity(this.connection, {
23
+ externalTenantId: event.externalTenantId,
24
+ nativeConversationId: event.nativeConversationId,
25
+ nativeChannelId: event.nativeChannelId,
26
+ nativeThreadId: event.nativeThreadId,
27
+ actorId: event.actorId,
28
+ eventId: event.eventId,
29
+ kind: 'channel',
30
+ tenantId: this.connection.tenantId,
31
+ provider: this.connection.provider,
32
+ connectionId: this.connection.connectionId,
33
+ });
34
+ const identity = {
35
+ provider: source.provider,
36
+ connectionId: source.connectionId,
37
+ externalTenantId: source.externalTenantId,
38
+ nativeConversationId: source.nativeConversationId,
39
+ nativeChannelId: source.nativeChannelId,
40
+ nativeThreadId: source.nativeThreadId,
41
+ };
42
+ const { routes, pals, store } = this.options;
43
+ const existing = await routes.get(this.connection, identity);
44
+ let decision = existing ? checkedDecision(existing) : null;
45
+ if (!decision) {
46
+ const recipient = freezeCommunicationValue(addressSchema.parse(await this.options.selectRecipient(event, this.connection)));
47
+ if (recipient.tenantId !== this.connection.tenantId)
48
+ throw new Error('Cross-tenant channel routing is refused.');
49
+ const pal = pals.get(recipient.palId);
50
+ if (!pal)
51
+ throw new Error('Channel recipient Pal is unavailable.');
52
+ decision = checkedDecision({
53
+ v: 1,
54
+ revision: 1,
55
+ identity,
56
+ recipient,
57
+ profileRevision: pal.revision,
58
+ });
59
+ }
60
+ const request = freezeCommunicationValue({
61
+ phase: 'accept',
62
+ kind: 'channel',
63
+ source,
64
+ recipient: decision.recipient,
65
+ routeKey: {
66
+ v: 1,
67
+ kind: 'channel',
68
+ ...identity,
69
+ recipient: decision.recipient,
70
+ },
71
+ body: event.body,
72
+ replyTo: null,
73
+ });
74
+ let allowed = freezeCommunicationValue(structuredClone(await this.options.authorize(request)));
75
+ signal.throwIfAborted();
76
+ if (allowed.allow !== true)
77
+ throw new Error(`Channel ingress refused: ${allowed.reason}`);
78
+ // Only authorized traffic can publish a routing decision. Concurrent first events share one target.
79
+ const reserved = checkedDecision(await routes.reserve(decision));
80
+ if (!isDeepStrictEqual(reserved, decision))
81
+ throw new Error('Channel routing decision changed during acceptance.');
82
+ decision = reserved;
83
+ pals.getRevision(decision.recipient.palId, decision.profileRevision);
84
+ if (!pals.get(decision.recipient.palId))
85
+ throw new Error('Channel recipient Pal is unavailable.');
86
+ // Routing publication can await another process. Re-read event authority before committing its input.
87
+ allowed = freezeCommunicationValue(structuredClone(await this.options.authorize(request)));
88
+ signal.throwIfAborted();
89
+ if (allowed.allow !== true)
90
+ throw new Error(`Channel ingress refused: ${allowed.reason}`);
91
+ const intent = {
92
+ kind: 'channel',
93
+ source,
94
+ recipient: decision.recipient,
95
+ routeKey: request.routeKey,
96
+ body: event.body,
97
+ replyTo: null,
98
+ operationId: source.eventId,
99
+ grant: allowed.grant,
100
+ createdAt: (this.options.now ?? Date.now)(),
101
+ };
102
+ const identified = { ...intent, id: ingressIntentId(intent) };
103
+ const immutable = freezeCommunicationValue(ingressIntentSchema.parse({
104
+ ...identified,
105
+ digest: ingressIntentDigest(identified),
106
+ }));
107
+ signal.throwIfAborted();
108
+ const receipt = await store.acceptIngress(immutable, decision.profileRevision);
109
+ const binding = await store.routeIngress(immutable.routeKey);
110
+ if (!binding ||
111
+ binding.sessionId !== receipt.sessionId ||
112
+ binding.profileRevision !== decision.profileRevision)
113
+ throw new Error('Channel acceptance does not match its immutable target binding.');
114
+ const report = (error) => {
115
+ try {
116
+ void Promise.resolve(this.options.onNotificationError?.(error, receipt)).catch(() => undefined);
117
+ }
118
+ catch {
119
+ /* Committed receipt remains accepted. */
120
+ }
121
+ };
122
+ try {
123
+ void Promise.resolve(this.options.host?.notify?.(decision.recipient)).catch(report);
124
+ }
125
+ catch (error) {
126
+ report(error);
127
+ }
128
+ return receipt;
129
+ }
130
+ }
131
+ //# sourceMappingURL=ingress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingress.js","sourceRoot":"","sources":["../../../src/pals/channels/ingress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { PalChannelIdentity } from '../communication/ingress-types.js';
2
+ import type { PalChannelConnection, PalChannelRouteDecision, PalChannelRoutes } from './types.js';
3
+ export declare class PalChannelRouteConflictError extends Error {
4
+ readonly name = "PalChannelRouteConflictError";
5
+ }
6
+ /** Immutable target decisions only. Session and delivery ownership remain in PalIngressStore. */
7
+ export declare class DiskPalChannelRoutes implements PalChannelRoutes {
8
+ private readonly root;
9
+ private readonly secure;
10
+ private readonly records;
11
+ constructor(options: {
12
+ root: string;
13
+ secureDirectory?: (path: string) => void;
14
+ });
15
+ private directory;
16
+ private location;
17
+ get(input: PalChannelConnection, value: PalChannelIdentity): Promise<PalChannelRouteDecision | null>;
18
+ reserve(input: PalChannelRouteDecision): Promise<PalChannelRouteDecision>;
19
+ }
20
+ //# sourceMappingURL=routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/pals/channels/routes.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAE3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEjG,qBAAa,4BAA6B,SAAQ,KAAK;IACtD,SAAkB,IAAI,kCAAiC;CACvD;AAcD,iGAAiG;AACjG,qBAAa,oBAAqB,YAAW,gBAAgB;IAC5D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAIvB;gBACW,OAAO,EAAE;QACpB,IAAI,EAAE,MAAM,CAAA;QACZ,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;KACxC;IASD,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,QAAQ;IAsBV,GAAG,CAAC,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,kBAAkB;IAsB1D,OAAO,CAAC,KAAK,EAAE,uBAAuB;CAmB5C"}
@@ -0,0 +1,111 @@
1
+ import { chmodSync, lstatSync, mkdirSync, readdirSync, realpathSync } from 'node:fs';
2
+ import { join, resolve } from 'node:path';
3
+ import { isDeepStrictEqual } from 'node:util';
4
+ import { DiskRevisionRecordStore } from '../../store/kv/revision-record-store.js';
5
+ import { defineSchema } from '../../store/schema.js';
6
+ import { channelRouteKeySchema } from '../communication/ingress-schema.js';
7
+ import { captureConnection, checkedDecision, decisionId } from './schema.js';
8
+ export class PalChannelRouteConflictError extends Error {
9
+ name = 'PalChannelRouteConflictError';
10
+ }
11
+ class ExistingDecision extends Error {
12
+ decision;
13
+ constructor(decision) {
14
+ super('Existing immutable channel route.');
15
+ this.decision = decision;
16
+ }
17
+ }
18
+ function storedDecision(value) {
19
+ // DiskRecordStore validates its own envelope; it is not part of the public route identity.
20
+ const { schemaVersion: _version, ...body } = value;
21
+ return checkedDecision(body);
22
+ }
23
+ /** Immutable target decisions only. Session and delivery ownership remain in PalIngressStore. */
24
+ export class DiskPalChannelRoutes {
25
+ root;
26
+ secure;
27
+ records = new DiskRevisionRecordStore(defineSchema({ kind: 'pal-channel-route', current: 1, migrations: {} }), 'Pal channel route', (record) => record.revision);
28
+ constructor(options) {
29
+ this.root = resolve(options.root);
30
+ this.secure =
31
+ options.secureDirectory ??
32
+ ((path) => {
33
+ if (process.platform !== 'win32')
34
+ chmodSync(path, 0o700);
35
+ });
36
+ this.directory(this.root);
37
+ }
38
+ directory(path) {
39
+ mkdirSync(path, { recursive: true, mode: 0o700 });
40
+ const entry = lstatSync(path);
41
+ if (!entry.isDirectory() || entry.isSymbolicLink() || realpathSync(path) !== path)
42
+ throw new Error('Channel routes require real directories without aliases.');
43
+ this.secure(path);
44
+ }
45
+ location(id) {
46
+ this.directory(this.root);
47
+ const directory = join(this.root, id);
48
+ this.directory(directory);
49
+ const revisionsDir = join(directory, 'revisions');
50
+ this.directory(revisionsDir);
51
+ for (const name of readdirSync(revisionsDir)) {
52
+ if (!/^[1-9][0-9]*\.json$/u.test(name))
53
+ continue;
54
+ const entry = lstatSync(join(revisionsDir, name));
55
+ if (!entry.isFile() || entry.isSymbolicLink())
56
+ throw new Error('Channel route commits must be real files.');
57
+ }
58
+ const legacyPath = join(directory, 'route.json');
59
+ try {
60
+ const legacy = lstatSync(legacyPath);
61
+ if (!legacy.isFile() || legacy.isSymbolicLink())
62
+ throw new Error('Channel route projections must be real files.');
63
+ }
64
+ catch (error) {
65
+ if (error.code !== 'ENOENT')
66
+ throw error;
67
+ }
68
+ return { legacyPath, revisionsDir, publishLegacyProjection: false };
69
+ }
70
+ async get(input, value) {
71
+ const connection = captureConnection(input);
72
+ const identity = channelRouteKeySchema
73
+ .omit({ v: true, kind: true, recipient: true })
74
+ .parse(value);
75
+ if (identity.provider !== connection.provider ||
76
+ identity.connectionId !== connection.connectionId ||
77
+ identity.externalTenantId !== connection.externalTenantId)
78
+ throw new Error('Foreign channel route connection.');
79
+ const id = decisionId({
80
+ identity,
81
+ recipient: { tenantId: connection.tenantId, palId: '' },
82
+ });
83
+ const stored = await this.records.read(this.location(id));
84
+ if (!stored)
85
+ return null;
86
+ const decision = storedDecision(stored);
87
+ if (decisionId(decision) !== id || !isDeepStrictEqual(decision.identity, identity))
88
+ throw new Error('Channel route identity changed.');
89
+ return decision;
90
+ }
91
+ async reserve(input) {
92
+ const decision = checkedDecision(input);
93
+ try {
94
+ return await this.records.transact(this.location(decisionId(decision)), (stored) => {
95
+ if (stored) {
96
+ const current = storedDecision(stored);
97
+ if (!isDeepStrictEqual(current, decision))
98
+ throw new PalChannelRouteConflictError('This native conversation already has an immutable Pal target.');
99
+ throw new ExistingDecision(current);
100
+ }
101
+ return { record: decision, result: decision };
102
+ });
103
+ }
104
+ catch (error) {
105
+ if (error instanceof ExistingDecision)
106
+ return error.decision;
107
+ throw error;
108
+ }
109
+ }
110
+ }
111
+ //# sourceMappingURL=routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/pals/channels/routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { InboundDeliveryRef } from '../../types/message/inbound-delivery.js';
2
+ import type { PalChannelExecutionContext, PalChannelResolvedRoute, PalChannelRouterOptions } from './types.js';
3
+ /** Resolves original authenticated destinations. It does not imply remote delivery. */
4
+ export declare class PalChannelRouter {
5
+ private readonly options;
6
+ private readonly connection;
7
+ constructor(options: PalChannelRouterOptions);
8
+ private assertRecipient;
9
+ private recorded;
10
+ private resolve;
11
+ replyRoute(input: InboundDeliveryRef, execution: PalChannelExecutionContext, signal?: AbortSignal): Promise<PalChannelResolvedRoute>;
12
+ actionRoute(raw: unknown, execution: PalChannelExecutionContext, signal?: AbortSignal): Promise<{
13
+ route: PalChannelResolvedRoute;
14
+ action: {
15
+ kind: "action";
16
+ payload: string;
17
+ externalTenantId: string;
18
+ nativeConversationId: string;
19
+ nativeChannelId: string | null;
20
+ nativeThreadId: string | null;
21
+ actorId: string;
22
+ eventId: string;
23
+ deliveryRef: {
24
+ id: string;
25
+ digest: string;
26
+ namespace: "namzu-pal-channel/1";
27
+ };
28
+ actionId: string;
29
+ payloadDigest: string;
30
+ };
31
+ }>;
32
+ executeAction(raw: unknown, execution: PalChannelExecutionContext, signal?: AbortSignal): Promise<{
33
+ status: "rejected" | "applied";
34
+ receiptId: string;
35
+ }>;
36
+ }
37
+ //# sourceMappingURL=routing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../../src/pals/channels/routing.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAA;AAQjF,OAAO,KAAK,EACX,0BAA0B,EAC1B,uBAAuB,EACvB,uBAAuB,EAEvB,MAAM,YAAY,CAAA;AAiBnB,uFAAuF;AACvF,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAA;gBACf,OAAO,EAAE,uBAAuB;IAM5C,OAAO,CAAC,eAAe;YAOT,QAAQ;YAiDR,OAAO;IAqDf,UAAU,CACf,KAAK,EAAE,kBAAkB,EACzB,SAAS,EAAE,0BAA0B,EACrC,MAAM,GAAE,WAA0C;IAO7C,WAAW,CAChB,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,0BAA0B,EACrC,MAAM,GAAE,WAA0C;;;;;;;;;;;;;;;;;;;;IAa7C,aAAa,CAClB,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,0BAA0B,EACrC,MAAM,GAAE,WAA0C;;;;CAenD"}