@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
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @file A gather's request posts while they are sent, and how each one is
3
+ * settled when the requester stops waiting.
4
+ */
5
+ import { Effect, Either, Fiber } from "effect";
6
+ import type { AgentAddress } from "../messaging/address.js";
7
+ import type { SendError } from "../messaging/errors.js";
8
+ import type { EngineSentPost } from "../messaging/index.js";
9
+ /** A member whose request post was refused, and why. */
10
+ export type RequestRefusal = Readonly<{
11
+ member: AgentAddress;
12
+ reason: SendError["reason"];
13
+ }>;
14
+ /** A request post in flight, resolving to the member's refusal, if any. */
15
+ export type RequestSend = Fiber.RuntimeFiber<Either.Either<EngineSentPost, RequestRefusal>>;
16
+ /**
17
+ * Whether a member's refusal is an address error rather than a delivery
18
+ * failure.
19
+ * @param refusal A member's lookup or post refusal.
20
+ * @returns True for a malformed or unknown member or invalid membership.
21
+ */
22
+ export declare const isAddressRefusal: (refusal: RequestRefusal) => boolean;
23
+ /**
24
+ * Look up every member and name each whose lookup fails, in member order.
25
+ * @param members The members to resolve.
26
+ * @param lookup The engine's address resolution for one member.
27
+ * @returns Each failing member with its reason; empty when all resolve.
28
+ */
29
+ export declare const lookupRefusals: (members: readonly AgentAddress[], lookup: (member: AgentAddress) => Effect.Effect<void, SendError>) => Effect.Effect<RequestRefusal[]>;
30
+ /**
31
+ * Where a gather's request posts stand when the send stops waiting: each
32
+ * certified post and each member refused. A send still pending keeps
33
+ * running and is in neither.
34
+ * @param members The members asked, in the order of their sends.
35
+ * @param sends Each member's request send.
36
+ * @returns The posts and refusals, in member order.
37
+ */
38
+ export declare const requestsSoFar: (members: readonly AgentAddress[], sends: readonly RequestSend[]) => Effect.Effect<{
39
+ readonly posts: EngineSentPost[];
40
+ readonly refused: RequestRefusal[];
41
+ }>;
42
+ //# sourceMappingURL=request-sends.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-sends.d.ts","sourceRoot":"","sources":["../../../src/transport/collectives/request-sends.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,MAAM,EAEN,MAAM,EAEN,KAAK,EAEN,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,wDAAwD;AACxD,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;CAC7B,CAAC,CAAC;AAEH,2EAA2E;AAC3E,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,CAC1C,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,cAAc,CAAC,CAC9C,CAAC;AAeF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,YAAa,cAAc,KAAG,OACrB,CAAC;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,YAChB,SAAS,YAAY,EAAE,UACxB,CAAC,MAAM,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,KAC/D,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAc9B,CAAC;AAEJ;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,YACf,SAAS,YAAY,EAAE,SACzB,SAAS,WAAW,EAAE,KAC5B,MAAM,CAAC,MAAM,CAAC;IACf,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC;CACpC,CAsBE,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @file A gather's request posts while they are sent, and how each one is
3
+ * settled when the requester stops waiting.
4
+ */
5
+ import { Effect, Array as EffectArray, Either, Exit, Fiber, Option, } from "effect";
6
+ /** How many Registry lookups run at once; a group has at most 32 members. */
7
+ const MEMBER_LOOKUP_CONCURRENCY = 8;
8
+ /**
9
+ * Failures that address resolution alone determines, so the send can refuse
10
+ * them before any post.
11
+ */
12
+ const ADDRESS_FAILURES = new Set([
13
+ "invalid-address",
14
+ "unknown-agent",
15
+ "membership-invalid",
16
+ ]);
17
+ /**
18
+ * Whether a member's refusal is an address error rather than a delivery
19
+ * failure.
20
+ * @param refusal A member's lookup or post refusal.
21
+ * @returns True for a malformed or unknown member or invalid membership.
22
+ */
23
+ export const isAddressRefusal = (refusal) => ADDRESS_FAILURES.has(refusal.reason);
24
+ /**
25
+ * Look up every member and name each whose lookup fails, in member order.
26
+ * @param members The members to resolve.
27
+ * @param lookup The engine's address resolution for one member.
28
+ * @returns Each failing member with its reason; empty when all resolve.
29
+ */
30
+ export const lookupRefusals = (members, lookup) => Effect.forEach(members, (member) => lookup(member).pipe(Effect.flip, Effect.map((error) => ({ member, reason: error.reason })), Effect.option), { concurrency: MEMBER_LOOKUP_CONCURRENCY }).pipe(Effect.map((lookups) => lookups.flatMap((found) => Option.toArray(found))));
31
+ /**
32
+ * Where a gather's request posts stand when the send stops waiting: each
33
+ * certified post and each member refused. A send still pending keeps
34
+ * running and is in neither.
35
+ * @param members The members asked, in the order of their sends.
36
+ * @param sends Each member's request send.
37
+ * @returns The posts and refusals, in member order.
38
+ */
39
+ export const requestsSoFar = (members, sends) => Effect.forEach(EffectArray.zip(members, sends), ([member, send]) => Fiber.poll(send).pipe(Effect.map((poll) => ({
40
+ member,
41
+ result: Option.flatMap(poll, (exit) => Exit.isSuccess(exit) ? Option.some(exit.value) : Option.none()),
42
+ }))), { concurrency: 1 }).pipe(Effect.map((states) => ({
43
+ posts: states.flatMap(({ result }) => Option.toArray(Option.flatMap(result, Either.getRight))),
44
+ refused: states.flatMap(({ result }) => Option.toArray(Option.flatMap(result, Either.getLeft))),
45
+ })));
46
+ //# sourceMappingURL=request-sends.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-sends.js","sourceRoot":"","sources":["../../../src/transport/collectives/request-sends.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,MAAM,EACN,KAAK,IAAI,WAAW,EACpB,MAAM,EACN,IAAI,EACJ,KAAK,EACL,MAAM,GACP,MAAM,QAAQ,CAAC;AAgBhB,6EAA6E;AAC7E,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAEpC;;;GAGG;AACH,MAAM,gBAAgB,GAAqC,IAAI,GAAG,CAAC;IACjE,iBAAiB;IACjB,eAAe;IACf,oBAAoB;CACrB,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAuB,EAAW,EAAE,CACnE,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,OAAgC,EAChC,MAAgE,EAC/B,EAAE,CACnC,MAAM,CAAC,OAAO,CACZ,OAAO,EACP,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CACjB,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,GAAG,CACR,CAAC,KAAK,EAAkB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAC9D,EACD,MAAM,CAAC,MAAM,CACd,EACH,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAC3C,CAAC,IAAI,CACJ,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAC3E,CAAC;AAEJ;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAAgC,EAChC,KAA6B,EAI5B,EAAE,CACH,MAAM,CAAC,OAAO,CACZ,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,EAC/B,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CACjB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CACnB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpB,MAAM;IACN,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAC/D;CACF,CAAC,CAAC,CACJ,EACH,EAAE,WAAW,EAAE,CAAC,EAAE,CACnB,CAAC,IAAI,CACJ,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CACnC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CACxD;IACD,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CACrC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CACvD;CACF,CAAC,CAAC,CACJ,CAAC"}
@@ -8,8 +8,9 @@
8
8
  * its result from exactly the answers it holds under the listed hashes. The
