@namzu/sdk 49.0.0 → 50.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (737) hide show
  1. package/CHANGELOG.md +507 -0
  2. package/README.md +137 -125
  3. package/dist/agents/QueryAgent.d.ts.map +1 -1
  4. package/dist/agents/QueryAgent.js +1 -0
  5. package/dist/agents/QueryAgent.js.map +1 -1
  6. package/dist/agents/examples/SupervisorAgent.d.ts.map +1 -1
  7. package/dist/agents/examples/SupervisorAgent.js +1 -0
  8. package/dist/agents/examples/SupervisorAgent.js.map +1 -1
  9. package/dist/agents/runAgent.d.ts +2 -0
  10. package/dist/agents/runAgent.d.ts.map +1 -1
  11. package/dist/agents/runAgent.js +1 -0
  12. package/dist/agents/runAgent.js.map +1 -1
  13. package/dist/authorization/shell-lexer.d.ts.map +1 -1
  14. package/dist/authorization/shell-lexer.js +16 -1
  15. package/dist/authorization/shell-lexer.js.map +1 -1
  16. package/dist/bridge/acp/permission.d.ts +8 -2
  17. package/dist/bridge/acp/permission.d.ts.map +1 -1
  18. package/dist/bridge/acp/permission.js +1 -0
  19. package/dist/bridge/acp/permission.js.map +1 -1
  20. package/dist/bridge/acp/server.d.ts +25 -1
  21. package/dist/bridge/acp/server.d.ts.map +1 -1
  22. package/dist/bridge/acp/server.js +205 -21
  23. package/dist/bridge/acp/server.js.map +1 -1
  24. package/dist/bridge/acp/tasks.d.ts +5 -0
  25. package/dist/bridge/acp/tasks.d.ts.map +1 -0
  26. package/dist/bridge/acp/tasks.js +19 -0
  27. package/dist/bridge/acp/tasks.js.map +1 -0
  28. package/dist/bridge/acp/update.d.ts.map +1 -1
  29. package/dist/bridge/acp/update.js +148 -13
  30. package/dist/bridge/acp/update.js.map +1 -1
  31. package/dist/config/runtime.d.ts +31 -31
  32. package/dist/connector/mcp/adapter.d.ts.map +1 -1
  33. package/dist/connector/mcp/adapter.js +11 -4
  34. package/dist/connector/mcp/adapter.js.map +1 -1
  35. package/dist/connector/mcp/client.d.ts.map +1 -1
  36. package/dist/connector/mcp/client.js +6 -3
  37. package/dist/connector/mcp/client.js.map +1 -1
  38. package/dist/constants/acp/index.d.ts +3 -0
  39. package/dist/constants/acp/index.d.ts.map +1 -1
  40. package/dist/constants/acp/index.js +3 -0
  41. package/dist/constants/acp/index.js.map +1 -1
  42. package/dist/contracts/a2a.d.ts +80 -80
  43. package/dist/contracts/schemas.d.ts +2 -2
  44. package/dist/contracts/session/schemas.d.ts +10 -10
  45. package/dist/manager/agent/lifecycle.d.ts +11 -0
  46. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  47. package/dist/manager/agent/lifecycle.js +178 -3
  48. package/dist/manager/agent/lifecycle.js.map +1 -1
  49. package/dist/manager/plan/lifecycle.d.ts +7 -8
  50. package/dist/manager/plan/lifecycle.d.ts.map +1 -1
  51. package/dist/manager/plan/lifecycle.js +7 -8
  52. package/dist/manager/plan/lifecycle.js.map +1 -1
  53. package/dist/manager/resident/consumption.d.ts +8 -8
  54. package/dist/manager/resident/learning-cycle.d.ts +2 -2
  55. package/dist/manager/resident/learning-observation.d.ts +12 -12
  56. package/dist/manager/resident/learning.d.ts +82 -82
  57. package/dist/manager/resident/outbox.d.ts +8 -8
  58. package/dist/manager/resident/proposal.d.ts +2 -2
  59. package/dist/manager/resident/store.d.ts +10 -10
  60. package/dist/manager/session/attribution.d.ts +1 -0
  61. package/dist/manager/session/attribution.d.ts.map +1 -1
  62. package/dist/manager/session/attribution.js +9 -1
  63. package/dist/manager/session/attribution.js.map +1 -1
  64. package/dist/manager/session/streamed-message-identity.d.ts +6 -0
  65. package/dist/manager/session/streamed-message-identity.d.ts.map +1 -0
  66. package/dist/manager/session/streamed-message-identity.js +14 -0
  67. package/dist/manager/session/streamed-message-identity.js.map +1 -0
  68. package/dist/manager/session/turn-recorder.d.ts.map +1 -1
  69. package/dist/manager/session/turn-recorder.js +4 -3
  70. package/dist/manager/session/turn-recorder.js.map +1 -1
  71. package/dist/pals/activity/causality.d.ts +23 -0
  72. package/dist/pals/activity/causality.d.ts.map +1 -0
  73. package/dist/pals/activity/causality.js +205 -0
  74. package/dist/pals/activity/causality.js.map +1 -0
  75. package/dist/pals/activity/projection.d.ts +5 -0
  76. package/dist/pals/activity/projection.d.ts.map +1 -0
  77. package/dist/pals/activity/projection.js +79 -0
  78. package/dist/pals/activity/projection.js.map +1 -0
  79. package/dist/pals/activity/source.d.ts +16 -0
  80. package/dist/pals/activity/source.d.ts.map +1 -0
  81. package/dist/pals/activity/source.js +235 -0
  82. package/dist/pals/activity/source.js.map +1 -0
  83. package/dist/pals/activity/subscription-policy.d.ts +38 -0
  84. package/dist/pals/activity/subscription-policy.d.ts.map +1 -0
  85. package/dist/pals/activity/subscription-policy.js +183 -0
  86. package/dist/pals/activity/subscription-policy.js.map +1 -0
  87. package/dist/pals/activity/subscription-schema.d.ts +353 -0
  88. package/dist/pals/activity/subscription-schema.d.ts.map +1 -0
  89. package/dist/pals/activity/subscription-schema.js +24 -0
  90. package/dist/pals/activity/subscription-schema.js.map +1 -0
  91. package/dist/pals/activity/subscription-store.d.ts +25 -0
  92. package/dist/pals/activity/subscription-store.d.ts.map +1 -0
  93. package/dist/pals/activity/subscription-store.js +152 -0
  94. package/dist/pals/activity/subscription-store.js.map +1 -0
  95. package/dist/pals/activity/subscription-types.d.ts +42 -0
  96. package/dist/pals/activity/subscription-types.d.ts.map +1 -0
  97. package/dist/pals/activity/subscription-types.js +2 -0
  98. package/dist/pals/activity/subscription-types.js.map +1 -0
  99. package/dist/pals/activity/subscriptions.d.ts +32 -0
  100. package/dist/pals/activity/subscriptions.d.ts.map +1 -0
  101. package/dist/pals/activity/subscriptions.js +151 -0
  102. package/dist/pals/activity/subscriptions.js.map +1 -0
  103. package/dist/pals/activity/types.d.ts +77 -0
  104. package/dist/pals/activity/types.d.ts.map +1 -0
  105. package/dist/pals/activity/types.js +2 -0
  106. package/dist/pals/activity/types.js.map +1 -0
  107. package/dist/pals/channels/ingress.d.ts +9 -0
  108. package/dist/pals/channels/ingress.d.ts.map +1 -0
  109. package/dist/pals/channels/ingress.js +131 -0
  110. package/dist/pals/channels/ingress.js.map +1 -0
  111. package/dist/pals/channels/routes.d.ts +20 -0
  112. package/dist/pals/channels/routes.d.ts.map +1 -0
  113. package/dist/pals/channels/routes.js +111 -0
  114. package/dist/pals/channels/routes.js.map +1 -0
  115. package/dist/pals/channels/routing.d.ts +37 -0
  116. package/dist/pals/channels/routing.d.ts.map +1 -0
  117. package/dist/pals/channels/routing.js +150 -0
  118. package/dist/pals/channels/routing.js.map +1 -0
  119. package/dist/pals/channels/schema.d.ts +234 -0
  120. package/dist/pals/channels/schema.d.ts.map +1 -0
  121. package/dist/pals/channels/schema.js +94 -0
  122. package/dist/pals/channels/schema.js.map +1 -0
  123. package/dist/pals/channels/types.d.ts +115 -0
  124. package/dist/pals/channels/types.d.ts.map +1 -0
  125. package/dist/pals/channels/types.js +2 -0
  126. package/dist/pals/channels/types.js.map +1 -0
  127. package/dist/pals/communication/broker.d.ts +8 -0
  128. package/dist/pals/communication/broker.d.ts.map +1 -0
  129. package/dist/pals/communication/broker.js +121 -0
  130. package/dist/pals/communication/broker.js.map +1 -0
  131. package/dist/pals/communication/dispatch.d.ts +4 -0
  132. package/dist/pals/communication/dispatch.d.ts.map +1 -0
  133. package/dist/pals/communication/dispatch.js +57 -0
  134. package/dist/pals/communication/dispatch.js.map +1 -0
  135. package/dist/pals/communication/inbound.d.ts +9 -0
  136. package/dist/pals/communication/inbound.d.ts.map +1 -0
  137. package/dist/pals/communication/inbound.js +155 -0
  138. package/dist/pals/communication/inbound.js.map +1 -0
  139. package/dist/pals/communication/ingress-dispatch.d.ts +5 -0
  140. package/dist/pals/communication/ingress-dispatch.d.ts.map +1 -0
  141. package/dist/pals/communication/ingress-dispatch.js +51 -0
  142. package/dist/pals/communication/ingress-dispatch.js.map +1 -0
  143. package/dist/pals/communication/ingress-inbound.d.ts +9 -0
  144. package/dist/pals/communication/ingress-inbound.d.ts.map +1 -0
  145. package/dist/pals/communication/ingress-inbound.js +222 -0
  146. package/dist/pals/communication/ingress-inbound.js.map +1 -0
  147. package/dist/pals/communication/ingress-schema.d.ts +7829 -0
  148. package/dist/pals/communication/ingress-schema.d.ts.map +1 -0
  149. package/dist/pals/communication/ingress-schema.js +479 -0
  150. package/dist/pals/communication/ingress-schema.js.map +1 -0
  151. package/dist/pals/communication/ingress-types.d.ts +187 -0
  152. package/dist/pals/communication/ingress-types.d.ts.map +1 -0
  153. package/dist/pals/communication/ingress-types.js +73 -0
  154. package/dist/pals/communication/ingress-types.js.map +1 -0
  155. package/dist/pals/communication/operator.d.ts +75 -0
  156. package/dist/pals/communication/operator.d.ts.map +1 -0
  157. package/dist/pals/communication/operator.js +217 -0
  158. package/dist/pals/communication/operator.js.map +1 -0
  159. package/dist/pals/communication/policy.d.ts +41 -0
  160. package/dist/pals/communication/policy.d.ts.map +1 -0
  161. package/dist/pals/communication/policy.js +138 -0
  162. package/dist/pals/communication/policy.js.map +1 -0
  163. package/dist/pals/communication/schema.d.ts +2000 -0
  164. package/dist/pals/communication/schema.d.ts.map +1 -0
  165. package/dist/pals/communication/schema.js +170 -0
  166. package/dist/pals/communication/schema.js.map +1 -0
  167. package/dist/pals/communication/store.d.ts +61 -0
  168. package/dist/pals/communication/store.d.ts.map +1 -0
  169. package/dist/pals/communication/store.js +450 -0
  170. package/dist/pals/communication/store.js.map +1 -0
  171. package/dist/pals/communication/tools.d.ts +23 -0
  172. package/dist/pals/communication/tools.d.ts.map +1 -0
  173. package/dist/pals/communication/tools.js +107 -0
  174. package/dist/pals/communication/tools.js.map +1 -0
  175. package/dist/pals/communication/types.d.ts +168 -0
  176. package/dist/pals/communication/types.d.ts.map +1 -0
  177. package/dist/pals/communication/types.js +24 -0
  178. package/dist/pals/communication/types.js.map +1 -0
  179. package/dist/pals/communication/verify.d.ts +22 -0
  180. package/dist/pals/communication/verify.d.ts.map +1 -0
  181. package/dist/pals/communication/verify.js +142 -0
  182. package/dist/pals/communication/verify.js.map +1 -0
  183. package/dist/pals/lifecycle.d.ts +37 -0
  184. package/dist/pals/lifecycle.d.ts.map +1 -0
  185. package/dist/pals/lifecycle.js +22 -0
  186. package/dist/pals/lifecycle.js.map +1 -0
  187. package/dist/pals/prompt.d.ts +30 -0
  188. package/dist/pals/prompt.d.ts.map +1 -0
  189. package/dist/pals/prompt.js +65 -0
  190. package/dist/pals/prompt.js.map +1 -0
  191. package/dist/pals/reference-images.d.ts +44 -0
  192. package/dist/pals/reference-images.d.ts.map +1 -0
  193. package/dist/pals/reference-images.js +248 -0
  194. package/dist/pals/reference-images.js.map +1 -0
  195. package/dist/pals/runtime.d.ts +46 -0
  196. package/dist/pals/runtime.d.ts.map +1 -0
  197. package/dist/pals/runtime.js +624 -0
  198. package/dist/pals/runtime.js.map +1 -0
  199. package/dist/pals/store.d.ts +26 -0
  200. package/dist/pals/store.d.ts.map +1 -0
  201. package/dist/pals/store.js +334 -0
  202. package/dist/pals/store.js.map +1 -0
  203. package/dist/pals/types.d.ts +145 -0
  204. package/dist/pals/types.d.ts.map +1 -0
  205. package/dist/pals/types.js +2 -0
  206. package/dist/pals/types.js.map +1 -0
  207. package/dist/peers/envelope.js +1 -1
  208. package/dist/peers/envelope.js.map +1 -1
  209. package/dist/peers/protocol.d.ts +83 -83
  210. package/dist/peers/record.d.ts +10 -10
  211. package/dist/plugin/shell-hook.d.ts.map +1 -1
  212. package/dist/plugin/shell-hook.js +7 -2
  213. package/dist/plugin/shell-hook.js.map +1 -1
  214. package/dist/process/kill-tree.d.ts.map +1 -1
  215. package/dist/process/kill-tree.js +9 -1
  216. package/dist/process/kill-tree.js.map +1 -1
  217. package/dist/provider/errors.d.ts +19 -0
  218. package/dist/provider/errors.d.ts.map +1 -1
  219. package/dist/provider/errors.js +123 -2
  220. package/dist/provider/errors.js.map +1 -1
  221. package/dist/public-runtime.d.ts +41 -13
  222. package/dist/public-runtime.d.ts.map +1 -1
  223. package/dist/public-runtime.js +35 -7
  224. package/dist/public-runtime.js.map +1 -1
  225. package/dist/public-tools.d.ts +8 -3
  226. package/dist/public-tools.d.ts.map +1 -1
  227. package/dist/public-tools.js +8 -3
  228. package/dist/public-tools.js.map +1 -1
  229. package/dist/public-types.d.ts +27 -7
  230. package/dist/public-types.d.ts.map +1 -1
  231. package/dist/registry/tool/presentation.d.ts +1 -0
  232. package/dist/registry/tool/presentation.d.ts.map +1 -1
  233. package/dist/registry/tool/presentation.js +9 -7
  234. package/dist/registry/tool/presentation.js.map +1 -1
  235. package/dist/runtime/harness-session/index.d.ts +5 -0
  236. package/dist/runtime/harness-session/index.d.ts.map +1 -0
  237. package/dist/runtime/harness-session/index.js +928 -0
  238. package/dist/runtime/harness-session/index.js.map +1 -0
  239. package/dist/runtime/harness-session/journal.d.ts +37 -0
  240. package/dist/runtime/harness-session/journal.d.ts.map +1 -0
  241. package/dist/runtime/harness-session/journal.js +177 -0
  242. package/dist/runtime/harness-session/journal.js.map +1 -0
  243. package/dist/runtime/harness-session/saved-view.d.ts +8 -0
  244. package/dist/runtime/harness-session/saved-view.d.ts.map +1 -0
  245. package/dist/runtime/harness-session/saved-view.js +112 -0
  246. package/dist/runtime/harness-session/saved-view.js.map +1 -0
  247. package/dist/runtime/jobs/awaited-jobs.d.ts +2 -1
  248. package/dist/runtime/jobs/awaited-jobs.d.ts.map +1 -1
  249. package/dist/runtime/jobs/awaited-jobs.js +2 -1
  250. package/dist/runtime/jobs/awaited-jobs.js.map +1 -1
  251. package/dist/runtime/jobs/registry.d.ts +56 -1
  252. package/dist/runtime/jobs/registry.d.ts.map +1 -1
  253. package/dist/runtime/jobs/registry.js +351 -34
  254. package/dist/runtime/jobs/registry.js.map +1 -1
  255. package/dist/runtime/query/abandon-turn.d.ts +12 -1
  256. package/dist/runtime/query/abandon-turn.d.ts.map +1 -1
  257. package/dist/runtime/query/abandon-turn.js +3 -1
  258. package/dist/runtime/query/abandon-turn.js.map +1 -1
  259. package/dist/runtime/query/checkpoint.d.ts +4 -0
  260. package/dist/runtime/query/checkpoint.d.ts.map +1 -1
  261. package/dist/runtime/query/checkpoint.js +10 -0
  262. package/dist/runtime/query/checkpoint.js.map +1 -1
  263. package/dist/runtime/query/durable-inbound.d.ts +5 -0
  264. package/dist/runtime/query/durable-inbound.d.ts.map +1 -0
  265. package/dist/runtime/query/durable-inbound.js +89 -0
  266. package/dist/runtime/query/durable-inbound.js.map +1 -0
  267. package/dist/runtime/query/events.d.ts +4 -0
  268. package/dist/runtime/query/events.d.ts.map +1 -1
  269. package/dist/runtime/query/events.js +22 -5
  270. package/dist/runtime/query/events.js.map +1 -1
  271. package/dist/runtime/query/executor/tool-call-admission.d.ts +5 -1
  272. package/dist/runtime/query/executor/tool-call-admission.d.ts.map +1 -1
  273. package/dist/runtime/query/executor/tool-call-admission.js +85 -13
  274. package/dist/runtime/query/executor/tool-call-admission.js.map +1 -1
  275. package/dist/runtime/query/executor.d.ts +41 -18
  276. package/dist/runtime/query/executor.d.ts.map +1 -1
  277. package/dist/runtime/query/executor.js +227 -114
  278. package/dist/runtime/query/executor.js.map +1 -1
  279. package/dist/runtime/query/index.d.ts +3 -0
  280. package/dist/runtime/query/index.d.ts.map +1 -1
  281. package/dist/runtime/query/index.js +21 -4
  282. package/dist/runtime/query/index.js.map +1 -1
  283. package/dist/runtime/query/iteration/index.d.ts +18 -6
  284. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  285. package/dist/runtime/query/iteration/index.js +144 -67
  286. package/dist/runtime/query/iteration/index.js.map +1 -1
  287. package/dist/runtime/query/iteration/outstanding-work.d.ts +9 -5
  288. package/dist/runtime/query/iteration/outstanding-work.d.ts.map +1 -1
  289. package/dist/runtime/query/iteration/outstanding-work.js +61 -6
  290. package/dist/runtime/query/iteration/outstanding-work.js.map +1 -1
  291. package/dist/runtime/query/iteration/phases/context.d.ts +4 -0
  292. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  293. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  294. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  295. package/dist/runtime/query/iteration/phases/tool-review.js +99 -16
  296. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  297. package/dist/runtime/query/observation-context.d.ts +2 -2
  298. package/dist/runtime/query/observation-context.d.ts.map +1 -1
  299. package/dist/runtime/query/observation-context.js +20 -13
  300. package/dist/runtime/query/observation-context.js.map +1 -1
  301. package/dist/runtime/query/prepare-turn.js +2 -2
  302. package/dist/runtime/query/prepare-turn.js.map +1 -1
  303. package/dist/runtime/query/prompt-cache.d.ts +1 -0
  304. package/dist/runtime/query/prompt-cache.d.ts.map +1 -1
  305. package/dist/runtime/query/prompt-cache.js +2 -0
  306. package/dist/runtime/query/prompt-cache.js.map +1 -1
  307. package/dist/runtime/query/prompt.d.ts +2 -0
  308. package/dist/runtime/query/prompt.d.ts.map +1 -1
  309. package/dist/runtime/query/prompt.js +23 -1
  310. package/dist/runtime/query/prompt.js.map +1 -1
  311. package/dist/runtime/query/repeat-call.d.ts +12 -3
  312. package/dist/runtime/query/repeat-call.d.ts.map +1 -1
  313. package/dist/runtime/query/repeat-call.js +33 -10
  314. package/dist/runtime/query/repeat-call.js.map +1 -1
  315. package/dist/runtime/query/resume-pending.d.ts +5 -6
  316. package/dist/runtime/query/resume-pending.d.ts.map +1 -1
  317. package/dist/runtime/query/resume-pending.js +30 -3
  318. package/dist/runtime/query/resume-pending.js.map +1 -1
  319. package/dist/runtime/query/resume-session.js +1 -1
  320. package/dist/runtime/query/resume-session.js.map +1 -1
  321. package/dist/runtime/query/review-policy.d.ts +8 -1
  322. package/dist/runtime/query/review-policy.d.ts.map +1 -1
  323. package/dist/runtime/query/review-policy.js +6 -0
  324. package/dist/runtime/query/review-policy.js.map +1 -1
  325. package/dist/runtime/query/saved-presentation.d.ts +13 -0
  326. package/dist/runtime/query/saved-presentation.d.ts.map +1 -0
  327. package/dist/runtime/query/saved-presentation.js +63 -0
  328. package/dist/runtime/query/saved-presentation.js.map +1 -0
  329. package/dist/runtime/query/steering.d.ts +6 -9
  330. package/dist/runtime/query/steering.d.ts.map +1 -1
  331. package/dist/runtime/query/steering.js.map +1 -1
  332. package/dist/runtime/query/tool-executions.d.ts +7 -3
  333. package/dist/runtime/query/tool-executions.d.ts.map +1 -1
  334. package/dist/runtime/query/tool-executions.js +89 -9
  335. package/dist/runtime/query/tool-executions.js.map +1 -1
  336. package/dist/runtime/query/tooling.d.ts +3 -1
  337. package/dist/runtime/query/tooling.d.ts.map +1 -1
  338. package/dist/runtime/query/tooling.js +3 -0
  339. package/dist/runtime/query/tooling.js.map +1 -1
  340. package/dist/scheduler/completion-inbox.d.ts +25 -1
  341. package/dist/scheduler/completion-inbox.d.ts.map +1 -1
  342. package/dist/scheduler/completion-inbox.js +102 -8
  343. package/dist/scheduler/completion-inbox.js.map +1 -1
  344. package/dist/scheduler/delegating.d.ts.map +1 -1
  345. package/dist/scheduler/delegating.js +5 -0
  346. package/dist/scheduler/delegating.js.map +1 -1
  347. package/dist/scheduler/local.d.ts.map +1 -1
  348. package/dist/scheduler/local.js +2 -0
  349. package/dist/scheduler/local.js.map +1 -1
  350. package/dist/session/summary/materialize.d.ts +10 -6
  351. package/dist/session/summary/materialize.d.ts.map +1 -1
  352. package/dist/session/summary/materialize.js +41 -8
  353. package/dist/session/summary/materialize.js.map +1 -1
  354. package/dist/store/budget/ledger.d.ts +9 -0
  355. package/dist/store/budget/ledger.d.ts.map +1 -1
  356. package/dist/store/budget/ledger.js +58 -6
  357. package/dist/store/budget/ledger.js.map +1 -1
  358. package/dist/store/evidence/index-page.d.ts +12 -12
  359. package/dist/store/evidence/source-text.d.ts +4 -4
  360. package/dist/store/session/disk.d.ts +9 -4
  361. package/dist/store/session/disk.d.ts.map +1 -1
  362. package/dist/store/session/disk.js +57 -11
  363. package/dist/store/session/disk.js.map +1 -1
  364. package/dist/store/session/memory.d.ts +5 -3
  365. package/dist/store/session/memory.d.ts.map +1 -1
  366. package/dist/store/session/memory.js +24 -7
  367. package/dist/store/session/memory.js.map +1 -1
  368. package/dist/store/session-log/core.d.ts +26 -6
  369. package/dist/store/session-log/core.d.ts.map +1 -1
  370. package/dist/store/session-log/core.js +61 -8
  371. package/dist/store/session-log/core.js.map +1 -1
  372. package/dist/store/session-log/disk.d.ts +2 -2
  373. package/dist/store/session-log/disk.d.ts.map +1 -1
  374. package/dist/store/session-log/disk.js +1 -0
  375. package/dist/store/session-log/disk.js.map +1 -1
  376. package/dist/store/session-log/fold.d.ts +7 -0
  377. package/dist/store/session-log/fold.d.ts.map +1 -1
  378. package/dist/store/session-log/fold.js +21 -0
  379. package/dist/store/session-log/fold.js.map +1 -1
  380. package/dist/store/session-log/index.d.ts +5 -3
  381. package/dist/store/session-log/index.d.ts.map +1 -1
  382. package/dist/store/session-log/index.js +3 -1
  383. package/dist/store/session-log/index.js.map +1 -1
  384. package/dist/store/session-log/memory.d.ts +1 -1
  385. package/dist/store/session-log/memory.d.ts.map +1 -1
  386. package/dist/store/session-log/memory.js +1 -0
  387. package/dist/store/session-log/memory.js.map +1 -1
  388. package/dist/store/session-log/spill.d.ts +10 -3
  389. package/dist/store/session-log/spill.d.ts.map +1 -1
  390. package/dist/store/session-log/spill.js +70 -5
  391. package/dist/store/session-log/spill.js.map +1 -1
  392. package/dist/store/session-log/structured-result.d.ts +21 -0
  393. package/dist/store/session-log/structured-result.d.ts.map +1 -0
  394. package/dist/store/session-log/structured-result.js +67 -0
  395. package/dist/store/session-log/structured-result.js.map +1 -0
  396. package/dist/store/task/disk.d.ts +11 -0
  397. package/dist/store/task/disk.d.ts.map +1 -1
  398. package/dist/store/task/disk.js +41 -2
  399. package/dist/store/task/disk.js.map +1 -1
  400. package/dist/store/task/memory.d.ts.map +1 -1
  401. package/dist/store/task/memory.js +15 -3
  402. package/dist/store/task/memory.js.map +1 -1
  403. package/dist/tools/admit-facts.d.ts +13 -0
  404. package/dist/tools/admit-facts.d.ts.map +1 -0
  405. package/dist/tools/admit-facts.js +142 -0
  406. package/dist/tools/admit-facts.js.map +1 -0
  407. package/dist/tools/builtins/bash.d.ts +4 -1
  408. package/dist/tools/builtins/bash.d.ts.map +1 -1
  409. package/dist/tools/builtins/bash.js +108 -22
  410. package/dist/tools/builtins/bash.js.map +1 -1
  411. package/dist/tools/builtins/browser.d.ts +10 -10
  412. package/dist/tools/builtins/computer-use.d.ts +90 -90
  413. package/dist/tools/builtins/edit.d.ts +17 -0
  414. package/dist/tools/builtins/edit.d.ts.map +1 -1
  415. package/dist/tools/builtins/edit.js +34 -0
  416. package/dist/tools/builtins/edit.js.map +1 -1
  417. package/dist/tools/builtins/file-write-result.d.ts.map +1 -1
  418. package/dist/tools/builtins/file-write-result.js +13 -0
  419. package/dist/tools/builtins/file-write-result.js.map +1 -1
  420. package/dist/tools/builtins/glob.d.ts.map +1 -1
  421. package/dist/tools/builtins/glob.js +12 -0
  422. package/dist/tools/builtins/glob.js.map +1 -1
  423. package/dist/tools/builtins/grep.d.ts.map +1 -1
  424. package/dist/tools/builtins/grep.js +14 -0
  425. package/dist/tools/builtins/grep.js.map +1 -1
  426. package/dist/tools/builtins/index.d.ts +2 -0
  427. package/dist/tools/builtins/index.d.ts.map +1 -1
  428. package/dist/tools/builtins/index.js +1 -0
  429. package/dist/tools/builtins/index.js.map +1 -1
  430. package/dist/tools/builtins/job.d.ts.map +1 -1
  431. package/dist/tools/builtins/job.js +4 -1
  432. package/dist/tools/builtins/job.js.map +1 -1
  433. package/dist/tools/builtins/lsp.d.ts +2 -2
  434. package/dist/tools/builtins/read-file.d.ts.map +1 -1
  435. package/dist/tools/builtins/read-file.js +49 -0
  436. package/dist/tools/builtins/read-file.js.map +1 -1
  437. package/dist/tools/builtins/view-image.d.ts +24 -0
  438. package/dist/tools/builtins/view-image.d.ts.map +1 -0
  439. package/dist/tools/builtins/view-image.js +385 -0
  440. package/dist/tools/builtins/view-image.js.map +1 -0
  441. package/dist/tools/builtins/wait-for-job-bounds.d.ts +2 -0
  442. package/dist/tools/builtins/wait-for-job-bounds.d.ts.map +1 -1
  443. package/dist/tools/builtins/wait-for-job-bounds.js +1 -0
  444. package/dist/tools/builtins/wait-for-job-bounds.js.map +1 -1
  445. package/dist/tools/builtins/wait-for-job.d.ts +2 -0
  446. package/dist/tools/builtins/wait-for-job.d.ts.map +1 -1
  447. package/dist/tools/builtins/wait-for-job.js +104 -6
  448. package/dist/tools/builtins/wait-for-job.js.map +1 -1
  449. package/dist/tools/builtins/write-file.d.ts.map +1 -1
  450. package/dist/tools/builtins/write-file.js +1 -0
  451. package/dist/tools/builtins/write-file.js.map +1 -1
  452. package/dist/tools/command-shell.d.ts +37 -2
  453. package/dist/tools/command-shell.d.ts.map +1 -1
  454. package/dist/tools/command-shell.js +100 -3
  455. package/dist/tools/command-shell.js.map +1 -1
  456. package/dist/tools/coordinator/agent.d.ts +9 -19
  457. package/dist/tools/coordinator/agent.d.ts.map +1 -1
  458. package/dist/tools/coordinator/agent.js.map +1 -1
  459. package/dist/tools/coordinator/index.d.ts.map +1 -1
  460. package/dist/tools/coordinator/index.js +127 -67
  461. package/dist/tools/coordinator/index.js.map +1 -1
  462. package/dist/tools/coordinator/wait-with-idle-bound.d.ts +2 -0
  463. package/dist/tools/coordinator/wait-with-idle-bound.d.ts.map +1 -1
  464. package/dist/tools/coordinator/wait-with-idle-bound.js +1 -1
  465. package/dist/tools/coordinator/wait-with-idle-bound.js.map +1 -1
  466. package/dist/tools/defineTool.d.ts.map +1 -1
  467. package/dist/tools/defineTool.js +4 -0
  468. package/dist/tools/defineTool.js.map +1 -1
  469. package/dist/tools/failure-facts.d.ts +8 -0
  470. package/dist/tools/failure-facts.d.ts.map +1 -0
  471. package/dist/tools/failure-facts.js +24 -0
  472. package/dist/tools/failure-facts.js.map +1 -0
  473. package/dist/tools/host-output.d.ts +24 -0
  474. package/dist/tools/host-output.d.ts.map +1 -0
  475. package/dist/tools/host-output.js +117 -0
  476. package/dist/tools/host-output.js.map +1 -0
  477. package/dist/tools/oem-code-pages.d.ts +8 -0
  478. package/dist/tools/oem-code-pages.d.ts.map +1 -0
  479. package/dist/tools/oem-code-pages.js +23 -0
  480. package/dist/tools/oem-code-pages.js.map +1 -0
  481. package/dist/tools/schedules/schedule-tool.d.ts.map +1 -1
  482. package/dist/tools/schedules/schedule-tool.js +35 -6
  483. package/dist/tools/schedules/schedule-tool.js.map +1 -1
  484. package/dist/tools/schedules/types.d.ts +23 -3
  485. package/dist/tools/schedules/types.d.ts.map +1 -1
  486. package/dist/tools/task/list.d.ts.map +1 -1
  487. package/dist/tools/task/list.js +14 -6
  488. package/dist/tools/task/list.js.map +1 -1
  489. package/dist/tools/task/present.d.ts.map +1 -1
  490. package/dist/tools/task/present.js +26 -6
  491. package/dist/tools/task/present.js.map +1 -1
  492. package/dist/tools/task/update.d.ts.map +1 -1
  493. package/dist/tools/task/update.js +12 -5
  494. package/dist/tools/task/update.js.map +1 -1
  495. package/dist/tools/text-window.d.ts +19 -0
  496. package/dist/tools/text-window.d.ts.map +1 -0
  497. package/dist/tools/text-window.js +83 -0
  498. package/dist/tools/text-window.js.map +1 -0
  499. package/dist/toolsets/manager.d.ts +11 -0
  500. package/dist/toolsets/manager.d.ts.map +1 -1
  501. package/dist/toolsets/manager.js +45 -1
  502. package/dist/toolsets/manager.js.map +1 -1
  503. package/dist/types/acp/index.d.ts +137 -1
  504. package/dist/types/acp/index.d.ts.map +1 -1
  505. package/dist/types/agent/base.d.ts +3 -0
  506. package/dist/types/agent/base.d.ts.map +1 -1
  507. package/dist/types/agent/manager.d.ts +8 -23
  508. package/dist/types/agent/manager.d.ts.map +1 -1
  509. package/dist/types/agent/scheduler.d.ts +10 -1
  510. package/dist/types/agent/scheduler.d.ts.map +1 -1
  511. package/dist/types/agent/task.d.ts +4 -0
  512. package/dist/types/agent/task.d.ts.map +1 -1
  513. package/dist/types/authorization/index.d.ts +30 -30
  514. package/dist/types/connector/mcp.d.ts +7 -0
  515. package/dist/types/connector/mcp.d.ts.map +1 -1
  516. package/dist/types/errors/catalog.d.ts.map +1 -1
  517. package/dist/types/errors/catalog.js +4 -2
  518. package/dist/types/errors/catalog.js.map +1 -1
  519. package/dist/types/harness/schema.d.ts +354 -0
  520. package/dist/types/harness/schema.d.ts.map +1 -0
  521. package/dist/types/harness/schema.js +203 -0
  522. package/dist/types/harness/schema.js.map +1 -0
  523. package/dist/types/harness/session.d.ts +278 -0
  524. package/dist/types/harness/session.d.ts.map +1 -0
  525. package/dist/types/harness/session.js +2 -0
  526. package/dist/types/harness/session.js.map +1 -0
  527. package/dist/types/hitl/index.d.ts +12 -0
  528. package/dist/types/hitl/index.d.ts.map +1 -1
  529. package/dist/types/hitl/index.js.map +1 -1
  530. package/dist/types/job/index.d.ts +47 -0
  531. package/dist/types/job/index.d.ts.map +1 -0
  532. package/dist/types/job/index.js +2 -0
  533. package/dist/types/job/index.js.map +1 -0
  534. package/dist/types/message/inbound-delivery.d.ts +44 -0
  535. package/dist/types/message/inbound-delivery.d.ts.map +1 -0
  536. package/dist/types/message/inbound-delivery.js +14 -0
  537. package/dist/types/message/inbound-delivery.js.map +1 -0
  538. package/dist/types/message/index.d.ts +4 -1
  539. package/dist/types/message/index.d.ts.map +1 -1
  540. package/dist/types/message/index.js +5 -1
  541. package/dist/types/message/index.js.map +1 -1
  542. package/dist/types/plugin/index.d.ts +6 -6
  543. package/dist/types/sandbox/index.d.ts +39 -2
  544. package/dist/types/sandbox/index.d.ts.map +1 -1
  545. package/dist/types/sandbox/index.js.map +1 -1
  546. package/dist/types/session/checkpoint.d.ts +24 -17
  547. package/dist/types/session/checkpoint.d.ts.map +1 -1
  548. package/dist/types/session/checkpoint.js +1 -0
  549. package/dist/types/session/checkpoint.js.map +1 -1
  550. package/dist/types/session/events.d.ts +23 -1
  551. package/dist/types/session/events.d.ts.map +1 -1
  552. package/dist/types/session/events.js.map +1 -1
  553. package/dist/types/session/records.d.ts +1514 -565
  554. package/dist/types/session/records.d.ts.map +1 -1
  555. package/dist/types/session/records.js +89 -1
  556. package/dist/types/session/records.js.map +1 -1
  557. package/dist/types/session/step.d.ts +2 -0
  558. package/dist/types/session/step.d.ts.map +1 -1
  559. package/dist/types/session/step.js.map +1 -1
  560. package/dist/types/session/store.d.ts +19 -10
  561. package/dist/types/session/store.d.ts.map +1 -1
  562. package/dist/types/session/tool-execution.d.ts +6 -0
  563. package/dist/types/session/tool-execution.d.ts.map +1 -1
  564. package/dist/types/structured-output/index.d.ts +12 -2
  565. package/dist/types/structured-output/index.d.ts.map +1 -1
  566. package/dist/types/summary/ref.d.ts +3 -1
  567. package/dist/types/summary/ref.d.ts.map +1 -1
  568. package/dist/types/tool/index.d.ts +32 -4
  569. package/dist/types/tool/index.d.ts.map +1 -1
  570. package/dist/types/tool/index.js.map +1 -1
  571. package/dist/types/tool/presentation.d.ts +106 -0
  572. package/dist/types/tool/presentation.d.ts.map +1 -1
  573. package/dist/utils/json-snapshot.d.ts +6 -2
  574. package/dist/utils/json-snapshot.d.ts.map +1 -1
  575. package/dist/utils/json-snapshot.js +19 -9
  576. package/dist/utils/json-snapshot.js.map +1 -1
  577. package/dist/utils/structured-result-json.d.ts +5 -0
  578. package/dist/utils/structured-result-json.d.ts.map +1 -0
  579. package/dist/utils/structured-result-json.js +10 -0
  580. package/dist/utils/structured-result-json.js.map +1 -0
  581. package/package.json +1 -1
  582. package/src/agents/QueryAgent.ts +1 -0
  583. package/src/agents/examples/SupervisorAgent.ts +1 -0
  584. package/src/agents/runAgent.ts +3 -0
  585. package/src/authorization/shell-lexer.ts +16 -1
  586. package/src/bridge/acp/permission.ts +17 -3
  587. package/src/bridge/acp/server.ts +271 -25
  588. package/src/bridge/acp/tasks.ts +23 -0
  589. package/src/bridge/acp/update.ts +167 -13
  590. package/src/connector/mcp/adapter.ts +16 -4
  591. package/src/connector/mcp/client.ts +6 -2
  592. package/src/constants/acp/index.ts +4 -0
  593. package/src/manager/agent/lifecycle.ts +230 -3
  594. package/src/manager/plan/lifecycle.ts +11 -9
  595. package/src/manager/session/attribution.ts +12 -2
  596. package/src/manager/session/streamed-message-identity.ts +21 -0
  597. package/src/manager/session/turn-recorder.ts +4 -3
  598. package/src/pals/activity/causality.ts +261 -0
  599. package/src/pals/activity/projection.ts +89 -0
  600. package/src/pals/activity/source.ts +240 -0
  601. package/src/pals/activity/subscription-policy.ts +230 -0
  602. package/src/pals/activity/subscription-schema.ts +27 -0
  603. package/src/pals/activity/subscription-store.ts +172 -0
  604. package/src/pals/activity/subscription-types.ts +48 -0
  605. package/src/pals/activity/subscriptions.ts +209 -0
  606. package/src/pals/activity/types.ts +108 -0
  607. package/src/pals/channels/ingress.ts +153 -0
  608. package/src/pals/channels/routes.ts +118 -0
  609. package/src/pals/channels/routing.ts +197 -0
  610. package/src/pals/channels/schema.ts +108 -0
  611. package/src/pals/channels/types.ts +156 -0
  612. package/src/pals/communication/broker.ts +131 -0
  613. package/src/pals/communication/dispatch.ts +66 -0
  614. package/src/pals/communication/inbound.ts +193 -0
  615. package/src/pals/communication/ingress-dispatch.ts +63 -0
  616. package/src/pals/communication/ingress-inbound.ts +269 -0
  617. package/src/pals/communication/ingress-schema.ts +526 -0
  618. package/src/pals/communication/ingress-types.ts +336 -0
  619. package/src/pals/communication/operator.ts +315 -0
  620. package/src/pals/communication/policy.ts +174 -0
  621. package/src/pals/communication/schema.ts +173 -0
  622. package/src/pals/communication/store.ts +577 -0
  623. package/src/pals/communication/tools.ts +139 -0
  624. package/src/pals/communication/types.ts +227 -0
  625. package/src/pals/communication/verify.ts +220 -0
  626. package/src/pals/lifecycle.ts +54 -0
  627. package/src/pals/prompt.ts +101 -0
  628. package/src/pals/reference-images.ts +322 -0
  629. package/src/pals/runtime.ts +670 -0
  630. package/src/pals/store.ts +369 -0
  631. package/src/pals/types.ts +157 -0
  632. package/src/peers/envelope.ts +1 -1
  633. package/src/plugin/shell-hook.ts +8 -2
  634. package/src/process/kill-tree.ts +10 -1
  635. package/src/provider/errors.ts +135 -2
  636. package/src/public-runtime.ts +117 -12
  637. package/src/public-tools.ts +13 -1
  638. package/src/public-types.ts +69 -7
  639. package/src/registry/tool/presentation.ts +9 -4
  640. package/src/runtime/harness-session/index.ts +1125 -0
  641. package/src/runtime/harness-session/journal.ts +209 -0
  642. package/src/runtime/harness-session/saved-view.ts +122 -0
  643. package/src/runtime/jobs/awaited-jobs.ts +2 -1
  644. package/src/runtime/jobs/registry.ts +397 -41
  645. package/src/runtime/query/abandon-turn.ts +18 -2
  646. package/src/runtime/query/checkpoint.ts +11 -0
  647. package/src/runtime/query/durable-inbound.ts +101 -0
  648. package/src/runtime/query/events.ts +22 -5
  649. package/src/runtime/query/executor/tool-call-admission.ts +125 -32
  650. package/src/runtime/query/executor.ts +316 -130
  651. package/src/runtime/query/index.ts +24 -4
  652. package/src/runtime/query/iteration/index.ts +218 -104
  653. package/src/runtime/query/iteration/outstanding-work.ts +55 -7
  654. package/src/runtime/query/iteration/phases/context.ts +4 -0
  655. package/src/runtime/query/iteration/phases/tool-review.ts +118 -21
  656. package/src/runtime/query/observation-context.ts +22 -16
  657. package/src/runtime/query/prepare-turn.ts +2 -2
  658. package/src/runtime/query/prompt-cache.ts +3 -0
  659. package/src/runtime/query/prompt.ts +32 -1
  660. package/src/runtime/query/repeat-call.ts +40 -10
  661. package/src/runtime/query/resume-pending.ts +60 -7
  662. package/src/runtime/query/resume-session.ts +1 -1
  663. package/src/runtime/query/review-policy.ts +23 -2
  664. package/src/runtime/query/saved-presentation.ts +70 -0
  665. package/src/runtime/query/steering.ts +6 -9
  666. package/src/runtime/query/tool-executions.ts +108 -9
  667. package/src/runtime/query/tooling.ts +6 -1
  668. package/src/scheduler/completion-inbox.ts +108 -7
  669. package/src/scheduler/delegating.ts +5 -0
  670. package/src/scheduler/local.ts +2 -0
  671. package/src/session/summary/materialize.ts +51 -9
  672. package/src/store/budget/ledger.ts +60 -5
  673. package/src/store/session/disk.ts +77 -10
  674. package/src/store/session/memory.ts +32 -7
  675. package/src/store/session-log/core.ts +118 -11
  676. package/src/store/session-log/disk.ts +9 -2
  677. package/src/store/session-log/fold.ts +22 -0
  678. package/src/store/session-log/index.ts +5 -0
  679. package/src/store/session-log/memory.ts +2 -1
  680. package/src/store/session-log/spill.ts +89 -6
  681. package/src/store/session-log/structured-result.ts +96 -0
  682. package/src/store/task/disk.ts +46 -2
  683. package/src/store/task/memory.ts +13 -3
  684. package/src/tools/admit-facts.ts +145 -0
  685. package/src/tools/builtins/bash.ts +132 -24
  686. package/src/tools/builtins/edit.ts +42 -0
  687. package/src/tools/builtins/file-write-result.ts +14 -0
  688. package/src/tools/builtins/glob.ts +12 -0
  689. package/src/tools/builtins/grep.ts +14 -0
  690. package/src/tools/builtins/index.ts +2 -0
  691. package/src/tools/builtins/job.ts +4 -1
  692. package/src/tools/builtins/read-file.ts +57 -0
  693. package/src/tools/builtins/view-image.ts +409 -0
  694. package/src/tools/builtins/wait-for-job-bounds.ts +3 -0
  695. package/src/tools/builtins/wait-for-job.ts +141 -32
  696. package/src/tools/builtins/write-file.ts +4 -2
  697. package/src/tools/command-shell.ts +132 -5
  698. package/src/tools/coordinator/agent.ts +9 -19
  699. package/src/tools/coordinator/index.ts +150 -75
  700. package/src/tools/coordinator/wait-with-idle-bound.ts +3 -1
  701. package/src/tools/defineTool.ts +4 -0
  702. package/src/tools/failure-facts.ts +24 -0
  703. package/src/tools/host-output.ts +136 -0
  704. package/src/tools/oem-code-pages.ts +22 -0
  705. package/src/tools/schedules/schedule-tool.ts +38 -5
  706. package/src/tools/schedules/types.ts +23 -3
  707. package/src/tools/task/list.ts +15 -7
  708. package/src/tools/task/present.ts +37 -7
  709. package/src/tools/task/update.ts +12 -5
  710. package/src/tools/text-window.ts +87 -0
  711. package/src/toolsets/manager.ts +58 -1
  712. package/src/types/acp/index.ts +150 -4
  713. package/src/types/agent/base.ts +3 -0
  714. package/src/types/agent/manager.ts +8 -23
  715. package/src/types/agent/scheduler.ts +10 -1
  716. package/src/types/agent/task.ts +4 -0
  717. package/src/types/connector/mcp.ts +7 -0
  718. package/src/types/errors/catalog.ts +4 -2
  719. package/src/types/harness/schema.ts +203 -0
  720. package/src/types/harness/session.ts +306 -0
  721. package/src/types/hitl/index.ts +17 -1
  722. package/src/types/job/index.ts +42 -0
  723. package/src/types/message/inbound-delivery.ts +63 -0
  724. package/src/types/message/index.ts +8 -1
  725. package/src/types/sandbox/index.ts +46 -0
  726. package/src/types/session/checkpoint.ts +4 -1
  727. package/src/types/session/events.ts +23 -1
  728. package/src/types/session/records.ts +114 -2
  729. package/src/types/session/step.ts +2 -0
  730. package/src/types/session/store.ts +23 -9
  731. package/src/types/session/tool-execution.ts +6 -0
  732. package/src/types/structured-output/index.ts +13 -2
  733. package/src/types/summary/ref.ts +3 -1
  734. package/src/types/tool/index.ts +39 -5
  735. package/src/types/tool/presentation.ts +121 -0
  736. package/src/utils/json-snapshot.ts +26 -9
  737. package/src/utils/structured-result-json.ts +10 -0
