@moltzap/client 2026.1002.0 → 2026.1005.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 (515) hide show
  1. package/NOTICE +1 -6
  2. package/README.md +2 -2
  3. package/bin/moltzapd +2 -2
  4. package/dist/{harness-mcp-contract.d.ts → delivery/history-export.d.ts} +96 -136
  5. package/dist/delivery/history-export.d.ts.map +1 -0
  6. package/dist/{daemon/runtime → delivery}/history-export.js +36 -3
  7. package/dist/delivery/history-export.js.map +1 -0
  8. package/dist/delivery/host-delivery.d.ts +51 -0
  9. package/dist/delivery/host-delivery.d.ts.map +1 -0
  10. package/dist/delivery/host-delivery.js +109 -0
  11. package/dist/delivery/host-delivery.js.map +1 -0
  12. package/dist/delivery/inbox.d.ts +142 -0
  13. package/dist/delivery/inbox.d.ts.map +1 -0
  14. package/dist/delivery/inbox.js +130 -0
  15. package/dist/delivery/inbox.js.map +1 -0
  16. package/dist/delivery/index.d.ts +4 -0
  17. package/dist/delivery/index.d.ts.map +1 -0
  18. package/dist/delivery/index.js +4 -0
  19. package/dist/delivery/index.js.map +1 -0
  20. package/dist/delivery/operations.d.ts +787 -0
  21. package/dist/delivery/operations.d.ts.map +1 -0
  22. package/dist/delivery/operations.js +162 -0
  23. package/dist/delivery/operations.js.map +1 -0
  24. package/dist/delivery/pass.d.ts +91 -0
  25. package/dist/delivery/pass.d.ts.map +1 -0
  26. package/dist/{daemon/runtime/pending-delivery.js → delivery/pass.js} +61 -34
  27. package/dist/delivery/pass.js.map +1 -0
  28. package/dist/delivery/send-invocations.d.ts +106 -0
  29. package/dist/delivery/send-invocations.d.ts.map +1 -0
  30. package/dist/delivery/send-invocations.js +109 -0
  31. package/dist/delivery/send-invocations.js.map +1 -0
  32. package/dist/endpoint/harness-endpoint/capability.d.ts +39 -0
  33. package/dist/endpoint/harness-endpoint/capability.d.ts.map +1 -0
  34. package/dist/endpoint/harness-endpoint/capability.js +9 -0
  35. package/dist/endpoint/harness-endpoint/capability.js.map +1 -0
  36. package/dist/endpoint/harness-endpoint/events.d.ts +12 -0
  37. package/dist/endpoint/harness-endpoint/events.d.ts.map +1 -0
  38. package/dist/endpoint/harness-endpoint/events.js +199 -0
  39. package/dist/endpoint/harness-endpoint/events.js.map +1 -0
  40. package/dist/{client-runtime.d.ts → endpoint/harness-endpoint/index.d.ts} +4 -2
  41. package/dist/endpoint/harness-endpoint/index.d.ts.map +1 -0
  42. package/dist/{client-runtime.js → endpoint/harness-endpoint/index.js} +115 -115
  43. package/dist/endpoint/harness-endpoint/index.js.map +1 -0
  44. package/dist/endpoint/implementation.d.ts +4 -0
  45. package/dist/endpoint/implementation.d.ts.map +1 -0
  46. package/dist/endpoint/implementation.js +5 -0
  47. package/dist/endpoint/implementation.js.map +1 -0
  48. package/dist/endpoint/mcp/auth.d.ts +31 -0
  49. package/dist/endpoint/mcp/auth.d.ts.map +1 -0
  50. package/dist/endpoint/mcp/auth.js +42 -0
  51. package/dist/endpoint/mcp/auth.js.map +1 -0
  52. package/dist/endpoint/mcp/event-schemas.d.ts +151 -0
  53. package/dist/endpoint/mcp/event-schemas.d.ts.map +1 -0
  54. package/dist/endpoint/mcp/event-schemas.js +72 -0
  55. package/dist/endpoint/mcp/event-schemas.js.map +1 -0
  56. package/dist/endpoint/mcp/event-signing.d.ts +62 -0
  57. package/dist/endpoint/mcp/event-signing.d.ts.map +1 -0
  58. package/dist/endpoint/mcp/event-signing.js +185 -0
  59. package/dist/endpoint/mcp/event-signing.js.map +1 -0
  60. package/dist/endpoint/mcp/events.d.ts +45 -0
  61. package/dist/endpoint/mcp/events.d.ts.map +1 -0
  62. package/dist/endpoint/mcp/events.js +308 -0
  63. package/dist/endpoint/mcp/events.js.map +1 -0
  64. package/dist/{harness-mcp-http.d.ts → endpoint/mcp/http.d.ts} +1 -1
  65. package/dist/endpoint/mcp/http.d.ts.map +1 -0
  66. package/dist/{harness-mcp-http.js → endpoint/mcp/http.js} +1 -1
  67. package/dist/endpoint/mcp/http.js.map +1 -0
  68. package/dist/endpoint/mcp/index.d.ts +10 -0
  69. package/dist/endpoint/mcp/index.d.ts.map +1 -0
  70. package/dist/endpoint/mcp/index.js +8 -0
  71. package/dist/endpoint/mcp/index.js.map +1 -0
  72. package/dist/endpoint/mcp/names.d.ts +18 -0
  73. package/dist/endpoint/mcp/names.d.ts.map +1 -0
  74. package/dist/endpoint/mcp/names.js +18 -0
  75. package/dist/endpoint/mcp/names.js.map +1 -0
  76. package/dist/{management-runtime.d.ts → endpoint/mcp/owner-tools.d.ts} +7 -7
  77. package/dist/endpoint/mcp/owner-tools.d.ts.map +1 -0
  78. package/dist/{management-runtime.js → endpoint/mcp/owner-tools.js} +2 -4
  79. package/dist/endpoint/mcp/owner-tools.js.map +1 -0
  80. package/dist/endpoint/mcp/schemas.d.ts +42 -0
  81. package/dist/endpoint/mcp/schemas.d.ts.map +1 -0
  82. package/dist/endpoint/mcp/schemas.js +89 -0
  83. package/dist/endpoint/mcp/schemas.js.map +1 -0
  84. package/dist/{harness-mcp-wire.d.ts → endpoint/mcp/tools.d.ts} +17 -14
  85. package/dist/endpoint/mcp/tools.d.ts.map +1 -0
  86. package/dist/{harness-mcp-wire.js → endpoint/mcp/tools.js} +230 -110
  87. package/dist/endpoint/mcp/tools.js.map +1 -0
  88. package/dist/endpoint/mcp/webhook.d.ts +15 -0
  89. package/dist/endpoint/mcp/webhook.d.ts.map +1 -0
  90. package/dist/endpoint/mcp/webhook.js +359 -0
  91. package/dist/endpoint/mcp/webhook.js.map +1 -0
  92. package/dist/identity/credentials.d.ts +46 -0
  93. package/dist/identity/credentials.d.ts.map +1 -0
  94. package/dist/identity/credentials.js +55 -0
  95. package/dist/identity/credentials.js.map +1 -0
  96. package/dist/identity/index.d.ts +4 -0
  97. package/dist/identity/index.d.ts.map +1 -0
  98. package/dist/identity/index.js +4 -0
  99. package/dist/identity/index.js.map +1 -0
  100. package/dist/index.d.ts +21 -4
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js +23 -5
  103. package/dist/index.js.map +1 -1
  104. package/dist/{contract.types-check.d.ts → index.types-check.d.ts} +12 -7
  105. package/dist/index.types-check.d.ts.map +1 -0
  106. package/dist/{contract.types-check.js → index.types-check.js} +6 -5
  107. package/dist/index.types-check.js.map +1 -0
  108. package/dist/{daemon/runtime/activation.d.ts → service/activation/index.d.ts} +11 -13
  109. package/dist/service/activation/index.d.ts.map +1 -0
  110. package/dist/{daemon/runtime/activation.js → service/activation/index.js} +3 -3
  111. package/dist/service/activation/index.js.map +1 -0
  112. package/dist/{daemon/configuration.d.ts → service/bootstrap.d.ts} +9 -17
  113. package/dist/service/bootstrap.d.ts.map +1 -0
  114. package/dist/service/bootstrap.js +6 -0
  115. package/dist/service/bootstrap.js.map +1 -0
  116. package/dist/service/configuration.d.ts +13 -0
  117. package/dist/service/configuration.d.ts.map +1 -0
  118. package/dist/service/configuration.js +75 -0
  119. package/dist/service/configuration.js.map +1 -0
  120. package/dist/{daemon/runtime → service}/controller.d.ts +9 -7
  121. package/dist/service/controller.d.ts.map +1 -0
  122. package/dist/service/controller.js +106 -0
  123. package/dist/service/controller.js.map +1 -0
  124. package/dist/{server.d.ts → service/index.d.ts} +7 -4
  125. package/dist/service/index.d.ts.map +1 -0
  126. package/dist/{server.js → service/index.js} +17 -15
  127. package/dist/service/index.js.map +1 -0
  128. package/dist/{server.types-check.d.ts → service/index.types-check.d.ts} +7 -7
  129. package/dist/service/index.types-check.d.ts.map +1 -0
  130. package/dist/{server.types-check.js → service/index.types-check.js} +1 -1
  131. package/dist/service/index.types-check.js.map +1 -0
  132. package/dist/{daemon/runtime/index.d.ts → service/lifecycle.d.ts} +4 -4
  133. package/dist/service/lifecycle.d.ts.map +1 -0
  134. package/dist/{daemon/runtime/index.js → service/lifecycle.js} +29 -26
  135. package/dist/service/lifecycle.js.map +1 -0
  136. package/dist/{daemon → service}/management.d.ts +3 -3
  137. package/dist/service/management.d.ts.map +1 -0
  138. package/dist/{daemon → service}/management.js +4 -14
  139. package/dist/service/management.js.map +1 -0
  140. package/dist/{daemon/registration.d.ts → service/registration/index.d.ts} +3 -3
  141. package/dist/service/registration/index.d.ts.map +1 -0
  142. package/dist/{daemon/registration.js → service/registration/index.js} +2 -3
  143. package/dist/service/registration/index.js.map +1 -0
  144. package/dist/{daemon/runtime/protocol.d.ts → service/supervision.d.ts} +17 -25
  145. package/dist/service/supervision.d.ts.map +1 -0
  146. package/dist/{daemon/runtime/protocol.js → service/supervision.js} +34 -37
  147. package/dist/service/supervision.js.map +1 -0
  148. package/dist/store/anchors.d.ts.map +1 -0
  149. package/dist/store/anchors.js.map +1 -0
  150. package/dist/store/database/index.d.ts.map +1 -0
  151. package/dist/store/database/index.js.map +1 -0
  152. package/dist/store/database/schema.d.ts.map +1 -0
  153. package/dist/{endpoint/store → store}/database/schema.js +42 -6
  154. package/dist/store/database/schema.js.map +1 -0
  155. package/dist/store/database/values.d.ts.map +1 -0
  156. package/dist/store/database/values.js.map +1 -0
  157. package/dist/store/inbox.d.ts +86 -0
  158. package/dist/store/inbox.d.ts.map +1 -0
  159. package/dist/store/inbox.js +269 -0
  160. package/dist/store/inbox.js.map +1 -0
  161. package/dist/store/index.d.ts +12 -0
  162. package/dist/store/index.d.ts.map +1 -0
  163. package/dist/store/index.js +8 -0
  164. package/dist/store/index.js.map +1 -0
  165. package/dist/{endpoint/store → store/queues}/deliveries.d.ts +9 -1
  166. package/dist/store/queues/deliveries.d.ts.map +1 -0
  167. package/dist/{endpoint/store → store/queues}/deliveries.js +19 -3
  168. package/dist/store/queues/deliveries.js.map +1 -0
  169. package/dist/{endpoint/store → store/queues}/dissemination.d.ts +4 -2
  170. package/dist/store/queues/dissemination.d.ts.map +1 -0
  171. package/dist/{endpoint/store → store/queues}/dissemination.js +5 -4
  172. package/dist/store/queues/dissemination.js.map +1 -0
  173. package/dist/store/queues/index.d.ts +5 -0
  174. package/dist/store/queues/index.d.ts.map +1 -0
  175. package/dist/store/queues/index.js +7 -0
  176. package/dist/store/queues/index.js.map +1 -0
  177. package/dist/{endpoint/store → store/queues}/outbound.d.ts +1 -1
  178. package/dist/store/queues/outbound.d.ts.map +1 -0
  179. package/dist/{endpoint/store → store/queues}/outbound.js +1 -1
  180. package/dist/store/queues/outbound.js.map +1 -0
  181. package/dist/{endpoint/store/management.d.ts → store/reads.d.ts} +1 -1
  182. package/dist/store/reads.d.ts.map +1 -0
  183. package/dist/{endpoint/store/management.js → store/reads.js} +2 -4
  184. package/dist/store/reads.js.map +1 -0
  185. package/dist/store/records.d.ts.map +1 -0
  186. package/dist/{endpoint/store → store}/records.js +1 -2
  187. package/dist/store/records.js.map +1 -0
  188. package/dist/store/rows/index.d.ts.map +1 -0
  189. package/dist/store/rows/index.js.map +1 -0
  190. package/dist/store/runtime-codec.d.ts +17 -0
  191. package/dist/store/runtime-codec.d.ts.map +1 -0
  192. package/dist/store/runtime-codec.js +32 -0
  193. package/dist/store/runtime-codec.js.map +1 -0
  194. package/dist/{endpoint/store/index.d.ts → store/store.d.ts} +2 -2
  195. package/dist/store/store.d.ts.map +1 -0
  196. package/dist/{endpoint/store/index.js → store/store.js} +34 -7
  197. package/dist/store/store.js.map +1 -0
  198. package/dist/{endpoint/store → store}/types.d.ts +41 -0
  199. package/dist/store/types.d.ts.map +1 -0
  200. package/dist/store/types.js.map +1 -0
  201. package/dist/transport/collectives/answer-formats.d.ts +21 -0
  202. package/dist/transport/collectives/answer-formats.d.ts.map +1 -0
  203. package/dist/transport/collectives/answer-formats.js +127 -0
  204. package/dist/transport/collectives/answer-formats.js.map +1 -0
  205. package/dist/transport/collectives/failures.d.ts +34 -0
  206. package/dist/transport/collectives/failures.d.ts.map +1 -0
  207. package/dist/transport/collectives/failures.js +40 -0
  208. package/dist/transport/collectives/failures.js.map +1 -0
  209. package/dist/transport/collectives/forms.d.ts +260 -0
  210. package/dist/transport/collectives/forms.d.ts.map +1 -0
  211. package/dist/transport/collectives/forms.js +214 -0
  212. package/dist/transport/collectives/forms.js.map +1 -0
  213. package/dist/transport/collectives/inbound.d.ts +129 -0
  214. package/dist/transport/collectives/inbound.d.ts.map +1 -0
  215. package/dist/transport/collectives/inbound.js +81 -0
  216. package/dist/transport/collectives/inbound.js.map +1 -0
  217. package/dist/transport/collectives/index.d.ts +10 -0
  218. package/dist/transport/collectives/index.d.ts.map +1 -0
  219. package/dist/transport/collectives/index.js +8 -0
  220. package/dist/transport/collectives/index.js.map +1 -0
  221. package/dist/{message-text.d.ts → transport/collectives/message-text.d.ts} +8 -4
  222. package/dist/transport/collectives/message-text.d.ts.map +1 -0
  223. package/dist/{message-text.js → transport/collectives/message-text.js} +23 -47
  224. package/dist/transport/collectives/message-text.js.map +1 -0
  225. package/dist/{endpoint/collective → transport/collectives}/operation.d.ts +35 -24
  226. package/dist/transport/collectives/operation.d.ts.map +1 -0
  227. package/dist/{endpoint/collective → transport/collectives}/operation.js +70 -105
  228. package/dist/transport/collectives/operation.js.map +1 -0
  229. package/dist/transport/collectives/part/grammar.d.ts +175 -0
  230. package/dist/transport/collectives/part/grammar.d.ts.map +1 -0
  231. package/dist/transport/collectives/part/grammar.js +222 -0
  232. package/dist/transport/collectives/part/grammar.js.map +1 -0
  233. package/dist/{endpoint/collective/wire.d.ts → transport/collectives/part/index.d.ts} +38 -51
  234. package/dist/transport/collectives/part/index.d.ts.map +1 -0
  235. package/dist/{endpoint/collective/wire.js → transport/collectives/part/index.js} +20 -122
  236. package/dist/transport/collectives/part/index.js.map +1 -0
  237. package/dist/{endpoint/collective → transport/collectives}/received-request.d.ts +2 -1
  238. package/dist/transport/collectives/received-request.d.ts.map +1 -0
  239. package/dist/transport/collectives/received-request.js.map +1 -0
  240. package/dist/transport/collectives/render.d.ts +40 -0
  241. package/dist/transport/collectives/render.d.ts.map +1 -0
  242. package/dist/transport/collectives/render.js +74 -0
  243. package/dist/transport/collectives/render.js.map +1 -0
  244. package/dist/{endpoint/collective → transport/collectives}/request-sends.d.ts +3 -2
  245. package/dist/transport/collectives/request-sends.d.ts.map +1 -0
  246. package/dist/transport/collectives/request-sends.js.map +1 -0
  247. package/dist/{endpoint/collective → transport/collectives}/shared-answers.d.ts +4 -3
  248. package/dist/transport/collectives/shared-answers.d.ts.map +1 -0
  249. package/dist/transport/collectives/shared-answers.js.map +1 -0
  250. package/dist/transport/collectives/validation.d.ts +31 -0
  251. package/dist/transport/collectives/validation.d.ts.map +1 -0
  252. package/dist/transport/collectives/validation.js +239 -0
  253. package/dist/transport/collectives/validation.js.map +1 -0
  254. package/dist/{endpoint/addressing/index.d.ts → transport/messaging/address.d.ts} +7 -4
  255. package/dist/transport/messaging/address.d.ts.map +1 -0
  256. package/dist/{endpoint/addressing/index.js → transport/messaging/address.js} +30 -26
  257. package/dist/transport/messaging/address.js.map +1 -0
  258. package/dist/{endpoint/protocol/index.d.ts → transport/messaging/certification.d.ts} +4 -4
  259. package/dist/transport/messaging/certification.d.ts.map +1 -0
  260. package/dist/{endpoint/protocol/index.js → transport/messaging/certification.js} +15 -10
  261. package/dist/transport/messaging/certification.js.map +1 -0
  262. package/dist/{endpoint/engine-dissemination.d.ts → transport/messaging/dissemination.d.ts} +3 -3
  263. package/dist/transport/messaging/dissemination.d.ts.map +1 -0
  264. package/dist/{endpoint/engine-dissemination.js → transport/messaging/dissemination.js} +7 -6
  265. package/dist/transport/messaging/dissemination.js.map +1 -0
  266. package/dist/transport/messaging/errors.d.ts +50 -0
  267. package/dist/transport/messaging/errors.d.ts.map +1 -0
  268. package/dist/transport/messaging/errors.js +64 -0
  269. package/dist/transport/messaging/errors.js.map +1 -0
  270. package/dist/{endpoint/protocol → transport/messaging}/evidence.d.ts +3 -3
  271. package/dist/transport/messaging/evidence.d.ts.map +1 -0
  272. package/dist/{endpoint/protocol → transport/messaging}/evidence.js +1 -1
  273. package/dist/transport/messaging/evidence.js.map +1 -0
  274. package/dist/{endpoint/engine.d.ts → transport/messaging/index.d.ts} +4 -4
  275. package/dist/transport/messaging/index.d.ts.map +1 -0
  276. package/dist/{endpoint/engine.js → transport/messaging/index.js} +25 -9
  277. package/dist/transport/messaging/index.js.map +1 -0
  278. package/dist/transport/messaging/message.d.ts +112 -0
  279. package/dist/transport/messaging/message.d.ts.map +1 -0
  280. package/dist/transport/messaging/message.js +38 -0
  281. package/dist/transport/messaging/message.js.map +1 -0
  282. package/dist/{endpoint/recovery → transport/messaging}/reanchor/empty.d.ts +5 -5
  283. package/dist/transport/messaging/reanchor/empty.d.ts.map +1 -0
  284. package/dist/{endpoint/recovery → transport/messaging}/reanchor/empty.js +3 -3
  285. package/dist/transport/messaging/reanchor/empty.js.map +1 -0
  286. package/dist/{endpoint/recovery → transport/messaging}/reanchor/index.d.ts +3 -3
  287. package/dist/transport/messaging/reanchor/index.d.ts.map +1 -0
  288. package/dist/{endpoint/recovery → transport/messaging}/reanchor/index.js +27 -12
  289. package/dist/transport/messaging/reanchor/index.js.map +1 -0
  290. package/dist/{endpoint/engine-durability.d.ts → transport/messaging/records/index.d.ts} +9 -6
  291. package/dist/transport/messaging/records/index.d.ts.map +1 -0
  292. package/dist/{endpoint/engine-durability.js → transport/messaging/records/index.js} +9 -15
  293. package/dist/transport/messaging/records/index.js.map +1 -0
  294. package/dist/{endpoint → transport/messaging}/recovery/barrier.d.ts +1 -1
  295. package/dist/transport/messaging/recovery/barrier.d.ts.map +1 -0
  296. package/dist/transport/messaging/recovery/barrier.js.map +1 -0
  297. package/dist/{endpoint/recovery/store-evidence.d.ts → transport/messaging/recovery/evidence.d.ts} +5 -5
  298. package/dist/transport/messaging/recovery/evidence.d.ts.map +1 -0
  299. package/dist/{endpoint/recovery/store-evidence.js → transport/messaging/recovery/evidence.js} +3 -3
  300. package/dist/transport/messaging/recovery/evidence.js.map +1 -0
  301. package/dist/{endpoint → transport/messaging}/recovery/index.d.ts +4 -4
  302. package/dist/transport/messaging/recovery/index.d.ts.map +1 -0
  303. package/dist/{endpoint → transport/messaging}/recovery/index.js +41 -32
  304. package/dist/transport/messaging/recovery/index.js.map +1 -0
  305. package/dist/{endpoint/recovery/store.d.ts → transport/messaging/recovery/persistence.d.ts} +5 -5
  306. package/dist/transport/messaging/recovery/persistence.d.ts.map +1 -0
  307. package/dist/{endpoint/recovery/store.js → transport/messaging/recovery/persistence.js} +4 -4
  308. package/dist/transport/messaging/recovery/persistence.js.map +1 -0
  309. package/dist/{endpoint/recovery/state.d.ts → transport/messaging/recovery-session/index.d.ts} +6 -6
  310. package/dist/transport/messaging/recovery-session/index.d.ts.map +1 -0
  311. package/dist/{endpoint/recovery/state.js → transport/messaging/recovery-session/index.js} +3 -3
  312. package/dist/transport/messaging/recovery-session/index.js.map +1 -0
  313. package/dist/{endpoint/engine-types.d.ts → transport/messaging/runtime/index.d.ts} +22 -5
  314. package/dist/transport/messaging/runtime/index.d.ts.map +1 -0
  315. package/dist/{endpoint/engine-types.js → transport/messaging/runtime/index.js} +1 -1
  316. package/dist/transport/messaging/runtime/index.js.map +1 -0
  317. package/dist/{endpoint/engine-send.d.ts → transport/messaging/send.d.ts} +5 -4
  318. package/dist/transport/messaging/send.d.ts.map +1 -0
  319. package/dist/{endpoint/engine-send.js → transport/messaging/send.js} +4 -4
  320. package/dist/transport/messaging/send.js.map +1 -0
  321. package/dist/transport/router/index.d.ts.map +1 -0
  322. package/dist/{endpoint/router-worker → transport/router}/index.js +1 -1
  323. package/dist/transport/router/index.js.map +1 -0
  324. package/dist/transport/router/outage.d.ts.map +1 -0
  325. package/dist/transport/router/outage.js.map +1 -0
  326. package/dist/{endpoint/router-worker → transport/router}/types.d.ts +3 -4
  327. package/dist/transport/router/types.d.ts.map +1 -0
  328. package/dist/transport/router/types.js.map +1 -0
  329. package/dist/{endpoint/representation-canonical.d.ts → transport/wire/encoding/canonical.d.ts} +1 -2
  330. package/dist/transport/wire/encoding/canonical.d.ts.map +1 -0
  331. package/dist/{endpoint/representation-canonical.js → transport/wire/encoding/canonical.js} +2 -2
  332. package/dist/transport/wire/encoding/canonical.js.map +1 -0
  333. package/dist/{endpoint/representation-codec.d.ts → transport/wire/encoding/codec.d.ts} +5 -9
  334. package/dist/transport/wire/encoding/codec.d.ts.map +1 -0
  335. package/dist/{endpoint/representation-codec.js → transport/wire/encoding/codec.js} +7 -27
  336. package/dist/transport/wire/encoding/codec.js.map +1 -0
  337. package/dist/transport/wire/encoding/index.d.ts +4 -0
  338. package/dist/transport/wire/encoding/index.d.ts.map +1 -0
  339. package/dist/transport/wire/encoding/index.js +6 -0
  340. package/dist/transport/wire/encoding/index.js.map +1 -0
  341. package/dist/transport/wire/index.d.ts +6 -0
  342. package/dist/transport/wire/index.d.ts.map +1 -0
  343. package/dist/transport/wire/index.js +9 -0
  344. package/dist/transport/wire/index.js.map +1 -0
  345. package/dist/{endpoint/representation-schemas.d.ts → transport/wire/schemas.d.ts} +76 -98
  346. package/dist/transport/wire/schemas.d.ts.map +1 -0
  347. package/dist/{endpoint/representation-schemas.js → transport/wire/schemas.js} +7 -19
  348. package/dist/transport/wire/schemas.js.map +1 -0
  349. package/dist/transport/wire/values.d.ts +114 -0
  350. package/dist/transport/wire/values.d.ts.map +1 -0
  351. package/dist/transport/wire/values.js +192 -0
  352. package/dist/transport/wire/values.js.map +1 -0
  353. package/dist/{endpoint/representation-verification.d.ts → transport/wire/verification.d.ts} +3 -4
  354. package/dist/transport/wire/verification.d.ts.map +1 -0
  355. package/dist/{endpoint/representation-verification.js → transport/wire/verification.js} +4 -4
  356. package/dist/transport/wire/verification.js.map +1 -0
  357. package/package.json +6 -6
  358. package/dist/client-runtime.d.ts.map +0 -1
  359. package/dist/client-runtime.js.map +0 -1
  360. package/dist/contract.d.ts +0 -721
  361. package/dist/contract.d.ts.map +0 -1
  362. package/dist/contract.js +0 -441
  363. package/dist/contract.js.map +0 -1
  364. package/dist/contract.types-check.d.ts.map +0 -1
  365. package/dist/contract.types-check.js.map +0 -1
  366. package/dist/daemon/configuration.d.ts.map +0 -1
  367. package/dist/daemon/configuration.js +0 -75
  368. package/dist/daemon/configuration.js.map +0 -1
  369. package/dist/daemon/management.d.ts.map +0 -1
  370. package/dist/daemon/management.js.map +0 -1
  371. package/dist/daemon/registration.d.ts.map +0 -1
  372. package/dist/daemon/registration.js.map +0 -1
  373. package/dist/daemon/runtime/activation.d.ts.map +0 -1
  374. package/dist/daemon/runtime/activation.js.map +0 -1
  375. package/dist/daemon/runtime/controller.d.ts.map +0 -1
  376. package/dist/daemon/runtime/controller.js +0 -138
  377. package/dist/daemon/runtime/controller.js.map +0 -1
  378. package/dist/daemon/runtime/history-export.d.ts +0 -33
  379. package/dist/daemon/runtime/history-export.d.ts.map +0 -1
  380. package/dist/daemon/runtime/history-export.js.map +0 -1
  381. package/dist/daemon/runtime/index.d.ts.map +0 -1
  382. package/dist/daemon/runtime/index.js.map +0 -1
  383. package/dist/daemon/runtime/pending-delivery.d.ts +0 -49
  384. package/dist/daemon/runtime/pending-delivery.d.ts.map +0 -1
  385. package/dist/daemon/runtime/pending-delivery.js.map +0 -1
  386. package/dist/daemon/runtime/protocol.d.ts.map +0 -1
  387. package/dist/daemon/runtime/protocol.js.map +0 -1
  388. package/dist/endpoint/addressing/index.d.ts.map +0 -1
  389. package/dist/endpoint/addressing/index.js.map +0 -1
  390. package/dist/endpoint/collective/operation.d.ts.map +0 -1
  391. package/dist/endpoint/collective/operation.js.map +0 -1
  392. package/dist/endpoint/collective/received-request.d.ts.map +0 -1
  393. package/dist/endpoint/collective/received-request.js.map +0 -1
  394. package/dist/endpoint/collective/request-sends.d.ts.map +0 -1
  395. package/dist/endpoint/collective/request-sends.js.map +0 -1
  396. package/dist/endpoint/collective/shared-answers.d.ts.map +0 -1
  397. package/dist/endpoint/collective/shared-answers.js.map +0 -1
  398. package/dist/endpoint/collective/validation.d.ts +0 -49
  399. package/dist/endpoint/collective/validation.d.ts.map +0 -1
  400. package/dist/endpoint/collective/validation.js +0 -97
  401. package/dist/endpoint/collective/validation.js.map +0 -1
  402. package/dist/endpoint/collective/wire.d.ts.map +0 -1
  403. package/dist/endpoint/collective/wire.js.map +0 -1
  404. package/dist/endpoint/engine-dissemination.d.ts.map +0 -1
  405. package/dist/endpoint/engine-dissemination.js.map +0 -1
  406. package/dist/endpoint/engine-durability.d.ts.map +0 -1
  407. package/dist/endpoint/engine-durability.js.map +0 -1
  408. package/dist/endpoint/engine-send.d.ts.map +0 -1
  409. package/dist/endpoint/engine-send.js.map +0 -1
  410. package/dist/endpoint/engine-types.d.ts.map +0 -1
  411. package/dist/endpoint/engine-types.js.map +0 -1
  412. package/dist/endpoint/engine.d.ts.map +0 -1
  413. package/dist/endpoint/engine.js.map +0 -1
  414. package/dist/endpoint/protocol/evidence.d.ts.map +0 -1
  415. package/dist/endpoint/protocol/evidence.js.map +0 -1
  416. package/dist/endpoint/protocol/index.d.ts.map +0 -1
  417. package/dist/endpoint/protocol/index.js.map +0 -1
  418. package/dist/endpoint/recovery/barrier.d.ts.map +0 -1
  419. package/dist/endpoint/recovery/barrier.js.map +0 -1
  420. package/dist/endpoint/recovery/index.d.ts.map +0 -1
  421. package/dist/endpoint/recovery/index.js.map +0 -1
  422. package/dist/endpoint/recovery/reanchor/empty.d.ts.map +0 -1
  423. package/dist/endpoint/recovery/reanchor/empty.js.map +0 -1
  424. package/dist/endpoint/recovery/reanchor/index.d.ts.map +0 -1
  425. package/dist/endpoint/recovery/reanchor/index.js.map +0 -1
  426. package/dist/endpoint/recovery/state.d.ts.map +0 -1
  427. package/dist/endpoint/recovery/state.js.map +0 -1
  428. package/dist/endpoint/recovery/store-evidence.d.ts.map +0 -1
  429. package/dist/endpoint/recovery/store-evidence.js.map +0 -1
  430. package/dist/endpoint/recovery/store.d.ts.map +0 -1
  431. package/dist/endpoint/recovery/store.js.map +0 -1
  432. package/dist/endpoint/representation-canonical.d.ts.map +0 -1
  433. package/dist/endpoint/representation-canonical.js.map +0 -1
  434. package/dist/endpoint/representation-codec.d.ts.map +0 -1
  435. package/dist/endpoint/representation-codec.js.map +0 -1
  436. package/dist/endpoint/representation-schemas.d.ts.map +0 -1
  437. package/dist/endpoint/representation-schemas.js.map +0 -1
  438. package/dist/endpoint/representation-verification.d.ts.map +0 -1
  439. package/dist/endpoint/representation-verification.js.map +0 -1
  440. package/dist/endpoint/representation.d.ts +0 -6
  441. package/dist/endpoint/representation.d.ts.map +0 -1
  442. package/dist/endpoint/representation.js +0 -8
  443. package/dist/endpoint/representation.js.map +0 -1
  444. package/dist/endpoint/router-worker/index.d.ts.map +0 -1
  445. package/dist/endpoint/router-worker/index.js.map +0 -1
  446. package/dist/endpoint/router-worker/outage.d.ts.map +0 -1
  447. package/dist/endpoint/router-worker/outage.js.map +0 -1
  448. package/dist/endpoint/router-worker/types.d.ts.map +0 -1
  449. package/dist/endpoint/router-worker/types.js.map +0 -1
  450. package/dist/endpoint/store/anchors.d.ts.map +0 -1
  451. package/dist/endpoint/store/anchors.js.map +0 -1
  452. package/dist/endpoint/store/database/index.d.ts.map +0 -1
  453. package/dist/endpoint/store/database/index.js.map +0 -1
  454. package/dist/endpoint/store/database/schema.d.ts.map +0 -1
  455. package/dist/endpoint/store/database/schema.js.map +0 -1
  456. package/dist/endpoint/store/database/values.d.ts.map +0 -1
  457. package/dist/endpoint/store/database/values.js.map +0 -1
  458. package/dist/endpoint/store/deliveries.d.ts.map +0 -1
  459. package/dist/endpoint/store/deliveries.js.map +0 -1
  460. package/dist/endpoint/store/dissemination.d.ts.map +0 -1
  461. package/dist/endpoint/store/dissemination.js.map +0 -1
  462. package/dist/endpoint/store/index.d.ts.map +0 -1
  463. package/dist/endpoint/store/index.js.map +0 -1
  464. package/dist/endpoint/store/management.d.ts.map +0 -1
  465. package/dist/endpoint/store/management.js.map +0 -1
  466. package/dist/endpoint/store/outbound.d.ts.map +0 -1
  467. package/dist/endpoint/store/outbound.js.map +0 -1
  468. package/dist/endpoint/store/records.d.ts.map +0 -1
  469. package/dist/endpoint/store/records.js.map +0 -1
  470. package/dist/endpoint/store/rows/index.d.ts.map +0 -1
  471. package/dist/endpoint/store/rows/index.js.map +0 -1
  472. package/dist/endpoint/store/types.d.ts.map +0 -1
  473. package/dist/endpoint/store/types.js.map +0 -1
  474. package/dist/endpoint/store.d.ts +0 -10
  475. package/dist/endpoint/store.d.ts.map +0 -1
  476. package/dist/endpoint/store.js +0 -6
  477. package/dist/endpoint/store.js.map +0 -1
  478. package/dist/harness-mcp-contract.d.ts.map +0 -1
  479. package/dist/harness-mcp-contract.js +0 -113
  480. package/dist/harness-mcp-contract.js.map +0 -1
  481. package/dist/harness-mcp-http.d.ts.map +0 -1
  482. package/dist/harness-mcp-http.js.map +0 -1
  483. package/dist/harness-mcp-subscription.d.ts +0 -30
  484. package/dist/harness-mcp-subscription.d.ts.map +0 -1
  485. package/dist/harness-mcp-subscription.js +0 -361
  486. package/dist/harness-mcp-subscription.js.map +0 -1
  487. package/dist/harness-mcp-wire.d.ts.map +0 -1
  488. package/dist/harness-mcp-wire.js.map +0 -1
  489. package/dist/management-runtime.d.ts.map +0 -1
  490. package/dist/management-runtime.js.map +0 -1
  491. package/dist/message-text.d.ts.map +0 -1
  492. package/dist/message-text.js.map +0 -1
  493. package/dist/server.d.ts.map +0 -1
  494. package/dist/server.js.map +0 -1
  495. package/dist/server.types-check.d.ts.map +0 -1
  496. package/dist/server.types-check.js.map +0 -1
  497. /package/dist/{endpoint/store → store}/anchors.d.ts +0 -0
  498. /package/dist/{endpoint/store → store}/anchors.js +0 -0
  499. /package/dist/{endpoint/store → store}/database/index.d.ts +0 -0
  500. /package/dist/{endpoint/store → store}/database/index.js +0 -0
  501. /package/dist/{endpoint/store → store}/database/schema.d.ts +0 -0
  502. /package/dist/{endpoint/store → store}/database/values.d.ts +0 -0
  503. /package/dist/{endpoint/store → store}/database/values.js +0 -0
  504. /package/dist/{endpoint/store → store}/records.d.ts +0 -0
  505. /package/dist/{endpoint/store → store}/rows/index.d.ts +0 -0
  506. /package/dist/{endpoint/store → store}/rows/index.js +0 -0
  507. /package/dist/{endpoint/store → store}/types.js +0 -0
  508. /package/dist/{endpoint/collective → transport/collectives}/received-request.js +0 -0
  509. /package/dist/{endpoint/collective → transport/collectives}/request-sends.js +0 -0
  510. /package/dist/{endpoint/collective → transport/collectives}/shared-answers.js +0 -0
  511. /package/dist/{endpoint → transport/messaging}/recovery/barrier.js +0 -0
  512. /package/dist/{endpoint/router-worker → transport/router}/index.d.ts +0 -0
  513. /package/dist/{endpoint/router-worker → transport/router}/outage.d.ts +0 -0
  514. /package/dist/{endpoint/router-worker → transport/router}/outage.js +0 -0
  515. /package/dist/{endpoint/router-worker → transport/router}/types.js +0 -0