9
9
  * requester's result uses the same member ordering.
10
10
  */
11
- import type { AgentAddress, CollectiveMemberOutcome, InboundItem, PostId } from "../../contract.js";
12
- import type { RecordHash } from "../representation.js";
11
+ import type { AgentAddress } from "../messaging/address.js";
12
+ import type { PostId, RecordHash } from "../wire/index.js";
13
+ import type { CollectiveMemberOutcome, InboundItem } from "./inbound.js";
13
14
  import type { CollectiveValue } from "./wire.js";
14
15
  /** The members a collecting operation asks, in member order. */
15
16
  export type Members = readonly [AgentAddress, ...AgentAddress[]];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-answers.d.ts","sourceRoot":"","sources":["../../../src/transport/collectives/shared-answers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,gEAAgE;AAChE,MAAM,MAAM,OAAO,GAAG,SAAS,CAAC,YAAY,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC;AAEjE,yDAAyD;AACzD,MAAM,MAAM,aAAa,GAAG,OAAO,CACjC,eAAe,EACf;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAC9B,CAAC;AAEF,2DAA2D;AAC3D,MAAM,MAAM,oBAAoB,GAAG,OAAO,CACxC,WAAW,EACX;IAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,CACtC,CAAC;AAEF,kEAAkE;AAClE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;CAClC;AAED,iFAAiF;AACjF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,CAAC;CAC1C;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IACrD,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,eAAe,GACtB,IAAI,CAIN;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,SAAS,UAAU,EAAE;;;;;;;EAkBhC;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,WAAW,CAAC,YAAY,EAAE,uBAAuB,CAAC,GAC3D,oBAAoB,CAAC,UAAU,CAAC,CAOlC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-answers.js","sourceRoot":"","sources":["../../../src/transport/collectives/shared-answers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA8CH;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAqB,EACrB,MAAoB,EACpB,MAAuB;IAEvB,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAqB,EACrB,QAA+B;IAE/B,MAAM,MAAM,GAAG,IAAI,GAAG,CACpB,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,CAAC,UAAU;QACjB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE;KACtC,CAAC,CACH,CAAC;IACF,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,OAAO;QACL,OAAO;QACP,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;QACzC,QAAQ,EACN,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM;KACxE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAgB,EAChB,QAA4D;IAE5D,MAAM,OAAO,GAAG,CAAC,MAAoB,EAAE,EAAE,CAAC,CAAC;QACzC,MAAM;QACN,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,WAAoB,EAAE;KAChE,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC;IACjC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AAChD,CAAC"}
