@moltzap/client 2026.811.0 → 2026.902.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 (429) hide show
  1. package/LICENSE +202 -21
  2. package/NOTICE +19 -0
  3. package/README.md +50 -0
  4. package/bin/moltzapd +9 -0
  5. package/dist/client-runtime.d.ts +10 -0
  6. package/dist/client-runtime.d.ts.map +1 -0
  7. package/dist/client-runtime.js +218 -0
  8. package/dist/client-runtime.js.map +1 -0
  9. package/dist/contract.d.ts +338 -0
  10. package/dist/contract.d.ts.map +1 -0
  11. package/dist/contract.js +213 -0
  12. package/dist/contract.js.map +1 -0
  13. package/dist/contract.types-check.d.ts +99 -0
  14. package/dist/contract.types-check.d.ts.map +1 -0
  15. package/dist/contract.types-check.js +7 -0
  16. package/dist/contract.types-check.js.map +1 -0
  17. package/dist/daemon/configuration.d.ts +46 -0
  18. package/dist/daemon/configuration.d.ts.map +1 -0
  19. package/dist/daemon/configuration.js +69 -0
  20. package/dist/daemon/configuration.js.map +1 -0
  21. package/dist/daemon/management.d.ts +23 -0
  22. package/dist/daemon/management.d.ts.map +1 -0
  23. package/dist/daemon/management.js +489 -0
  24. package/dist/daemon/management.js.map +1 -0
  25. package/dist/daemon/registration.d.ts +72 -0
  26. package/dist/daemon/registration.d.ts.map +1 -0
  27. package/dist/daemon/registration.js +109 -0
  28. package/dist/daemon/registration.js.map +1 -0
  29. package/dist/daemon/runtime/activation.d.ts +95 -0
  30. package/dist/daemon/runtime/activation.d.ts.map +1 -0
  31. package/dist/daemon/runtime/activation.js +99 -0
  32. package/dist/daemon/runtime/activation.js.map +1 -0
  33. package/dist/daemon/runtime/controller.d.ts +34 -0
  34. package/dist/daemon/runtime/controller.d.ts.map +1 -0
  35. package/dist/daemon/runtime/controller.js +106 -0
  36. package/dist/daemon/runtime/controller.js.map +1 -0
  37. package/dist/daemon/runtime/history-export.d.ts +23 -0
  38. package/dist/daemon/runtime/history-export.d.ts.map +1 -0
  39. package/dist/daemon/runtime/history-export.js +47 -0
  40. package/dist/daemon/runtime/history-export.js.map +1 -0
  41. package/dist/daemon/runtime/index.d.ts +24 -0
  42. package/dist/daemon/runtime/index.d.ts.map +1 -0
  43. package/dist/daemon/runtime/index.js +65 -0
  44. package/dist/daemon/runtime/index.js.map +1 -0
  45. package/dist/daemon/runtime/protocol.d.ts +63 -0
  46. package/dist/daemon/runtime/protocol.d.ts.map +1 -0
  47. package/dist/daemon/runtime/protocol.js +133 -0
  48. package/dist/daemon/runtime/protocol.js.map +1 -0
  49. package/dist/endpoint/addressing/index.d.ts +39 -0
  50. package/dist/endpoint/addressing/index.d.ts.map +1 -0
  51. package/dist/endpoint/addressing/index.js +114 -0
  52. package/dist/endpoint/addressing/index.js.map +1 -0
  53. package/dist/endpoint/engine-dissemination.d.ts +11 -0
  54. package/dist/endpoint/engine-dissemination.d.ts.map +1 -0
  55. package/dist/endpoint/engine-dissemination.js +71 -0
  56. package/dist/endpoint/engine-dissemination.js.map +1 -0
  57. package/dist/endpoint/engine-durability.d.ts +69 -0
  58. package/dist/endpoint/engine-durability.d.ts.map +1 -0
  59. package/dist/endpoint/engine-durability.js +210 -0
  60. package/dist/endpoint/engine-durability.js.map +1 -0
  61. package/dist/endpoint/engine-send.d.ts +50 -0
  62. package/dist/endpoint/engine-send.d.ts.map +1 -0
  63. package/dist/endpoint/engine-send.js +422 -0
  64. package/dist/endpoint/engine-send.js.map +1 -0
  65. package/dist/endpoint/engine-types.d.ts +132 -0
  66. package/dist/endpoint/engine-types.d.ts.map +1 -0
  67. package/dist/endpoint/engine-types.js +13 -0
  68. package/dist/endpoint/engine-types.js.map +1 -0
  69. package/dist/endpoint/engine.d.ts +14 -0
  70. package/dist/endpoint/engine.d.ts.map +1 -0
  71. package/dist/endpoint/engine.js +280 -0
  72. package/dist/endpoint/engine.js.map +1 -0
  73. package/dist/endpoint/protocol/evidence.d.ts +37 -0
  74. package/dist/endpoint/protocol/evidence.d.ts.map +1 -0
  75. package/dist/endpoint/protocol/evidence.js +80 -0
  76. package/dist/endpoint/protocol/evidence.js.map +1 -0
  77. package/dist/endpoint/protocol/index.d.ts +26 -0
  78. package/dist/endpoint/protocol/index.d.ts.map +1 -0
  79. package/dist/endpoint/protocol/index.js +543 -0
  80. package/dist/endpoint/protocol/index.js.map +1 -0
  81. package/dist/endpoint/recovery/barrier.d.ts +23 -0
  82. package/dist/endpoint/recovery/barrier.d.ts.map +1 -0
  83. package/dist/endpoint/recovery/barrier.js +47 -0
  84. package/dist/endpoint/recovery/barrier.js.map +1 -0
  85. package/dist/endpoint/recovery/index.d.ts +29 -0
  86. package/dist/endpoint/recovery/index.d.ts.map +1 -0
  87. package/dist/endpoint/recovery/index.js +489 -0
  88. package/dist/endpoint/recovery/index.js.map +1 -0
  89. package/dist/endpoint/recovery/reanchor/empty.d.ts +22 -0
  90. package/dist/endpoint/recovery/reanchor/empty.d.ts.map +1 -0
  91. package/dist/endpoint/recovery/reanchor/empty.js +163 -0
  92. package/dist/endpoint/recovery/reanchor/empty.js.map +1 -0
  93. package/dist/endpoint/recovery/reanchor/index.d.ts +30 -0
  94. package/dist/endpoint/recovery/reanchor/index.d.ts.map +1 -0
  95. package/dist/endpoint/recovery/reanchor/index.js +479 -0
  96. package/dist/endpoint/recovery/reanchor/index.js.map +1 -0
  97. package/dist/endpoint/recovery/state.d.ts +130 -0
  98. package/dist/endpoint/recovery/state.d.ts.map +1 -0
  99. package/dist/endpoint/recovery/state.js +296 -0
  100. package/dist/endpoint/recovery/state.js.map +1 -0
  101. package/dist/endpoint/recovery/store-evidence.d.ts +17 -0
  102. package/dist/endpoint/recovery/store-evidence.d.ts.map +1 -0
  103. package/dist/endpoint/recovery/store-evidence.js +79 -0
  104. package/dist/endpoint/recovery/store-evidence.js.map +1 -0
  105. package/dist/endpoint/recovery/store.d.ts +56 -0
  106. package/dist/endpoint/recovery/store.d.ts.map +1 -0
  107. package/dist/endpoint/recovery/store.js +499 -0
  108. package/dist/endpoint/recovery/store.js.map +1 -0
  109. package/dist/endpoint/representation-canonical.d.ts +17 -0
  110. package/dist/endpoint/representation-canonical.d.ts.map +1 -0
  111. package/dist/endpoint/representation-canonical.js +48 -0
  112. package/dist/endpoint/representation-canonical.js.map +1 -0
  113. package/dist/endpoint/representation-codec.d.ts +51 -0
  114. package/dist/endpoint/representation-codec.d.ts.map +1 -0
  115. package/dist/endpoint/representation-codec.js +159 -0
  116. package/dist/endpoint/representation-codec.js.map +1 -0
  117. package/dist/endpoint/representation-schemas.d.ts +1831 -0
  118. package/dist/endpoint/representation-schemas.d.ts.map +1 -0
  119. package/dist/endpoint/representation-schemas.js +195 -0
  120. package/dist/endpoint/representation-schemas.js.map +1 -0
  121. package/dist/endpoint/representation-verification.d.ts +79 -0
  122. package/dist/endpoint/representation-verification.d.ts.map +1 -0
  123. package/dist/endpoint/representation-verification.js +420 -0
  124. package/dist/endpoint/representation-verification.js.map +1 -0
  125. package/dist/endpoint/representation.d.ts +6 -0
  126. package/dist/endpoint/representation.d.ts.map +1 -0
  127. package/dist/endpoint/representation.js +8 -0
  128. package/dist/endpoint/representation.js.map +1 -0
  129. package/dist/endpoint/router-worker/index.d.ts +16 -0
  130. package/dist/endpoint/router-worker/index.d.ts.map +1 -0
  131. package/dist/endpoint/router-worker/index.js +547 -0
  132. package/dist/endpoint/router-worker/index.js.map +1 -0
  133. package/dist/endpoint/router-worker/types.d.ts +183 -0
  134. package/dist/endpoint/router-worker/types.d.ts.map +1 -0
  135. package/dist/endpoint/router-worker/types.js +31 -0
  136. package/dist/endpoint/router-worker/types.js.map +1 -0
  137. package/dist/endpoint/store/anchors.d.ts +83 -0
  138. package/dist/endpoint/store/anchors.d.ts.map +1 -0
  139. package/dist/endpoint/store/anchors.js +471 -0
  140. package/dist/endpoint/store/anchors.js.map +1 -0
  141. package/dist/endpoint/store/database/index.d.ts +6 -0
  142. package/dist/endpoint/store/database/index.d.ts.map +1 -0
  143. package/dist/endpoint/store/database/index.js +6 -0
  144. package/dist/endpoint/store/database/index.js.map +1 -0
  145. package/dist/endpoint/store/database/schema.d.ts +44 -0
  146. package/dist/endpoint/store/database/schema.d.ts.map +1 -0
  147. package/dist/endpoint/store/database/schema.js +345 -0
  148. package/dist/endpoint/store/database/schema.js.map +1 -0
  149. package/dist/endpoint/store/database/values.d.ts +119 -0
  150. package/dist/endpoint/store/database/values.d.ts.map +1 -0
  151. package/dist/endpoint/store/database/values.js +194 -0
  152. package/dist/endpoint/store/database/values.js.map +1 -0
  153. package/dist/endpoint/store/deliveries.d.ts +38 -0
  154. package/dist/endpoint/store/deliveries.d.ts.map +1 -0
  155. package/dist/endpoint/store/deliveries.js +124 -0
  156. package/dist/endpoint/store/deliveries.js.map +1 -0
  157. package/dist/endpoint/store/dissemination.d.ts +27 -0
  158. package/dist/endpoint/store/dissemination.d.ts.map +1 -0
  159. package/dist/endpoint/store/dissemination.js +139 -0
  160. package/dist/endpoint/store/dissemination.js.map +1 -0
  161. package/dist/endpoint/store/index.d.ts +15 -0
  162. package/dist/endpoint/store/index.d.ts.map +1 -0
  163. package/dist/endpoint/store/index.js +76 -0
  164. package/dist/endpoint/store/index.js.map +1 -0
  165. package/dist/endpoint/store/management.d.ts +42 -0
  166. package/dist/endpoint/store/management.d.ts.map +1 -0
  167. package/dist/endpoint/store/management.js +259 -0
  168. package/dist/endpoint/store/management.js.map +1 -0
  169. package/dist/endpoint/store/outbound.d.ts +62 -0
  170. package/dist/endpoint/store/outbound.d.ts.map +1 -0
  171. package/dist/endpoint/store/outbound.js +278 -0
  172. package/dist/endpoint/store/outbound.js.map +1 -0
  173. package/dist/endpoint/store/records.d.ts +56 -0
  174. package/dist/endpoint/store/records.d.ts.map +1 -0
  175. package/dist/endpoint/store/records.js +352 -0
  176. package/dist/endpoint/store/records.js.map +1 -0
  177. package/dist/endpoint/store/rows/index.d.ts +138 -0
  178. package/dist/endpoint/store/rows/index.d.ts.map +1 -0
  179. package/dist/endpoint/store/rows/index.js +307 -0
  180. package/dist/endpoint/store/rows/index.js.map +1 -0
  181. package/dist/endpoint/store/types.d.ts +223 -0
  182. package/dist/endpoint/store/types.d.ts.map +1 -0
  183. package/dist/endpoint/store/types.js +15 -0
  184. package/dist/endpoint/store/types.js.map +1 -0
  185. package/dist/endpoint/store.d.ts +10 -0
  186. package/dist/endpoint/store.d.ts.map +1 -0
  187. package/dist/endpoint/store.js +6 -0
  188. package/dist/endpoint/store.js.map +1 -0
  189. package/dist/harness-mcp-contract.d.ts +101 -0
  190. package/dist/harness-mcp-contract.d.ts.map +1 -0
  191. package/dist/harness-mcp-contract.js +61 -0
  192. package/dist/harness-mcp-contract.js.map +1 -0
  193. package/dist/harness-mcp-http.d.ts +19 -0
  194. package/dist/harness-mcp-http.d.ts.map +1 -0
  195. package/dist/{harness-mcp-server.js → harness-mcp-http.js} +43 -71
  196. package/dist/harness-mcp-http.js.map +1 -0
  197. package/dist/harness-mcp-subscription.d.ts +12 -7
  198. package/dist/harness-mcp-subscription.d.ts.map +1 -1
  199. package/dist/harness-mcp-subscription.js +113 -100
  200. package/dist/harness-mcp-subscription.js.map +1 -1
  201. package/dist/harness-mcp-wire.d.ts +26 -19
  202. package/dist/harness-mcp-wire.d.ts.map +1 -1
  203. package/dist/harness-mcp-wire.js +380 -67
  204. package/dist/harness-mcp-wire.js.map +1 -1
  205. package/dist/index.d.ts +4 -8
  206. package/dist/index.d.ts.map +1 -1
  207. package/dist/index.js +6 -8
  208. package/dist/index.js.map +1 -1
  209. package/dist/management-runtime.d.ts +217 -0
  210. package/dist/management-runtime.d.ts.map +1 -0
  211. package/dist/management-runtime.js +127 -0
  212. package/dist/management-runtime.js.map +1 -0
  213. package/dist/server.d.ts +16 -0
  214. package/dist/server.d.ts.map +1 -0
  215. package/dist/server.js +46 -0
  216. package/dist/server.js.map +1 -0
  217. package/dist/server.types-check.d.ts +23 -0
  218. package/dist/server.types-check.d.ts.map +1 -0
  219. package/dist/server.types-check.js +7 -0
  220. package/dist/server.types-check.js.map +1 -0
  221. package/package.json +45 -47
  222. package/dist/agent-client.d.ts +0 -5
  223. package/dist/agent-client.d.ts.map +0 -1
  224. package/dist/agent-client.js +0 -3
  225. package/dist/agent-client.js.map +0 -1
  226. package/dist/auth.d.ts +0 -37
  227. package/dist/auth.d.ts.map +0 -1
  228. package/dist/auth.js +0 -79
  229. package/dist/auth.js.map +0 -1
  230. package/dist/bounded-map.d.ts +0 -32
  231. package/dist/bounded-map.d.ts.map +0 -1
  232. package/dist/bounded-map.js +0 -79
  233. package/dist/bounded-map.js.map +0 -1
  234. package/dist/channel-base/format-cross-conv.d.ts +0 -43
  235. package/dist/channel-base/format-cross-conv.d.ts.map +0 -1
  236. package/dist/channel-base/format-cross-conv.js +0 -65
  237. package/dist/channel-base/format-cross-conv.js.map +0 -1
  238. package/dist/channel-base/format-group-block.d.ts +0 -48
  239. package/dist/channel-base/format-group-block.d.ts.map +0 -1
  240. package/dist/channel-base/format-group-block.js +0 -62
  241. package/dist/channel-base/format-group-block.js.map +0 -1
  242. package/dist/channel-base/index.d.ts +0 -12
  243. package/dist/channel-base/index.d.ts.map +0 -1
  244. package/dist/channel-base/index.js +0 -13
  245. package/dist/channel-base/index.js.map +0 -1
  246. package/dist/channel-core-enrichment.d.ts +0 -14
  247. package/dist/channel-core-enrichment.d.ts.map +0 -1
  248. package/dist/channel-core-enrichment.js +0 -143
  249. package/dist/channel-core-enrichment.js.map +0 -1
  250. package/dist/channel-core-test-support.d.ts +0 -75
  251. package/dist/channel-core-test-support.d.ts.map +0 -1
  252. package/dist/channel-core-test-support.js +0 -74
  253. package/dist/channel-core-test-support.js.map +0 -1
  254. package/dist/channel-core.d.ts +0 -304
  255. package/dist/channel-core.d.ts.map +0 -1
  256. package/dist/channel-core.js +0 -363
  257. package/dist/channel-core.js.map +0 -1
  258. package/dist/cli/adapters.d.ts +0 -21
  259. package/dist/cli/adapters.d.ts.map +0 -1
  260. package/dist/cli/adapters.js +0 -111
  261. package/dist/cli/adapters.js.map +0 -1
  262. package/dist/cli/commands/agents.d.ts +0 -11
  263. package/dist/cli/commands/agents.d.ts.map +0 -1
  264. package/dist/cli/commands/agents.js +0 -27
  265. package/dist/cli/commands/agents.js.map +0 -1
  266. package/dist/cli/commands/conversations.d.ts +0 -18
  267. package/dist/cli/commands/conversations.d.ts.map +0 -1
  268. package/dist/cli/commands/conversations.js +0 -33
  269. package/dist/cli/commands/conversations.js.map +0 -1
  270. package/dist/cli/commands/messages.d.ts +0 -41
  271. package/dist/cli/commands/messages.d.ts.map +0 -1
  272. package/dist/cli/commands/messages.js +0 -39
  273. package/dist/cli/commands/messages.js.map +0 -1
  274. package/dist/cli/commands/register.d.ts +0 -46
  275. package/dist/cli/commands/register.d.ts.map +0 -1
  276. package/dist/cli/commands/register.js +0 -103
  277. package/dist/cli/commands/register.js.map +0 -1
  278. package/dist/cli/commands/send.d.ts +0 -53
  279. package/dist/cli/commands/send.d.ts.map +0 -1
  280. package/dist/cli/commands/send.js +0 -57
  281. package/dist/cli/commands/send.js.map +0 -1
  282. package/dist/cli/commands/start.d.ts +0 -34
  283. package/dist/cli/commands/start.d.ts.map +0 -1
  284. package/dist/cli/commands/start.js +0 -59
  285. package/dist/cli/commands/start.js.map +0 -1
  286. package/dist/cli/commands/status.d.ts +0 -7
  287. package/dist/cli/commands/status.d.ts.map +0 -1
  288. package/dist/cli/commands/status.js +0 -16
  289. package/dist/cli/commands/status.js.map +0 -1
  290. package/dist/cli/commands/test-transport.d.ts +0 -28
  291. package/dist/cli/commands/test-transport.d.ts.map +0 -1
  292. package/dist/cli/commands/test-transport.js +0 -40
  293. package/dist/cli/commands/test-transport.js.map +0 -1
  294. package/dist/cli/index.d.ts +0 -3
  295. package/dist/cli/index.d.ts.map +0 -1
  296. package/dist/cli/index.js +0 -105
  297. package/dist/cli/index.js.map +0 -1
  298. package/dist/cli/output.d.ts +0 -14
  299. package/dist/cli/output.d.ts.map +0 -1
  300. package/dist/cli/output.js +0 -19
  301. package/dist/cli/output.js.map +0 -1
  302. package/dist/cli/socket-client.d.ts +0 -28
  303. package/dist/cli/socket-client.d.ts.map +0 -1
  304. package/dist/cli/socket-client.js +0 -63
  305. package/dist/cli/socket-client.js.map +0 -1
  306. package/dist/cli/transport.d.ts +0 -132
  307. package/dist/cli/transport.d.ts.map +0 -1
  308. package/dist/cli/transport.js +0 -127
  309. package/dist/cli/transport.js.map +0 -1
  310. package/dist/config.d.ts +0 -33
  311. package/dist/config.d.ts.map +0 -1
  312. package/dist/config.js +0 -45
  313. package/dist/config.js.map +0 -1
  314. package/dist/config.test-utils.d.ts +0 -18
  315. package/dist/config.test-utils.d.ts.map +0 -1
  316. package/dist/config.test-utils.js +0 -53
  317. package/dist/config.test-utils.js.map +0 -1
  318. package/dist/harness/client-runtime.d.ts +0 -24
  319. package/dist/harness/client-runtime.d.ts.map +0 -1
  320. package/dist/harness/client-runtime.js +0 -107
  321. package/dist/harness/client-runtime.js.map +0 -1
  322. package/dist/harness/index.d.ts +0 -5
  323. package/dist/harness/index.d.ts.map +0 -1
  324. package/dist/harness/index.js +0 -5
  325. package/dist/harness/index.js.map +0 -1
  326. package/dist/harness/runtime.d.ts +0 -149
  327. package/dist/harness/runtime.d.ts.map +0 -1
  328. package/dist/harness/runtime.js +0 -68
  329. package/dist/harness/runtime.js.map +0 -1
  330. package/dist/harness-client.d.ts +0 -43
  331. package/dist/harness-client.d.ts.map +0 -1
  332. package/dist/harness-client.js +0 -21
  333. package/dist/harness-client.js.map +0 -1
  334. package/dist/harness-mcp-server.d.ts +0 -19
  335. package/dist/harness-mcp-server.d.ts.map +0 -1
  336. package/dist/harness-mcp-server.js.map +0 -1
  337. package/dist/local-daemon-rpc.d.ts +0 -1170
  338. package/dist/local-daemon-rpc.d.ts.map +0 -1
  339. package/dist/local-daemon-rpc.js +0 -178
  340. package/dist/local-daemon-rpc.js.map +0 -1
  341. package/dist/local-history.d.ts +0 -75
  342. package/dist/local-history.d.ts.map +0 -1
  343. package/dist/local-history.js +0 -82
  344. package/dist/local-history.js.map +0 -1
  345. package/dist/local-paths.d.ts +0 -22
  346. package/dist/local-paths.d.ts.map +0 -1
  347. package/dist/local-paths.js +0 -33
  348. package/dist/local-paths.js.map +0 -1
  349. package/dist/local-socket-server.d.ts +0 -33
  350. package/dist/local-socket-server.d.ts.map +0 -1
  351. package/dist/local-socket-server.js +0 -100
  352. package/dist/local-socket-server.js.map +0 -1
  353. package/dist/message-rendering.d.ts +0 -4
  354. package/dist/message-rendering.d.ts.map +0 -1
  355. package/dist/message-rendering.js +0 -8
  356. package/dist/message-rendering.js.map +0 -1
  357. package/dist/moltzapd.d.ts +0 -38
  358. package/dist/moltzapd.d.ts.map +0 -1
  359. package/dist/moltzapd.js +0 -78
  360. package/dist/moltzapd.js.map +0 -1
  361. package/dist/notification/__tests__/subscribe-signatures.types-check.d.ts +0 -53
  362. package/dist/notification/__tests__/subscribe-signatures.types-check.d.ts.map +0 -1
  363. package/dist/notification/__tests__/subscribe-signatures.types-check.js +0 -29
  364. package/dist/notification/__tests__/subscribe-signatures.types-check.js.map +0 -1
  365. package/dist/notification/errors.d.ts +0 -41
  366. package/dist/notification/errors.d.ts.map +0 -1
  367. package/dist/notification/errors.js +0 -24
  368. package/dist/notification/errors.js.map +0 -1
  369. package/dist/notification/index.d.ts +0 -6
  370. package/dist/notification/index.d.ts.map +0 -1
  371. package/dist/notification/index.js +0 -6
  372. package/dist/notification/index.js.map +0 -1
  373. package/dist/notification/stream.d.ts +0 -75
  374. package/dist/notification/stream.d.ts.map +0 -1
  375. package/dist/notification/stream.js +0 -30
  376. package/dist/notification/stream.js.map +0 -1
  377. package/dist/pagination.d.ts +0 -52
  378. package/dist/pagination.d.ts.map +0 -1
  379. package/dist/pagination.js +0 -51
  380. package/dist/pagination.js.map +0 -1
  381. package/dist/profile.d.ts +0 -104
  382. package/dist/profile.d.ts.map +0 -1
  383. package/dist/profile.js +0 -163
  384. package/dist/profile.js.map +0 -1
  385. package/dist/refs.d.ts +0 -18
  386. package/dist/refs.d.ts.map +0 -1
  387. package/dist/refs.js +0 -18
  388. package/dist/refs.js.map +0 -1
  389. package/dist/service-event-trace.d.ts +0 -15
  390. package/dist/service-event-trace.d.ts.map +0 -1
  391. package/dist/service-event-trace.js +0 -35
  392. package/dist/service-event-trace.js.map +0 -1
  393. package/dist/service-helpers.d.ts +0 -55
  394. package/dist/service-helpers.d.ts.map +0 -1
  395. package/dist/service-helpers.js +0 -108
  396. package/dist/service-helpers.js.map +0 -1
  397. package/dist/service-local-daemon.d.ts +0 -32
  398. package/dist/service-local-daemon.d.ts.map +0 -1
  399. package/dist/service-local-daemon.js +0 -153
  400. package/dist/service-local-daemon.js.map +0 -1
  401. package/dist/service.d.ts +0 -299
  402. package/dist/service.d.ts.map +0 -1
  403. package/dist/service.js +0 -789
  404. package/dist/service.js.map +0 -1
  405. package/dist/test-utils/channel-service-fixture.d.ts +0 -53
  406. package/dist/test-utils/channel-service-fixture.d.ts.map +0 -1
  407. package/dist/test-utils/channel-service-fixture.js +0 -178
  408. package/dist/test-utils/channel-service-fixture.js.map +0 -1
  409. package/dist/test-utils/fake-service.d.ts +0 -84
  410. package/dist/test-utils/fake-service.d.ts.map +0 -1
  411. package/dist/test-utils/fake-service.js +0 -108
  412. package/dist/test-utils/fake-service.js.map +0 -1
  413. package/dist/test-utils/harness.d.ts +0 -27
  414. package/dist/test-utils/harness.d.ts.map +0 -1
  415. package/dist/test-utils/harness.js +0 -33
  416. package/dist/test-utils/harness.js.map +0 -1
  417. package/dist/test-utils/ids.d.ts +0 -21
  418. package/dist/test-utils/ids.d.ts.map +0 -1
  419. package/dist/test-utils/ids.js +0 -68
  420. package/dist/test-utils/ids.js.map +0 -1
  421. package/dist/test-utils/index.d.ts +0 -54
  422. package/dist/test-utils/index.d.ts.map +0 -1
  423. package/dist/test-utils/index.js +0 -65
  424. package/dist/test-utils/index.js.map +0 -1
  425. package/dist/test-utils/standalone-provisioning.d.ts +0 -22
  426. package/dist/test-utils/standalone-provisioning.d.ts.map +0 -1
  427. package/dist/test-utils/standalone-provisioning.js +0 -17
  428. package/dist/test-utils/standalone-provisioning.js.map +0 -1
  429. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,101 @@