package/NOTICE CHANGED
@@ -8,9 +8,4 @@ published manifests declared; the repository LICENSE was the MIT License at
8
8
  the time. The source in this repository is original to the project; no
9
9
  third-party MIT-licensed source is relicensed by this change.
10
10
 
11
- Third-party software is consumed as npm packages, container base images, and
12
- pinned upstream source archives at build time under their own licenses:
13
-
14
- - OpenClaw (ghcr.io/openclaw/openclaw) as the base of the OpenClaw agent image.
15
- - NanoClaw (github.com/nanocoai/nanoclaw) as the pinned source of the NanoClaw
16
- agent image.
11
+ Third-party software is consumed as npm packages under their own licenses.
package/README.md CHANGED
@@ -14,7 +14,7 @@ it was built with.
14
14
  | Import | Purpose |
15
15
  |---|---|
16
16
  | `@moltzap/client` | `HarnessEndpoint`, operation and inbound item values, endpoint acquisition, and closed operation failures |
17
- | `@moltzap/client/server` | Production `MoltZapDaemon` process composition |
17
+ | `@moltzap/client/service` | Production `MoltZapService` process composition |
18
18
 
19
19
  `HarnessEndpoint.send` performs one collective operation: text to an explicit
20
20
  `agent:` or `group:` address with an optional `collective` operation,