@@ -0,0 +1,235 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { z } from 'zod';
3
+ import { parseSessionLogLine } from '../../session/log-hash.js';
4
+ import { SessionLogChain } from '../../store/session-log/chain.js';
5
+ import { SESSION_RECORD_MAX_BYTES } from '../../types/session/records.js';
6
+ import { isEntityId } from '../../utils/id.js';
7
+ import { projectPalActivity } from './projection.js';
8
+ export class PalActivityAccessDeniedError extends Error {
9
+ name = 'PalActivityAccessDeniedError';
10
+ constructor() {
11
+ super('Current Pal activity observation permission is required.');
12
+ }
13
+ }
14
+ export class PalActivityIntegrityError extends Error {
15
+ name = 'PalActivityIntegrityError';
16
+ constructor() {
17
+ super('Pal activity journal ownership or anchor evidence is invalid or incomplete.');
18
+ }
19
+ }
20
+ export class PalActivityReadLimitError extends Error {
21
+ name = 'PalActivityReadLimitError';
22
+ constructor() {
23
+ super('The Pal activity byte budget cannot cover another complete record and its anchors.');
24
+ }
25
+ }
26
+ const positive = z.number().int().positive().safe();
27
+ const digest = z.string().regex(/^[a-f0-9]{64}$/);
28
+ const pointer = z
29
+ .object({
30
+ seq: positive,
31
+ offset: z.number().int().nonnegative().safe(),
32
+ length: positive.max(SESSION_RECORD_MAX_BYTES),
33
+ sha256: digest,
34
+ })
35
+ .strict();
36
+ const scopeSchema = z
37
+ .object({
38
+ tenantId: z.custom((v) => isEntityId(v, 'tenant')),
39
+ projectId: z.custom((v) => isEntityId(v, 'project')),
40
+ sessionId: z.custom((v) => isEntityId(v, 'session')),
41
+ palId: z.string().uuid(),
42
+ profileRevision: positive,
43
+ })
44
+ .strict();
45
+ const cursorSchema = z
46
+ .object({
47
+ v: z.literal(1),
48
+ scopeHash: digest,
49
+ root: pointer,
50
+ after: pointer,
51
+ generation: z.number().int().nonnegative().safe(),
52
+ })
53
+ .strict();
54
+ function samePointer(one, two) {
55
+ return (one.seq === two.seq &&
56
+ one.offset === two.offset &&
57
+ one.length === two.length &&
58
+ one.sha256 === two.sha256);
59
+ }
60
+ function immutableCursor(value) {
61
+ return Object.freeze({
62
+ ...value,
63
+ root: Object.freeze({ ...value.root }),
64
+ after: Object.freeze({ ...value.after }),
65
+ });
66
+ }
67
+ /** Bounded original-byte reads, with current host consent and exact Pal-root admission. */
68
+ export function createPalActivitySource(options) {
69
+ const scope = Object.freeze(scopeSchema.parse(options.scope));
70
+ const { pals, authorize, openJournal } = options;
71
+ if (typeof authorize !== 'function' || typeof openJournal !== 'function')
72
+ throw new TypeError('Pal activity requires explicit authorization and original-journal ports.');
73
+ return {
74
+ scope,
75
+ async read(input) {
76
+ const { signal } = input;
77
+ const maxRecords = positive.max(256).parse(input.maxRecords);
78
+ const maxReadBytes = positive.max(16 * 1024 * 1024).parse(input.maxReadBytes);
79
+ const supplied = input.cursor ? cursorSchema.parse(input.cursor) : undefined;
80
+ signal.throwIfAborted();
81
+ if ((await authorize(scope, signal)) !== true)
82
+ throw new PalActivityAccessDeniedError();
83
+ signal.throwIfAborted();
84
+ const definition = pals.getRevision(scope.palId, scope.profileRevision);
85
+ if (definition.id !== scope.palId || definition.revision !== scope.profileRevision)
86
+ throw new PalActivityIntegrityError();
87
+ const workspace = definition.workspace;
88
+ const scopeHash = createHash('sha256')
89
+ .update(JSON.stringify([
90
+ 'pal-activity/1',
91
+ scope.tenantId,
92
+ scope.projectId,
93
+ scope.palId,
94
+ scope.profileRevision,
95
+ scope.sessionId,
96
+ workspace,
97
+ ]))
98
+ .digest('hex');
99
+ if (supplied && supplied.scopeHash !== scopeHash)
100
+ throw new PalActivityIntegrityError();
101
+ const journal = await openJournal(scope, signal);
102
+ signal.throwIfAborted();
103
+ if (journal.log.sessionId !== scope.sessionId)
104
+ throw new PalActivityIntegrityError();
105
+ const bytes = journal.bytes;
106
+ const size = await bytes.size();
107
+ signal.throwIfAborted();
108
+ if (!Number.isSafeInteger(size) || size < 1)
109
+ throw new PalActivityIntegrityError();
110
+ if ((await authorize(scope, signal)) !== true)
111
+ throw new PalActivityAccessDeniedError();
112
+ signal.throwIfAborted();
113
+ let readBytes = 0;
114
+ const read = async (offset, length) => {
115
+ signal.throwIfAborted();
116
+ if (length > maxReadBytes - readBytes)
117
+ throw new PalActivityReadLimitError();
118
+ readBytes += length;
119
+ const raw = await bytes.read(offset, length);
120
+ signal.throwIfAborted();
121
+ if (raw.byteLength !== length)
122
+ throw new PalActivityIntegrityError();
123
+ return Uint8Array.from(raw);
124
+ };
125
+ const lineAt = async (offset) => {
126
+ const parts = [];
127
+ let length = 0;
128
+ while (offset + length < size) {
129
+ const available = maxReadBytes - readBytes;
130
+ if (available === 0)
131
+ throw new PalActivityReadLimitError();
132
+ const chunk = await read(offset + length, Math.min(1024, available, size - offset - length));
133
+ const newline = chunk.indexOf(10);
134
+ const part = newline < 0 ? chunk : chunk.subarray(0, newline + 1);
135
+ parts.push(part);
136
+ length += part.byteLength;
137
+ if (length > SESSION_RECORD_MAX_BYTES)
138
+ throw new PalActivityReadLimitError();
139
+ if (newline >= 0)
140
+ return Buffer.concat(parts);
141
+ }
142
+ throw new PalActivityIntegrityError();
143
+ };
144
+ const first = await lineAt(0);
145
+ let root;
146
+ try {
147
+ root = new SessionLogChain({ head: null, sessionId: scope.sessionId }).accept(first, 0);
148
+ }
149
+ catch {
150
+ throw new PalActivityIntegrityError();
151
+ }
152
+ const owner = root.record;
153
+ if (owner.type !== 'session_started' ||
154
+ owner.parent ||
155
+ owner.forkedFrom ||
156
+ owner.tenantId !== scope.tenantId ||
157
+ owner.projectId !== scope.projectId ||
158
+ owner.cwd !== workspace ||
159
+ owner.origin?.protocol !== 'desktop' ||
160
+ owner.origin.externalSessionId !==
161
+ JSON.stringify(['namzu-pal', scope.palId, scope.profileRevision, scope.sessionId]))
162
+ throw new PalActivityIntegrityError();
163
+ if ((await read(size - 1, 1))[0] !== 10)
164
+ throw new PalActivityIntegrityError();
165
+ let after = root.pointer;
166
+ let generation = root.record.gen;
167
+ if (supplied) {
168
+ const anchorEnd = supplied.after.offset + supplied.after.length;
169
+ if (!samePointer(root.pointer, supplied.root) ||
170
+ !Number.isSafeInteger(anchorEnd) ||
171
+ anchorEnd > size ||
172
+ supplied.after.seq < 1 ||
173
+ (supplied.after.seq > 1 && supplied.after.offset < root.pointer.length))
174
+ throw new PalActivityIntegrityError();
175
+ let anchor;
176
+ try {
177
+ anchor = parseSessionLogLine(await read(supplied.after.offset, supplied.after.length));
178
+ }
179
+ catch (error) {
180
+ signal.throwIfAborted();
181
+ if (error instanceof PalActivityReadLimitError)
182
+ throw error;
183
+ throw new PalActivityIntegrityError();
184
+ }
185
+ if (anchor.sha256 !== supplied.after.sha256 ||
186
+ anchor.record.sessionId !== scope.sessionId ||
187
+ anchor.record.seq !== supplied.after.seq ||
188
+ anchor.record.gen !== supplied.generation ||
189
+ (supplied.after.seq === 1 && !samePointer(supplied.after, root.pointer)))
190
+ throw new PalActivityIntegrityError();
191
+ after = supplied.after;
192
+ generation = anchor.record.gen;
193
+ }
194
+ const chain = new SessionLogChain({
195
+ head: after,
196
+ sessionId: scope.sessionId,
197
+ gen: generation,
198
+ });
199
+ const facts = [];
200
+ let scannedRecords = 0;
201
+ while (chain.end < size && scannedRecords < maxRecords) {
202
+ const raw = await lineAt(chain.end);
203
+ let entry;
204
+ let fact;
205
+ try {
206
+ entry = chain.accept(raw, chain.end);
207
+ fact = projectPalActivity(entry, scopeHash);
208
+ }
209
+ catch {
210
+ throw new PalActivityIntegrityError();
211
+ }
212
+ scannedRecords++;
213
+ if (fact)
214
+ facts.push(fact);
215
+ after = entry.pointer;
216
+ generation = entry.record.gen;
217
+ }
218
+ if ((await bytes.size()) < size)
219
+ throw new PalActivityIntegrityError();
220
+ signal.throwIfAborted();
221
+ if ((await authorize(scope, signal)) !== true)
222
+ throw new PalActivityAccessDeniedError();
223
+ signal.throwIfAborted();
224
+ return Object.freeze({
225
+ scope,
226
+ facts: Object.freeze(facts),
227
+ cursor: immutableCursor({ v: 1, scopeHash, root: root.pointer, after, generation }),
228
+ complete: chain.end === size,
229
+ scannedRecords,
230
+ readBytes,
231
+ });
232
+ },
233
+ };
234
+ }
235
+ //# sourceMappingURL=source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.js","sourceRoot":"","sources":["../../../src/pals/activity/source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAwB,MAAM,kCAAkC,CAAA;AACxF,OAAO,EAAsB,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAUpD,MAAM,OAAO,4BAA6B,SAAQ,KAAK;IACpC,IAAI,GAAG,8BAA8B,CAAA;IACvD;QACC,KAAK,CAAC,0DAA0D,CAAC,CAAA;IAClE,CAAC;CACD;AACD,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IACjC,IAAI,GAAG,2BAA2B,CAAA;IACpD;QACC,KAAK,CAAC,6EAA6E,CAAC,CAAA;IACrF,CAAC;CACD;AACD,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IACjC,IAAI,GAAG,2BAA2B,CAAA;IACpD;QACC,KAAK,CAAC,oFAAoF,CAAC,CAAA;IAC5F,CAAC;CACD;AAED,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAA;AACnD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;AACjD,MAAM,OAAO,GAAG,CAAC;KACf,MAAM,CAAC;IACP,GAAG,EAAE,QAAQ;IACb,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;IAC7C,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,wBAAwB,CAAC;IAC9C,MAAM,EAAE,MAAM;CACd,CAAC;KACD,MAAM,EAAE,CAAA;AACV,MAAM,WAAW,GAAG,CAAC;KACnB,MAAM,CAAC;IACP,QAAQ,EAAE,CAAC,CAAC,MAAM,CAA+B,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAChF,SAAS,EAAE,CAAC,CAAC,MAAM,CAAgC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACnF,SAAS,EAAE,CAAC,CAAC,MAAM,CAAgC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACnF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACxB,eAAe,EAAE,QAAQ;CACzB,CAAC;KACD,MAAM,EAAE,CAAA;AACV,MAAM,YAAY,GAAG,CAAC;KACpB,MAAM,CAAC;IACP,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACf,SAAS,EAAE,MAAM;IACjB,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;CACjD,CAAC;KACD,MAAM,EAAE,CAAA;AACV,SAAS,WAAW,CAAC,GAAkB,EAAE,GAAkB;IAC1D,OAAO,CACN,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG;QACnB,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM;QACzB,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM;QACzB,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,CACzB,CAAA;AACF,CAAC;AACD,SAAS,eAAe,CAAC,KAAwB;IAChD,OAAO,MAAM,CAAC,MAAM,CAAC;QACpB,GAAG,KAAK;QACR,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACtC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;KACxC,CAAC,CAAA;AACH,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,uBAAuB,CAAC,OAAiC;IACxE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;IAC7D,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,OAAO,CAAA;IAChD,IAAI,OAAO,SAAS,KAAK,UAAU,IAAI,OAAO,WAAW,KAAK,UAAU;QACvE,MAAM,IAAI,SAAS,CAAC,0EAA0E,CAAC,CAAA;IAChG,OAAO;QACN,KAAK;QACL,KAAK,CAAC,IAAI,CAAC,KAA6B;YACvC,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;YACxB,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;YAC5D,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;YAC7E,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YAC5E,MAAM,CAAC,cAAc,EAAE,CAAA;YACvB,IAAI,CAAC,MAAM,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI;gBAAE,MAAM,IAAI,4BAA4B,EAAE,CAAA;YACvF,MAAM,CAAC,cAAc,EAAE,CAAA;YACvB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,CAAA;YACvE,IAAI,UAAU,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,IAAI,UAAU,CAAC,QAAQ,KAAK,KAAK,CAAC,eAAe;gBACjF,MAAM,IAAI,yBAAyB,EAAE,CAAA;YACtC,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAA;YACtC,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC;iBACpC,MAAM,CACN,IAAI,CAAC,SAAS,CAAC;gBACd,gBAAgB;gBAChB,KAAK,CAAC,QAAQ;gBACd,KAAK,CAAC,SAAS;gBACf,KAAK,CAAC,KAAK;gBACX,KAAK,CAAC,eAAe;gBACrB,KAAK,CAAC,SAAS;gBACf,SAAS;aACT,CAAC,CACF;iBACA,MAAM,CAAC,KAAK,CAAC,CAAA;YACf,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS;gBAAE,MAAM,IAAI,yBAAyB,EAAE,CAAA;YACvF,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YAChD,MAAM,CAAC,cAAc,EAAE,CAAA;YACvB,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;gBAAE,MAAM,IAAI,yBAAyB,EAAE,CAAA;YACpF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;YAC3B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAA;YAC/B,MAAM,CAAC,cAAc,EAAE,CAAA;YACvB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC;gBAAE,MAAM,IAAI,yBAAyB,EAAE,CAAA;YAClF,IAAI,CAAC,MAAM,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI;gBAAE,MAAM,IAAI,4BAA4B,EAAE,CAAA;YACvF,MAAM,CAAC,cAAc,EAAE,CAAA;YACvB,IAAI,SAAS,GAAG,CAAC,CAAA;YACjB,MAAM,IAAI,GAAG,KAAK,EAAE,MAAc,EAAE,MAAc,EAAuB,EAAE;gBAC1E,MAAM,CAAC,cAAc,EAAE,CAAA;gBACvB,IAAI,MAAM,GAAG,YAAY,GAAG,SAAS;oBAAE,MAAM,IAAI,yBAAyB,EAAE,CAAA;gBAC5E,SAAS,IAAI,MAAM,CAAA;gBACnB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;gBAC5C,MAAM,CAAC,cAAc,EAAE,CAAA;gBACvB,IAAI,GAAG,CAAC,UAAU,KAAK,MAAM;oBAAE,MAAM,IAAI,yBAAyB,EAAE,CAAA;gBACpE,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC5B,CAAC,CAAA;YACD,MAAM,MAAM,GAAG,KAAK,EAAE,MAAc,EAAuB,EAAE;gBAC5D,MAAM,KAAK,GAAiB,EAAE,CAAA;gBAC9B,IAAI,MAAM,GAAG,CAAC,CAAA;gBACd,OAAO,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC;oBAC/B,MAAM,SAAS,GAAG,YAAY,GAAG,SAAS,CAAA;oBAC1C,IAAI,SAAS,KAAK,CAAC;wBAAE,MAAM,IAAI,yBAAyB,EAAE,CAAA;oBAC1D,MAAM,KAAK,GAAG,MAAM,IAAI,CACvB,MAAM,GAAG,MAAM,EACf,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,CACjD,CAAA;oBACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;oBACjC,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAA;oBACjE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBAChB,MAAM,IAAI,IAAI,CAAC,UAAU,CAAA;oBACzB,IAAI,MAAM,GAAG,wBAAwB;wBAAE,MAAM,IAAI,yBAAyB,EAAE,CAAA;oBAC5E,IAAI,OAAO,IAAI,CAAC;wBAAE,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBAC9C,CAAC;gBACD,MAAM,IAAI,yBAAyB,EAAE,CAAA;YACtC,CAAC,CAAA;YACD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,CAAA;YAC7B,IAAI,IAAqB,CAAA;YACzB,IAAI,CAAC;gBACJ,IAAI,GAAG,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;YACxF,CAAC;YAAC,MAAM,CAAC;gBACR,MAAM,IAAI,yBAAyB,EAAE,CAAA;YACtC,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;YACzB,IACC,KAAK,CAAC,IAAI,KAAK,iBAAiB;gBAChC,KAAK,CAAC,MAAM;gBACZ,KAAK,CAAC,UAAU;gBAChB,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;gBACjC,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;gBACnC,KAAK,CAAC,GAAG,KAAK,SAAS;gBACvB,KAAK,CAAC,MAAM,EAAE,QAAQ,KAAK,SAAS;gBACpC,KAAK,CAAC,MAAM,CAAC,iBAAiB;oBAC7B,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;gBAEnF,MAAM,IAAI,yBAAyB,EAAE,CAAA;YACtC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;gBAAE,MAAM,IAAI,yBAAyB,EAAE,CAAA;YAC9E,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAA;YACxB,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAA;YAChC,IAAI,QAAQ,EAAE,CAAC;gBACd,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAA;gBAC/D,IACC,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC;oBACzC,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;oBAChC,SAAS,GAAG,IAAI;oBAChB,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;oBACtB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;oBAEvE,MAAM,IAAI,yBAAyB,EAAE,CAAA;gBACtC,IAAI,MAA8C,CAAA;gBAClD,IAAI,CAAC;oBACJ,MAAM,GAAG,mBAAmB,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;gBACvF,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,MAAM,CAAC,cAAc,EAAE,CAAA;oBACvB,IAAI,KAAK,YAAY,yBAAyB;wBAAE,MAAM,KAAK,CAAA;oBAC3D,MAAM,IAAI,yBAAyB,EAAE,CAAA;gBACtC,CAAC;gBACD,IACC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,KAAK,CAAC,MAAM;oBACvC,MAAM,CAAC,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;oBAC3C,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,KAAK,CAAC,GAAG;oBACxC,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,UAAU;oBACzC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;oBAExE,MAAM,IAAI,yBAAyB,EAAE,CAAA;gBACtC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAA;gBACtB,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA;YAC/B,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC;gBACjC,IAAI,EAAE,KAAK;gBACX,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,GAAG,EAAE,UAAU;aACf,CAAC,CAAA;YACF,MAAM,KAAK,GAAsB,EAAE,CAAA;YACnC,IAAI,cAAc,GAAG,CAAC,CAAA;YACtB,OAAO,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,cAAc,GAAG,UAAU,EAAE,CAAC;gBACxD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBACnC,IAAI,KAAsB,CAAA;gBAC1B,IAAI,IAA4B,CAAA;gBAChC,IAAI,CAAC;oBACJ,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;oBACpC,IAAI,GAAG,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;gBAC5C,CAAC;gBAAC,MAAM,CAAC;oBACR,MAAM,IAAI,yBAAyB,EAAE,CAAA;gBACtC,CAAC;gBACD,cAAc,EAAE,CAAA;gBAChB,IAAI,IAAI;oBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC1B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAA;gBACrB,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAA;YAC9B,CAAC;YACD,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;gBAAE,MAAM,IAAI,yBAAyB,EAAE,CAAA;YACtE,MAAM,CAAC,cAAc,EAAE,CAAA;YACvB,IAAI,CAAC,MAAM,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI;gBAAE,MAAM,IAAI,4BAA4B,EAAE,CAAA;YACvF,MAAM,CAAC,cAAc,EAAE,CAAA;YACvB,OAAO,MAAM,CAAC,MAAM,CAAC;gBACpB,KAAK;gBACL,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC3B,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;gBACnF,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,IAAI;gBAC5B,cAAc;gBACd,SAAS;aACT,CAAC,CAAA;QACH,CAAC;KACD,CAAA;AACF,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { PalIngressAuthorizationRequest } from '../communication/ingress-types.js';
2
+ import type { PalMessageAuthorization } from '../communication/types.js';
3
+ import type { PalActivitySubscriptionAuthorizationRequest, PalActivitySubscriptionStore } from './subscription-types.js';
4
+ export interface PalActivitySubscriptionPermission {
5
+ readonly v: 1;
6
+ readonly subscriptionId: string;
7
+ readonly revision: number;
8
+ readonly observe: boolean;
9
+ readonly disclose: boolean;
10
+ readonly receive: boolean;
11
+ readonly wake: boolean;
12
+ }
13
+ export interface PalActivitySubscriptionPermissionUpdate extends Omit<PalActivitySubscriptionPermission, 'v' | 'revision'> {
14
+ readonly expectedRevision: number;
15
+ }
16
+ export declare class PalActivitySubscriptionPermissionConflictError extends Error {
17
+ readonly name = "PalActivitySubscriptionPermissionConflictError";
18
+ }
19
+ /** Explicit local operator consent. Missing rules deny and each phase rereads current records. */
20
+ export declare class DiskPalActivitySubscriptionPolicy {
21
+ private readonly root;
22
+ private readonly secure;
23
+ private readonly subscriptions;
24
+ private readonly records;
25
+ constructor(options: {
26
+ root: string;
27
+ subscriptions: PalActivitySubscriptionStore;
28
+ secureDirectory?: (path: string) => void;
29
+ });
30
+ private directory;
31
+ private location;
32
+ private checked;
33
+ get(id: string): Promise<PalActivitySubscriptionPermission | null>;
34
+ update(input: PalActivitySubscriptionPermissionUpdate): Promise<PalActivitySubscriptionPermission>;
35
+ authorizeSubscription(request: PalActivitySubscriptionAuthorizationRequest): Promise<PalMessageAuthorization>;
36
+ authorizeIngress(input: PalIngressAuthorizationRequest): Promise<PalMessageAuthorization>;
37
+ }
38
+ //# sourceMappingURL=subscription-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription-policy.d.ts","sourceRoot":"","sources":["../../../src/pals/activity/subscription-policy.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAA;AAEvF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AAExE,OAAO,KAAK,EACX,2CAA2C,EAC3C,4BAA4B,EAC5B,MAAM,yBAAyB,CAAA;AAEhC,MAAM,WAAW,iCAAiC;IACjD,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAA;IACb,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CACtB;AACD,MAAM,WAAW,uCAChB,SAAQ,IAAI,CAAC,iCAAiC,EAAE,GAAG,GAAG,UAAU,CAAC;IACjE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;CACjC;AACD,qBAAa,8CAA+C,SAAQ,KAAK;IACxE,SAAkB,IAAI,oDAAmD;CACzE;AAoBD,kGAAkG;AAClG,qBAAa,iCAAiC;IAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAC5D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAQvB;gBACW,OAAO,EAAE;QACpB,IAAI,EAAE,MAAM,CAAA;QACZ,aAAa,EAAE,4BAA4B,CAAA;QAC3C,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;KACxC;IAUD,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,QAAQ;IAmBhB,OAAO,CAAC,OAAO;IAOT,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iCAAiC,GAAG,IAAI,CAAC;IAIlE,MAAM,CACX,KAAK,EAAE,uCAAuC,GAC5C,OAAO,CAAC,iCAAiC,CAAC;IAkBvC,qBAAqB,CAC1B,OAAO,EAAE,2CAA2C,GAClD,OAAO,CAAC,uBAAuB,CAAC;IAkC7B,gBAAgB,CAAC,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAsD/F"}
@@ -0,0 +1,183 @@
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 { z } from 'zod';
5
+ import { DiskRevisionRecordStore } from '../../store/kv/revision-record-store.js';
6
+ import { defineSchema } from '../../store/schema.js';
7
+ import { observationRouteKeySchema, observationSourceSchema, } from '../communication/ingress-schema.js';
8
+ import { addressSchema, freezeCommunicationValue } from '../communication/schema.js';
9
+ import { subscriptionSchema } from './subscription-schema.js';
10
+ export class PalActivitySubscriptionPermissionConflictError extends Error {
11
+ name = 'PalActivitySubscriptionPermissionConflictError';
12
+ }
13
+ const permissionSchema = z
14
+ .object({
15
+ v: z.literal(1),
16
+ subscriptionId: z.string().uuid(),
17
+ revision: z.number().int().positive().safe(),
18
+ observe: z.boolean(),
19
+ disclose: z.boolean(),
20
+ receive: z.boolean(),
21
+ wake: z.boolean(),
22
+ })
23
+ .strict();
24
+ const updateSchema = permissionSchema
25
+ .omit({ v: true, revision: true })
26
+ .extend({ expectedRevision: z.number().int().nonnegative().safe() });
27
+ const denied = () => ({
28
+ allow: false,
29
+ reason: 'No current permission for this exact Pal activity subscription.',
30
+ });
31
+ /** Explicit local operator consent. Missing rules deny and each phase rereads current records. */
32
+ export class DiskPalActivitySubscriptionPolicy {
33
+ root;
34
+ secure;
35
+ subscriptions;
36
+ records = new DiskRevisionRecordStore(defineSchema({
37
+ kind: 'pal-activity-subscription-permission',
38
+ current: 1,
39
+ migrations: {},
40
+ }), 'Pal activity subscription permission', (value) => value.revision);
41
+ constructor(options) {
42
+ this.root = resolve(options.root);
43
+ this.subscriptions = options.subscriptions;
44
+ this.secure =
45
+ options.secureDirectory ??
46
+ ((path) => {
47
+ if (process.platform !== 'win32')
48
+ chmodSync(path, 0o700);
49
+ });
50
+ this.directory(this.root);
51
+ }
52
+ directory(path) {
53
+ mkdirSync(path, { recursive: true, mode: 0o700 });
54
+ const stat = lstatSync(path);
55
+ if (!stat.isDirectory() || stat.isSymbolicLink() || realpathSync(path) !== path)
56
+ throw new Error('Pal activity permissions require real directories without aliases.');
57
+ this.secure(path);
58
+ }
59
+ location(id) {
60
+ const key = z.string().uuid().parse(id);
61
+ this.directory(this.root);
62
+ const directory = join(this.root, key);
63
+ this.directory(directory);
64
+ const revisionsDir = join(directory, 'revisions');
65
+ this.directory(revisionsDir);
66
+ for (const name of readdirSync(revisionsDir)) {
67
+ if (!/^[1-9][0-9]*\.json$/u.test(name))
68
+ continue;
69
+ const stat = lstatSync(join(revisionsDir, name));
70
+ if (!stat.isFile() || stat.isSymbolicLink())
71
+ throw new Error('Pal permission commits must be real files.');
72
+ }
73
+ return {
74
+ legacyPath: join(directory, 'permission.json'),
75
+ revisionsDir,
76
+ publishLegacyProjection: false,
77
+ };
78
+ }
79
+ checked(input, id) {
80
+ const { schemaVersion: _schemaVersion, ...value } = permissionSchema
81
+ .extend({ schemaVersion: z.literal(1).optional() })
82
+ .parse(input);
83
+ if (value.subscriptionId !== id)
84
+ throw new Error('Foreign Pal subscription permission.');
85
+ return freezeCommunicationValue(value);
86
+ }
87
+ async get(id) {
88
+ const record = await this.records.read(this.location(id));
89
+ return record === null ? null : this.checked(record, id);
90
+ }
91
+ async update(input) {
92
+ const captured = updateSchema.parse(input);
93
+ if (!(await this.subscriptions.get(captured.subscriptionId)))
94
+ throw new Error('Unknown Pal activity subscription.');
95
+ return this.records.transact(this.location(captured.subscriptionId), (stored) => {
96
+ const current = stored === null ? null : this.checked(stored, captured.subscriptionId);
97
+ if ((current?.revision ?? 0) !== captured.expectedRevision)
98
+ throw new PalActivitySubscriptionPermissionConflictError('Subscription permission changed; reload before updating.');
99
+ const { expectedRevision, ...values } = captured;
100
+ const record = this.checked({ ...values, v: 1, revision: expectedRevision + 1 }, values.subscriptionId);
101
+ return { record, result: record };
102
+ });
103
+ }
104
+ async authorizeSubscription(request) {
105
+ const phase = z.enum(['observe', 'disclose', 'receive', 'accept']).parse(request.phase);
106
+ const permitted = (rule) => phase === 'accept' ? rule?.observe && rule.disclose && rule.receive : rule?.[phase];
107
+ const captured = freezeCommunicationValue(subscriptionSchema.parse(request.subscription));
108
+ const stored = await this.subscriptions.get(captured.id);
109
+ const subscription = stored ? freezeCommunicationValue(subscriptionSchema.parse(stored)) : null;
110
+ if (!subscription?.enabled ||
111
+ subscription.configurationRevision !== captured.configurationRevision ||
112
+ !isDeepStrictEqual(subscription.scope, captured.scope) ||
113
+ !isDeepStrictEqual(subscription.recipient, captured.recipient))
114
+ return denied();
115
+ const observed = await this.get(subscription.id);
116
+ if (!permitted(observed))
117
+ return denied();
118
+ const current = await this.subscriptions.get(subscription.id);
119
+ if (!current?.enabled ||
120
+ current.configurationRevision !== captured.configurationRevision ||
121
+ !isDeepStrictEqual(current.scope, captured.scope) ||
122
+ !isDeepStrictEqual(current.recipient, captured.recipient))
123
+ return denied();
124
+ const rule = await this.get(subscription.id);
125
+ if (!rule || !permitted(rule))
126
+ return denied();
127
+ return {
128
+ allow: true,
129
+ grant: {
130
+ id: `pal-subscription:${subscription.id}:${phase}`,
131
+ revision: String(rule.revision),
132
+ },
133
+ };
134
+ }
135
+ async authorizeIngress(input) {
136
+ if (!('kind' in input) || input.kind !== 'observation')
137
+ return denied();
138
+ const request = freezeCommunicationValue(z
139
+ .object({
140
+ kind: z.literal('observation'),
141
+ phase: z.enum(['accept', 'deliver', 'wake']),
142
+ source: observationSourceSchema,
143
+ routeKey: observationRouteKeySchema,
144
+ recipient: addressSchema,
145
+ })
146
+ .parse(input));
147
+ const id = z.string().uuid().parse(request.source.subscriptionId);
148
+ const phase = z.enum(['accept', 'deliver', 'wake']).parse(request.phase);
149
+ const stored = await this.subscriptions.get(id);
150
+ const subscription = stored ? freezeCommunicationValue(subscriptionSchema.parse(stored)) : null;
151
+ if (!subscription?.enabled ||
152
+ request.routeKey.kind !== 'observation' ||
153
+ request.routeKey.subscriptionId !== id ||
154
+ !isDeepStrictEqual(request.source.scope, subscription.scope) ||
155
+ !isDeepStrictEqual(request.routeKey.scope, subscription.scope) ||
156
+ !isDeepStrictEqual(request.recipient, subscription.recipient) ||
157
+ !isDeepStrictEqual(request.routeKey.recipient, subscription.recipient))
158
+ return denied();
159
+ const observed = await this.get(id);
160
+ if (!observed?.observe ||
161
+ !observed.disclose ||
162
+ !observed.receive ||
163
+ (phase === 'wake' && !observed.wake))
164
+ return denied();
165
+ const current = await this.subscriptions.get(id);
166
+ if (!current?.enabled ||
167
+ current.configurationRevision !== subscription.configurationRevision ||
168
+ !isDeepStrictEqual(current.scope, subscription.scope) ||
169
+ !isDeepStrictEqual(current.recipient, subscription.recipient))
170
+ return denied();
171
+ const rule = await this.get(id);
172
+ if (!rule?.observe || !rule.disclose || !rule.receive || (phase === 'wake' && !rule.wake))
173
+ return denied();
174
+ return {
175
+ allow: true,
176
+ grant: {
177
+ id: `pal-subscription:${id}:${phase}`,
178
+ revision: String(rule.revision),
179
+ },
180
+ };
181
+ }
182
+ }
183
+ //# sourceMappingURL=subscription-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription-policy.js","sourceRoot":"","sources":["../../../src/pals/activity/subscription-policy.ts"],"names":[],"mappings":"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"}