@moltzap/client 2026.1001.2 → 2026.1004.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 (486) hide show
  1. package/README.md +11 -6
  2. package/bin/moltzapd +2 -2
  3. package/dist/{harness-mcp-contract.d.ts → delivery/history-export.d.ts} +94 -136
  4. package/dist/delivery/history-export.d.ts.map +1 -0
  5. package/dist/{daemon/runtime → delivery}/history-export.js +36 -3
  6. package/dist/delivery/history-export.js.map +1 -0
  7. package/dist/delivery/host-delivery.d.ts +51 -0
  8. package/dist/delivery/host-delivery.d.ts.map +1 -0
  9. package/dist/delivery/host-delivery.js +109 -0
  10. package/dist/delivery/host-delivery.js.map +1 -0
  11. package/dist/delivery/inbox.d.ts +141 -0
  12. package/dist/delivery/inbox.d.ts.map +1 -0
  13. package/dist/delivery/inbox.js +129 -0
  14. package/dist/delivery/inbox.js.map +1 -0
  15. package/dist/delivery/index.d.ts +4 -0
  16. package/dist/delivery/index.d.ts.map +1 -0
  17. package/dist/delivery/index.js +4 -0
  18. package/dist/delivery/index.js.map +1 -0
  19. package/dist/delivery/operations.d.ts +789 -0
  20. package/dist/delivery/operations.d.ts.map +1 -0
  21. package/dist/delivery/operations.js +162 -0
  22. package/dist/delivery/operations.js.map +1 -0
  23. package/dist/delivery/pass.d.ts +91 -0
  24. package/dist/delivery/pass.d.ts.map +1 -0
  25. package/dist/{daemon/runtime/pending-delivery.js → delivery/pass.js} +61 -34
  26. package/dist/delivery/pass.js.map +1 -0
  27. package/dist/delivery/send-invocations.d.ts +106 -0
  28. package/dist/delivery/send-invocations.d.ts.map +1 -0
  29. package/dist/delivery/send-invocations.js +109 -0
  30. package/dist/delivery/send-invocations.js.map +1 -0
  31. package/dist/endpoint/harness-endpoint/capability.d.ts +39 -0
  32. package/dist/endpoint/harness-endpoint/capability.d.ts.map +1 -0
  33. package/dist/endpoint/harness-endpoint/capability.js +9 -0
  34. package/dist/endpoint/harness-endpoint/capability.js.map +1 -0
  35. package/dist/endpoint/harness-endpoint/events.d.ts +12 -0
  36. package/dist/endpoint/harness-endpoint/events.d.ts.map +1 -0
  37. package/dist/endpoint/harness-endpoint/events.js +199 -0
  38. package/dist/endpoint/harness-endpoint/events.js.map +1 -0
  39. package/dist/{client-runtime.d.ts → endpoint/harness-endpoint/index.d.ts} +4 -2
  40. package/dist/endpoint/harness-endpoint/index.d.ts.map +1 -0
  41. package/dist/{client-runtime.js → endpoint/harness-endpoint/index.js} +115 -115
  42. package/dist/endpoint/harness-endpoint/index.js.map +1 -0
  43. package/dist/endpoint/implementation.d.ts +4 -0
  44. package/dist/endpoint/implementation.d.ts.map +1 -0
  45. package/dist/endpoint/implementation.js +5 -0
  46. package/dist/endpoint/implementation.js.map +1 -0
  47. package/dist/endpoint/mcp/auth.d.ts +31 -0
  48. package/dist/endpoint/mcp/auth.d.ts.map +1 -0
  49. package/dist/endpoint/mcp/auth.js +42 -0
  50. package/dist/endpoint/mcp/auth.js.map +1 -0
  51. package/dist/endpoint/mcp/event-schemas.d.ts +151 -0
  52. package/dist/endpoint/mcp/event-schemas.d.ts.map +1 -0
  53. package/dist/endpoint/mcp/event-schemas.js +72 -0
  54. package/dist/endpoint/mcp/event-schemas.js.map +1 -0
  55. package/dist/endpoint/mcp/event-signing.d.ts +62 -0
  56. package/dist/endpoint/mcp/event-signing.d.ts.map +1 -0
  57. package/dist/endpoint/mcp/event-signing.js +185 -0
  58. package/dist/endpoint/mcp/event-signing.js.map +1 -0
  59. package/dist/endpoint/mcp/events.d.ts +45 -0
  60. package/dist/endpoint/mcp/events.d.ts.map +1 -0
  61. package/dist/endpoint/mcp/events.js +296 -0
  62. package/dist/endpoint/mcp/events.js.map +1 -0
  63. package/dist/{harness-mcp-http.d.ts → endpoint/mcp/http.d.ts} +1 -1
  64. package/dist/endpoint/mcp/http.d.ts.map +1 -0
  65. package/dist/{harness-mcp-http.js → endpoint/mcp/http.js} +1 -1
  66. package/dist/endpoint/mcp/http.js.map +1 -0
  67. package/dist/endpoint/mcp/index.d.ts +10 -0
  68. package/dist/endpoint/mcp/index.d.ts.map +1 -0
  69. package/dist/endpoint/mcp/index.js +8 -0
  70. package/dist/endpoint/mcp/index.js.map +1 -0
  71. package/dist/{management-runtime.d.ts → endpoint/mcp/owner-tools.d.ts} +7 -7
  72. package/dist/endpoint/mcp/owner-tools.d.ts.map +1 -0
  73. package/dist/{management-runtime.js → endpoint/mcp/owner-tools.js} +3 -4
  74. package/dist/endpoint/mcp/owner-tools.js.map +1 -0
  75. package/dist/endpoint/mcp/schemas.d.ts +60 -0
  76. package/dist/endpoint/mcp/schemas.d.ts.map +1 -0
  77. package/dist/endpoint/mcp/schemas.js +116 -0
  78. package/dist/endpoint/mcp/schemas.js.map +1 -0
  79. package/dist/{harness-mcp-wire.d.ts → endpoint/mcp/tools.d.ts} +17 -14
  80. package/dist/endpoint/mcp/tools.d.ts.map +1 -0
  81. package/dist/{harness-mcp-wire.js → endpoint/mcp/tools.js} +229 -110
  82. package/dist/endpoint/mcp/tools.js.map +1 -0
  83. package/dist/endpoint/mcp/webhook.d.ts +15 -0
  84. package/dist/endpoint/mcp/webhook.d.ts.map +1 -0
  85. package/dist/endpoint/mcp/webhook.js +359 -0
  86. package/dist/endpoint/mcp/webhook.js.map +1 -0
  87. package/dist/identity/credentials.d.ts +46 -0
  88. package/dist/identity/credentials.d.ts.map +1 -0
  89. package/dist/identity/credentials.js +55 -0
  90. package/dist/identity/credentials.js.map +1 -0
  91. package/dist/identity/index.d.ts +4 -0
  92. package/dist/identity/index.d.ts.map +1 -0
  93. package/dist/identity/index.js +4 -0
  94. package/dist/identity/index.js.map +1 -0
  95. package/dist/index.d.ts +19 -2
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +21 -3
  98. package/dist/index.js.map +1 -1
  99. package/dist/{contract.types-check.d.ts → index.types-check.d.ts} +21 -18
  100. package/dist/index.types-check.d.ts.map +1 -0
  101. package/dist/{contract.types-check.js → index.types-check.js} +6 -3
  102. package/dist/index.types-check.js.map +1 -0
  103. package/dist/{daemon/runtime → service}/activation.d.ts +9 -12
  104. package/dist/service/activation.d.ts.map +1 -0
  105. package/dist/{daemon/runtime → service}/activation.js +3 -3
  106. package/dist/service/activation.js.map +1 -0
  107. package/dist/{daemon → service}/configuration.d.ts +8 -7
  108. package/dist/service/configuration.d.ts.map +1 -0
  109. package/dist/{daemon → service}/configuration.js +30 -28
  110. package/dist/service/configuration.js.map +1 -0
  111. package/dist/{daemon/runtime → service}/controller.d.ts +8 -6
  112. package/dist/service/controller.d.ts.map +1 -0
  113. package/dist/service/controller.js +106 -0
  114. package/dist/service/controller.js.map +1 -0
  115. package/dist/{server.d.ts → service/index.d.ts} +7 -4
  116. package/dist/service/index.d.ts.map +1 -0
  117. package/dist/{server.js → service/index.js} +17 -15
  118. package/dist/service/index.js.map +1 -0
  119. package/dist/{server.types-check.d.ts → service/index.types-check.d.ts} +7 -7
  120. package/dist/service/index.types-check.d.ts.map +1 -0
  121. package/dist/{server.types-check.js → service/index.types-check.js} +1 -1
  122. package/dist/service/index.types-check.js.map +1 -0
  123. package/dist/{daemon/runtime/index.d.ts → service/lifecycle.d.ts} +3 -3
  124. package/dist/service/lifecycle.d.ts.map +1 -0
  125. package/dist/{daemon/runtime/index.js → service/lifecycle.js} +28 -25
  126. package/dist/service/lifecycle.js.map +1 -0
  127. package/dist/{daemon → service}/management.d.ts +2 -2
  128. package/dist/service/management.d.ts.map +1 -0
  129. package/dist/{daemon → service}/management.js +2 -13
  130. package/dist/service/management.js.map +1 -0
  131. package/dist/{daemon → service}/registration.d.ts +1 -1
  132. package/dist/service/registration.d.ts.map +1 -0
  133. package/dist/{daemon → service}/registration.js +1 -2
  134. package/dist/service/registration.js.map +1 -0
  135. package/dist/{daemon/runtime/protocol.d.ts → service/supervision.d.ts} +16 -24
  136. package/dist/service/supervision.d.ts.map +1 -0
  137. package/dist/{daemon/runtime/protocol.js → service/supervision.js} +33 -36
  138. package/dist/service/supervision.js.map +1 -0
  139. package/dist/store/anchors.d.ts.map +1 -0
  140. package/dist/store/anchors.js.map +1 -0
  141. package/dist/store/database/index.d.ts.map +1 -0
  142. package/dist/store/database/index.js.map +1 -0
  143. package/dist/store/database/schema.d.ts.map +1 -0
  144. package/dist/{endpoint/store → store}/database/schema.js +42 -6
  145. package/dist/store/database/schema.js.map +1 -0
  146. package/dist/store/database/values.d.ts.map +1 -0
  147. package/dist/store/database/values.js.map +1 -0
  148. package/dist/{endpoint/store → store}/deliveries.d.ts +8 -0
  149. package/dist/store/deliveries.d.ts.map +1 -0
  150. package/dist/{endpoint/store → store}/deliveries.js +16 -0
  151. package/dist/store/deliveries.js.map +1 -0
  152. package/dist/store/dissemination.d.ts.map +1 -0
  153. package/dist/store/dissemination.js.map +1 -0
  154. package/dist/store/inbox.d.ts +86 -0
  155. package/dist/store/inbox.d.ts.map +1 -0
  156. package/dist/store/inbox.js +269 -0
  157. package/dist/store/inbox.js.map +1 -0
  158. package/dist/store/index.d.ts +12 -0
  159. package/dist/store/index.d.ts.map +1 -0
  160. package/dist/store/index.js +8 -0
  161. package/dist/store/index.js.map +1 -0
  162. package/dist/store/outbound.d.ts.map +1 -0
  163. package/dist/store/outbound.js.map +1 -0
  164. package/dist/{endpoint/store/management.d.ts → store/reads.d.ts} +1 -1
  165. package/dist/store/reads.d.ts.map +1 -0
  166. package/dist/{endpoint/store/management.js → store/reads.js} +1 -1
  167. package/dist/store/reads.js.map +1 -0
  168. package/dist/store/records.d.ts.map +1 -0
  169. package/dist/store/records.js.map +1 -0
  170. package/dist/store/rows/index.d.ts.map +1 -0
  171. package/dist/store/rows/index.js.map +1 -0
  172. package/dist/store/runtime-codec.d.ts +17 -0
  173. package/dist/store/runtime-codec.d.ts.map +1 -0
  174. package/dist/store/runtime-codec.js +32 -0
  175. package/dist/store/runtime-codec.js.map +1 -0
  176. package/dist/{endpoint/store/index.d.ts → store/store.d.ts} +2 -2
  177. package/dist/store/store.d.ts.map +1 -0
  178. package/dist/{endpoint/store/index.js → store/store.js} +33 -4
  179. package/dist/store/store.js.map +1 -0
  180. package/dist/{endpoint/store → store}/types.d.ts +41 -0
  181. package/dist/store/types.d.ts.map +1 -0
  182. package/dist/store/types.js.map +1 -0
  183. package/dist/transport/collectives/answer-check.d.ts +22 -0
  184. package/dist/transport/collectives/answer-check.d.ts.map +1 -0
  185. package/dist/transport/collectives/answer-check.js +166 -0
  186. package/dist/transport/collectives/answer-check.js.map +1 -0
  187. package/dist/transport/collectives/answer-formats.d.ts +21 -0
  188. package/dist/transport/collectives/answer-formats.d.ts.map +1 -0
  189. package/dist/transport/collectives/answer-formats.js +127 -0
  190. package/dist/transport/collectives/answer-formats.js.map +1 -0
  191. package/dist/transport/collectives/failures.d.ts +34 -0
  192. package/dist/transport/collectives/failures.d.ts.map +1 -0
  193. package/dist/transport/collectives/failures.js +40 -0
  194. package/dist/transport/collectives/failures.js.map +1 -0
  195. package/dist/transport/collectives/form-grammar.d.ts +175 -0
  196. package/dist/transport/collectives/form-grammar.d.ts.map +1 -0
  197. package/dist/transport/collectives/form-grammar.js +226 -0
  198. package/dist/transport/collectives/form-grammar.js.map +1 -0
  199. package/dist/transport/collectives/forms.d.ts +224 -0
  200. package/dist/transport/collectives/forms.d.ts.map +1 -0
  201. package/dist/transport/collectives/forms.js +183 -0
  202. package/dist/transport/collectives/forms.js.map +1 -0
  203. package/dist/transport/collectives/inbound.d.ts +130 -0
  204. package/dist/transport/collectives/inbound.d.ts.map +1 -0
  205. package/dist/transport/collectives/inbound.js +80 -0
  206. package/dist/transport/collectives/inbound.js.map +1 -0
  207. package/dist/transport/collectives/index.d.ts +10 -0
  208. package/dist/transport/collectives/index.d.ts.map +1 -0
  209. package/dist/transport/collectives/index.js +8 -0
  210. package/dist/transport/collectives/index.js.map +1 -0
  211. package/dist/transport/collectives/message-text.d.ts +52 -0
  212. package/dist/transport/collectives/message-text.d.ts.map +1 -0
  213. package/dist/transport/collectives/message-text.js +118 -0
  214. package/dist/transport/collectives/message-text.js.map +1 -0
  215. package/dist/{endpoint/collective → transport/collectives}/operation.d.ts +30 -21
  216. package/dist/transport/collectives/operation.d.ts.map +1 -0
  217. package/dist/{endpoint/collective → transport/collectives}/operation.js +135 -143
  218. package/dist/transport/collectives/operation.js.map +1 -0
  219. package/dist/transport/collectives/received-request.d.ts +41 -0
  220. package/dist/transport/collectives/received-request.d.ts.map +1 -0
  221. package/dist/transport/collectives/received-request.js +56 -0
  222. package/dist/transport/collectives/received-request.js.map +1 -0
  223. package/dist/transport/collectives/request-sends.d.ts +42 -0
  224. package/dist/transport/collectives/request-sends.d.ts.map +1 -0
  225. package/dist/transport/collectives/request-sends.js +46 -0
  226. package/dist/transport/collectives/request-sends.js.map +1 -0
  227. package/dist/{endpoint/collective → transport/collectives}/shared-answers.d.ts +3 -2
  228. package/dist/transport/collectives/shared-answers.d.ts.map +1 -0
  229. package/dist/transport/collectives/shared-answers.js.map +1 -0
  230. package/dist/{endpoint/collective → transport/collectives}/validation.d.ts +8 -10
  231. package/dist/transport/collectives/validation.d.ts.map +1 -0
  232. package/dist/{endpoint/collective → transport/collectives}/validation.js +10 -21
  233. package/dist/transport/collectives/validation.js.map +1 -0
  234. package/dist/{endpoint/collective → transport/collectives}/wire.d.ts +18 -13
  235. package/dist/transport/collectives/wire.d.ts.map +1 -0
  236. package/dist/{endpoint/collective → transport/collectives}/wire.js +19 -38
  237. package/dist/transport/collectives/wire.js.map +1 -0
  238. package/dist/{endpoint/addressing/index.d.ts → transport/messaging/address.d.ts} +38 -5
  239. package/dist/transport/messaging/address.d.ts.map +1 -0
  240. package/dist/{endpoint/addressing/index.js → transport/messaging/address.js} +100 -21
  241. package/dist/transport/messaging/address.js.map +1 -0
  242. package/dist/{endpoint/protocol/index.d.ts → transport/messaging/certification.d.ts} +4 -4
  243. package/dist/transport/messaging/certification.d.ts.map +1 -0
  244. package/dist/{endpoint/protocol/index.js → transport/messaging/certification.js} +7 -5
  245. package/dist/transport/messaging/certification.js.map +1 -0
  246. package/dist/{endpoint/engine-dissemination.d.ts → transport/messaging/dissemination.d.ts} +3 -3
  247. package/dist/transport/messaging/dissemination.d.ts.map +1 -0
  248. package/dist/{endpoint/engine-dissemination.js → transport/messaging/dissemination.js} +5 -5
  249. package/dist/transport/messaging/dissemination.js.map +1 -0
  250. package/dist/{endpoint/engine-durability.d.ts → transport/messaging/durability.d.ts} +4 -4
  251. package/dist/{endpoint/engine-durability.d.ts.map → transport/messaging/durability.d.ts.map} +1 -1
  252. package/dist/{endpoint/engine-durability.js → transport/messaging/durability.js} +4 -13
  253. package/dist/transport/messaging/durability.js.map +1 -0
  254. package/dist/transport/messaging/errors.d.ts +50 -0
  255. package/dist/transport/messaging/errors.d.ts.map +1 -0
  256. package/dist/transport/messaging/errors.js +64 -0
  257. package/dist/transport/messaging/errors.js.map +1 -0
  258. package/dist/{endpoint/protocol → transport/messaging}/evidence.d.ts +3 -3
  259. package/dist/{endpoint/protocol → transport/messaging}/evidence.d.ts.map +1 -1
  260. package/dist/{endpoint/protocol → transport/messaging}/evidence.js +1 -1
  261. package/dist/transport/messaging/evidence.js.map +1 -0
  262. package/dist/{endpoint/engine.d.ts → transport/messaging/index.d.ts} +4 -4
  263. package/dist/transport/messaging/index.d.ts.map +1 -0
  264. package/dist/{endpoint/engine.js → transport/messaging/index.js} +14 -9
  265. package/dist/transport/messaging/index.js.map +1 -0
  266. package/dist/transport/messaging/message.d.ts +112 -0
  267. package/dist/transport/messaging/message.d.ts.map +1 -0
  268. package/dist/transport/messaging/message.js +39 -0
  269. package/dist/transport/messaging/message.js.map +1 -0
  270. package/dist/{endpoint → transport/messaging}/recovery/barrier.d.ts +1 -1
  271. package/dist/transport/messaging/recovery/barrier.d.ts.map +1 -0
  272. package/dist/transport/messaging/recovery/barrier.js.map +1 -0
  273. package/dist/{endpoint/recovery/store-evidence.d.ts → transport/messaging/recovery/evidence.d.ts} +5 -5
  274. package/dist/transport/messaging/recovery/evidence.d.ts.map +1 -0
  275. package/dist/{endpoint/recovery/store-evidence.js → transport/messaging/recovery/evidence.js} +3 -3
  276. package/dist/transport/messaging/recovery/evidence.js.map +1 -0
  277. package/dist/{endpoint → transport/messaging}/recovery/index.d.ts +4 -4
  278. package/dist/transport/messaging/recovery/index.d.ts.map +1 -0
  279. package/dist/{endpoint → transport/messaging}/recovery/index.js +29 -25
  280. package/dist/transport/messaging/recovery/index.js.map +1 -0
  281. package/dist/{endpoint/recovery/store.d.ts → transport/messaging/recovery/persistence.d.ts} +5 -5
  282. package/dist/transport/messaging/recovery/persistence.d.ts.map +1 -0
  283. package/dist/{endpoint/recovery/store.js → transport/messaging/recovery/persistence.js} +4 -4
  284. package/dist/transport/messaging/recovery/persistence.js.map +1 -0
  285. package/dist/{endpoint/recovery/reanchor/empty.d.ts → transport/messaging/recovery/reanchor-empty.d.ts} +6 -6
  286. package/dist/transport/messaging/recovery/reanchor-empty.d.ts.map +1 -0
  287. package/dist/{endpoint/recovery/reanchor/empty.js → transport/messaging/recovery/reanchor-empty.js} +4 -4
  288. package/dist/transport/messaging/recovery/reanchor-empty.js.map +1 -0
  289. package/dist/{endpoint/recovery/reanchor/index.d.ts → transport/messaging/recovery/reanchor.d.ts} +4 -4
  290. package/dist/transport/messaging/recovery/reanchor.d.ts.map +1 -0
  291. package/dist/{endpoint/recovery/reanchor/index.js → transport/messaging/recovery/reanchor.js} +29 -14
  292. package/dist/transport/messaging/recovery/reanchor.js.map +1 -0
  293. package/dist/{endpoint → transport/messaging}/recovery/state.d.ts +5 -5
  294. package/dist/transport/messaging/recovery/state.d.ts.map +1 -0
  295. package/dist/{endpoint → transport/messaging}/recovery/state.js +2 -2
  296. package/dist/transport/messaging/recovery/state.js.map +1 -0
  297. package/dist/{endpoint/engine-send.d.ts → transport/messaging/send.d.ts} +5 -4
  298. package/dist/transport/messaging/send.d.ts.map +1 -0
  299. package/dist/{endpoint/engine-send.js → transport/messaging/send.js} +4 -4
  300. package/dist/transport/messaging/send.js.map +1 -0
  301. package/dist/{endpoint/engine-types.d.ts → transport/messaging/types.d.ts} +7 -5
  302. package/dist/transport/messaging/types.d.ts.map +1 -0
  303. package/dist/{endpoint/engine-types.js → transport/messaging/types.js} +1 -1
  304. package/dist/{endpoint/engine-types.js.map → transport/messaging/types.js.map} +1 -1
  305. package/dist/transport/router/index.d.ts.map +1 -0
  306. package/dist/{endpoint/router-worker → transport/router}/index.js +1 -1
  307. package/dist/transport/router/index.js.map +1 -0
  308. package/dist/transport/router/outage.d.ts.map +1 -0
  309. package/dist/transport/router/outage.js.map +1 -0
  310. package/dist/{endpoint/router-worker → transport/router}/types.d.ts +2 -2
  311. package/dist/transport/router/types.d.ts.map +1 -0
  312. package/dist/transport/router/types.js.map +1 -0
  313. package/dist/{endpoint/representation-canonical.d.ts → transport/wire/canonical.d.ts} +1 -1
  314. package/dist/transport/wire/canonical.d.ts.map +1 -0
  315. package/dist/{endpoint/representation-canonical.js → transport/wire/canonical.js} +1 -1
  316. package/dist/transport/wire/canonical.js.map +1 -0
  317. package/dist/{endpoint/representation-codec.d.ts → transport/wire/codec.d.ts} +5 -6
  318. package/dist/transport/wire/codec.d.ts.map +1 -0
  319. package/dist/{endpoint/representation-codec.js → transport/wire/codec.js} +5 -24
  320. package/dist/transport/wire/codec.js.map +1 -0
  321. package/dist/transport/wire/index.d.ts +7 -0
  322. package/dist/transport/wire/index.d.ts.map +1 -0
  323. package/dist/transport/wire/index.js +10 -0
  324. package/dist/transport/wire/index.js.map +1 -0
  325. package/dist/{endpoint/representation-schemas.d.ts → transport/wire/schemas.d.ts} +76 -98
  326. package/dist/transport/wire/schemas.d.ts.map +1 -0
  327. package/dist/{endpoint/representation-schemas.js → transport/wire/schemas.js} +7 -19
  328. package/dist/transport/wire/schemas.js.map +1 -0
  329. package/dist/transport/wire/values.d.ts +79 -0
  330. package/dist/transport/wire/values.d.ts.map +1 -0
  331. package/dist/transport/wire/values.js +115 -0
  332. package/dist/transport/wire/values.js.map +1 -0
  333. package/dist/{endpoint/representation-verification.d.ts → transport/wire/verification.d.ts} +4 -4
  334. package/dist/transport/wire/verification.d.ts.map +1 -0
  335. package/dist/{endpoint/representation-verification.js → transport/wire/verification.js} +5 -4
  336. package/dist/transport/wire/verification.js.map +1 -0
  337. package/package.json +6 -6
  338. package/dist/client-runtime.d.ts.map +0 -1
  339. package/dist/client-runtime.js.map +0 -1
  340. package/dist/contract.d.ts +0 -721
  341. package/dist/contract.d.ts.map +0 -1
  342. package/dist/contract.js +0 -451
  343. package/dist/contract.js.map +0 -1
  344. package/dist/contract.types-check.d.ts.map +0 -1
  345. package/dist/contract.types-check.js.map +0 -1
  346. package/dist/daemon/configuration.d.ts.map +0 -1
  347. package/dist/daemon/configuration.js.map +0 -1
  348. package/dist/daemon/management.d.ts.map +0 -1
  349. package/dist/daemon/management.js.map +0 -1
  350. package/dist/daemon/registration.d.ts.map +0 -1
  351. package/dist/daemon/registration.js.map +0 -1
  352. package/dist/daemon/runtime/activation.d.ts.map +0 -1
  353. package/dist/daemon/runtime/activation.js.map +0 -1
  354. package/dist/daemon/runtime/controller.d.ts.map +0 -1
  355. package/dist/daemon/runtime/controller.js +0 -140
  356. package/dist/daemon/runtime/controller.js.map +0 -1
  357. package/dist/daemon/runtime/history-export.d.ts +0 -33
  358. package/dist/daemon/runtime/history-export.d.ts.map +0 -1
  359. package/dist/daemon/runtime/history-export.js.map +0 -1
  360. package/dist/daemon/runtime/index.d.ts.map +0 -1
  361. package/dist/daemon/runtime/index.js.map +0 -1
  362. package/dist/daemon/runtime/pending-delivery.d.ts +0 -49
  363. package/dist/daemon/runtime/pending-delivery.d.ts.map +0 -1
  364. package/dist/daemon/runtime/pending-delivery.js.map +0 -1
  365. package/dist/daemon/runtime/protocol.d.ts.map +0 -1
  366. package/dist/daemon/runtime/protocol.js.map +0 -1
  367. package/dist/endpoint/addressing/index.d.ts.map +0 -1
  368. package/dist/endpoint/addressing/index.js.map +0 -1
  369. package/dist/endpoint/collective/operation.d.ts.map +0 -1
  370. package/dist/endpoint/collective/operation.js.map +0 -1
  371. package/dist/endpoint/collective/shared-answers.d.ts.map +0 -1
  372. package/dist/endpoint/collective/shared-answers.js.map +0 -1
  373. package/dist/endpoint/collective/validation.d.ts.map +0 -1
  374. package/dist/endpoint/collective/validation.js.map +0 -1
  375. package/dist/endpoint/collective/wire.d.ts.map +0 -1
  376. package/dist/endpoint/collective/wire.js.map +0 -1
  377. package/dist/endpoint/engine-dissemination.d.ts.map +0 -1
  378. package/dist/endpoint/engine-dissemination.js.map +0 -1
  379. package/dist/endpoint/engine-durability.js.map +0 -1
  380. package/dist/endpoint/engine-send.d.ts.map +0 -1
  381. package/dist/endpoint/engine-send.js.map +0 -1
  382. package/dist/endpoint/engine-types.d.ts.map +0 -1
  383. package/dist/endpoint/engine.d.ts.map +0 -1
  384. package/dist/endpoint/engine.js.map +0 -1
  385. package/dist/endpoint/protocol/evidence.js.map +0 -1
  386. package/dist/endpoint/protocol/index.d.ts.map +0 -1
  387. package/dist/endpoint/protocol/index.js.map +0 -1
  388. package/dist/endpoint/recovery/barrier.d.ts.map +0 -1
  389. package/dist/endpoint/recovery/barrier.js.map +0 -1
  390. package/dist/endpoint/recovery/index.d.ts.map +0 -1
  391. package/dist/endpoint/recovery/index.js.map +0 -1
  392. package/dist/endpoint/recovery/reanchor/empty.d.ts.map +0 -1
  393. package/dist/endpoint/recovery/reanchor/empty.js.map +0 -1
  394. package/dist/endpoint/recovery/reanchor/index.d.ts.map +0 -1
  395. package/dist/endpoint/recovery/reanchor/index.js.map +0 -1
  396. package/dist/endpoint/recovery/state.d.ts.map +0 -1
  397. package/dist/endpoint/recovery/state.js.map +0 -1
  398. package/dist/endpoint/recovery/store-evidence.d.ts.map +0 -1
  399. package/dist/endpoint/recovery/store-evidence.js.map +0 -1
  400. package/dist/endpoint/recovery/store.d.ts.map +0 -1
  401. package/dist/endpoint/recovery/store.js.map +0 -1
  402. package/dist/endpoint/representation-canonical.d.ts.map +0 -1
  403. package/dist/endpoint/representation-canonical.js.map +0 -1
  404. package/dist/endpoint/representation-codec.d.ts.map +0 -1
  405. package/dist/endpoint/representation-codec.js.map +0 -1
  406. package/dist/endpoint/representation-schemas.d.ts.map +0 -1
  407. package/dist/endpoint/representation-schemas.js.map +0 -1
  408. package/dist/endpoint/representation-verification.d.ts.map +0 -1
  409. package/dist/endpoint/representation-verification.js.map +0 -1
  410. package/dist/endpoint/representation.d.ts +0 -6
  411. package/dist/endpoint/representation.d.ts.map +0 -1
  412. package/dist/endpoint/representation.js +0 -8
  413. package/dist/endpoint/representation.js.map +0 -1
  414. package/dist/endpoint/router-worker/index.d.ts.map +0 -1
  415. package/dist/endpoint/router-worker/index.js.map +0 -1
  416. package/dist/endpoint/router-worker/outage.d.ts.map +0 -1
  417. package/dist/endpoint/router-worker/outage.js.map +0 -1
  418. package/dist/endpoint/router-worker/types.d.ts.map +0 -1
  419. package/dist/endpoint/router-worker/types.js.map +0 -1
  420. package/dist/endpoint/store/anchors.d.ts.map +0 -1
  421. package/dist/endpoint/store/anchors.js.map +0 -1
  422. package/dist/endpoint/store/database/index.d.ts.map +0 -1
  423. package/dist/endpoint/store/database/index.js.map +0 -1
  424. package/dist/endpoint/store/database/schema.d.ts.map +0 -1
  425. package/dist/endpoint/store/database/schema.js.map +0 -1
  426. package/dist/endpoint/store/database/values.d.ts.map +0 -1
  427. package/dist/endpoint/store/database/values.js.map +0 -1
  428. package/dist/endpoint/store/deliveries.d.ts.map +0 -1
  429. package/dist/endpoint/store/deliveries.js.map +0 -1
  430. package/dist/endpoint/store/dissemination.d.ts.map +0 -1
  431. package/dist/endpoint/store/dissemination.js.map +0 -1
  432. package/dist/endpoint/store/index.d.ts.map +0 -1
  433. package/dist/endpoint/store/index.js.map +0 -1
  434. package/dist/endpoint/store/management.d.ts.map +0 -1
  435. package/dist/endpoint/store/management.js.map +0 -1
  436. package/dist/endpoint/store/outbound.d.ts.map +0 -1
  437. package/dist/endpoint/store/outbound.js.map +0 -1
  438. package/dist/endpoint/store/records.d.ts.map +0 -1
  439. package/dist/endpoint/store/records.js.map +0 -1
  440. package/dist/endpoint/store/rows/index.d.ts.map +0 -1
  441. package/dist/endpoint/store/rows/index.js.map +0 -1
  442. package/dist/endpoint/store/types.d.ts.map +0 -1
  443. package/dist/endpoint/store/types.js.map +0 -1
  444. package/dist/endpoint/store.d.ts +0 -10
  445. package/dist/endpoint/store.d.ts.map +0 -1
  446. package/dist/endpoint/store.js +0 -6
  447. package/dist/endpoint/store.js.map +0 -1
  448. package/dist/harness-mcp-contract.d.ts.map +0 -1
  449. package/dist/harness-mcp-contract.js +0 -113
  450. package/dist/harness-mcp-contract.js.map +0 -1
  451. package/dist/harness-mcp-http.d.ts.map +0 -1
  452. package/dist/harness-mcp-http.js.map +0 -1
  453. package/dist/harness-mcp-subscription.d.ts +0 -30
  454. package/dist/harness-mcp-subscription.d.ts.map +0 -1
  455. package/dist/harness-mcp-subscription.js +0 -361
  456. package/dist/harness-mcp-subscription.js.map +0 -1
  457. package/dist/harness-mcp-wire.d.ts.map +0 -1
  458. package/dist/harness-mcp-wire.js.map +0 -1
  459. package/dist/management-runtime.d.ts.map +0 -1
  460. package/dist/management-runtime.js.map +0 -1
  461. package/dist/server.d.ts.map +0 -1
  462. package/dist/server.js.map +0 -1
  463. package/dist/server.types-check.d.ts.map +0 -1
  464. package/dist/server.types-check.js.map +0 -1
  465. /package/dist/{endpoint/store → store}/anchors.d.ts +0 -0
  466. /package/dist/{endpoint/store → store}/anchors.js +0 -0
  467. /package/dist/{endpoint/store → store}/database/index.d.ts +0 -0
  468. /package/dist/{endpoint/store → store}/database/index.js +0 -0
  469. /package/dist/{endpoint/store → store}/database/schema.d.ts +0 -0
  470. /package/dist/{endpoint/store → store}/database/values.d.ts +0 -0
  471. /package/dist/{endpoint/store → store}/database/values.js +0 -0
  472. /package/dist/{endpoint/store → store}/dissemination.d.ts +0 -0
  473. /package/dist/{endpoint/store → store}/dissemination.js +0 -0
  474. /package/dist/{endpoint/store → store}/outbound.d.ts +0 -0
  475. /package/dist/{endpoint/store → store}/outbound.js +0 -0
  476. /package/dist/{endpoint/store → store}/records.d.ts +0 -0
  477. /package/dist/{endpoint/store → store}/records.js +0 -0
  478. /package/dist/{endpoint/store → store}/rows/index.d.ts +0 -0
  479. /package/dist/{endpoint/store → store}/rows/index.js +0 -0
  480. /package/dist/{endpoint/store → store}/types.js +0 -0
  481. /package/dist/{endpoint/collective → transport/collectives}/shared-answers.js +0 -0
  482. /package/dist/{endpoint → transport/messaging}/recovery/barrier.js +0 -0
  483. /package/dist/{endpoint/router-worker → transport/router}/index.d.ts +0 -0
  484. /package/dist/{endpoint/router-worker → transport/router}/outage.d.ts +0 -0
  485. /package/dist/{endpoint/router-worker → transport/router}/outage.js +0 -0
  486. /package/dist/{endpoint/router-worker → transport/router}/types.js +0 -0