@@ -42,7 +42,7 @@ requester and every member an all_gather's; and a host whose tool returns
42
42
  before the send passes `failureDelivery: "inbound"` to receive a refused
43
43
  gather, all_gather or response as an `operationFailed` item. Each delivery carries an
44
44
  adapter-only acknowledgment governed by the
45
- [host-specific acceptance contract](../../docs/spec/harness/ingress.md#durable-acceptance).
45
+ [host-specific acceptance contract](../../docs/spec/harness/ingress.md#delivery-handoff).
46
46
  Hosts implement the required persistence and replay guarantees. No inbound
47
47
  message carries Client-level reply authority.
48
48
 
package/bin/moltzapd CHANGED
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { NodeRuntime } from "@effect/platform-node";
3
3
  import { ConfigProvider, Effect, Layer } from "effect";
4
- import { MoltZapDaemon } from "../dist/server.js";
4
+ import { MoltZapService } from "../dist/service/index.js";
5
5
 
6
- Layer.launch(MoltZapDaemon.layer).pipe(
6
+ Layer.launch(MoltZapService.layer).pipe(
7
7
  Effect.withConfigProvider(ConfigProvider.fromEnv()),
8
8
  NodeRuntime.runMain,
9
9
  );
@@ -1,75 +1,14 @@
1
- /** @file Closed private representation of the loopback HarnessEndpoint MCP wire. */
2
- import { Effect, JSONSchema, type ParseResult, Schema } from "effect";
3
- import { CollectiveId, decodeCollectiveFailure } from "./contract.js";
4
- /** MCP capability carrying tagged inbound item delivery. */
5
- export declare const HARNESS_EVENTS_EXTENSION = "xyz.moltzap/events-v3";
6
- /** Subscription filter requesting durable inbound items. */
7
- export declare const HARNESS_MESSAGE_READY_FILTER = "xyz.moltzap/messageReady";
8
- /** Notification method carrying one pending inbound item. */
9
- export declare const HARNESS_MESSAGE_READY_NOTIFICATION = "notifications/xyz.moltzap/message_ready";
10
- /** Adapter operation performing one collective operation. */
11
- export declare const HARNESS_SEND_TOOL = "send_message";
12
- /** Adapter operation acknowledging successful stock host callback completion. */
13
- export declare const HARNESS_ACKNOWLEDGE_DELIVERY_TOOL = "acknowledge_delivery";
14
- declare const harnessEventsExtensionDeclarationSchema: Schema.Record$<typeof Schema.String, typeof Schema.Never>;
15
- declare const harnessAcknowledgeDeliveryRequestSchema: Schema.Struct<{
16
- deliveryToken: Schema.brand<Schema.filter<typeof Schema.String>, "DeliveryToken">;
17
- }>;
18
- declare const harnessEmptyResultSchema: Schema.Record$<typeof Schema.String, typeof Schema.Never>;
1
+ /** @file The record of endpoint traffic: what the daemon delivered to its host and what the host sent. */
2
+ import { FileSystem } from "@effect/platform";
3
+ import { Effect, Schema } from "effect";
19
4
  /**
20
- * One `send_message` call: the send, and where a refused gather or response
21
- * reports its error. `inbound` is for a host whose tool returns before the
22
- * send: the call completes and the error arrives as an `operationFailed`
23
- * item. The default returns it as the tool error.
5
+ * One line of the daemon's optional history export: an item as the daemon
6
+ * published it, a completed `send` invocation with its input and outcome, or
7
+ * the one line that says the export stopped. Readers decode the file line by
8
+ * line with this schema rather than copying its shape.
24
9
  */
25
- declare const harnessSendRequestSchema: Schema.Struct<{
26
- input: Schema.Union<[Schema.Struct<{
27
- to: Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">;
28
- text: Schema.filter<typeof Schema.String>;
29
- collective: Schema.optionalWith<Schema.Union<[Schema.Struct<{
30
- op: Schema.optionalWith<Schema.Literal<["multicast"]>, {
31
- exact: true;
32
- }>;
33
- }>, Schema.Struct<{
34
- op: Schema.Literal<["gather", "all_gather"]>;
35
- deadline: Schema.filter<Schema.filter<typeof Schema.Number>>;
36
- requestedSchema: Schema.Struct<{
37
- $schema: Schema.optionalWith<typeof Schema.String, {
38
- exact: true;
39
- }>;
40
- type: Schema.Literal<["object"]>;
41
- properties: Schema.Record$<typeof Schema.String, Schema.Record$<typeof Schema.String, Schema.Schema<import("./contract.js").JsonValue, import("./contract.js").JsonValue, never>>>;
42
- required: Schema.optionalWith<Schema.Array$<typeof Schema.String>, {
43
- exact: true;
44
- }>;
45
- }>;
46
- }>]>, {
47
- exact: true;
48
- }>;
49
- }>, Schema.Struct<{
50
- to: Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">;
51
- collectiveResponse: Schema.Union<[Schema.Struct<{
52
- action: Schema.Literal<["accept"]>;
53
- content: Schema.Record$<typeof Schema.String, Schema.Union<[typeof Schema.String, Schema.filter<typeof Schema.Number>, typeof Schema.Boolean, Schema.Array$<typeof Schema.String>]>>;
54
- }>, Schema.Struct<{
55
- action: Schema.Literal<["decline"]>;
56
- }>]>;
57
- }>]>;
58
- failureDelivery: Schema.optionalWith<Schema.Literal<["result", "inbound"]>, {
59
- exact: true;
60
- }>;
61
- }>;
62
- /**
63
- * A completed operation. A collecting operation names the id its answers and
64
- * result carry; a multicast has none, so its result is empty.
65
- */
66
- declare const harnessSendResultSchema: Schema.Struct<{
67
- operationId: Schema.optionalWith<Schema.brand<Schema.filter<typeof Schema.String>, "CollectiveId">, {
68
- exact: true;
69
- }>;
70
- }>;
71
- declare const harnessMessageReadyEventSchema: Schema.Struct<{
72
- deliveryToken: Schema.brand<Schema.filter<typeof Schema.String>, "DeliveryToken">;
10
+ export declare const HistoryExportRecord: Schema.Union<[Schema.Struct<{
11
+ kind: Schema.Literal<["inbound"]>;
73
12
  item: Schema.Union<[Schema.Struct<{
74
13
  kind: Schema.Literal<["multicast"]>;
75
14
  message: Schema.Union<[Schema.filter<Schema.Struct<{
@@ -82,19 +21,19 @@ declare const harnessMessageReadyEventSchema: Schema.Struct<{
82
21
  readonly text: string;
83
22
  } | {
84
23
  readonly type: "data";
85
- readonly value: import("./contract.js").JsonValue;
24
+ readonly value: import("../index.js").JsonValue;
86
25
  }, ...({
87
26
  readonly type: "text";
88
27
  readonly text: string;
89
28
  } | {
90
29
  readonly type: "data";
91
- readonly value: import("./contract.js").JsonValue;
30
+ readonly value: import("../index.js").JsonValue;
92
31
  })[]], Schema.NonEmptyArray<Schema.Union<[Schema.Struct<{
93
32
  type: Schema.Literal<["text"]>;
94
33
  text: Schema.filter<typeof Schema.String>;
95
34
  }>, Schema.Struct<{
96
35
  type: Schema.Literal<["data"]>;
97
- value: Schema.Schema<import("./contract.js").JsonValue, import("./contract.js").JsonValue, never>;
36
+ value: Schema.Schema<import("../index.js").JsonValue, import("../index.js").JsonValue, never>;
98
37
  }>]>>>;
99
38
  }>>, Schema.filter<Schema.Struct<{
100
39
  kind: Schema.Literal<["group"]>;
@@ -107,23 +46,24 @@ declare const harnessMessageReadyEventSchema: Schema.Struct<{
107
46
  readonly text: string;
108
47
  } | {
109
48
  readonly type: "data";
110
- readonly value: import("./contract.js").JsonValue;
49
+ readonly value: import("../index.js").JsonValue;
111
50
  }, ...({
112
51
  readonly type: "text";
113
52
  readonly text: string;
114
53
  } | {
115
54
  readonly type: "data";
116
- readonly value: import("./contract.js").JsonValue;
55
+ readonly value: import("../index.js").JsonValue;
117
56
  })[]], Schema.NonEmptyArray<Schema.Union<[Schema.Struct<{
118
57
  type: Schema.Literal<["text"]>;
119
58
  text: Schema.filter<typeof Schema.String>;
120
59
  }>, Schema.Struct<{
121
60
  type: Schema.Literal<["data"]>;
122
- value: Schema.Schema<import("./contract.js").JsonValue, import("./contract.js").JsonValue, never>;
61
+ value: Schema.Schema<import("../index.js").JsonValue, import("../index.js").JsonValue, never>;
123
62
  }>]>>>;
124
63
  }>>]>;
125
64
  }>, Schema.Struct<{
126
65
  kind: Schema.Literal<["collectiveRequest"]>;
66
+ op: Schema.Literal<["gather", "all_gather"]>;
127
67
  id: Schema.brand<Schema.filter<typeof Schema.String>, "CollectiveId">;
128
68
  postId: Schema.brand<Schema.filter<typeof Schema.String>, "PostId">;
129
69
  from: Schema.brand<Schema.filter<Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">>, "AgentAddress">;
@@ -134,7 +74,7 @@ declare const harnessMessageReadyEventSchema: Schema.Struct<{
134
74
  exact: true;
135
75
  }>;
136
76
  type: Schema.Literal<["object"]>;
137
- properties: Schema.Record$<typeof Schema.String, Schema.Record$<typeof Schema.String, Schema.Schema<import("./contract.js").JsonValue, import("./contract.js").JsonValue, never>>>;
77
+ properties: Schema.Record$<typeof Schema.String, Schema.Record$<typeof Schema.String, Schema.Schema<import("../index.js").JsonValue, import("../index.js").JsonValue, never>>>;
138
78
  required: Schema.optionalWith<Schema.Array$<typeof Schema.String>, {
139
79
  exact: true;
140
80
  }>;
@@ -142,6 +82,7 @@ declare const harnessMessageReadyEventSchema: Schema.Struct<{
142
82
  deadlineAt: Schema.filter<Schema.filter<typeof Schema.Number>>;
143
83
  }>, Schema.Struct<{
144
84
  kind: Schema.Literal<["collectiveResult"]>;
85
+ op: Schema.Literal<["gather", "all_gather"]>;
145
86
  id: Schema.brand<Schema.filter<typeof Schema.String>, "CollectiveId">;
146
87
  to: Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">;
147
88
  question: Schema.filter<typeof Schema.String>;
@@ -159,72 +100,91 @@ declare const harnessMessageReadyEventSchema: Schema.Struct<{
159
100
  kind: Schema.Literal<["no-answer"]>;
160
101
  }>]>;
161
102
  }>>;
162
- closePostId: Schema.optionalWith<Schema.brand<Schema.filter<typeof Schema.String>, "PostId">, {
163
- exact: true;
164
- }>;
165
103
  }>, Schema.Struct<{
166
104
  kind: Schema.Literal<["operationFailed"]>;
167
105
  id: Schema.brand<Schema.filter<typeof Schema.String>, "CollectiveId">;
168
106
  to: Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">;
169
107
  error: typeof Schema.String;
170
108
  }>]>;
171
- }>;
172
- type HarnessEventsExtensionDeclaration = typeof harnessEventsExtensionDeclarationSchema.Type;
173
- /** Decoded delivery acknowledgment arguments owned by the daemon. */
174
- export type HarnessAcknowledgeDeliveryRequest = typeof harnessAcknowledgeDeliveryRequestSchema.Type;
175
- /** Decoded empty adapter-operation result. */
176
- export type HarnessEmptyResult = typeof harnessEmptyResultSchema.Type;
177
- /** Decoded arguments of one `send_message` call. */
178
- export type HarnessSendRequest = typeof harnessSendRequestSchema.Type;
179
- /** Decoded error data of one refused `send_message` call. */
180
- export type HarnessSendErrorData = Readonly<{
181
- reason: string;
182
- }> | Readonly<{
183
- reason: "collective-failed";
184
- id: CollectiveId;
185
- failure: Effect.Effect.Success<ReturnType<typeof decodeCollectiveFailure>>;
186
- }>;
187
- /** Decoded result of one `send_message` operation. */
188
- export type HarnessSendResult = typeof harnessSendResultSchema.Type;
189
- /** One stable pending inbound item emitted by the daemon. */
190
- export type HarnessMessageReadyEvent = typeof harnessMessageReadyEventSchema.Type;
191
- /** JSON Schema advertised for the delivery acknowledgment operation. */
192
- export declare const harnessAcknowledgeDeliveryRequestJsonSchema: JSONSchema.JsonSchema7Root;
193
- /** JSON Schema advertised for `send_message` arguments. */
194
- export declare const harnessSendRequestJsonSchema: JSONSchema.JsonSchema7Root;
195
- /** JSON Schema advertised for `send_message` results. */
196
- export declare const harnessSendResultJsonSchema: JSONSchema.JsonSchema7Root;
197
- /** JSON Schema advertised for empty adapter-operation results. */
198
- export declare const harnessEmptyResultJsonSchema: JSONSchema.JsonSchema7Root;
199
- /**
200
- * Decode the exact events-v3 capability declaration.
201
- * @param value Untrusted capability payload.
202
- * @returns The validated empty declaration.
203
- */
204
- export declare function decodeHarnessEventsExtensionDeclaration(value: unknown): Effect.Effect<HarnessEventsExtensionDeclaration, ParseResult.ParseError>;
205
- /**
206
- * Decode one exact delivery acknowledgment request.
207
- * @param value Untrusted tool arguments.
208
- * @returns The validated request.
209
- */
210
- export declare function decodeHarnessAcknowledgeDeliveryRequest(value: unknown): Effect.Effect<HarnessAcknowledgeDeliveryRequest, ParseResult.ParseError>;
211
- /**
212
- * Decode one exact pending-delivery notification payload.
213
- * @param value Untrusted notification parameters.
214
- * @returns The validated pending delivery.
215
- */
216
- export declare function decodeHarnessMessageReadyEvent(value: unknown): Effect.Effect<HarnessMessageReadyEvent, ParseResult.ParseError>;
109
+ at: typeof Schema.DateTimeUtc;
110
+ }>, Schema.Struct<{
111
+ kind: Schema.Literal<["outbound"]>;
112
+ input: Schema.Union<[Schema.Struct<{
113
+ to: Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">;
114
+ text: Schema.filter<typeof Schema.String>;
115
+ collective: Schema.optionalWith<Schema.Union<[Schema.Struct<{
116
+ op: Schema.optionalWith<Schema.Literal<["multicast"]>, {
117
+ exact: true;
118
+ }>;
119
+ }>, Schema.Struct<{
120
+ op: Schema.Literal<["gather", "all_gather"]>;
121
+ deadline: Schema.filter<Schema.filter<typeof Schema.Number>>;
122
+ requestedSchema: Schema.Struct<{
123
+ $schema: Schema.optionalWith<typeof Schema.String, {
124
+ exact: true;
125
+ }>;
126
+ type: Schema.Literal<["object"]>;
127
+ properties: Schema.Record$<typeof Schema.String, Schema.Record$<typeof Schema.String, Schema.Schema<import("../index.js").JsonValue, import("../index.js").JsonValue, never>>>;
128
+ required: Schema.optionalWith<Schema.Array$<typeof Schema.String>, {
129
+ exact: true;
130
+ }>;
131
+ }>;
132
+ }>]>, {
133
+ exact: true;
134
+ }>;
135
+ }>, Schema.Struct<{
136
+ to: Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">;
137
+ collectiveResponse: Schema.Union<[Schema.Struct<{
138
+ action: Schema.Literal<["accept"]>;
139
+ content: Schema.Record$<typeof Schema.String, Schema.Union<[typeof Schema.String, Schema.filter<typeof Schema.Number>, typeof Schema.Boolean, Schema.Array$<typeof Schema.String>]>>;
140
+ }>, Schema.Struct<{
141
+ action: Schema.Literal<["decline"]>;
142
+ }>]>;
143
+ }>]>;
144
+ outcome: Schema.Union<[Schema.Struct<{
145
+ kind: Schema.Literal<["sent"]>;
146
+ operationId: Schema.optionalWith<Schema.brand<Schema.filter<typeof Schema.String>, "CollectiveId">, {
147
+ exact: true;
148
+ }>;
149
+ postIds: Schema.Array$<Schema.brand<Schema.filter<typeof Schema.String>, "PostId">>;
150
+ }>, Schema.Struct<{
151
+ kind: Schema.Literal<["failed"]>;
152
+ error: typeof Schema.String;
153
+ }>]>;
154
+ at: typeof Schema.DateTimeUtc;
155
+ }>, Schema.Struct<{
156
+ kind: Schema.Literal<["export-failed"]>;
157
+ reason: typeof Schema.String;
158
+ at: typeof Schema.DateTimeUtc;
159
+ }>]>;
160
+ /** A validated line of the daemon's history export. */
161
+ export type HistoryExportRecord = typeof HistoryExportRecord.Type;
217
162
  /**
218
- * Decode the error data of one refused `send_message` call.
219
- * @param value Untrusted JSON-RPC error data.
220
- * @returns The collective failure or send reason it carries.
163
+ * Sink for the daemon's optional history export. Recording never fails and
164
+ * never blocks the daemon on its own outcome: an export that stops is the
165
+ * sink's business, recorded in the file.
221
166
  */