@@ -1,17 +1,17 @@
1
1
  /**
2
2
  * @file Answer validation against a collective request's form-mode schema.
3
3
  *
4
- * Validation runs field by field with the MCP SDK's JSON Schema validator so
5
- * a failure names each failing field rather than one combined message. The
6
- * form-mode grammar is flat, so a field's property schema is the whole rule
7
- * for that field.
4
+ * Validation runs field by field so a failure names each failing field rather
5
+ * than one combined message. The form-mode grammar is flat, so a field's
6
+ * property schema is the whole rule for that field.
8
7
  */
9
8
  import { Effect } from "effect";
10
- import type { AnswerContent, CollectiveFailure, CollectiveMemberOutcome } from "../../contract.js";
9
+ import type { AnswerContent, CollectiveFailure } from "./forms.js";
10
+ import type { CollectiveMemberOutcome } from "./inbound.js";
11
11
  import type { CollectiveResponse, FormModeSchema } from "./wire.js";
12
12
  /**
13
- * Why one answer field failed its request's schema; `detail` is the SDK
14
- * validator's message for an `invalid` field.
13
+ * Why one answer field failed its request's schema; `detail` names each
14
+ * keyword an `invalid` field fails.
15
15
  */
16
16
  export type CollectiveFieldFailure = Extract<CollectiveFailure, {
17
17
  readonly kind: "answer-invalid";
@@ -29,9 +29,7 @@ export declare class CollectiveAnswerInvalidError extends CollectiveAnswerInvali
29
29
  get message(): string;
30
30
  }
31
31
  /**
32
- * Check an answer against the schema its request carried. Each call compiles
33
- * with its own validator: the SDK's shared default caches every compiled
34
- * schema for the life of the process, and request schemas are unbounded.
32
+ * Check an answer against the schema its request carried.
35
33
  * @param requestedSchema The request's form-mode schema.
36
34
  * @param content The member's answer.
37
35
  * @returns The answer unchanged, or an error naming every failing field.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/transport/collectives/validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAQ,MAAM,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGpE;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAC1C,iBAAiB,EACjB;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,CACpC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;;;;AAEpB,kEAAkE;AAClE,qBAAa,4BAA6B,SAAQ,kCAEhD;IACA,QAAQ,CAAC,QAAQ,EAAE,SAAS;QAC1B,sBAAsB;QACtB,GAAG,sBAAsB,EAAE;KAC5B,CAAC;CACH,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAQ7B;CACF;AAgCD;;;;;GAKG;AACH,eAAO,MAAM,cAAc,oBACR,cAAc,WACtB,aAAa,KACrB,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,4BAA4B,CAc3D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,oBACX,cAAc,YACrB,kBAAkB,KAC3B,MAAM,CAAC,MAAM,CAAC,uBAAuB,CAsBvC,CAAC"}
@@ -1,14 +1,12 @@
1
1
  /**
2
2
  * @file Answer validation against a collective request's form-mode schema.
3
3
  *
4
- * Validation runs field by field with the MCP SDK's JSON Schema validator so
5
- * a failure names each failing field rather than one combined message. The
6
- * form-mode grammar is flat, so a field's property schema is the whole rule
7
- * for that field.
4
+ * Validation runs field by field so a failure names each failing field rather
5
+ * than one combined message. The form-mode grammar is flat, so a field's
6
+ * property schema is the whole rule for that field.
8
7
  */