package/README.md CHANGED
@@ -14,17 +14,22 @@ 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,
21
21
  multicast by default. A multicast creates one post with a fresh Client-minted
22
22
  `PostId`; the host owns whether to invoke send again. A gather asks each
23
23
  member the text as a question, one request post in each member's direct
24
- conversation, and returns its `operationId`; it fails with a
25
- `CollectiveError` naming each member whose request post was refused. A member
26
- answers with a `collectiveResponse`, which the endpoint validates against the
27
- request's form and sends to the conversation the request arrived in. An
24
+ conversation, and returns its `operationId`; a member whose post cannot be
25
+ delivered ends as `no-answer`. It fails with a `CollectiveError` before any
26
+ post when a member is malformed or unknown, and when every post was
27
+ refused. A member
28
+ answers with a `collectiveResponse` sent to the conversation the request
29
+ arrived in; the endpoint matches it to the one request open there, validates
30
+ it against that request's form, and refuses it when none or several are open.
31
+ `parseMessageText` reads any of these from a message's whole text, so every
32
+ adapter accepts the same text. An
28
33
  all_gather asks a `group:` address one question in the group conversation;
29
34
  each member endpoint keeps peer answers from its model until the requester's
30
35
  close, which lists the answers counted, and every member receives the same
@@ -37,7 +42,7 @@ requester and every member an all_gather's; and a host whose tool returns
37
42
  before the send passes `failureDelivery: "inbound"` to receive a refused