222
- export declare function decodeHarnessSendErrorData(value: unknown): Effect.Effect<HarnessSendErrorData, ParseResult.ParseError>;
167
+ export interface HistoryExportPort {
168
+ readonly record: (record: HistoryExportRecord) => Effect.Effect<void>;
169
+ }
170
+ /** The export in place when the operator configured none: records vanish. */
171
+ export declare const noHistoryExport: HistoryExportPort;
223
172
  /**
224
- * Decode one `send_message` result.
225
- * @param value Untrusted structured tool content.
226
- * @returns The operation id a gather names, if any.
173
+ * Open the daemon's history export against one file.
174
+ *
175
+ * Recording completes only once the line is on disk: an inbound record lands
176
+ * before its message becomes visible to the agent and an outbound record
177
+ * before the send returns, so a transcript harvested the moment a program
178
+ * ends holds every delivery and send that program could have observed. That
179
+ * costs one append inside the delivery path, accepted for an opt-in evidence
180
+ * file whose worth is its completeness. Lines are appended one at a time
181
+ * under a gate, so two records never interleave. The first append that fails
182
+ * ends the export: one `export-failed` line is written on a best-effort
183
+ * basis, every later record is dropped, and the daemon goes on serving the
184
+ * agent. An experiment must not die because its transcript file did, and the
185
+ * truncation is explicit in the file rather than silent.
186
+ *
187
+ * The file is created on the first write.
227
188
  */
