@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
@@ -21,14 +21,15 @@
21
21
  * RM->>RE: send gather to, question, deadline, schema
22
22
  * RE->>RE: validate schema, mint id<br>deadline = now + duration
23
23
  * RE->>ME: one request post per member
24
- * alt a request post is refused
24
+ * alt no request post is accepted
25
25
  * RE-->>RM: error naming each unreachable member
26
- * else every request post accepted
26
+ * else some request post accepted
27
27
  * RE-->>RM: operation id
28
+ * RE->>RE: record each refused or uncertified member as no-answer
28
29
  * end
29
30
  * ME->>MM: collectiveRequest item
30
- * MM->>ME: send collectiveResponse id, action, content
31
- * ME->>ME: validate content against the stored schema
31
+ * MM->>ME: send collectiveResponse to the requester, action, content
32
+ * ME->>ME: match the request open in that conversation<br>validate content against its schema
32
33
  * ME->>RE: response post in the direct conversation
33
34
  * RE->>RE: consume, validate and record the answer
34
35
  * Note over RE: complete when every member has an outcome<br>or at the deadline
@@ -54,8 +55,8 @@
54
55
  * RE-->>RM: operation id
55
56
  * end
56
57
  * ME->>MM: collectiveRequest item
57
- * MM->>ME: send collectiveResponse id, action, content
58
- * ME->>ME: validate content against the stored schema
58
+ * MM->>ME: send collectiveResponse to the group, action, content
59
+ * ME->>ME: match the request open in the group<br>validate content against its schema
59
60
  * ME->>RE: response post to the group
60
61
  * ME->>ME: peer response posts, consumed and recorded by record hash
61
62
  * Note over RE: complete when every member has an outcome<br>or at the deadline
@@ -65,13 +66,16 @@
65
66
  * ME->>MM: collectiveResult item, the same outcomes