1
+ /** @file Closed private representation of the loopback HarnessEndpoint MCP wire. */
2
+ import { type Effect, JSONSchema, type ParseResult, Schema } from "effect";
3
+ /** MCP capability carrying addressed message delivery. */
4
+ export declare const HARNESS_EVENTS_EXTENSION = "xyz.moltzap/events-v2";
5
+ /** Subscription filter requesting durable addressed messages. */
6
+ export declare const HARNESS_MESSAGE_READY_FILTER = "xyz.moltzap/messageReady";
7
+ /** Notification method carrying one pending addressed message. */
8
+ export declare const HARNESS_MESSAGE_READY_NOTIFICATION = "notifications/xyz.moltzap/message_ready";
9
+ /** Adapter operation for an explicit addressed send. */
10
+ export declare const HARNESS_SEND_TOOL = "send_message";
11
+ /** Adapter operation acknowledging successful stock host callback completion. */
12
+ export declare const HARNESS_ACKNOWLEDGE_DELIVERY_TOOL = "acknowledge_delivery";
13
+ declare const harnessEventsExtensionDeclarationSchema: Schema.Record$<typeof Schema.String, typeof Schema.Never>;
14
+ declare const harnessAcknowledgeDeliveryRequestSchema: Schema.Struct<{
15
+ deliveryToken: Schema.brand<Schema.filter<typeof Schema.String>, "DeliveryToken">;
16
+ }>;
17
+ declare const harnessEmptyResultSchema: Schema.Record$<typeof Schema.String, typeof Schema.Never>;
18
+ declare const harnessMessageReadyEventSchema: Schema.Struct<{
19
+ deliveryToken: Schema.brand<Schema.filter<typeof Schema.String>, "DeliveryToken">;
20
+ message: Schema.Union<[Schema.filter<Schema.Struct<{
21
+ kind: Schema.Literal<["direct"]>;
22
+ postId: Schema.brand<Schema.filter<typeof Schema.String>, "PostId">;
23
+ address: Schema.brand<Schema.filter<Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">>, "AgentAddress">;
24
+ sender: Schema.brand<Schema.filter<Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">>, "AgentAddress">;
25
+ content: Schema.refine<readonly [{
26
+ readonly type: "text";
27
+ readonly text: string;
28
+ } | {
29
+ readonly type: "data";
30
+ readonly value: import("./contract.js").JsonValue;
31
+ }, ...({
32
+ readonly type: "text";
33
+ readonly text: string;
34
+ } | {
35
+ readonly type: "data";
36
+ readonly value: import("./contract.js").JsonValue;
37
+ })[]], Schema.NonEmptyArray<Schema.Union<[Schema.Struct<{
38
+ type: Schema.Literal<["text"]>;
39
+ text: Schema.filter<typeof Schema.String>;
40
+ }>, Schema.Struct<{
41
+ type: Schema.Literal<["data"]>;
42
+ value: Schema.Schema<import("./contract.js").JsonValue, import("./contract.js").JsonValue, never>;
43
+ }>]>>>;
44
+ }>>, Schema.filter<Schema.Struct<{
45
+ kind: Schema.Literal<["group"]>;
46
+ postId: Schema.brand<Schema.filter<typeof Schema.String>, "PostId">;
47
+ address: Schema.brand<Schema.filter<Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">>, "GroupAddress">;
48
+ sender: Schema.brand<Schema.filter<Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">>, "AgentAddress">;
49
+ members: Schema.filter<Schema.TupleType<readonly [Schema.brand<Schema.filter<Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">>, "AgentAddress">, Schema.brand<Schema.filter<Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">>, "AgentAddress">, Schema.brand<Schema.filter<Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">>, "AgentAddress">], [Schema.brand<Schema.filter<Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">>, "AgentAddress">]>>;
50
+ content: Schema.refine<readonly [{
51
+ readonly type: "text";
52
+ readonly text: string;
53
+ } | {
54
+ readonly type: "data";
55
+ readonly value: import("./contract.js").JsonValue;
56
+ }, ...({
57
+ readonly type: "text";
58
+ readonly text: string;
59
+ } | {
60
+ readonly type: "data";
61
+ readonly value: import("./contract.js").JsonValue;
62
+ })[]], Schema.NonEmptyArray<Schema.Union<[Schema.Struct<{
63
+ type: Schema.Literal<["text"]>;
64
+ text: Schema.filter<typeof Schema.String>;
65
+ }>, Schema.Struct<{
66
+ type: Schema.Literal<["data"]>;
67
+ value: Schema.Schema<import("./contract.js").JsonValue, import("./contract.js").JsonValue, never>;
68
+ }>]>>>;
69
+ }>>]>;
70
+ }>;
71
+ type HarnessEventsExtensionDeclaration = typeof harnessEventsExtensionDeclarationSchema.Type;
72
+ /** Decoded delivery acknowledgment arguments owned by the daemon. */
73
+ export type HarnessAcknowledgeDeliveryRequest = typeof harnessAcknowledgeDeliveryRequestSchema.Type;
74
+ /** Decoded empty adapter-operation result. */
75
+ export type HarnessEmptyResult = typeof harnessEmptyResultSchema.Type;
76
+ /** One stable pending delivery emitted by the daemon. */
77
+ export type HarnessMessageReadyEvent = typeof harnessMessageReadyEventSchema.Type;
78
+ /** JSON Schema advertised for the delivery acknowledgment operation. */
79
+ export declare const harnessAcknowledgeDeliveryRequestJsonSchema: JSONSchema.JsonSchema7Root;
80
+ /** JSON Schema advertised for empty adapter-operation results. */
81
+ export declare const harnessEmptyResultJsonSchema: JSONSchema.JsonSchema7Root;
82
+ /**
83
+ * Decode the exact events-v2 capability declaration.
84
+ * @param value Untrusted capability payload.
85
+ * @returns The validated empty declaration.
86
+ */
87
+ export declare function decodeHarnessEventsExtensionDeclaration(value: unknown): Effect.Effect<HarnessEventsExtensionDeclaration, ParseResult.ParseError>;
88
+ /**
89
+ * Decode one exact delivery acknowledgment request.
90
+ * @param value Untrusted tool arguments.
91
+ * @returns The validated request.
92
+ */
93
+ export declare function decodeHarnessAcknowledgeDeliveryRequest(value: unknown): Effect.Effect<HarnessAcknowledgeDeliveryRequest, ParseResult.ParseError>;
94
+ /**
95
+ * Decode one exact pending-delivery notification payload.
96
+ * @param value Untrusted notification parameters.
97
+ * @returns The validated pending delivery.
98
+ */
99
+ export declare function decodeHarnessMessageReadyEvent(value: unknown): Effect.Effect<HarnessMessageReadyEvent, ParseResult.ParseError>;
100
+ export {};
101
+ //# sourceMappingURL=harness-mcp-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-mcp-contract.d.ts","sourceRoot":"","sources":["../src/harness-mcp-contract.ts"],"names":[],"mappings":"AAAA,oFAAoF;AAEpF,OAAO,EACL,KAAK,MAAM,EACX,UAAU,EACV,KAAK,WAAW,EAChB,MAAM,EAEP,MAAM,QAAQ,CAAC;AAIhB,0DAA0D;AAC1D,eAAO,MAAM,wBAAwB,0BAA0B,CAAC;AAEhE,iEAAiE;AACjE,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AAEvE,kEAAkE;AAClE,eAAO,MAAM,kCAAkC,4CACJ,CAAC;AAE5C,wDAAwD;AACxD,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAEhD,iFAAiF;AACjF,eAAO,MAAM,iCAAiC,yBAAyB,CAAC;AAexE,QAAA,MAAM,uCAAuC,2DAAmB,CAAC;AACjE,QAAA,MAAM,uCAAuC;;EAE3C,CAAC;AACH,QAAA,MAAM,wBAAwB,2DAAmB,CAAC;AAClD,QAAA,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGlC,CAAC;AAEH,KAAK,iCAAiC,GACpC,OAAO,uCAAuC,CAAC,IAAI,CAAC;AAEtD,qEAAqE;AACrE,MAAM,MAAM,iCAAiC,GAC3C,OAAO,uCAAuC,CAAC,IAAI,CAAC;AAEtD,8CAA8C;AAC9C,MAAM,MAAM,kBAAkB,GAAG,OAAO,wBAAwB,CAAC,IAAI,CAAC;AAEtE,yDAAyD;AACzD,MAAM,MAAM,wBAAwB,GAClC,OAAO,8BAA8B,CAAC,IAAI,CAAC;AAE7C,wEAAwE;AACxE,eAAO,MAAM,2CAA2C,4BAGvD,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,4BAA4B,4BAGxC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,OAAO,GACb,MAAM,CAAC,MAAM,CAAC,iCAAiC,EAAE,WAAW,CAAC,UAAU,CAAC,CAK1E;AAED;;;;GAIG;AACH,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,OAAO,GACb,MAAM,CAAC,MAAM,CAAC,iCAAiC,EAAE,WAAW,CAAC,UAAU,CAAC,CAK1E;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,OAAO,GACb,MAAM,CAAC,MAAM,CAAC,wBAAwB,EAAE,WAAW,CAAC,UAAU,CAAC,CAEjE"}
@@ -0,0 +1,61 @@
1
+ /** @file Closed private representation of the loopback HarnessEndpoint MCP wire. */
2
+ import { JSONSchema, Schema, } from "effect";
3
+ import { InboundMessage } from "./contract.js";
4
+ import { DeliveryToken } from "./endpoint/store/types.js";
5
+ /** MCP capability carrying addressed message delivery. */
6
+ export const HARNESS_EVENTS_EXTENSION = "xyz.moltzap/events-v2";
7
+ /** Subscription filter requesting durable addressed messages. */
8
+ export const HARNESS_MESSAGE_READY_FILTER = "xyz.moltzap/messageReady";
9
+ /** Notification method carrying one pending addressed message. */
10
+ export const HARNESS_MESSAGE_READY_NOTIFICATION = "notifications/xyz.moltzap/message_ready";
11
+ /** Adapter operation for an explicit addressed send. */
12
+ export const HARNESS_SEND_TOOL = "send_message";
13
+ /** Adapter operation acknowledging successful stock host callback completion. */
14
+ export const HARNESS_ACKNOWLEDGE_DELIVERY_TOOL = "acknowledge_delivery";
15
+ const exact = {
16
+ exact: true,
17
+ onExcessProperty: "error",
18
+ };
19
+ const exactStruct = (fields) => Schema.Struct(fields).annotations({ parseOptions: exact });
20
+ const exactEmptyObject = Schema.Record({
21
+ key: Schema.String,
22
+ value: Schema.Never,
23
+ }).annotations({ parseOptions: exact });
24
+ const harnessEventsExtensionDeclarationSchema = exactEmptyObject;
25
+ const harnessAcknowledgeDeliveryRequestSchema = exactStruct({
26
+ deliveryToken: DeliveryToken,
27
+ });
28
+ const harnessEmptyResultSchema = exactEmptyObject;
29
+ const harnessMessageReadyEventSchema = exactStruct({
30
+ deliveryToken: DeliveryToken,
31
+ message: InboundMessage,
32
+ });
33
+ /** JSON Schema advertised for the delivery acknowledgment operation. */
34
+ export const harnessAcknowledgeDeliveryRequestJsonSchema = JSONSchema.make(harnessAcknowledgeDeliveryRequestSchema, { target: "jsonSchema2020-12" });
35
+ /** JSON Schema advertised for empty adapter-operation results. */
36
+ export const harnessEmptyResultJsonSchema = JSONSchema.make(harnessEmptyResultSchema, { target: "jsonSchema2020-12" });
37
+ /**
38
+ * Decode the exact events-v2 capability declaration.
39
+ * @param value Untrusted capability payload.
40
+ * @returns The validated empty declaration.
41
+ */
42
+ export function decodeHarnessEventsExtensionDeclaration(value) {
43
+ return Schema.decodeUnknown(harnessEventsExtensionDeclarationSchema)(value, exact);
44
+ }
45
+ /**
46
+ * Decode one exact delivery acknowledgment request.
47
+ * @param value Untrusted tool arguments.
48
+ * @returns The validated request.
49
+ */
50
+ export function decodeHarnessAcknowledgeDeliveryRequest(value) {
51
+ return Schema.decodeUnknown(harnessAcknowledgeDeliveryRequestSchema)(value, exact);
52
+ }
53
+ /**
54
+ * Decode one exact pending-delivery notification payload.
55
+ * @param value Untrusted notification parameters.
56
+ * @returns The validated pending delivery.
57
+ */
58
+ export function decodeHarnessMessageReadyEvent(value) {
59
+ return Schema.decodeUnknown(harnessMessageReadyEventSchema)(value, exact);
60
+ }
61
+ //# sourceMappingURL=harness-mcp-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-mcp-contract.js","sourceRoot":"","sources":["../src/harness-mcp-contract.ts"],"names":[],"mappings":"AAAA,oFAAoF;AAEpF,OAAO,EAEL,UAAU,EAEV,MAAM,GAEP,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,0DAA0D;AAC1D,MAAM,CAAC,MAAM,wBAAwB,GAAG,uBAAuB,CAAC;AAEhE,iEAAiE;AACjE,MAAM,CAAC,MAAM,4BAA4B,GAAG,0BAA0B,CAAC;AAEvE,kEAAkE;AAClE,MAAM,CAAC,MAAM,kCAAkC,GAC7C,yCAAyC,CAAC;AAE5C,wDAAwD;AACxD,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAEhD,iFAAiF;AACjF,MAAM,CAAC,MAAM,iCAAiC,GAAG,sBAAsB,CAAC;AAExE,MAAM,KAAK,GAA2B;IACpC,KAAK,EAAE,IAAI;IACX,gBAAgB,EAAE,OAAO;CAC1B,CAAC;AAEF,MAAM,WAAW,GAAG,CAAsC,MAAc,EAAE,EAAE,CAC1E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;AAE7D,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC;IACrC,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,KAAK,EAAE,MAAM,CAAC,KAAK;CACpB,CAAC,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;AAExC,MAAM,uCAAuC,GAAG,gBAAgB,CAAC;AACjE,MAAM,uCAAuC,GAAG,WAAW,CAAC;IAC1D,aAAa,EAAE,aAAa;CAC7B,CAAC,CAAC;AACH,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAClD,MAAM,8BAA8B,GAAG,WAAW,CAAC;IACjD,aAAa,EAAE,aAAa;IAC5B,OAAO,EAAE,cAAc;CACxB,CAAC,CAAC;AAgBH,wEAAwE;AACxE,MAAM,CAAC,MAAM,2CAA2C,GAAG,UAAU,CAAC,IAAI,CACxE,uCAAuC,EACvC,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAChC,CAAC;AAEF,kEAAkE;AAClE,MAAM,CAAC,MAAM,4BAA4B,GAAG,UAAU,CAAC,IAAI,CACzD,wBAAwB,EACxB,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAChC,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,uCAAuC,CACrD,KAAc;IAEd,OAAO,MAAM,CAAC,aAAa,CAAC,uCAAuC,CAAC,CAClE,KAAK,EACL,KAAK,CACN,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uCAAuC,CACrD,KAAc;IAEd,OAAO,MAAM,CAAC,aAAa,CAAC,uCAAuC,CAAC,CAClE,KAAK,EACL,KAAK,CACN,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAC5C,KAAc;IAEd,OAAO,MAAM,CAAC,aAAa,CAAC,8BAA8B,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @file Hosts one official MCP handler on a guarded loopback Node listener and
3
+ * binds request draining and connection teardown to the enclosing scope.
4
+ */
5
+ import type { McpHttpHandler } from "@modelcontextprotocol/server";
6
+ import { Effect, type Scope } from "effect";
7
+ import { type Server as NodeHttpServer } from "node:http";
8
+ interface HarnessMcpHttpServerOptions {
9
+ readonly port: number;
10
+ readonly handler: McpHttpHandler;
11
+ }
12
+ /**
13
+ * Acquire one guarded loopback `/mcp` server on the explicit configured port.
14
+ * @param options Official MCP handler and nonzero listener port.
15
+ * @returns The live Node server bound to the caller's scope.
16
+ */
17
+ export declare const acquireHarnessMcpHttpServer: (options: HarnessMcpHttpServerOptions) => Effect.Effect<NodeHttpServer, Error, Scope.Scope>;
18
+ export {};
19
+ //# sourceMappingURL=harness-mcp-http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-mcp-http.d.ts","sourceRoot":"","sources":["../src/harness-mcp-http.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AASnE,OAAO,EAGL,MAAM,EAIN,KAAK,KAAK,EACX,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAEL,KAAK,MAAM,IAAI,cAAc,EAE9B,MAAM,WAAW,CAAC;AAOnB,UAAU,2BAA2B;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC;AA0ND;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,YAC7B,2BAA2B,KACnC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CASF,CAAC"}
@@ -1,13 +1,14 @@
1
+ /**
2
+ * @file Hosts one official MCP handler on a guarded loopback Node listener and
3
+ * binds request draining and connection teardown to the enclosing scope.
4
+ */
1
5
  import { localhostHostValidation, localhostOriginValidation, toNodeHandler, } from "@modelcontextprotocol/node";