9
- import { fromJsonSchema, } from "@modelcontextprotocol/client";
10
- import { AjvJsonSchemaValidator } from "@modelcontextprotocol/client/validators/ajv";
11
8
  import { Data, Effect } from "effect";
9
+ import { answerIssues } from "./answer-check.js";
12
10
  /** An answer does not satisfy its request's `requestedSchema`. */
13
11
  export class CollectiveAnswerInvalidError extends Data.TaggedError("CollectiveAnswerInvalidError") {
14
12
  get message() {
@@ -24,7 +22,7 @@ export class CollectiveAnswerInvalidError extends Data.TaggedError("CollectiveAn
24
22
  * answer field named `constructor` must not find `Object.prototype.constructor`.
25
23
  */
26
24
  const ownValue = (record, key) => (Object.hasOwn(record, key) ? record[key] : undefined);
27
- function fieldFailure(validator, requestedSchema, content, field) {
25
+ function fieldFailure(requestedSchema, content, field) {
28
26
  const definition = ownValue(requestedSchema.properties, field);
29
27
  if (definition === undefined) {
30
28
  return { field, reason: "unexpected" };
@@ -35,19 +33,13 @@ function fieldFailure(validator, requestedSchema, content, field) {
35
33
  ? { field, reason: "missing" }
36
34
  : undefined;
37
35
  }
38
- const result = fromJsonSchema(definition, validator)["~standard"].validate(value);
39
- if (result instanceof Promise) {
40
- return { field, reason: "invalid", detail: "asynchronous validator" };
41
- }
42
- const detail = result.issues?.map((issue) => issue.message).join(", ");
43
- return detail === undefined
36
+ const issues = answerIssues(definition, value);
37
+ return issues.length === 0
44
38
  ? undefined
45
- : { field, reason: "invalid", detail };
39
+ : { field, reason: "invalid", detail: issues.join(", ") };
46
40
  }
47
41
  /**
48
- * Check an answer against the schema its request carried. Each call compiles
49
- * with its own validator: the SDK's shared default caches every compiled
50
- * schema for the life of the process, and request schemas are unbounded.
42
+ * Check an answer against the schema its request carried.
51
43
  * @param requestedSchema The request's form-mode schema.
52
44
  * @param content The member's answer.
53
45
  * @returns The answer unchanged, or an error naming every failing field.
@@ -57,9 +49,8 @@ export const validateAnswer = (requestedSchema, content) => {
57
49
  ...Object.keys(requestedSchema.properties),
58
50
  ...Object.keys(content),
59
51
  ]);
60
- const validator = new AjvJsonSchemaValidator();
61
52
  const [first, ...rest] = [...fields].flatMap((field) => {
62
- const failure = fieldFailure(validator, requestedSchema, content, field);
53
+ const failure = fieldFailure(requestedSchema, content, field);
63
54
  return failure === undefined ? [] : [failure];
64
55
  });
65
56
  return first === undefined
@@ -88,8 +79,6 @@ export const outcomeOfResponse = (requestedSchema, response) => {
88
79
  }));
89
80
  case "decline":
90
81
  return Effect.succeed({ kind: "declined" });
91
- case "cancel":
92
- return Effect.succeed({ kind: "cancelled" });
93
82
  default: {
94
83
  const exhaustive = response;
95
84
  return exhaustive;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/transport/collectives/validation.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,10 @@
7
7
  * carries a `kind` discriminant so an endpoint classifies a part without trying
8
8
  * each shape in turn.
9
9
  */
10
- import { type PrimitiveSchemaDefinition as McpPrimitiveSchemaDefinition } from "@modelcontextprotocol/client";
11
- import { Effect, Option, ParseResult, Schema } from "effect";
12
- import { type AgentAddress, CollectiveId } from "../../contract.js";
13
- import { Content } from "../representation.js";
10
+ import { Effect, Option, Schema } from "effect";
11
+ import type { AgentAddress } from "../messaging/address.js";
12
+ import { Content } from "../wire/index.js";
13
+ import { CollectiveId } from "./forms.js";
14
14
  type PostContent = typeof Content.Type;
15
15
  /** The `data` part key under which the collective layer carries its value. */
16
16
  export declare const COLLECTIVE_DATA_KEY = "xyz.moltzap/collective";
@@ -22,7 +22,7 @@ export declare const COLLECTIVE_DATA_KEY = "xyz.moltzap/collective";
22
22
  export declare const FormModeSchema: Schema.filter<Schema.Struct<{
23
23
  $schema: Schema.optional<typeof Schema.String>;
24
24
  type: Schema.Literal<["object"]>;
25
- properties: Schema.Record$<typeof Schema.String, Schema.transformOrFail<typeof Schema.Unknown, Schema.declare<McpPrimitiveSchemaDefinition, McpPrimitiveSchemaDefinition, readonly [], never>, never>>;
25
+ properties: Schema.Record$<typeof Schema.String, Schema.transformOrFail<typeof Schema.Unknown, Schema.declare<import("./form-grammar.js").FormField, import("./form-grammar.js").FormField, readonly [], never>, never>>;
26
26
  required: Schema.optional<Schema.Array$<typeof Schema.String>>;
27
27
  }>>;
28
28
  /** A validated form-mode schema for one collective question. */
@@ -37,6 +37,11 @@ export type FormModeSchema = typeof FormModeSchema.Type;
37
37
  * @returns The id the pair names.
38
38
  */
39
39
  export declare const collectiveIdOf: (requester: AgentAddress, nonce: string) => CollectiveId;
40
+ /** A fresh nonce and the id it binds to the requester. */
41
+ export declare const mintCollectiveId: (requester: AgentAddress) => Effect.Effect<{
42
+ id: string & import("effect/Brand").Brand<"CollectiveId">;
43
+ nonce: string;
44
+ }, never, never>;
40
45
  /** A member's reply to one request; only `accept` carries content. */
41
46
  declare const CollectiveResponse: Schema.Union<[Schema.Struct<{
42
47
  kind: Schema.Literal<["response"]>;
@@ -46,7 +51,7 @@ declare const CollectiveResponse: Schema.Union<[Schema.Struct<{
46
51
  }>, Schema.Struct<{
47
52
  kind: Schema.Literal<["response"]>;
48
53
  id: Schema.brand<Schema.filter<typeof Schema.String>, "CollectiveId">;
49
- action: Schema.Literal<["decline", "cancel"]>;
54
+ action: Schema.Literal<["decline"]>;
50
55
  }>]>;
51
56
  /** A validated collective response. */
52
57
  export type CollectiveResponse = typeof CollectiveResponse.Type;
@@ -63,7 +68,7 @@ declare const CollectiveValue: Schema.Union<[Schema.Struct<{
63
68
  requestedSchema: Schema.filter<Schema.Struct<{
64
69
  $schema: Schema.optional<typeof Schema.String>;
65
70
  type: Schema.Literal<["object"]>;
66
- properties: Schema.Record$<typeof Schema.String, Schema.transformOrFail<typeof Schema.Unknown, Schema.declare<McpPrimitiveSchemaDefinition, McpPrimitiveSchemaDefinition, readonly [], never>, never>>;
71
+ properties: Schema.Record$<typeof Schema.String, Schema.transformOrFail<typeof Schema.Unknown, Schema.declare<import("./form-grammar.js").FormField, import("./form-grammar.js").FormField, readonly [], never>, never>>;
67
72
  required: Schema.optional<Schema.Array$<typeof Schema.String>>;
68
73
  }>>;
69
74
  }>, Schema.Union<[Schema.Struct<{
@@ -74,7 +79,7 @@ declare const CollectiveValue: Schema.Union<[Schema.Struct<{
74
79
  }>, Schema.Struct<{
75
80
  kind: Schema.Literal<["response"]>;
76
81
  id: Schema.brand<Schema.filter<typeof Schema.String>, "CollectiveId">;
77
- action: Schema.Literal<["decline", "cancel"]>;
82
+ action: Schema.Literal<["decline"]>;
78
83
  }>]>, Schema.Struct<{
79
84
  kind: Schema.Literal<["close"]>;
80
85
  id: Schema.brand<Schema.filter<typeof Schema.String>, "CollectiveId">;
@@ -118,7 +123,7 @@ export declare const decodeCollectiveValue: (u: unknown, overrideOptions?: impor
118
123
  } | {
119
124
  readonly kind: "response";
120
125
  readonly id: string & import("effect/Brand").Brand<"CollectiveId">;
121
- readonly action: "cancel" | "decline";
126
+ readonly action: "decline";
122
127
  } | {
123
128
  readonly kind: "operation";
124
129
  readonly op: "multicast";
@@ -132,7 +137,7 @@ export declare const decodeCollectiveValue: (u: unknown, overrideOptions?: impor
132
137
  readonly $schema?: string | undefined;
133
138
  readonly type: "object";
134
139
  readonly properties: {
135
- readonly [x: string]: McpPrimitiveSchemaDefinition;
140
+ readonly [x: string]: import("./form-grammar.js").FormField;
136
141
  };
137
142
  readonly required?: readonly string[] | undefined;
138
143
  };
@@ -140,7 +145,7 @@ export declare const decodeCollectiveValue: (u: unknown, overrideOptions?: impor
140
145
  readonly kind: "close";
141
146
  readonly id: string & import("effect/Brand").Brand<"CollectiveId">;
142
147
  readonly included: readonly (string & import("effect/Brand").Brand<"RecordHash">)[];
143
- }, ParseResult.ParseError, never>;
148
+ }, import("effect/ParseResult").ParseError, never>;
144
149
  /**
145
150
  * Decode one untrusted collective response.
146
151
  * @param value A member's response as it arrives.
@@ -156,8 +161,8 @@ export declare const decodeCollectiveResponse: (u: unknown, overrideOptions?: im
156
161
  } | {
157
162
  readonly kind: "response";
158
163
  readonly id: string & import("effect/Brand").Brand<"CollectiveId">;
159
- readonly action: "cancel" | "decline";
160
- }, ParseResult.ParseError, never>;
164
+ readonly action: "decline";
165
+ }, import("effect/ParseResult").ParseError, never>;
161
166
  /**
162
167
  * Find and decode the collective value in one post's content.
163
168
  * @param content Certified post content.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../../src/transport/collectives/wire.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAQ,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAA2B,MAAM,kBAAkB,CAAC;AAEpE,OAAO,EAAiB,YAAY,EAAE,MAAM,YAAY,CAAC;AAIzD,KAAK,WAAW,GAAG,OAAO,OAAO,CAAC,IAAI,CAAC;AAEvC,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;;GA0B1B,CAAC;AACF,gEAAgE;AAChE,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAC;AASxD;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,cACd,YAAY,SAChB,MAAM,KACZ,YAKA,CAAC;AAEJ,0DAA0D;AAC1D,eAAO,MAAM,gBAAgB,cAAe,YAAY;;;gBAIpD,CAAC;AAuBL,sEAAsE;AACtE,QAAA,MAAM,kBAAkB;;;;;;;;;IAYvB,CAAC;AACF,uCAAuC;AACvC,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC,IAAI,CAAC;AAShE,yEAAyE;AACzE,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKpB,CAAC;AACF,oCAAoC;AACpC,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAC;;;;AAE1D,+EAA+E;AAC/E,qBAAa,0BAA2B,SAAQ,gCAE9C;IACA,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC;CAC5C,CAAC;CAAG;;;;AAEL,kGAAkG;AAClG,qBAAa,sBAAuB,SAAQ,2BAE3C;CAAG;AAoBJ;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,YACvB,WAAW,KACnB,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CACgC,CAAC;AAErE;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDAAwC,CAAC;AAE3E;;;;GAIG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;kDACK,CAAC;AAE3C;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,YACrB,WAAW,KACnB,MAAM,CAAC,MAAM,CACd,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAC9B,0BAA0B,CAiB3B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,UAC3B,eAAe,SACf,MAAM,KACZ,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,sBAAsB,CAWjD,CAAC"}
@@ -7,43 +7,13 @@
7
7
  * carries a `kind` discriminant so an endpoint classifies a part without trying
8
8
  * each shape in turn.
9
9
  */
10
- import { specTypeSchemas, } from "@modelcontextprotocol/client";
11
- import { AjvJsonSchemaValidator } from "@modelcontextprotocol/client/validators/ajv";
12
- import { Data, Effect, Option, ParseResult, Schema } from "effect";
13
- import { createHash } from "node:crypto";
14
- import { AnswerContent, CollectiveId, } from "../../contract.js";
15
- import { Content, exactStruct, RecordHash } from "../representation.js";
10
+ import { Data, Effect, Option, Schema } from "effect";
11
+ import { createHash, randomBytes } from "node:crypto";
12
+ import { Content, exactStruct, RecordHash } from "../wire/index.js";
13
+ import { FormFieldSchema } from "./form-grammar.js";
14
+ import { AnswerContent, CollectiveId } from "./forms.js";
16
15
  /** The `data` part key under which the collective layer carries its value. */
17
16
  export const COLLECTIVE_DATA_KEY = "xyz.moltzap/collective";
18
- const mcpPrimitiveSchemaDefinition = specTypeSchemas.PrimitiveSchemaDefinition["~standard"];
19
- const McpPrimitiveSchema = Schema.declare((value) => mcpPrimitiveSchemaDefinition.validate(value).issues === undefined, { identifier: "PrimitiveSchemaDefinition" });
20
- /**
21
- * One property of an MCP form-mode `requestedSchema`, as the MCP SDK's
22
- * `PrimitiveSchemaDefinition` accepts it. Decoding keeps the SDK's parsed
23
- * value, so keywords outside the form-mode grammar never travel or reach
24
- * answer validation. The SDK grammar admits some schemas its own validator
25
- * cannot compile, such as an empty `enum`; decoding compiles each property
26
- * so answer validation never meets one.
27
- */
28
- const PrimitiveSchemaDefinition = Schema.transformOrFail(Schema.Unknown, McpPrimitiveSchema, {
29
- strict: true,
30
- decode: (value) => {
31
- const result = mcpPrimitiveSchemaDefinition.validate(value);
32
- const invalid = (message) => new ParseResult.Type(McpPrimitiveSchema.ast, value, message);
33
- if (result.issues !== undefined) {
34
- return ParseResult.fail(invalid("not an MCP form-mode primitive schema"));
35
- }
36
- const definition = result.value;
37
- return ParseResult.try({
38
- try: () => {
39
- new AjvJsonSchemaValidator().getValidator(definition);
40
- return definition;
41
- },
42
- catch: () => invalid("not a compilable form-mode primitive schema"),
43
- });
44
- },
45
- encode: (definition) => ParseResult.succeed(definition),
46
- });
47
17
  /**
48
18
  * The MCP form-mode `requestedSchema`: a flat object of primitive properties.
49
19
  * Every `required` name must be a declared property, since an answer can carry
@@ -54,10 +24,16 @@ export const FormModeSchema = exactStruct({
54
24
  type: Schema.Literal("object"),
55
25
  properties: Schema.Record({
56
26
  key: Schema.String,
57
- value: PrimitiveSchemaDefinition,
27
+ value: FormFieldSchema,
58
28
  }),
59
29
  required: Schema.optional(Schema.Array(Schema.String)),
60
- }).pipe(Schema.filter((schema) => (schema.required ?? []).every((name) => Object.hasOwn(schema.properties, name)), {
30
+ }).pipe(Schema.filter((schema) => {
31
+ const undeclared = (schema.required ?? []).filter((name) => !Object.hasOwn(schema.properties, name));
32
+ return (undeclared.length === 0 || {
33
+ path: ["required"],
34
+ message: `names ${undeclared.map((name) => JSON.stringify(name)).join(", ")}, which properties does not declare`,
35
+ });
36
+ }, {
61
37
  identifier: "RequestedSchema",
62
38
  description: "Form-mode schema whose required names are properties",
63
39
  }));
@@ -76,6 +52,11 @@ const decodeCollectiveId = Schema.decodeUnknownSync(CollectiveId);
76
52
  export const collectiveIdOf = (requester, nonce) => decodeCollectiveId(`col_${createHash("sha256")
77
53
  .update(`xyz.moltzap/collective-id\0${requester}\0${nonce}`)
78
54
  .digest("base64url")}`);
55
+ /** A fresh nonce and the id it binds to the requester. */
56
+ export const mintCollectiveId = (requester) => Effect.sync(() => {
57
+ const nonce = randomBytes(32).toString("base64url");
58
+ return { id: collectiveIdOf(requester, nonce), nonce };
59
+ });
79
60
  /** A plain post: multicast carries neither a deadline nor a schema. */
80
61
  const MulticastOperation = exactStruct({
81
62
  kind: Schema.Literal("operation"),
@@ -104,7 +85,7 @@ const CollectiveResponse = Schema.Union(exactStruct({
104
85
  }), exactStruct({
105
86
  kind: Schema.Literal("response"),
106
87
  id: CollectiveId,
107
- action: Schema.Literal("decline", "cancel"),
88
+ action: Schema.Literal("decline"),
108
89
  }));
109
90
  /** The requester's all_gather close: the included answers by certified record hash. */
110
91
  const CollectiveClose = exactStruct({
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire.js","sourceRoot":"","sources":["../../../src/transport/collectives/wire.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,32 @@
1
1
  /** @file Private address resolution from runtime names to immutable cards. */
2
2
  import type { Registry } from "@moltzap/identity/registry";
3
3
  import { AgentName, type VerifiedAgentCard } from "@moltzap/identity";
4
- import { type Context, Effect } from "effect";
5
- import { AgentAddress, GroupAddress, type MessageAddressInput, SendError } from "../../contract.js";
4
+ import { type Context, Effect, Schema } from "effect";
5
+ import { SendError } from "./errors.js";
6
+ /**
7
+ * The registry name an `agent:` address names.
8
+ * @param value A candidate address.
9
+ * @returns The name, or undefined when the value is not an agent address.
10
+ */
11
+ export declare function parseAgentAddress(value: string): string | undefined;
12
+ /**
13
+ * The names a `group:` address lists, in the order given.
14
+ * @param value A candidate address.
15
+ * @returns The names, or undefined when the value is not a group address.
16
+ */
17
+ export declare function parseGroupAddress(value: string): readonly string[] | undefined;
18
+ /** An explicit direct destination using one canonical Registry name. */
19
+ export declare const AgentAddress: Schema.brand<Schema.filter<Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">>, "AgentAddress">;
20
+ /** A validated direct destination. */
21
+ export type AgentAddress = typeof AgentAddress.Type;
22
+ /** A complete fixed-member group address in unsigned ASCII name order. */
23
+ export declare const GroupAddress: Schema.brand<Schema.filter<Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">>, "GroupAddress">;
24
+ /** A validated canonical complete group destination. */
25
+ export type GroupAddress = typeof GroupAddress.Type;
26
+ /** Either accepted destination input, including noncanonical group order. */
27
+ export declare const MessageAddressInput: Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">;
28
+ /** A validated explicit destination input. */
29
+ export type MessageAddressInput = typeof MessageAddressInput.Type;
6
30
  /** Minimal Registry capability required by address resolution. */
7
31
  export type AddressRegistryPort = Pick<Context.Tag.Service<typeof Registry>, "lookup">;
8
32
  /** Resolved deterministic membership for a direct destination. */
@@ -48,13 +72,22 @@ export type CanonicalMessageAddress = {
48
72
  /**
49
73
  * Put one destination in canonical form, the rule every send shares. An
50
74
  * `agent:` address names one other agent. A `group:` address names each agent
51
- * once; the local agent is added when absent, and the complete group has 3 to
52
- * 32 members in unsigned ASCII name order.
75
+ * once and the local agent is added when absent. Naming one other agent makes
76
+ * it that agent's direct address, since the two-member set is the direct
77
+ * conversation; otherwise the complete group has 3 to `maximumMembers` members
78
+ * in unsigned ASCII name order.
53
79
  * @param to The validated destination input.
54
80
  * @param localAgentName The local agent's Registry name.
55
81
  * @returns The canonical address with its names, local agent included for a
56
82
  * group, or `invalid-address` or `membership-invalid`.
57
83
  */
58
84
  export declare function canonicalMessageAddress(to: MessageAddressInput, localAgentName: string): Effect.Effect<CanonicalMessageAddress, SendError>;
85
+ /**
86
+ * Unsigned ASCII order, the order a canonical group address lists its names in.
87
+ * @param left One name.
88
+ * @param right The other name.
89
+ * @returns Negative, zero, or positive as `left` sorts before, with, or after `right`.
90
+ */
91
+ export declare function compareAscii(left: string, right: string): number;
59
92
  export {};
60
- //# sourceMappingURL=index.d.ts.map
93
+ //# sourceMappingURL=address.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../../src/transport/messaging/address.ts"],"names":[],"mappings":"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"}