228
- export declare function decodeHarnessSendResult(value: unknown): Effect.Effect<HarnessSendResult, ParseResult.ParseError>;
229
- export {};
230
- //# sourceMappingURL=harness-mcp-contract.d.ts.map
189
+ export declare function makeHistoryExport(path: string): Effect.Effect<HistoryExportPort, never, FileSystem.FileSystem>;
190
+ //# sourceMappingURL=history-export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-export.d.ts","sourceRoot":"","sources":["../../src/delivery/history-export.ts"],"names":[],"mappings":"AAAA,0GAA0G;AAE1G,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAY,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAqBlD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiBoB,CAAC;AACrD,uDAAuD;AACvD,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAC;AAMlE;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACvE;AAED,6EAA6E;AAC7E,eAAO,MAAM,eAAe,EAAE,iBAE5B,CAAC;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,CAiChE"}
@@ -1,8 +1,41 @@
1
- /** @file Append-only export of what one daemon delivered and sent. */
1
+ /** @file The record of endpoint traffic: what the daemon delivered to its host and what the host sent. */
2
2
  import { FileSystem } from "@effect/platform";
3
3
  import { DateTime, Effect, Schema } from "effect";
4
- import { HistoryExportRecord } from "../../contract.js";
5
- // safer-arch-ignore no-trivial-sink-file: The export writer is one replaceable process edge, kept beside the runtime that installs it rather than inside it so lifecycle composition stays free of file handling.
4
+ import { CollectiveId, SendInput } from "../transport/collectives/forms.js";
5
+ import { InboundItem } from "../transport/collectives/inbound.js";
6
+ import { exactStruct, PostId } from "../transport/wire/values.js";
7
+ /* eslint-disable @typescript-eslint/naming-convention, @typescript-eslint/no-redeclare -- Effect Schemas share their domain names with the nominal values they decode. */
8
+ /**
9
+ * How one send ended in the history export: the posts certified by the time
10
+ * it returned, with the operation id of a gather or all_gather, or the
11
+ * error it returned.
12
+ */
13
+ const historyExportSendOutcome = Schema.Union(exactStruct({
14
+ kind: Schema.Literal("sent"),
15
+ operationId: Schema.optionalWith(CollectiveId, { exact: true }),
16
+ postIds: Schema.Array(PostId),
17
+ }), exactStruct({ kind: Schema.Literal("failed"), error: Schema.String }));
18
+ /**
19
+ * One line of the daemon's optional history export: an item as the daemon
20
+ * published it, a completed `send` invocation with its input and outcome, or
21
+ * the one line that says the export stopped. Readers decode the file line by
22
+ * line with this schema rather than copying its shape.
23
+ */
24
+ export const HistoryExportRecord = Schema.Union(exactStruct({
25
+ kind: Schema.Literal("inbound"),
26
+ item: InboundItem,
27
+ at: Schema.DateTimeUtc,
28
+ }), exactStruct({
29
+ kind: Schema.Literal("outbound"),
30
+ input: SendInput,
31
+ outcome: historyExportSendOutcome,
32
+ at: Schema.DateTimeUtc,
33
+ }), exactStruct({
34
+ kind: Schema.Literal("export-failed"),
35
+ reason: Schema.String,
36
+ at: Schema.DateTimeUtc,
37
+ })).annotations({ identifier: "HistoryExportRecord" });
38
+ /* eslint-enable @typescript-eslint/naming-convention, @typescript-eslint/no-redeclare -- Restore the package naming rules after the Schema/type pairs. */
6
39
  const encodeLine = Schema.encode(Schema.parseJson(HistoryExportRecord));