2
- // eslint-disable-next-line agent-code-guard/prefer-effect-platform -- The official MCP Node adapter supplies a Node RequestListener, so this package-private process boundary must host that exact interface.
3
- import { createServer, } from "node:http";
4
6
  import { Deferred, Duration, Effect, Exit, Fiber, Option, } from "effect";
5
- const REGISTER_MCP_PATH = "/register/mcp";
7
+ // eslint-disable-next-line agent-code-guard/prefer-effect-platform -- The official MCP Node adapter supplies a Node RequestListener, so this process edge hosts that exact interface.
8
+ import { createServer, } from "node:http";
6
9
  const HARNESS_MCP_PATH = "/mcp";
7
10
  const POST_METHOD = "POST";
8
11
  const LOOPBACK_HOST = "127.0.0.1";
9
- // Loopback readers normally drain immediately; one second tolerates scheduler
10
- // delay without allowing a stopped reader to retain the daemon lifetime.
11
12
  const RESPONSE_DRAIN_GRACE_PERIOD = Duration.seconds(1);
12
13
  const respond = (status, body, response, headers = {}) => {
13
14
  response.writeHead(status, {
@@ -21,32 +22,34 @@ const makeResponseTracker = () => {
21
22
  const responseWaiters = new Set();
22
23
  const finish = (response) => {
23
24
  inFlight.delete(response);
24
- if (inFlight.size === 0) {
25
- for (const resume of responseWaiters) {
26
- resume();
27
- }
28
- responseWaiters.clear();
25
+ if (inFlight.size !== 0) {
26
+ return;
27
+ }
28
+ for (const resume of responseWaiters) {
29
+ resume();
29
30
  }
31
+ responseWaiters.clear();
30
32
  };
31
33
  return {
32
34
  track: (response, nodeResponse) => {
33
35
  inFlight.add(response);
34
36
  Effect.runFork(Effect.tryPromise({
35
37
  try: () => response,
36
- catch: (error) => error,
37
- }).pipe(Effect.catchAll((error) => Effect.sync(() => {
38
- nodeResponse.destroy(error instanceof Error ? error : undefined);
38
+ catch: (cause) => cause,
39
+ }).pipe(Effect.catchAll((cause) => Effect.sync(() => {
40
+ nodeResponse.destroy(cause instanceof Error ? cause : undefined);
39
41
  })), Effect.ensuring(Effect.sync(() => {
40
42
  finish(response);
41
43
  }))));
42
44
  },
45
+ // #ignore-sloppy-code-next-line[async-keyword]: This is the Effect callback constructor, not JavaScript asynchronous syntax.
43
46
  waitForResponses: Effect.async((resume) => {
44
47
  if (inFlight.size === 0) {
45
- resume(Effect.succeed(undefined));
48
+ resume(Effect.void);
46
49
  return;
47
50
  }
48
51
  const done = () => {
49
- resume(Effect.succeed(undefined));
52
+ resume(Effect.void);
50
53
  };
51
54
  responseWaiters.add(done);
52
55
  return Effect.sync(() => {
@@ -55,31 +58,18 @@ const makeResponseTracker = () => {
55
58
  }),
56
59
  };
57
60
  };
58
- /**
59
- * Routes the daemon's two loopback MCP surfaces through one Node listener.
60
- *
61
- * @param registrationHandler Official SDK handler for registration.
62
- * @param harnessHandler Official SDK handler for the active agent surface.
63
- * @returns A guarded Node request listener for both handlers.
64
- */
65
- const makeHarnessMcpRequestListener = (registrationHandler, harnessHandler) => {
61
+ const makeHarnessMcpRequestListener = (handler) => {
66
62
  const validateHost = localhostHostValidation();
67
63
  const validateOrigin = localhostOriginValidation();
68
- const registrationNodeHandler = toNodeHandler(registrationHandler);
69
- const harnessNodeHandler = toNodeHandler(harnessHandler);
64
+ const nodeHandler = toNodeHandler(handler);
70
65
  const responses = makeResponseTracker();
71
- const handlers = new Map([
72
- [REGISTER_MCP_PATH, registrationNodeHandler],
73
- [HARNESS_MCP_PATH, harnessNodeHandler],
74
- ]);
75
66
  const listener = (request, response) => {
76
67
  if (!validateHost(request, response) ||
77
68
  !validateOrigin(request, response)) {
78
69
  return;
79
70
  }
80
71
  const pathname = new URL(request.url ?? "/", "http://localhost").pathname;
81
- const handler = handlers.get(pathname);
82
- if (handler === undefined) {
72
+ if (pathname !== HARNESS_MCP_PATH) {
83
73
  respond(404, "Not found.", response);
84
74
  return;
85
75
  }
@@ -87,20 +77,15 @@ const makeHarnessMcpRequestListener = (registrationHandler, harnessHandler) => {
87
77
  respond(405, "Method not allowed.", response, { allow: POST_METHOD });
88
78
  return;
89
79
  }
90
- responses.track(handler(request, response), response);
91
- };
92
- return {
93
- listener,
94
- waitForResponses: responses.waitForResponses,
80
+ responses.track(nodeHandler(request, response), response);
95
81
  };
82
+ return { listener, waitForResponses: responses.waitForResponses };
96
83
  };
97
84
  const trackConnections = (server) => {
98
85
  const sockets = new Set();
99
86
  server.on("connection", (socket) => {
100
87
  sockets.add(socket);
101
- socket.once("close", () => {
102
- sockets.delete(socket);
103
- });
88
+ socket.once("close", () => sockets.delete(socket));
104
89
  });
105
90
  return () => {
106
91
  for (const socket of sockets) {
@@ -110,7 +95,7 @@ const trackConnections = (server) => {
110
95
  };
111
96
  };
112
97
  const listen = (options) => Effect.async((resume) => {
113
- const requests = makeHarnessMcpRequestListener(options.registrationHandler, options.harnessHandler);
98
+ const requests = makeHarnessMcpRequestListener(options.handler);
114
99
  const server = createServer(requests.listener);
115
100
  const destroyConnections = trackConnections(server);
116
101
  const onError = (error) => {
@@ -120,23 +105,25 @@ const listen = (options) => Effect.async((resume) => {
120
105
  server.listen(options.port, LOOPBACK_HOST, () => {
121
106
  server.off("error", onError);
122
107
  resume(Effect.succeed({
123
- destroyConnections,
124
108
  server,
109
+ destroyConnections,
125
110
  waitForResponses: requests.waitForResponses,
126
111
  }));
127
112
  });
113
+ // #ignore-sloppy-code-next-line[async-keyword]: This is the Effect callback constructor, not JavaScript asynchronous syntax.
128
114
  return Effect.async((cancelResume) => {
129
115
  server.off("error", onError);
130
116
  const onClose = () => {
131
- cancelResume(Effect.succeed(undefined));
117
+ cancelResume(Effect.void);
132
118
  };
133
119
  server.once("close", onClose);
134
120
  try {
135
121
  server.close();
136
122
  }
137
- catch (error) {
123
+ catch (cause) {
138
124
  server.off("close", onClose);
139
- cancelResume(Effect.logWarning("Harness MCP startup cancellation failed").pipe(Effect.annotateLogs({ error: String(error) }), Effect.as(undefined)));
125
+ Effect.runSync(Effect.logWarning("MCP startup cancellation failed", cause));
126
+ cancelResume(Effect.void);
140
127
  }
141
128
  });
142
129
  });
@@ -147,49 +134,34 @@ const beginClose = (server) => Effect.gen(function* () {
147
134
  Effect.runSync(Deferred.succeed(completion, error));
148
135
  });
149
136
  });
150
- return Deferred.await(completion).pipe(Effect.flatMap((error) => error === undefined
151
- ? Effect.succeed(undefined)
152
- : Effect.logWarning("Harness MCP HTTP server close failed", error).pipe(Effect.as(undefined))));
137
+ return Deferred.await(completion).pipe(Effect.flatMap((error) => error === undefined ? Effect.void : Effect.logWarning(error)));
153
138
  });
154
139
  const closeHandler = (handler) => Effect.tryPromise({
155
140
  try: () => handler.close(),
156
- catch: (error) => error,
157
- }).pipe(Effect.catchAll((error) => Effect.logWarning("Harness MCP handler close failed").pipe(Effect.annotateLogs({ error: String(error) }))), Effect.asVoid);
158
- const closeHandlers = (options) => Effect.forEach(new Set([options.registrationHandler, options.harnessHandler]), closeHandler, { concurrency: 2, discard: true });
141
+ catch: (cause) => cause,
142
+ }).pipe(Effect.ignore);
159
143
  const release = (running, options) => Effect.gen(function* () {
160
144
  const closeCompletion = yield* beginClose(running.server);
161
- // Handler closure finishes the Web stream before the Node adapter drains
162
- // it. A local client that stops reading must not retain the daemon scope,
163
- // so graceful draining is bounded before active connections are closed.
164
- const gracefulClose = yield* Effect.fork(Effect.all([closeHandlers(options), running.waitForResponses], {
145
+ const gracefulClose = yield* Effect.fork(Effect.all([closeHandler(options.handler), running.waitForResponses], {
165
146
  concurrency: 2,
166
147
  discard: true,
167
148
  }));
168
- // acquireRelease finalizers are uninterruptible. Only this observation is
169
- // interruptible so the grace timer can win; the close fiber remains owned
170
- // here and is joined after any forced connection shutdown.
171
149
  const drained = yield* Fiber.join(gracefulClose).pipe(Effect.timeoutOption(RESPONSE_DRAIN_GRACE_PERIOD), Effect.interruptible);
172
150
  if (Option.isNone(drained)) {
173
- yield* Effect.logWarning("Harness MCP response drain timed out; closing active connections");
174
- yield* Effect.sync(running.destroyConnections);
151
+ running.destroyConnections();
152
+ yield* Fiber.join(gracefulClose);
175
153
  }
176
154
  else {
177
155
  running.server.closeAllConnections();
178
156
  }
179
- if (Option.isNone(drained)) {
180
- yield* Fiber.join(gracefulClose);
181
- }
182
157
  yield* closeCompletion;
183
158
  });
184
159
  /**
185
- * Acquires the guarded loopback HTTP server for one explicitly supplied port.
186
- * The caller owns port selection and keeps the returned server alive by
187
- * retaining the enclosing Scope.
188
- *
189
- * @param options Existing MCP handlers and caller-resolved listener port.
190
- * @returns The listening Node HTTP server.
160
+ * Acquire one guarded loopback `/mcp` server on the explicit configured port.
161
+ * @param options Official MCP handler and nonzero listener port.
162
+ * @returns The live Node server bound to the caller's scope.
191
163
  */
192
164
  export const acquireHarnessMcpHttpServer = (options) =>
193
- // eslint-disable-next-line agent-code-guard/acquire-release-requires-scope -- this package-private helper returns the scoped acquisition to its process owner
194
- Effect.acquireRelease(listen(options).pipe(Effect.onExit((exit) => Exit.isSuccess(exit) ? Effect.void : closeHandlers(options))), (running) => release(running, options)).pipe(Effect.map((running) => running.server));
195
- //# sourceMappingURL=harness-mcp-server.js.map
165
+ // eslint-disable-next-line agent-code-guard/acquire-release-requires-scope -- The returned Scope requirement owns listener and response teardown.
166
+ Effect.acquireRelease(listen(options).pipe(Effect.onExit((exit) => Exit.isSuccess(exit) ? Effect.void : closeHandler(options.handler))), (running) => release(running, options)).pipe(Effect.map((running) => running.server));
167
+ //# sourceMappingURL=harness-mcp-http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-mcp-http.js","sourceRoot":"","sources":["../src/harness-mcp-http.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,25 @@
1
+ /**
2
+ * @file Adds the one Client-owned message subscription to the official MCP
3
+ * handler while leaving every standard MCP request with the SDK delegate.
4
+ */
1
5
  import { type Implementation, type McpHttpHandler } from "@modelcontextprotocol/server";
2
6
  interface HarnessMcpSubscriptionOptions {
3
7
  readonly delegate: McpHttpHandler;
4
8
  readonly implementation: Implementation;
9
+ readonly onActiveChange?: (active: boolean) => void;
5
10
  readonly onerror?: (error: Error) => void;
6
11
  }
7
- /** An official MCP handler augmented with one caller-typed event publisher. */
12
+ /** Official MCP handler augmented by the sole daemon delivery sink. */
8
13
  export interface HarnessMcpSubscriptionHandler<Payload extends object> extends McpHttpHandler {
9
- /** Publishes one complete custom notification to the retained POST response. */
14
+ /** Whether one accepted message listener currently owns the daemon. */
15
+ readonly hasActiveSubscription: () => boolean;
16
+ /** Write one complete event frame to the current listener, if it still exists. */
10
17
  readonly publish: (payload: Payload) => boolean;
11
18
  }
12
19
  /**
13
- * Adds the MoltZap turn-ready subscription extension to an official MCP HTTP
14
- * handler. Every non-extension request remains owned by the SDK delegate.
15
- *
16
- * @param options Official handler, server identity, and optional error sink.
17
- * @returns The official handler surface plus a typed custom publisher.
20
+ * Compose the one custom listen route in front of the official MCP handler.
21
+ * @param options Official delegate, server identity, and lifecycle callbacks.
22
+ * @returns The delegated MCP surface plus the private message publisher.
18
23
  */
19
24
  export declare const makeHarnessMcpSubscriptionHandler: <Payload extends object>(options: HarnessMcpSubscriptionOptions) => HarnessMcpSubscriptionHandler<Payload>;
20
25
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"harness-mcp-subscription.d.ts","sourceRoot":"","sources":["../src/harness-mcp-subscription.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,cAAc,EAEnB,KAAK,cAAc,EAEpB,MAAM,8BAA8B,CAAC;AAyBtC,UAAU,6BAA6B;IACrC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC3C;AAED,+EAA+E;AAC/E,MAAM,WAAW,6BAA6B,CAAC,OAAO,SAAS,MAAM,CACnE,SAAQ,cAAc;IACtB,gFAAgF;IAChF,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;CACjD;AA4XD;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,GAAI,OAAO,SAAS,MAAM,WAC7D,6BAA6B,KACrC,6BAA6B,CAAC,OAAO,CACuB,CAAC"}
1
+ {"version":3,"file":"harness-mcp-subscription.d.ts","sourceRoot":"","sources":["../src/harness-mcp-subscription.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAGL,KAAK,cAAc,EAGnB,KAAK,cAAc,EAKpB,MAAM,8BAA8B,CAAC;AAuBtC,UAAU,6BAA6B;IACrC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC3C;AAED,uEAAuE;AACvE,MAAM,WAAW,6BAA6B,CAAC,OAAO,SAAS,MAAM,CACnE,SAAQ,cAAc;IACtB,uEAAuE;IACvE,QAAQ,CAAC,qBAAqB,EAAE,MAAM,OAAO,CAAC;IAC9C,kFAAkF;IAClF,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;CACjD;AAsYD;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,GAAI,OAAO,SAAS,MAAM,WAC7D,6BAA6B,KACrC,6BAA6B,CAAC,OAAO,CACuB,CAAC"}