38
43
  gather, all_gather or response as an `operationFailed` item. Each delivery carries an
39
44
  adapter-only acknowledgment governed by the
40
- [host-specific acceptance contract](../../docs/spec/harness/ingress.md#durable-acceptance).
45
+ [host-specific acceptance contract](../../docs/spec/harness/ingress.md#delivery-handoff).
41
46
  Hosts implement the required persistence and replay guarantees. No inbound
42
47
  message carries Client-level reply authority.
43
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,76 +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.refine<number, 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
- collectiveResponse: Schema.Union<[Schema.Struct<{
51
- id: Schema.brand<Schema.filter<typeof Schema.String>, "CollectiveId">;
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
- id: Schema.brand<Schema.filter<typeof Schema.String>, "CollectiveId">;
56
- action: Schema.Literal<["decline", "cancel"]>;
57
- }>]>;
58
- }>]>;
59
- failureDelivery: Schema.optionalWith<Schema.Literal<["result", "inbound"]>, {
60
- exact: true;
61
- }>;
62
- }>;
63
- /**
64
- * A completed operation. A collecting operation names the id its answers and
65
- * result carry; a multicast has none, so its result is empty.
66
- */
67
- declare const harnessSendResultSchema: Schema.Struct<{
68
- operationId: Schema.optionalWith<Schema.brand<Schema.filter<typeof Schema.String>, "CollectiveId">, {
69
- exact: true;
70
- }>;
71
- }>;
72
- declare const harnessMessageReadyEventSchema: Schema.Struct<{
73
- deliveryToken: Schema.brand<Schema.filter<typeof Schema.String>, "DeliveryToken">;
10
+ export declare const HistoryExportRecord: Schema.Union<[Schema.Struct<{
11
+ kind: Schema.Literal<["inbound"]>;
74
12
  item: Schema.Union<[Schema.Struct<{
75
13
  kind: Schema.Literal<["multicast"]>;
76
14
  message: Schema.Union<[Schema.filter<Schema.Struct<{
@@ -83,19 +21,19 @@ declare const harnessMessageReadyEventSchema: Schema.Struct<{
83
21
  readonly text: string;
84
22
  } | {
85
23
  readonly type: "data";
86
- readonly value: import("./contract.js").JsonValue;
24
+ readonly value: import("../index.js").JsonValue;
87
25
  }, ...({
88
26
  readonly type: "text";
89
27
  readonly text: string;
90
28
  } | {
91
29
  readonly type: "data";
92
- readonly value: import("./contract.js").JsonValue;
30
+ readonly value: import("../index.js").JsonValue;
93
31
  })[]], Schema.NonEmptyArray<Schema.Union<[Schema.Struct<{
94
32
  type: Schema.Literal<["text"]>;
95
33
  text: Schema.filter<typeof Schema.String>;
96
34
  }>, Schema.Struct<{
97
35
  type: Schema.Literal<["data"]>;
98
- 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>;
99
37
  }>]>>>;
100
38
  }>>, Schema.filter<Schema.Struct<{
101
39
  kind: Schema.Literal<["group"]>;
@@ -108,19 +46,19 @@ declare const harnessMessageReadyEventSchema: Schema.Struct<{
108
46
  readonly text: string;
109
47
  } | {
110
48
  readonly type: "data";
111
- readonly value: import("./contract.js").JsonValue;
49
+ readonly value: import("../index.js").JsonValue;
112
50
  }, ...({
113
51
  readonly type: "text";
114
52
  readonly text: string;
115
53
  } | {
116
54
  readonly type: "data";
117
- readonly value: import("./contract.js").JsonValue;
55
+ readonly value: import("../index.js").JsonValue;
118
56
  })[]], Schema.NonEmptyArray<Schema.Union<[Schema.Struct<{
119
57
  type: Schema.Literal<["text"]>;
120
58
  text: Schema.filter<typeof Schema.String>;
121
59
  }>, Schema.Struct<{
122
60
  type: Schema.Literal<["data"]>;
123
- 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>;
124
62
  }>]>>>;
125
63
  }>>]>;
126
64
  }>, Schema.Struct<{
@@ -135,7 +73,7 @@ declare const harnessMessageReadyEventSchema: Schema.Struct<{
135
73
  exact: true;
136
74
  }>;
137
75
  type: Schema.Literal<["object"]>;
138
- properties: Schema.Record$<typeof Schema.String, Schema.Record$<typeof Schema.String, Schema.Schema<import("./contract.js").JsonValue, import("./contract.js").JsonValue, never>>>;
76
+ properties: Schema.Record$<typeof Schema.String, Schema.Record$<typeof Schema.String, Schema.Schema<import("../index.js").JsonValue, import("../index.js").JsonValue, never>>>;
139
77
  required: Schema.optionalWith<Schema.Array$<typeof Schema.String>, {
140
78
  exact: true;
141
79
  }>;
@@ -153,8 +91,6 @@ declare const harnessMessageReadyEventSchema: Schema.Struct<{
153
91
  content: Schema.Record$<typeof Schema.String, Schema.Union<[typeof Schema.String, Schema.filter<typeof Schema.Number>, typeof Schema.Boolean, Schema.Array$<typeof Schema.String>]>>;
154
92
  }>, Schema.Struct<{
155
93
  kind: Schema.Literal<["declined"]>;
156
- }>, Schema.Struct<{
157
- kind: Schema.Literal<["cancelled"]>;
158
94
  }>, Schema.Struct<{
159
95
  kind: Schema.Literal<["invalid"]>;
160
96
  reason: typeof Schema.String;
@@ -171,63 +107,85 @@ declare const harnessMessageReadyEventSchema: Schema.Struct<{
171
107
  to: Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">;
172
108
  error: typeof Schema.String;
173
109
  }>]>;
174
- }>;
175
- type HarnessEventsExtensionDeclaration = typeof harnessEventsExtensionDeclarationSchema.Type;
176
- /** Decoded delivery acknowledgment arguments owned by the daemon. */
177
- export type HarnessAcknowledgeDeliveryRequest = typeof harnessAcknowledgeDeliveryRequestSchema.Type;
178
- /** Decoded empty adapter-operation result. */
179
- export type HarnessEmptyResult = typeof harnessEmptyResultSchema.Type;
180
- /** Decoded arguments of one `send_message` call. */
181
- export type HarnessSendRequest = typeof harnessSendRequestSchema.Type;
182
- /** Decoded error data of one refused `send_message` call. */
183
- export type HarnessSendErrorData = Readonly<{
184
- reason: string;
185
- }> | Readonly<{
186
- reason: "collective-failed";
187
- id: CollectiveId;
188
- failure: Effect.Effect.Success<ReturnType<typeof decodeCollectiveFailure>>;
189
- }>;
190
- /** Decoded result of one `send_message` operation. */
191
- export type HarnessSendResult = typeof harnessSendResultSchema.Type;
192
- /** One stable pending inbound item emitted by the daemon. */
193
- export type HarnessMessageReadyEvent = typeof harnessMessageReadyEventSchema.Type;
194
- /** JSON Schema advertised for the delivery acknowledgment operation. */
195
- export declare const harnessAcknowledgeDeliveryRequestJsonSchema: JSONSchema.JsonSchema7Root;
196
- /** JSON Schema advertised for `send_message` arguments. */
197
- export declare const harnessSendRequestJsonSchema: JSONSchema.JsonSchema7Root;
198
- /** JSON Schema advertised for `send_message` results. */
199
- export declare const harnessSendResultJsonSchema: JSONSchema.JsonSchema7Root;
200
- /** JSON Schema advertised for empty adapter-operation results. */
201
- export declare const harnessEmptyResultJsonSchema: JSONSchema.JsonSchema7Root;
202
- /**
203
- * Decode the exact events-v3 capability declaration.
204
- * @param value Untrusted capability payload.
205
- * @returns The validated empty declaration.
206
- */
207
- export declare function decodeHarnessEventsExtensionDeclaration(value: unknown): Effect.Effect<HarnessEventsExtensionDeclaration, ParseResult.ParseError>;
208
- /**
209
- * Decode one exact delivery acknowledgment request.
210
- * @param value Untrusted tool arguments.
211
- * @returns The validated request.
212
- */
213
- export declare function decodeHarnessAcknowledgeDeliveryRequest(value: unknown): Effect.Effect<HarnessAcknowledgeDeliveryRequest, ParseResult.ParseError>;
214
- /**
215
- * Decode one exact pending-delivery notification payload.
216
- * @param value Untrusted notification parameters.
217
- * @returns The validated pending delivery.
218
- */
219
- export declare function decodeHarnessMessageReadyEvent(value: unknown): Effect.Effect<HarnessMessageReadyEvent, ParseResult.ParseError>;
110
+ at: typeof Schema.DateTimeUtc;
111
+ }>, Schema.Struct<{
112
+ kind: Schema.Literal<["outbound"]>;
113
+ input: Schema.Union<[Schema.Struct<{
114
+ to: Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">;
115
+ text: Schema.filter<typeof Schema.String>;
116
+ collective: Schema.optionalWith<Schema.Union<[Schema.Struct<{
117
+ op: Schema.optionalWith<Schema.Literal<["multicast"]>, {
118
+ exact: true;
119
+ }>;
120
+ }>, Schema.Struct<{
121
+ op: Schema.Literal<["gather", "all_gather"]>;
122
+ deadline: Schema.filter<Schema.filter<typeof Schema.Number>>;
123
+ requestedSchema: Schema.Struct<{
124
+ $schema: Schema.optionalWith<typeof Schema.String, {
125
+ exact: true;
126
+ }>;
127
+ type: Schema.Literal<["object"]>;
128
+ properties: Schema.Record$<typeof Schema.String, Schema.Record$<typeof Schema.String, Schema.Schema<import("../index.js").JsonValue, import("../index.js").JsonValue, never>>>;
129
+ required: Schema.optionalWith<Schema.Array$<typeof Schema.String>, {
130
+ exact: true;
131
+ }>;
132
+ }>;
133
+ }>]>, {
134
+ exact: true;
135
+ }>;
136
+ }>, Schema.Struct<{
137
+ to: Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">;
138
+ collectiveResponse: Schema.Union<[Schema.Struct<{
139
+ action: Schema.Literal<["accept"]>;
140
+ content: Schema.Record$<typeof Schema.String, Schema.Union<[typeof Schema.String, Schema.filter<typeof Schema.Number>, typeof Schema.Boolean, Schema.Array$<typeof Schema.String>]>>;
141
+ }>, Schema.Struct<{
142
+ action: Schema.Literal<["decline"]>;
143
+ }>]>;
144
+ }>]>;
145
+ outcome: Schema.Union<[Schema.Struct<{
146
+ kind: Schema.Literal<["sent"]>;
147
+ operationId: Schema.optionalWith<Schema.brand<Schema.filter<typeof Schema.String>, "CollectiveId">, {
148
+ exact: true;
149
+ }>;
150
+ postIds: Schema.Array$<Schema.brand<Schema.filter<typeof Schema.String>, "PostId">>;
151
+ }>, Schema.Struct<{
152
+ kind: Schema.Literal<["failed"]>;
153
+ error: typeof Schema.String;
154
+ }>]>;
155
+ at: typeof Schema.DateTimeUtc;
156
+ }>, Schema.Struct<{
157
+ kind: Schema.Literal<["export-failed"]>;
158
+ reason: typeof Schema.String;
159
+ at: typeof Schema.DateTimeUtc;
160
+ }>]>;
161
+ /** A validated line of the daemon's history export. */
162
+ export type HistoryExportRecord = typeof HistoryExportRecord.Type;
220
163
  /**
221
- * Decode the error data of one refused `send_message` call.
222
- * @param value Untrusted JSON-RPC error data.
223
- * @returns The collective failure or send reason it carries.
164
+ * Sink for the daemon's optional history export. Recording never fails and
165
+ * never blocks the daemon on its own outcome: an export that stops is the
166
+ * sink's business, recorded in the file.
224
167
  */