66
67
  * ```
67
68
  */
68
- import { Clock, Duration, Effect, Array as EffectArray, Either, Exit, Fiber, Option, ParseResult, Schema, } from "effect";
69
- import { randomBytes } from "node:crypto";
70
- import { AgentAddress, CollectiveError, MAXIMUM_DEADLINE_SECONDS, RequestedSchema, SendError, } from "../../contract.js";
71
- import { canonicalMessageAddress } from "../addressing/index.js";
69
+ import { Clock, Duration, Effect, Array as EffectArray, Fiber, Option, ParseResult, Schema, } from "effect";
70
+ import { AgentAddress, canonicalMessageAddress, } from "../messaging/address.js";
71
+ import { SendError } from "../messaging/errors.js";
72
+ import { emitFailureAsSendError, refusedAs, reportFailure, } from "./failures.js";
73
+ import { CollectiveError, MAXIMUM_DEADLINE_SECONDS, RequestedSchema, } from "./forms.js";
74
+ import { matchOpenRequest, } from "./received-request.js";
75
+ import { isAddressRefusal, lookupRefusals, requestsSoFar, } from "./request-sends.js";
72
76
  import { keepFirstAnswer, listedAnswers, memberOutcomes, } from "./shared-answers.js";
73
77
  import { outcomeOfResponse, validateAnswer } from "./validation.js";
74
- import { collectiveIdOf, encodeCollectiveContent, FormModeSchema, readCollectiveValue, withoutCollectivePart, } from "./wire.js";
78
+ import { collectiveIdOf, encodeCollectiveContent, FormModeSchema, mintCollectiveId, readCollectiveValue, withoutCollectivePart, } from "./wire.js";
75
79
  /**
76
80
  * How long a collecting operation's send waits for its request posts before
77
81
  * returning. A gather's request still uncertified then is left running: its
@@ -82,11 +86,6 @@ import { collectiveIdOf, encodeCollectiveContent, FormModeSchema, readCollective
82
86
  * transport timeout.
83
87
  */
84
88
  const REQUEST_SEND_WAIT = Duration.seconds(20);
85
- /**
86
- * How many Registry lookups a refused all_gather runs at once to name its
87
- * unreachable members; they are independent, and a group has at most 32.
88
- */
89
- const MEMBER_LOOKUP_CONCURRENCY = 8;
90
89
  /**
91
90
  * How long past its deadline a member keeps an all_gather request while it
92
91
  * waits for the requester's close. The requester closes at the deadline at
@@ -110,11 +109,6 @@ const RECEIVED_DEADLINE_ALLOWANCE = Duration.hours(1);
110
109
  const RECEIVED_DEADLINE_HORIZON = Duration.toMillis(Duration.sum(Duration.seconds(MAXIMUM_DEADLINE_SECONDS), RECEIVED_DEADLINE_ALLOWANCE));
111
110
  const decodeAgentAddress = Schema.decodeUnknownOption(AgentAddress);
112
111
  const decodeRequestedSchema = Schema.decodeUnknownOption(RequestedSchema);
113
- /** A fresh nonce and the id it binds to the requester. */
114
- const mintCollectiveId = (requester) => Effect.sync(() => {
115
- const nonce = randomBytes(32).toString("base64url");
116
- return { id: collectiveIdOf(requester, nonce), nonce };
117
- });
118
112
  const contentInvalid = () => new SendError({ reason: "content-invalid" });
119
113
  const collectiveFailure = (id, failure) => new CollectiveError({ id, failure });
120
114
  /**
@@ -130,7 +124,7 @@ export const makeCollectiveOperations = (ports) => {
130
124
  };
131
125
  return {
132
126
  send: (input, failureDelivery) => "collectiveResponse" in input
133
- ? reportFailure(state, failureDelivery, respond(state, input.collectiveResponse))
127
+ ? reportFailure(state.ports.emit, failureDelivery, respond(state, input.to, input.collectiveResponse))
134
128
  : sendOperation(state, input, failureDelivery),
135
129
  classify: (message) => classify(state, message),
136
130
  };
@@ -143,7 +137,7 @@ function sendOperation(state, input, failureDelivery) {
143
137
  return multicast(state, input.to, input.text);
144
138
  case "gather":
145
139
  case "all_gather":
146
- return reportFailure(state, failureDelivery, gather(state, input.to, input.text, operation));
140
+ return reportFailure(state.ports.emit, failureDelivery, gather(state, input.to, input.text, operation));
147
141
  default: {
148
142
  const exhaustive = operation;
149
143
  return exhaustive;
@@ -153,35 +147,6 @@ function sendOperation(state, input, failureDelivery) {
153
147
  function multicast(state, to, text) {
154
148
  return encodeCollectiveContent({ kind: "operation", op: "multicast" }, text).pipe(Effect.mapError(contentInvalid), Effect.flatMap((content) => state.ports.sendPost({ to, content })), Effect.map((post) => ({ postIds: [post.postId] })));
155
149
  }
156
- /**
157
- * Deliver a refused collective send's error where the host wants it. With
158
- * `inbound` the send completes, naming the operation, and the error arrives
159
- * as an `operationFailed` item carrying the same text.
160
- */
161
- function reportFailure(state, failureDelivery, send) {
162
- return send.pipe(Effect.catchAll((refused) => {
163
- switch (failureDelivery) {
164
- case "result":
165
- return Effect.fail(refused.error);
166
- case "inbound":
167
- return state.ports
168
- .emit({
169
- kind: "operationFailed",
170
- id: refused.id,
171
- to: refused.to,
172
- error: refused.error.message,
173
- })
174
- .pipe(Effect.as({ operationId: refused.id, postIds: [] }));
175
- default: {
176
- const exhaustive = failureDelivery;
177
- return exhaustive;
178
- }
179
- }
180
- }));
181
- }
182
- function refusedAs(id, to) {
183
- return (error) => ({ id, to, error });
184
- }
185
150
  /**
186
151
  * The canonical address a collecting operation's result and failure name, by
187
152
  * the rule every send shares, and the members it asks: the one agent of an
@@ -191,7 +156,10 @@ function refusedAs(id, to) {
191
156
  */
192
157
  function gatherAddress(to, self, op) {
193
158
  const selfName = self.slice("agent:".length);
194
- const membershipInvalid = new SendError({ reason: "membership-invalid" });
159
+ const membershipInvalid = new SendError({
160
+ reason: "membership-invalid",
161
+ detail: "an all_gather asks a group of two or more other agents",
162
+ });
195
163
  return canonicalMessageAddress(to, selfName).pipe(Effect.flatMap((canonical) => {
196
164
  if (canonical.kind === "direct") {
197
165
  return op === "gather"
@@ -209,17 +177,27 @@ function gatherAddress(to, self, op) {
209
177
  : Effect.succeed({ to: canonical.address, members: [first, ...rest] });
210
178
  }));
211
179
  }
212
- /** Check a collecting operation's schema against the MCP form-mode grammar. */
180
+ /**
181
+ * Check a collecting operation's schema against the MCP form-mode grammar.
182
+ * The failure's detail is one line per issue, each led by its path within
183
+ * the schema, such as `properties.slots: items.type: ...`, because the
184
+ * requester's model repairs the form from this text alone.
185
+ */
213
186
  function formModeSchema(id, requestedSchema) {
214
187
  return Schema.decodeUnknown(FormModeSchema)(requestedSchema).pipe(Effect.mapError((error) => collectiveFailure(id, {
215
188
  kind: "schema-invalid",
216
- detail: ParseResult.TreeFormatter.formatErrorSync(error),
189
+ detail: ParseResult.ArrayFormatter.formatErrorSync(error)
190
+ .map(({ path, message }) => path.length === 0
191
+ ? message
192
+ : `${path.map(String).join(".")}: ${message}`)
193
+ .join("; "),
217
194
  })));
218
195
  }
219
196
  /**
220
197
  * Validate a gather or all_gather before any post: mint its id, check its
221
- * schema against the form-mode grammar, name its members, fix its absolute
222
- * deadline, and build the request content within the content limit.
198
+ * schema against the form-mode grammar, name and resolve its members, fix
199
+ * its absolute deadline, and build the request content within the content
200
+ * limit.
223
201
  */
224
202
  function prepareGather(state, requestedTo, question, operation) {
225
203
  return Effect.gen(function* () {
@@ -227,6 +205,7 @@ function prepareGather(state, requestedTo, question, operation) {
227
205
  const { to, members } = yield* gatherAddress(requestedTo, state.ports.self, operation.op).pipe(Effect.mapError(refusedAs(id, requestedTo)));
228
206
  const refused = refusedAs(id, to);
229
207
  const requestedSchema = yield* formModeSchema(id, operation.requestedSchema).pipe(Effect.mapError(refused));
208
+ yield* refuseAddressErrors(state, members).pipe(Effect.mapError((failure) => refused(collectiveFailure(id, failure))));
230
209
  const now = yield* Clock.currentTimeMillis;
231
210
  const untilDeadline = Duration.toMillis(Duration.seconds(operation.deadline));
232
211
  const deadlineAt = now + untilDeadline;
@@ -257,17 +236,35 @@ function prepareGather(state, requestedTo, question, operation) {
257
236
  function gather(state, requestedTo, question, operation) {
258
237
  return Effect.gen(function* () {
259
238
  const prepared = yield* prepareGather(state, requestedTo, question, operation);
260
- const timer = yield* sleepUntil(prepared.deadlineAt).pipe(Effect.zipRight(completeGather(state, prepared.id)), Effect.forkIn(state.ports.scope));
239
+ const timer = yield* sleepUntil(prepared.deadlineAt).pipe(Effect.zipRight(Effect.ignore(completeGather(state, prepared.id))), Effect.forkIn(state.ports.scope));
261
240
  yield* Effect.sync(() => {
262
- state.gathers.set(prepared.id, { ...prepared.open, timer });
241
+ state.gathers.set(prepared.id, {
242
+ ...prepared.open,
243
+ timer,
244
+ requestsSettled: prepared.open.op === "all_gather",
245
+ });
263
246
  });
264
247
  const requests = prepared.open.op === "gather"
265
248
  ? sendRequests(state, prepared)
266
- : sendGroupRequest(state, prepared);
267
- const postIds = yield* requests.pipe(Effect.mapError(refusedAs(prepared.id, prepared.open.to)));
268
- return { operationId: prepared.id, postIds };
249
+ : sendGroupRequest(state, prepared).pipe(Effect.map((postIds) => ({ postIds })));
250
+ const sent = yield* requests.pipe(Effect.mapError(refusedAs(prepared.id, prepared.open.to)));
251
+ return { ...sent, operationId: prepared.id };
269
252
  });
270
253
  }
254
+ /**
255
+ * Resolve every member before any post through the engine's address
256
+ * resolution. A malformed or unknown member, or invalid membership, refuses
257
+ * the whole send naming each one; any other lookup failure is left to the
258
+ * post, which reports it as a delivery failure.
259
+ */
260
+ function refuseAddressErrors(state, members) {
261
+ return lookupRefusals(members, state.ports.lookupMember).pipe(Effect.map((refusals) => refusals.filter(isAddressRefusal)), Effect.flatMap(([first, ...rest]) => first === undefined
262
+ ? Effect.void
263
+ : Effect.fail({
264
+ kind: "members-unreachable",
265
+ members: [first, ...rest],
266
+ })));
267
+ }
271
268
  /** Sleep until the absolute time `at`, in steps no timer overflows. */
272
269
  function sleepUntil(at) {
273
270
  return Clock.currentTimeMillis.pipe(Effect.flatMap((now) => now >= at
@@ -275,24 +272,60 @@ function sleepUntil(at) {
275
272
  : Effect.sleep(Duration.min(Duration.millis(at - now), DEADLINE_TIMER_STEP)).pipe(Effect.zipRight(sleepUntil(at)))));
276
273
  }
277
274
  /**
278
- * Send one request post per member and wait for them, never past the
279
- * deadline. Any refusal abandons the gather and names every refused member;
280
- * a post still pending when the wait ends is left running.
275
+ * Send one request post per member, waiting at most the send wait. A pending
276
+ * send keeps running and settles its member when it completes: certified
277
+ * asks it, refused makes it `no-answer`, as does pending at the deadline.
278
+ * The send fails only when every post was refused and the gather has not
279
+ * completed, so an operation ends in exactly one refusal or one result, or
280
+ * as persistence-failed when the result its settling completes cannot be
281
+ * kept.
281
282
  */
282
283
  function sendRequests(state, prepared) {
283
284
  return Effect.gen(function* () {
284
- const sends = yield* Effect.forEach(prepared.open.members, (member) => state.ports.sendPost({ to: member, content: prepared.content }).pipe(Effect.mapError((error) => ({ member, reason: error.reason })), Effect.either, Effect.forkIn(state.ports.scope)), { concurrency: 1 });
285
+ const { id, open } = prepared;
286
+ const sends = yield* Effect.forEach(open.members, (member) => state.ports.sendPost({ to: member, content: prepared.content }).pipe(Effect.mapError((error) => ({ member, reason: error.reason })), Effect.tapError((refusal) => recordRefusal(state, id, refusal)), Effect.either, Effect.forkIn(state.ports.scope)), { concurrency: 1 });
285
287
  yield* Fiber.awaitAll(sends).pipe(Effect.timeoutOption(requestWait(state, prepared)));
286
- const results = yield* settledSends(sends);
287
- const [refusal, ...refusals] = results.flatMap((result) => Option.toArray(Either.getLeft(result)));
288
- if (refusal !== undefined) {
289
- yield* abandonGather(state, prepared.id, sends);
290
- return yield* Effect.fail(collectiveFailure(prepared.id, {
288
+ const { posts, refused } = yield* requestsSoFar(open.members, sends);
289
+ const [refusal, ...refusals] = refused;
290
+ if (refusal !== undefined &&
291
+ refusals.length + 1 === open.members.length &&
292
+ state.gathers.has(id)) {
293
+ yield* forgetGather(state, id);
294
+ return yield* Effect.fail(collectiveFailure(id, {
291
295
  kind: "members-unreachable",
292
296
  members: [refusal, ...refusals],
293
297
  }));
294
298
  }
295
- return results.flatMap((result) => Option.toArray(Either.getRight(result)).map((post) => post.postId));
299
+ yield* emitFailureAsSendError(updateGather(state, id, (settled) => {
300
+ settled.requestsSettled = true;
301
+ }));
302
+ return { postIds: posts.map((post) => post.postId) };
303
+ });
304
+ }
305
+ /** Record a member whose request post was refused as `no-answer`. */
306
+ function recordRefusal(state, id, { member }) {
307
+ return Effect.ignore(updateGather(state, id, ({ outcomes }) => {
308
+ if (!outcomes.has(member)) {
309
+ outcomes.set(member, { kind: "no-answer" });
310
+ }
311
+ }));
312
+ }
313
+ /**
314
+ * Apply a change to an open gather, then complete it once its send has
315
+ * returned and every member has an outcome. Until the send returns, only the
316
+ * send decides whether the gather is refused, so no path can emit both a
317
+ * refusal and a result.
318
+ */
319
+ function updateGather(state, id, change) {
320
+ return Effect.suspend(() => {
321
+ const open = state.gathers.get(id);
322
+ if (open === undefined) {
323
+ return Effect.void;
324
+ }
325
+ change(open);
326
+ return open.requestsSettled && open.outcomes.size === open.members.length
327
+ ? completeGather(state, id).pipe(Effect.zipRight(Fiber.interrupt(open.timer)))
328
+ : Effect.void;
296
329
  });
297
330
  }
298
331
  /**
@@ -320,34 +353,17 @@ function sendGroupRequest(state, prepared) {
320
353
  * succeeds each member is named with the group post's reason.
321
354
  */
322
355
  function unreachableMembers(state, members, groupReason) {
323
- return Effect.forEach(members, (member) => state.ports.lookupMember(member).pipe(Effect.flip, Effect.map((error) => ({ member, reason: error.reason })), Effect.option), { concurrency: MEMBER_LOOKUP_CONCURRENCY }).pipe(Effect.map((lookups) => {
324
- const [first, ...rest] = lookups.flatMap((lookup) => Option.toArray(lookup));
325
- if (first !== undefined) {
326
- return [first, ...rest];
327
- }
328
- const [member, ...others] = members;
329
- return [
330
- { member, reason: groupReason },
331
- ...others.map((other) => ({ member: other, reason: groupReason })),
332
- ];
333
- }));
356
+ return lookupRefusals(members, state.ports.lookupMember).pipe(Effect.map(([first, ...rest]) => first === undefined
357
+ ? EffectArray.map(members, (member) => ({
358
+ member,
359
+ reason: groupReason,
360
+ }))
361
+ : [first, ...rest]));
334
362
  }
335
363
  /** How long a send waits for request posts: the bound, never past the deadline. */
336
364
  function requestWait(state, prepared) {
337
365
  return Duration.min(state.ports.requestSendWait ?? REQUEST_SEND_WAIT, Duration.millis(prepared.untilDeadline));
338
366
  }
339
- /** The request sends that have finished, each with its post or refusal. */
340
- function settledSends(sends) {
341
- return Effect.forEach(sends, (send) => Fiber.poll(send), {
342
- concurrency: 1,
343
- }).pipe(Effect.map((polls) => polls.flatMap((poll) => Option.toArray(Option.flatMap(poll, (exit) => Exit.isSuccess(exit) ? Option.some(exit.value) : Option.none())))));
344
- }
345
- function abandonGather(state, id, sends) {
346
- return Effect.forEach(sends, (send) => Fiber.interruptFork(send), {
347
- concurrency: 1,
348
- discard: true,
349
- }).pipe(Effect.zipRight(forgetGather(state, id)));
350
- }
351
367
  /** Drop an operation this endpoint abandons, and stop its deadline timer. */
352
368
  function forgetGather(state, id) {
353
369
  return Effect.suspend(() => {
@@ -406,65 +422,42 @@ function closeAllGather(state, open, result) {
406
422
  kind: "operationFailed",
407
423
  id: result.id,
408
424
  to: open.to,
409
- error: `collective ${result.id} failed: its close was not certified (${error.reason})`,
425
+ error: `all_gather ${result.id} failed: its close was not certified (${error.reason})`,
410
426
  }),
411
427
  onSuccess: (post) => state.ports.emit({ ...result, closePostId: post.postId }),
412
428
  }));
413
429
  }
414
- function respond(state, response) {
430
+ /**
431
+ * Answer the one request open in the conversation `to` names. The answer
432
+ * carries no request id, so the conversation decides which request it
433
+ * answers; with none open, or several, nothing is sent.
434
+ */
435
+ function respond(state, to, response) {
415
436
  return Effect.gen(function* () {
416
- const { id } = response;
417
- const now = yield* Clock.currentTimeMillis;
418
- const request = yield* openRequest(state, id, now);
437
+ const { id, request } = yield* openRequest(state, to);
419
438
  const refused = refusedAs(id, request.to);
420
- const value = { kind: "response", ...response };
439
+ const value = { kind: "response", id, ...response };
421
440
  const content = yield* responseContent(request, value).pipe(Effect.mapError(refused));
422
441
  yield* claimRequest(id, request).pipe(Effect.mapError(refused));
423
442
  const post = yield* state.ports.sendPost({ to: request.to, content }).pipe(Effect.tapBoth({
424
443
  onFailure: () => settleAnswer(state, id, request, Option.none()),
425
444
  onSuccess: (sent) => settleAnswer(state, id, request, Option.some({ recordHash: sent.recordHash, response: value })),
426
- }), Effect.onInterrupt(() => settleAnswer(state, id, request, Option.none())), Effect.mapError(refused));
445
+ }), Effect.onInterrupt(() => Effect.ignore(settleAnswer(state, id, request, Option.none()))), emitFailureAsSendError, Effect.mapError(refused));
427
446
  return { operationId: id, postIds: [post.postId] };
428
447
  });
429
448
  }
430
449
  /**
431
- * The received request a response answers, refused when this endpoint never
432
- * received it, it was already answered, or its deadline or close has passed.
433
- * A refusal for an unknown request is addressed to the local agent, since no
434
- * requester is known.
450
+ * The one request open in the conversation `to` names. A refusal names an id
451
+ * minted for it, since no single request is answered.
435
452
  */
436
- function openRequest(state, id, now) {
437
- const request = state.requests.get(id);
438
- if (request === undefined) {
439
- return Effect.fail({
440
- id,
441
- to: state.ports.self,
442
- error: collectiveFailure(id, { kind: "request-unknown" }),
443
- });
444
- }
445
- const unavailable = requestUnavailable(request, now);
446
- return unavailable === undefined
447
- ? Effect.succeed(request)
448
- : Effect.fail({
449
- id,
450
- to: request.to,
451
- error: collectiveFailure(id, { kind: unavailable }),
452
- });
453
- }
454
- function requestUnavailable(request, now) {
455
- switch (request.state) {
456
- case "open":
457
- return now >= request.deadlineAt ? "request-expired" : undefined;
458
- case "sending":
459
- case "answered":
460
- return "request-answered";
461
- case "closed":
462
- return "request-expired";
463
- default: {
464
- const exhaustive = request.state;
465
- return exhaustive;
466
- }
467
- }
453
+ function openRequest(state, to) {
454
+ return Effect.gen(function* () {
455
+ const now = yield* Clock.currentTimeMillis;
456
+ const { id } = yield* mintCollectiveId(state.ports.self);
457
+ const self = state.ports.self.slice("agent:".length);
458
+ const { address } = yield* canonicalMessageAddress(to, self).pipe(Effect.mapError(refusedAs(id, to)));
459
+ return yield* matchOpenRequest(state.requests, address, now).pipe(Effect.mapError((kind) => refusedAs(id, address)(collectiveFailure(id, { kind }))));
460
+ });
468
461
  }
469
462
  /**
470
463
  * Validate an `accept` answer against the request's stored schema and build
@@ -689,11 +682,10 @@ function recordCountedAnswer(state, open, post, value) {
689
682
  return Effect.void;
690
683
  }
691
684
  return outcomeOfResponse(open.requestedSchema, value).pipe(Effect.flatMap((outcome) => {
692
- open.outcomes.set(message.sender, outcome);
693
- open.answerHashes.set(message.sender, post.recordHash);
694
- return open.outcomes.size === open.members.length
695
- ? completeGather(state, value.id).pipe(Effect.zipRight(Fiber.interrupt(open.timer)))
696
- : Effect.void;
685
+ return updateGather(state, value.id, () => {
686
+ open.outcomes.set(message.sender, outcome);
687
+ open.answerHashes.set(message.sender, post.recordHash);
688
+ });
697
689
  }));
698
690
  }
699
691
  /** Whether an answer arrived where the operation's answers are sent. */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../src/transport/collectives/operation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @file The requests a member endpoint received, and which one an answer
3
+ * answers.
4
+ *
5
+ * An answer names no request: the model sends it to the conversation its
6
+ * request arrived in, and the endpoint matches it to the one request open
7
+ * there. Answering one of several open requests in a conversation is not
8
+ * supported, so that answer is refused rather than guessed.
9
+ */
10
+ import { Either } from "effect";
11
+ import type { MessageAddressInput } from "../messaging/address.js";
12
+ import type { CollectiveFailure, CollectiveId } from "./forms.js";
13
+ /**
14
+ * What matching reads of a received request: `to` is the conversation it
15
+ * arrived in. `sending` holds the one answer in flight, so a member answers
16
+ * at most once; an all_gather request becomes `closed` at its close.
17
+ */
18
+ export interface RequestStatus {
19
+ readonly to: MessageAddressInput;
20
+ readonly deadlineAt: number;
21
+ readonly state: "open" | "sending" | "answered" | "closed";
22
+ }
23
+ /** The one request an answer answers, with its id. */
24
+ export interface OpenRequest<Request extends RequestStatus> {
25
+ readonly id: CollectiveId;
26
+ readonly request: Request;
27
+ }
28
+ /** Why no single request takes an answer. */
29
+ type UnmatchedAnswer = Extract<CollectiveFailure["kind"], `request-${"none" | "ambiguous" | "answered" | "expired"}`>;
30
+ /**
31
+ * Find the one request open in a conversation: received, not yet answered,
32
+ * and before its deadline and close.
33
+ * @param requests Every request this endpoint holds, by id.
34
+ * @param conversation The canonical address the answer is sent to.
35
+ * @param now The current time in epoch milliseconds.
36
+ * @returns The open request, or why none takes the answer: several are open,
37
+ * one was already answered, none was received, or each has expired.
38
+ */
39
+ export declare const matchOpenRequest: <Request extends RequestStatus>(requests: ReadonlyMap<CollectiveId, Request>, conversation: MessageAddressInput, now: number) => Either.Either<OpenRequest<Request>, UnmatchedAnswer>;
40
+ export {};
41
+ //# sourceMappingURL=received-request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"received-request.d.ts","sourceRoot":"","sources":["../../../src/transport/collectives/received-request.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAElE;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,mBAAmB,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;CAC5D;AAED,sDAAsD;AACtD,MAAM,WAAW,WAAW,CAAC,OAAO,SAAS,aAAa;IACxD,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,6CAA6C;AAC7C,KAAK,eAAe,GAAG,OAAO,CAC5B,iBAAiB,CAAC,MAAM,CAAC,EACzB,WAAW,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,EAAE,CAC3D,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,SAAS,aAAa,YAClD,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,gBAC9B,mBAAmB,OAC5B,MAAM,KACV,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,eAAe,CAoBrD,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * @file The requests a member endpoint received, and which one an answer
3
+ * answers.
4
+ *
5
+ * An answer names no request: the model sends it to the conversation its
6
+ * request arrived in, and the endpoint matches it to the one request open
7
+ * there. Answering one of several open requests in a conversation is not
8
+ * supported, so that answer is refused rather than guessed.
9
+ */
10
+ import { Either } from "effect";
11
+ /**
12
+ * Find the one request open in a conversation: received, not yet answered,
13
+ * and before its deadline and close.
14
+ * @param requests Every request this endpoint holds, by id.
15
+ * @param conversation The canonical address the answer is sent to.
16
+ * @param now The current time in epoch milliseconds.
17
+ * @returns The open request, or why none takes the answer: several are open,
18
+ * one was already answered, none was received, or each has expired.
19
+ */
20
+ export const matchOpenRequest = (requests, conversation, now) => {
21
+ const asked = [...requests]
22
+ .filter(([, request]) => request.to === conversation)
23
+ .map(([id, request]) => ({
24
+ id,
25
+ request,
26
+ unavailable: requestUnavailable(request, now),
27
+ }));
28
+ const open = asked.filter(({ unavailable }) => unavailable === undefined);
29
+ const [only] = open;
30
+ if (only !== undefined && open.length === 1) {
31
+ return Either.right({ id: only.id, request: only.request });
32
+ }
33
+ if (open.length > 1) {
34
+ return Either.left("request-ambiguous");
35
+ }
36
+ if (asked.some(({ unavailable }) => unavailable === "request-answered")) {
37
+ return Either.left("request-answered");
38
+ }
39
+ return Either.left(asked.length === 0 ? "request-none" : "request-expired");
40
+ };
41
+ function requestUnavailable(request, now) {
42
+ switch (request.state) {
43
+ case "open":
44
+ return now >= request.deadlineAt ? "request-expired" : undefined;
45
+ case "sending":
46
+ case "answered":
47
+ return "request-answered";
48
+ case "closed":
49
+ return "request-expired";
50
+ default: {
51
+ const exhaustive = request.state;
52
+ return exhaustive;
53
+ }
54
+ }
55
+ }
56
+ //# sourceMappingURL=received-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"received-request.js","sourceRoot":"","sources":["../../../src/transport/collectives/received-request.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AA2BhC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,QAA4C,EAC5C,YAAiC,EACjC,GAAW,EAC2C,EAAE;IACxD,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC;SACxB,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,YAAY,CAAC;SACpD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACvB,EAAE;QACF,OAAO;QACP,WAAW,EAAE,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC;KAC9C,CAAC,CAAC,CAAC;IACN,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC;IAC1E,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,KAAK,kBAAkB,CAAC,EAAE,CAAC;QACxE,OAAO,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;AAC9E,CAAC,CAAC;AAEF,SAAS,kBAAkB,CACzB,OAAsB,EACtB,GAAW;IAEX,QAAQ,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,KAAK,MAAM;YACT,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;QACnE,KAAK,SAAS,CAAC;QACf,KAAK,UAAU;YACb,OAAO,kBAAkB,CAAC;QAC5B,KAAK,QAAQ;YACX,OAAO,iBAAiB,CAAC;QAC3B,SAAS,CAAC;YACR,MAAM,UAAU,GAAU,OAAO,CAAC,KAAK,CAAC;YACxC,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;AACH,CAAC"}