7
40
  /** The export in place when the operator configured none: records vanish. */
8
41
  export const noHistoryExport = Object.freeze({
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-export.js","sourceRoot":"","sources":["../../src/delivery/history-export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /** @file One service's delivery: the inbox writes, the gated delivery pass and detach, and the operations hosts call. */
2
+ import { Effect, type Scope } from "effect";
3
+ import type { CollectiveEmitError } from "../transport/collectives/forms.js";
4
+ import type { CollectiveOperations } from "../transport/collectives/index.js";
5
+ import type { EnginePendingMessage } from "../transport/messaging/index.js";
6
+ import type { HistoryExportPort } from "./history-export.js";
7
+ import type { DeliveryOperations, EventStore } from "./operations.js";
8
+ import { type EndpointStore, type EndpointStoreError } from "../store/index.js";
9
+ import { InboundItem } from "../transport/collectives/inbound.js";
10
+ import { type PendingOffer } from "./pass.js";
11
+ /** What one service's delivery reads and writes. */
12
+ export interface HostDeliveryInput {
13
+ readonly store: EndpointStore;
14
+ readonly historyExport: HistoryExportPort;
15
+ /** The active collective layer, absent while the service is unregistered. */
16
+ readonly collectives: () => Pick<CollectiveOperations, "send"> | undefined;
17
+ /** Service lifetime, independent of any host request. */
18
+ readonly scope: Scope.Scope;
19
+ }
20
+ /**
21
+ * What the service supplies to one pass: the active protocol's pending read,
22
+ * acknowledgment and classifier, and the attached subscriber if any.
23
+ */
24
+ interface PassInput<E> extends Pick<PendingOffer, "engine" | "classify" | "handler"> {
25
+ readonly readPending: Effect.Effect<readonly EnginePendingMessage[], E>;
26
+ }
27
+ /** One service's delivery, created once and shared by the delivery pass and every host operation. */
28
+ export interface HostDelivery {
29
+ readonly operations: DeliveryOperations;
30
+ readonly eventStore: EventStore;
31
+ /** Forget what the departed subscriber took, so the next one is offered it again. */
32
+ readonly detach: Effect.Effect<void>;
33
+ /**
34
+ * Run one pass under the delivery gate. `prepare` runs once the gate is
35
+ * held, so the active protocol and subscriber it reads are current; it
36
+ * returns undefined when there is nothing to run. A store failure ends the
37
+ * pass and releases the gate.
38
+ */
39
+ readonly runPass: <E>(prepare: () => PassInput<E> | undefined) => Effect.Effect<void, E | EndpointStoreError | CollectiveEmitError>;
40
+ /** Make an item the collective layer emitted durable and queue it for the next pass. */
41
+ readonly queueLocalItem: (item: InboundItem) => Effect.Effect<void, EndpointStoreError>;
42
+ }
43
+ /**
44
+ * Recover the inbox left by the previous process, then build the service's
45
+ * delivery over it.
46
+ * @param service The store, history export, active collective layer and service scope.
47
+ * @returns The delivery state, the host operations and the webhook's inbox view.
48
+ */
49
+ export declare const makeHostDelivery: (service: HostDeliveryInput) => Effect.Effect<HostDelivery, EndpointStoreError>;
50
+ export {};
51
+ //# sourceMappingURL=host-delivery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-delivery.d.ts","sourceRoot":"","sources":["../../src/delivery/host-delivery.ts"],"names":[],"mappings":"AAAA,yHAAyH;AAEzH,OAAO,EAAY,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,KAAK,EACV,mBAAmB,EAEpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,kBAAkB,EAClB,UAAU,EAEX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAYlE,OAAO,EAML,KAAK,YAAY,EAClB,MAAM,WAAW,CAAC;AAGnB,oDAAoD;AACpD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAC1C,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC3E,yDAAyD;IACzD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;CAC7B;AAED;;;GAGG;AACH,UAAU,SAAS,CAAC,CAAC,CACnB,SAAQ,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,oBAAoB,EAAE,EAAE,CAAC,CAAC,CAAC;CACzE;AAED,qGAAqG;AACrG,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,qFAAqF;IACrF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAClB,OAAO,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,KACpC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,kBAAkB,GAAG,mBAAmB,CAAC,CAAC;IACvE,wFAAwF;IACxF,QAAQ,CAAC,cAAc,EAAE,CACvB,IAAI,EAAE,WAAW,KACd,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;CAC9C;AAiMD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,YAClB,iBAAiB,KACzB,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,kBAAkB,CAwCH,CAAC"}
@@ -0,0 +1,109 @@
1
+ /** @file One service's delivery: the inbox writes, the gated delivery pass and detach, and the operations hosts call. */
2
+ import { DateTime, Effect } from "effect";
3
+ import { decodeRuntimeValue, } from "../store/index.js";
4
+ import { InboundItem } from "../transport/collectives/inbound.js";
5
+ import { DeliveryAcknowledgeError, SendError, } from "../transport/messaging/errors.js";
6
+ import { mintLocalDeliveryToken, persistInboxItem, readRuntimeEvent, readRuntimeInbox, recoverRuntimeInbox, } from "./inbox.js";
7
+ import { exportOnce, forgetDelivery, makeDeliveryState, offerPendingMessages, } from "./pass.js";
8
+ import { makeSendInvocations } from "./send-invocations.js";
9
+ const notRegistered = Effect.fail({ reason: "not-registered" });
10
+ /**
11
+ * Record one completed `send` in the history export with its input and how it
12
+ * ended: the posts certified by its return, or the error it returned.
13
+ */
14
+ const exportSend = (historyExport, input, outcome) => DateTime.now.pipe(Effect.flatMap((at) => historyExport.record({ kind: "outbound", input, outcome, at })));
15
+ const sendOperation = (input) => (request) => Effect.suspend(() => {
16
+ const collectives = input.collectives();
17
+ if (collectives === undefined) {
18
+ return Effect.fail(new SendError({ reason: "not-registered" }));
19
+ }
20
+ return collectives
21
+ .send(request.input, request.failureDelivery ?? "result")
22
+ .pipe(Effect.tapBoth({
23
+ onFailure: (error) => exportSend(input.historyExport, request.input, {
24
+ kind: "failed",
25
+ error: error.message,
26
+ }),
27
+ onSuccess: (outcome) => exportSend(input.historyExport, request.input, {
28
+ kind: "sent",
29
+ ...outcome,
30
+ }),
31
+ }), Effect.map(({ operationId }) => operationId === undefined ? {} : { operationId }));
32
+ });
33
+ /** Retire the durable inbox binding before dropping its process-local caches. */
34
+ const acknowledgeDelivery = (input) => (deliveryToken) => input.state.gate.withPermits(1)(Effect.suspend(() => input.collectives() === undefined
35
+ ? Effect.fail(new DeliveryAcknowledgeError({ reason: "unknown-delivery" }))
36
+ : input.store.acknowledgeInboxItem(deliveryToken).pipe(Effect.catchTag("EndpointStoreError", (error) => Effect.fail(new DeliveryAcknowledgeError({
37
+ reason: error.reason === "not-found"
38
+ ? "unknown-delivery"
39
+ : "persistence-failed",
40
+ }))), Effect.tap(() => forgetDelivery(input.state, deliveryToken)))));
41
+ /**
42
+ * Read one inbox page under the delivery gate and export each entry's item
43
+ * once, so native and webhook reads share the pass's export ordering.
44
+ */
45
+ const readExported = (input, read, itemOf) => input.state.gate.withPermits(1)(read.pipe(Effect.tap((page) => Effect.forEach(page.items, (entry) => exportOnce(input.state, input.historyExport, entry.deliveryToken, itemOf(entry)), { concurrency: 1, discard: true }))));
46
+ /** Export replayed local items before a host can read them after restart. */
47
+ const readAndExportInbox = (input, request) => readExported(input, readRuntimeInbox(input.store, request), (entry) => Effect.succeed(entry.item));
48
+ /** The webhook's raw page, decoding each stored item only to export it. */
49
+ const readWebhookInbox = (input, bounds) => readExported(input, input.store.readInbox(bounds), (entry) => decodeRuntimeValue(InboundItem, entry.canonicalItem));
50
+ /** Waiters can stop during shutdown; an acquired receipt commits with its caller state intact. */
51
+ const completeWebhookDelivery = (input, token, bytes) => Effect.uninterruptibleMask(() => input.state.gate.take(1).pipe(Effect.interruptible, Effect.flatMap((permits) => input.store.completeWebhookDelivery(token, bytes).pipe(Effect.tap(() => forgetDelivery(input.state, token)), Effect.ensuring(input.state.gate.release(permits))))));
52
+ const queueLocalItem = (input) => (item) => mintLocalDeliveryToken.pipe(Effect.tap((deliveryToken) => persistInboxItem(input.store, { deliveryToken, item })), Effect.tap((deliveryToken) => Effect.sync(() => {
53
+ input.state.localItems.set(deliveryToken, item);
54
+ })), Effect.asVoid);
55
+ /** The pass's view of the service's delivery and the protocol it serves. */
56
+ const pendingOffer = (input, pass) => ({
57
+ engine: pass.engine,
58
+ classify: pass.classify,
59
+ ...(pass.handler === undefined ? {} : { handler: pass.handler }),
60
+ persist: (event) => persistInboxItem(input.store, event),
61
+ historyExport: input.historyExport,
62
+ state: input.state,
63
+ });
64
+ const runPass = (input, prepare) => input.state.gate.withPermits(1)(Effect.suspend(() => {
65
+ const pass = prepare();
66
+ if (pass === undefined) {
67
+ return Effect.void;
68
+ }
69
+ return pass.readPending.pipe(Effect.flatMap((messages) => offerPendingMessages(pendingOffer(input, pass), messages)));
70
+ }));
71
+ /**
72
+ * Recover the inbox left by the previous process, then build the service's
73
+ * delivery over it.
74
+ * @param service The store, history export, active collective layer and service scope.
75
+ * @returns The delivery state, the host operations and the webhook's inbox view.
76
+ */
77
+ export const makeHostDelivery = (service) => Effect.gen(function* () {
78
+ const input = {
79
+ ...service,
80
+ state: yield* makeDeliveryState,
81
+ };
82
+ yield* recoverRuntimeInbox(input.store);
83
+ const invocations = yield* makeSendInvocations(input.store, sendOperation(input), input.scope);
84
+ const eventStore = {
85
+ ...input.store,
86
+ readInbox: (bounds) => readWebhookInbox(input, bounds),
87
+ completeWebhookDelivery: (token, bytes) => completeWebhookDelivery(input, token, bytes),
88
+ };
89
+ return {
90
+ detach: Effect.sync(() => {
91
+ input.state.publishedDeliveries.clear();
92
+ }),
93
+ runPass: (prepare) => runPass(input, prepare),
94
+ queueLocalItem: queueLocalItem(input),
95
+ operations: Object.freeze({
96
+ ...invocations,
97
+ readInboxSummary: input.store.readInboxSummary,
98
+ readEvent: ({ eventId }) => input.collectives() === undefined
99
+ ? notRegistered
100
+ : readRuntimeEvent(input.store, eventId),
101
+ readInbox: (request) => input.collectives() === undefined
102
+ ? notRegistered
103
+ : readAndExportInbox(input, request),
104
+ acknowledgeDelivery: acknowledgeDelivery(input),
105
+ }),
106
+ eventStore,
107
+ };
108
+ }).pipe(Effect.withSpan("makeHostDelivery"));
109
+ //# sourceMappingURL=host-delivery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-delivery.js","sourceRoot":"","sources":["../../src/delivery/host-delivery.ts"],"names":[],"mappings":"AAAA,yHAAyH;AAEzH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAc,MAAM,QAAQ,CAAC;AAgBtD,OAAO,EACL,kBAAkB,GAInB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,EACL,wBAAwB,EACxB,SAAS,GACV,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,oBAAoB,GAErB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AA4C5D,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAEhE;;;GAGG;AACH,MAAM,UAAU,GAAG,CACjB,aAAgC,EAChC,KAAgB,EAChB,OAGY,EACS,EAAE,CACvB,QAAQ,CAAC,GAAG,CAAC,IAAI,CACf,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CACpB,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAC/D,CACF,CAAC;AAEJ,MAAM,aAAa,GACjB,CAAC,KAAsB,EAA8B,EAAE,CACvD,CAAC,OAAO,EAAE,EAAE,CACV,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;IAClB,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACxC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,WAAW;SACf,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,IAAI,QAAQ,CAAC;SACxD,IAAI,CACH,MAAM,CAAC,OAAO,CAAC;QACb,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CACnB,UAAU,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,KAAK,EAAE;YAC7C,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,KAAK,CAAC,OAAO;SACrB,CAAC;QACJ,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CACrB,UAAU,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,KAAK,EAAE;YAC7C,IAAI,EAAE,MAAM;YACZ,GAAG,OAAO;SACX,CAAC;KACL,CAAC,EACF,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAC7B,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CACjD,CACF,CAAC;AACN,CAAC,CAAC,CAAC;AAEP,iFAAiF;AACjF,MAAM,mBAAmB,GACvB,CAAC,KAAsB,EAA6C,EAAE,CACtE,CAAC,aAAa,EAAE,EAAE,CAChB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAC7B,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAClB,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS;IAC/B,CAAC,CAAC,MAAM,CAAC,IAAI,CACT,IAAI,wBAAwB,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAC7D;IACH,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,IAAI,CAClD,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,EAAE,CAC9C,MAAM,CAAC,IAAI,CACT,IAAI,wBAAwB,CAAC;QAC3B,MAAM,EACJ,KAAK,CAAC,MAAM,KAAK,WAAW;YAC1B,CAAC,CAAC,kBAAkB;YACpB,CAAC,CAAC,oBAAoB;KAC3B,CAAC,CACH,CACF,EACD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAC7D,CACN,CACF,CAAC;AAEN;;;GAGG;AACH,MAAM,YAAY,GAAG,CAMnB,KAAsB,EACtB,IAA4B,EAC5B,MAAuE,EACvE,EAAE,CACF,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAC7B,IAAI,CAAC,IAAI,CACP,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAClB,MAAM,CAAC,OAAO,CACZ,IAAI,CAAC,KAAK,EACV,CAAC,KAAK,EAAE,EAAE,CACR,UAAU,CACR,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,aAAa,EACnB,MAAM,CAAC,KAAK,CAAC,CACd,EACH,EAAE,WAAW,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAClC,CACF,CACF,CACF,CAAC;AAEJ,6EAA6E;AAC7E,MAAM,kBAAkB,GAAG,CACzB,KAAsB,EACtB,OAAgC,EAChC,EAAE,CACF,YAAY,CAAC,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CACpE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAC3B,CAAC;AAEJ,2EAA2E;AAC3E,MAAM,gBAAgB,GAAG,CACvB,KAAsB,EACtB,MAAiD,EACjD,EAAE,CACF,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAC3D,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,CACrD,CAAC;AAEJ,kGAAkG;AAClG,MAAM,uBAAuB,GAAG,CAC9B,KAAsB,EACtB,KAAoB,EACpB,KAAiB,EACjB,EAAE,CACF,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAC9B,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAC3B,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CACzB,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CACpD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EACpD,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CACnD,CACF,CACF,CACF,CAAC;AAEJ,MAAM,cAAc,GAClB,CAAC,KAAsB,EAAkC,EAAE,CAC3D,CAAC,IAAI,EAAE,EAAE,CACP,sBAAsB,CAAC,IAAI,CACzB,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAC3B,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CACvD,EACD,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;IACf,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC,CAAC,CACH,EACD,MAAM,CAAC,MAAM,CACd,CAAC;AAEN,4EAA4E;AAC5E,MAAM,YAAY,GAAG,CACnB,KAAsB,EACtB,IAAkB,EACJ,EAAE,CAAC,CAAC;IAClB,MAAM,EAAE,IAAI,CAAC,MAAM;IACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;IACvB,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IAChE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC;IACxD,aAAa,EAAE,KAAK,CAAC,aAAa;IAClC,KAAK,EAAE,KAAK,CAAC,KAAK;CACnB,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,CACd,KAAsB,EACtB,OAAuC,EAC4B,EAAE,CACrE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAC7B,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;IAClB,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAC1B,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC1B,oBAAoB,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,CAC1D,CACF,CAAC;AACJ,CAAC,CAAC,CACH,CAAC;AAEJ;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,OAA0B,EACuB,EAAE,CACnD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAoB;QAC7B,GAAG,OAAO;QACV,KAAK,EAAE,KAAK,CAAC,CAAC,iBAAiB;KAChC,CAAC;IACF,KAAK,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAC5C,KAAK,CAAC,KAAK,EACX,aAAa,CAAC,KAAK,CAAC,EACpB,KAAK,CAAC,KAAK,CACZ,CAAC;IACF,MAAM,UAAU,GAAe;QAC7B,GAAG,KAAK,CAAC,KAAK;QACd,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC;QACtD,uBAAuB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CACxC,uBAAuB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;KAC/C,CAAC;IACF,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;YACvB,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAC1C,CAAC,CAAC;QACF,OAAO,EAAE,CAAI,OAAuC,EAAE,EAAE,CACtD,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;QACzB,cAAc,EAAE,cAAc,CAAC,KAAK,CAAC;QACrC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;YACxB,GAAG,WAAW;YACd,gBAAgB,EAAE,KAAK,CAAC,KAAK,CAAC,gBAAgB;YAC9C,SAAS,EAAE,CAAC,EAAE,OAAO,EAAgC,EAAE,EAAE,CACvD,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS;gBAC/B,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;YAC5C,SAAS,EAAE,CAAC,OAAgC,EAAE,EAAE,CAC9C,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS;gBAC/B,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC;YACxC,mBAAmB,EAAE,mBAAmB,CAAC,KAAK,CAAC;SAChD,CAAC;QACF,UAAU;KACX,CAAC;AACJ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC"}