225
- export declare function decodeHarnessSendErrorData(value: unknown): Effect.Effect<HarnessSendErrorData, ParseResult.ParseError>;
168
+ export interface HistoryExportPort {
169
+ readonly record: (record: HistoryExportRecord) => Effect.Effect<void>;
170
+ }
171
+ /** The export in place when the operator configured none: records vanish. */
172
+ export declare const noHistoryExport: HistoryExportPort;
226
173
  /**
227
- * Decode one `send_message` result.
228
- * @param value Untrusted structured tool content.
229
- * @returns The operation id a gather names, if any.
174
+ * Open the daemon's history export against one file.
175
+ *
176
+ * Recording completes only once the line is on disk: an inbound record lands
177
+ * before its message becomes visible to the agent and an outbound record
178
+ * before the send returns, so a transcript harvested the moment a program
179
+ * ends holds every delivery and send that program could have observed. That
180
+ * costs one append inside the delivery path, accepted for an opt-in evidence
181
+ * file whose worth is its completeness. Lines are appended one at a time
182
+ * under a gate, so two records never interleave. The first append that fails
183
+ * ends the export: one `export-failed` line is written on a best-effort
184
+ * basis, every later record is dropped, and the daemon goes on serving the
185
+ * agent. An experiment must not die because its transcript file did, and the
186
+ * truncation is explicit in the file rather than silent.
187
+ *
188
+ * The file is created on the first write.
230
189
  */
231
- export declare function decodeHarnessSendResult(value: unknown): Effect.Effect<HarnessSendResult, ParseResult.ParseError>;
232
- export {};
233
- //# sourceMappingURL=harness-mcp-contract.d.ts.map
190
+ export declare function makeHistoryExport(path: string): Effect.Effect<HistoryExportPort, never, FileSystem.FileSystem>;
191
+ //# 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"}