@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
package/dist/cli/index.js DELETED
@@ -1,105 +0,0 @@
1
- #!/usr/bin/env node
2
- /** @file MoltZap CLI entrypoint and global transport option wiring. */
3
- import { Command, Options } from "@effect/cli";
4
- import { NodeContext, NodeRuntime } from "@effect/platform-node";
5
- import { Config, ConfigProvider, Effect, Layer, Logger, LogLevel, Option, } from "effect";
6
- import packageJson from "../../package.json" with { type: "json" };
7
- import { agentsCommand } from "./commands/agents.js";
8
- import { conversationsCommand, historyCommand, } from "./commands/conversations.js";
9
- import { messagesCommand } from "./commands/messages.js";
10
- import { registerCommand } from "./commands/register.js";
11
- import { sendCommand } from "./commands/send.js";
12
- import { startCommand } from "./commands/start.js";
13
- import { statusCommand } from "./commands/status.js";
14
- import { makeTransportLayer, resolveTransportInputs, } from "./transport.js";
15
- import { ProfileConfigReadError, ProfileInvalidNameError, ProfileNotFoundError, profileName as profileNameSchema, } from "../profile.js";
16
- const { version } = packageJson;
17
- const cliRuntimeEnv = Config.all({
18
- logLevel: Config.string("MOLTZAP_LOG_LEVEL").pipe(Config.withDefault("info")),
19
- });
20
- const runtimeEnv = Effect.runSync(cliRuntimeEnv.pipe(Effect.withConfigProvider(ConfigProvider.fromEnv())));
21
- const loggerLive = Logger.replace(Logger.defaultLogger, Logger.withConsoleError(Logger.stringLogger));
22
- const minLogLevel = (() => {
23
- const env = runtimeEnv.logLevel.toLowerCase();
24
- switch (env) {
25
- case "trace":
26
- return LogLevel.Trace;
27
- case "debug":
28
- return LogLevel.Debug;
29
- case "info":
30
- return LogLevel.Info;
31
- case "warn":
32
- case "warning":
33
- return LogLevel.Warning;
34
- case "error":
35
- return LogLevel.Error;
36
- case "fatal":
37
- return LogLevel.Fatal;
38
- default:
39
- return LogLevel.Info;
40
- }
41
- })();
42
- const globalProfileOption = Options.text("profile").pipe(Options.withSchema(profileNameSchema), Options.withDescription("Load an existing named profile from ~/.moltzap/config.json for this invocation."), Options.optional);
43
- function resolverInputFromConfig(config) {
44
- const profileName = Option.getOrUndefined(config.profile);
45
- if (profileName === undefined) {
46
- return {};
47
- }
48
- return { profileName };
49
- }
50
- function transportResolutionMessage(err) {
51
- if (err instanceof ProfileNotFoundError) {
52
- return `profile not found: ${err.name}`;
53
- }
54
- if (err instanceof ProfileInvalidNameError) {
55
- return `invalid profile name "${err.name}": ${err.reason}`;
56
- }
57
- if (err instanceof ProfileConfigReadError) {
58
- const cause = err.cause instanceof Error ? err.cause.message : String(err.cause);
59
- return `config read error at ${err.path}: ${cause}`;
60
- }
61
- return err instanceof Error ? err.message : String(err);
62
- }
63
- function resolveTransportOptionsOrExit(input) {
64
- return resolveTransportInputs(input).pipe(Effect.catchAll((err) => Effect.logError(`moltzap: ${transportResolutionMessage(err)}`).pipe(Effect.zipRight(Effect.sync(() => process.exit(1))))));
65
- }
66
- const transportLayerFromConfig = (config) => Layer.unwrapEffect(resolveTransportOptionsOrExit(resolverInputFromConfig(config)).pipe(Effect.map(makeTransportLayer)));
67
- /**
68
- * Top-level `moltzap` command. Subcommands are `@effect/cli` `Command`s —
69
- * each handler returns an Effect. The single `NodeRuntime.runMain` below is
70
- * the ONLY bridge from the Effect graph to Node; no per-command runPromise.
71
- *
72
- * Parent options (`--profile`) are parsed by `@effect/cli` and
73
- * provided to subcommand handlers via the `Transport` Layer (see
74
- * `transport.ts`).
75
- */
76
- const moltzapBase = Command.make("moltzap", {
77
- profile: globalProfileOption,
78
- }).pipe(Command.withDescription("MoltZap CLI — messaging for OpenClaw AI agents.\n" +
79
- "\n" +
80
- "Global flags (parsed by @effect/cli before the selected subcommand " +
81
- "runs):\n" +
82
- " --profile <name> Load the named profile from ~/.moltzap/config.json " +
83
- "(written by `moltzap register --profile <name>`) and send commands " +
84
- "through that agent's local daemon socket.\n" +
85
- "\n" +
86
- "Without --profile, commands use the local daemon transport. `register` " +
87
- "is the one exception: it consumes `--profile` locally to write a new " +
88
- "profile instead of routing through the transport.\n" +
89
- "\n" +
90
- "See packages/client/src/cli/README.md for an end-to-end multi-agent " +
91
- "walkthrough."), Command.withSubcommands([
92
- registerCommand,
93
- sendCommand,
94
- conversationsCommand,
95
- historyCommand,
96
- statusCommand,
97
- agentsCommand,
98
- messagesCommand,
99
- startCommand,
100
- ]));
101
- const moltzap = Command.provide(moltzapBase, (config) => transportLayerFromConfig(config));
102
- const cli = Command.run(moltzap, { name: "moltzap", version });
103
- // eslint-disable-next-line agent-code-guard/prefer-effect-platform -- @effect/cli Command.run requires the Node argv vector at this process entrypoint.
104
- cli(process.argv).pipe(Effect.provide(Layer.mergeAll(NodeContext.layer, loggerLive)), Logger.withMinimumLogLevel(minLogLevel), NodeRuntime.runMain);
105
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import { Effect } from "effect";
2
- /**
3
- * Provides the log json runtime value.
4
- * @param value Value to process.
5
- * @returns The log json result.
6
- */
7
- export declare const logJson: (value: unknown) => Effect.Effect<void>;
8
- /**
9
- * Provides the log lines runtime value.
10
- * @param lines Value supplied to the operation.
11
- * @returns The log lines result.
12
- */
13
- export declare const logLines: (lines: Iterable<string>) => Effect.Effect<void>;
14
- //# sourceMappingURL=output.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAOhC;;;;GAIG;AACH,eAAO,MAAM,OAAO,UAAW,OAAO,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAC5B,CAAC;AAEhC;;;;GAIG;AACH,eAAO,MAAM,QAAQ,UAAW,QAAQ,CAAC,MAAM,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAIjE,CAAC"}
@@ -1,19 +0,0 @@
1
- import { Effect } from "effect";
2
- const JSON_INDENT_SPACES = 2;
3
- const formatJson = (value) => JSON.stringify(value, null, JSON_INDENT_SPACES);
4
- /**
5
- * Provides the log json runtime value.
6
- * @param value Value to process.
7
- * @returns The log json result.
8
- */
9
- export const logJson = (value) => Effect.log(formatJson(value));
10
- /**
11
- * Provides the log lines runtime value.
12
- * @param lines Value supplied to the operation.
13
- * @returns The log lines result.
14
- */
15
- export const logLines = (lines) => Effect.forEach(lines, (line) => Effect.log(line), {
16
- concurrency: 1,
17
- discard: true,
18
- });
19
- //# sourceMappingURL=output.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B,MAAM,UAAU,GAAG,CAAC,KAAc,EAAU,EAAE,CAC5C,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;AAElD;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAc,EAAuB,EAAE,CAC7D,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAEhC;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAuB,EAAuB,EAAE,CACvE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;IAChD,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,IAAI;CACd,CAAC,CAAC"}
@@ -1,28 +0,0 @@
1
- import { type RpcGroup } from "@effect/rpc";
2
- import { Effect } from "effect";
3
- import { type LocalDaemonError, localDaemonCommands, LocalDaemonRpcs } from "../local-daemon-rpc.js";
4
- import { type PayloadForTag, type SuccessForTag } from "@moltzap/protocol/rpc";
5
- type DaemonRpcs = RpcGroup.Rpcs<typeof LocalDaemonRpcs>;
6
- /** Represents daemon command values. */
7
- export type DaemonCommand = DaemonRpcs["_tag"];
8
- /** Re-exports the public API from `current module`. */
9
- export { localDaemonCommands };
10
- declare const SocketRequestError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
11
- readonly _tag: "SocketRequestError";
12
- } & Readonly<A>;
13
- /** Reports socket request failures. */
14
- export declare class SocketRequestError extends SocketRequestError_base<{
15
- readonly method: string;
16
- readonly message: string;
17
- readonly cause?: unknown;
18
- }> {
19
- }
20
- /**
21
- * Provides the request daemon command runtime value.
22
- * @param command Value supplied to the operation.
23
- * @param payload Value supplied to the operation.
24
- * @param socketPath Value supplied to the operation.
25
- * @returns The request daemon command result.
26
- */
27
- export declare const requestDaemonCommand: <Tag extends DaemonCommand>(command: Tag, payload: PayloadForTag<DaemonRpcs, Tag>, socketPath?: string) => Effect.Effect<SuccessForTag<DaemonRpcs, Tag>, SocketRequestError | LocalDaemonError>;
28
- //# sourceMappingURL=socket-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"socket-client.d.ts","sourceRoot":"","sources":["../../src/cli/socket-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAQ,MAAM,EAAS,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAEL,KAAK,gBAAgB,EACrB,mBAAmB,EACnB,eAAe,EAChB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,uBAAuB,CAAC;AAE/B,KAAK,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,wCAAwC;AACxC,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAQ/C,uDAAuD;AACvD,OAAO,EAAE,mBAAmB,EAAE,CAAC;;;;AAE/B,uCAAuC;AACvC,qBAAa,kBAAmB,SAAQ,wBAAuC;IAC7E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;CAAG;AAkEL;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAAI,GAAG,SAAS,aAAa,WACnD,GAAG,WACH,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,eAC1B,MAAM,KAClB,MAAM,CAAC,MAAM,CACd,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,EAC9B,kBAAkB,GAAG,gBAAgB,CA2BU,CAAC"}
@@ -1,63 +0,0 @@
1
- import * as Socket from "@effect/platform/Socket";
2
- import * as NodeSocket from "@effect/platform-node/NodeSocket";
3
- import { RpcClient, RpcSerialization, } from "@effect/rpc";
4
- import { Data, Effect, Layer } from "effect";
5
- import { isLocalDaemonError, localDaemonCommands, LocalDaemonRpcs, } from "../local-daemon-rpc.js";
6
- import { MoltZapService } from "../service.js";
7
- import { dispatchCall, } from "@moltzap/protocol/rpc";
8
- const SOCKET_REQUEST_TIMEOUT_MS = 10_000;
9
- /** Re-exports the public API from `current module`. */
10
- export { localDaemonCommands };
11
- /** Reports socket request failures. */
12
- export class SocketRequestError extends Data.TaggedError("SocketRequestError") {
13
- }
14
- const socketRequestError = (method, message, cause) => new SocketRequestError({ method, message, cause });
15
- const errorCode = (cause) => typeof cause === "object" && cause !== null && "code" in cause
16
- ? cause.code
17
- : undefined;
18
- const socketErrorCause = (err) => "cause" in err ? err.cause : err;
19
- const fromSocketError = (method, err) => {
20
- const cause = socketErrorCause(err);
21
- const code = errorCode(cause);
22
- if (code === "ENOENT" || code === "ECONNREFUSED") {
23
- return socketRequestError(method, "MoltZap service is not running. Start the OpenClaw channel plugin first.", cause);
24
- }
25
- if ("reason" in err && err.reason === "OpenTimeout") {
26
- return socketRequestError(method, "Socket request timed out", err);
27
- }
28
- return socketRequestError(method, err.message, err);
29
- };
30
- const fromRpcClientError = (method, err) => socketRequestError(method, err instanceof Error ? err.message : String(err), err);
31
- const fromDaemonCommandError = (method, err) => {
32
- if (err instanceof SocketRequestError) {
33
- return err;
34
- }
35
- if (isLocalDaemonError(err)) {
36
- return err;
37
- }
38
- return fromRpcClientError(method, err);
39
- };
40
- const callDaemonClient = (client, command, payload) => dispatchCall(client, command, payload);
41
- /**
42
- * Provides the request daemon command runtime value.
43
- * @param command Value supplied to the operation.
44
- * @param payload Value supplied to the operation.
45
- * @param socketPath Value supplied to the operation.
46
- * @returns The request daemon command result.
47
- */
48
- export const requestDaemonCommand = (command, payload, socketPath) => Effect.scoped(Effect.gen(function* () {
49
- const sockPath = socketPath ?? MoltZapService.SOCKET_PATH;
50
- const socket = yield* NodeSocket.makeNet({
51
- path: sockPath,
52
- openTimeout: `${SOCKET_REQUEST_TIMEOUT_MS} millis`,
53
- }).pipe(Effect.mapError((err) => fromSocketError(command, err)));
54
- const protocolLayer = RpcClient.layerProtocolSocket().pipe(Layer.provide(RpcSerialization.layerNdjson), Layer.provide(Layer.succeed(Socket.Socket, socket)));
55
- return yield* Effect.gen(function* () {
56
- const client = yield* RpcClient.make(LocalDaemonRpcs);
57
- return yield* callDaemonClient(client, command, payload);
58
- }).pipe(Effect.provide(protocolLayer), Effect.timeoutFail({
59
- duration: `${SOCKET_REQUEST_TIMEOUT_MS} millis`,
60
- onTimeout: () => socketRequestError(command, "Socket request timed out"),
61
- }), Effect.mapError((err) => fromDaemonCommandError(command, err)));
62
- })).pipe(Effect.withSpan("requestDaemonCommand"));
63
- //# sourceMappingURL=socket-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"socket-client.js","sourceRoot":"","sources":["../../src/cli/socket-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAC;AAClD,OAAO,KAAK,UAAU,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EACL,SAAS,EAET,gBAAgB,GAEjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EACL,kBAAkB,EAElB,mBAAmB,EACnB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,YAAY,GAIb,MAAM,uBAAuB,CAAC;AAU/B,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEzC,uDAAuD;AACvD,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,uCAAuC;AACvC,MAAM,OAAO,kBAAmB,SAAQ,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAI3E;CAAG;AAEL,MAAM,kBAAkB,GAAG,CACzB,MAAc,EACd,OAAe,EACf,KAAe,EACK,EAAE,CAAC,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AAE5E,MAAM,SAAS,GAAG,CAAC,KAAc,EAAW,EAAE,CAC5C,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK;IAC5D,CAAC,CAAC,KAAK,CAAC,IAAI;IACZ,CAAC,CAAC,SAAS,CAAC;AAEhB,MAAM,gBAAgB,GAAG,CAAC,GAAuB,EAAW,EAAE,CAC5D,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;AAEnC,MAAM,eAAe,GAAG,CACtB,MAAc,EACd,GAAuB,EACH,EAAE;IACtB,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;QACjD,OAAO,kBAAkB,CACvB,MAAM,EACN,0EAA0E,EAC1E,KAAK,CACN,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QACpD,OAAO,kBAAkB,CAAC,MAAM,EAAE,0BAA0B,EAAE,GAAG,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAE,GAAY,EAAsB,EAAE,CAC9E,kBAAkB,CAChB,MAAM,EACN,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAChD,GAAG,CACJ,CAAC;AAEJ,MAAM,sBAAsB,GAAG,CAC7B,MAAc,EACd,GAAY,EAC2B,EAAE;IACzC,IAAI,GAAG,YAAY,kBAAkB,EAAE,CAAC;QACtC,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CACvB,MAA4B,EAC5B,OAAY,EACZ,OAAuC,EACiB,EAAE,CAC1D,YAAY,CACV,MAAM,EACN,OAAO,EACP,OAAO,CACR,CAAC;AAEJ;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,OAAY,EACZ,OAAuC,EACvC,UAAmB,EAInB,EAAE,CACF,MAAM,CAAC,MAAM,CACX,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,QAAQ,GAAG,UAAU,IAAI,cAAc,CAAC,WAAW,CAAC;IAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;QACvC,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,GAAG,yBAAyB,SAAS;KACnD,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,aAAa,GAAG,SAAS,CAAC,mBAAmB,EAAE,CAAC,IAAI,CACxD,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAC3C,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CACpD,CAAC;IACF,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAChC,MAAM,MAAM,GACV,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAC7B,MAAM,CAAC,WAAW,CAAC;QACjB,QAAQ,EAAE,GAAG,yBAAyB,SAAS;QAC/C,SAAS,EAAE,GAAG,EAAE,CACd,kBAAkB,CAAC,OAAO,EAAE,0BAA0B,CAAC;KAC1D,CAAC,EACF,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAC/D,CAAC;AACJ,CAAC,CAAC,CACH,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC"}
@@ -1,132 +0,0 @@
1
- /**
2
- * CLI transport layer — the single boundary between the command handlers and
3
- * the local daemon socket.
4
- *
5
- * Command handlers pull `Transport` from Effect context; they do NOT open
6
- * sockets or construct clients themselves. The kind of
7
- * transport in effect is decided once at CLI boot by {@link makeTransportLayer}
8
- * and is immutable for the lifetime of the process.
9
- *
10
- * Test seam: integration tests swap {@link makeTransportLayer} for a layer
11
- * that provides a recording `Transport`; unit tests provide `Transport`
12
- * directly via `Effect.provideService`.
13
- */
14
- import { Context, Effect, Layer } from "effect";
15
- import type { RpcGroup } from "@effect/rpc";
16
- import type { LocalDaemonError, LocalDaemonRpcs } from "../local-daemon-rpc.js";
17
- import { type ProfileError, type ProfileName } from "../profile.js";
18
- import type { PayloadForTag, SuccessForTag } from "@moltzap/protocol/rpc";
19
- /** The local daemon command group's member `Rpc`s. */
20
- type DaemonRpcs = RpcGroup.Rpcs<typeof LocalDaemonRpcs>;
21
- /** The local command tags the CLI may originate. */
22
- type DaemonCommand = DaemonRpcs["_tag"];
23
- /** Errors any Transport.rpc call may surface. Exhaustive. */
24
- export type TransportError = ServiceUnreachableError | TransportTimeoutError | TransportRpcError | TransportDecodeError | LocalDaemonError;
25
- declare const ServiceUnreachableError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
26
- readonly _tag: "ServiceUnreachableError";
27
- } & Readonly<A>;
28
- /**
29
- * The daemon socket path did not exist or refused connection. Only raised
30
- * by the daemon path.
31
- */
32
- declare class ServiceUnreachableError extends ServiceUnreachableError_base<{
33
- readonly socketPath: string;
34
- readonly cause: unknown;
35
- }> {
36
- }
37
- declare const TransportTimeoutError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
38
- readonly _tag: "TransportTimeoutError";
39
- } & Readonly<A>;
40
- /** RPC exceeded the per-call deadline without a response frame. */
41
- declare class TransportTimeoutError extends TransportTimeoutError_base<{
42
- readonly method: string;
43
- readonly timeoutMs: number;
44
- }> {
45
- }
46
- declare const TransportRpcError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
47
- readonly _tag: "TransportRpcError";
48
- } & Readonly<A>;
49
- /**
50
- * Server returned a typed wire `error` for a request. `tag` is the failing
51
- * method's tagged-error discriminant (e.g. `"TaskRejected"`, `"Forbidden"`) —
52
- * the `_tag` the engine decoded the error against, not a numeric code.
53
- */
54
- export declare class TransportRpcError extends TransportRpcError_base<{
55
- readonly method: string;
56
- readonly tag: string;
57
- readonly message: string;
58
- readonly data?: unknown;
59
- }> {
60
- }
61
- declare const TransportDecodeError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
62
- readonly _tag: "TransportDecodeError";
63
- } & Readonly<A>;
64
- /** Response frame failed to parse or did not match the expected RPC result shape. */
65
- declare class TransportDecodeError extends TransportDecodeError_base<{
66
- readonly method: string;
67
- readonly cause: unknown;
68
- }> {
69
- }
70
- /**
71
- * Transport surface used by every CLI command. One typed per-command call keyed
72
- * by local daemon command.
73
- */
74
- export interface Transport {
75
- readonly command: <Tag extends DaemonCommand>(tag: Tag, payload: PayloadForTag<DaemonRpcs, Tag>) => Effect.Effect<SuccessForTag<DaemonRpcs, Tag>, TransportError>;
76
- }
77
- /** Provides the transport runtime value. */
78
- export declare const transportSchema: Context.Tag<Transport, Transport>;
79
- /**
80
- * Inputs shaping the transport for one CLI invocation. Assembled from
81
- * parsed CLI options and profile config by the CLI entrypoint.
82
- */
83
- export interface TransportOptions {
84
- /** Selected daemon socket path for this invocation. */
85
- readonly socketPath: string;
86
- }
87
- /**
88
- * Build the Layer that provides {@link Transport} for the current invocation.
89
- * @param options Options that control the operation.
90
- * @returns The created transport layer.
91
- */
92
- export declare const makeTransportLayer: (options: TransportOptions) => Layer.Layer<Transport>;
93
- /**
94
- * Convenience for command handlers: pull the Transport tag and call a daemon
95
- * command.
96
- * Every subcommand routes through this helper; command handlers do not
97
- * import `socket-client` directly.
98
- * @param tag Value supplied to the operation.
99
- * @param payload Value supplied to the operation.
100
- * @returns The command result.
101
- */
102
- export declare const command: <Tag extends DaemonCommand>(tag: Tag, payload: PayloadForTag<DaemonRpcs, Tag>) => Effect.Effect<SuccessForTag<DaemonRpcs, Tag>, TransportError, Transport>;
103
- /**
104
- * Uniform error-to-exit adapter for subcommand handlers. Catches every error
105
- * channel, prints `Failed: &lt;msg>` to stderr, and exits non-zero. Uses the
106
- * tagged-error `message` field if present, otherwise the `_tag`, otherwise
107
- * a generic fallback. Shared across every subcommand wrapper so the
108
- * exit-code contract has a single implementation.
109
- *
110
- * No forced `process.exit(0)` — that would truncate piped stdout on large
111
- * payloads.
112
- * @param effect Effect to execute.
113
- * @returns The run handler result.
114
- */
115
- export declare const runHandler: <E extends {
116
- readonly message?: string;
117
- readonly _tag?: string;
118
- }, R>(effect: Effect.Effect<void, E, R>) => Effect.Effect<void, never, R>;
119
- /**
120
- * Lazy resolver invoked by the CLI entrypoint BEFORE constructing the
121
- * transport layer. With `profileName` set, this resolves the named profile
122
- * into the profile agent's daemon socket; otherwise it uses the default
123
- * daemon socket.
124
- * @param parsed Value supplied to the operation.
125
- * @param parsed.profileName Value supplied to the operation.
126
- * @returns The resolve transport inputs result.
127
- */
128
- export declare const resolveTransportInputs: (parsed: {
129
- readonly profileName?: ProfileName;
130
- }) => Effect.Effect<TransportOptions, ProfileError>;
131
- export {};
132
- //# sourceMappingURL=transport.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/cli/transport.ts"],"names":[],"mappings":"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"}
@@ -1,127 +0,0 @@
1
- /**
2
- * CLI transport layer — the single boundary between the command handlers and
3
- * the local daemon socket.
4
- *
5
- * Command handlers pull `Transport` from Effect context; they do NOT open
6
- * sockets or construct clients themselves. The kind of
7
- * transport in effect is decided once at CLI boot by {@link makeTransportLayer}
8
- * and is immutable for the lifetime of the process.
9
- *
10
- * Test seam: integration tests swap {@link makeTransportLayer} for a layer
11
- * that provides a recording `Transport`; unit tests provide `Transport`
12
- * directly via `Effect.provideService`.
13
- */
14
- import { Context, Data, Effect, Layer } from "effect";
15
- import { MoltZapService } from "../service.js";
16
- import { getMoltZapAgentServiceSocketPath } from "../local-paths.js";
17
- import { requestDaemonCommand, SocketRequestError } from "./socket-client.js";
18
- import { resolveProfileRecord, } from "../profile.js";
19
- /**
20
- * The daemon socket path did not exist or refused connection. Only raised
21
- * by the daemon path.
22
- */
23
- class ServiceUnreachableError extends Data.TaggedError("ServiceUnreachableError") {
24
- }
25
- /** RPC exceeded the per-call deadline without a response frame. */
26
- class TransportTimeoutError extends Data.TaggedError("TransportTimeoutError") {
27
- }
28
- /**
29
- * Server returned a typed wire `error` for a request. `tag` is the failing
30
- * method's tagged-error discriminant (e.g. `"TaskRejected"`, `"Forbidden"`) —
31
- * the `_tag` the engine decoded the error against, not a numeric code.
32
- */
33
- export class TransportRpcError extends Data.TaggedError("TransportRpcError") {
34
- }
35
- /** Response frame failed to parse or did not match the expected RPC result shape. */
36
- class TransportDecodeError extends Data.TaggedError("TransportDecodeError") {
37
- }
38
- /** Provides the transport runtime value. */
39
- export const transportSchema = Context.GenericTag("moltzap/cli/Transport");
40
- const DAEMON_TIMEOUT_MS = 10_000;
41
- // Map local socket faults to CLI transport tags. Errors decoded from the daemon
42
- // RPC error channel are already typed tagged errors and pass through unchanged.
43
- const tagDaemonError = (method, err, socketPath) => {
44
- if (!(err instanceof SocketRequestError)) {
45
- return err;
46
- }
47
- const msg = err.message;
48
- if (msg.includes("not running") ||
49
- msg.includes("ENOENT") ||
50
- msg.includes("ECONNREFUSED")) {
51
- return new ServiceUnreachableError({
52
- socketPath,
53
- cause: err,
54
- });
55
- }
56
- if (msg.includes("timed out") || msg.includes("aborted")) {
57
- return new TransportTimeoutError({ method, timeoutMs: DAEMON_TIMEOUT_MS });
58
- }
59
- if (msg.startsWith("Malformed")) {
60
- return new TransportDecodeError({ method, cause: err });
61
- }
62
- return new TransportRpcError({
63
- method,
64
- tag: err._tag,
65
- message: msg,
66
- });
67
- };
68
- const makeDaemonTransport = (socketPath) => ({
69
- command: (tag, payload) => requestDaemonCommand(tag, payload, socketPath).pipe(Effect.mapError((err) => tagDaemonError(tag, err, socketPath))),
70
- });
71
- /**
72
- * Build the Layer that provides {@link Transport} for the current invocation.
73
- * @param options Options that control the operation.
74
- * @returns The created transport layer.
75
- */
76
- export const makeTransportLayer = (options) => Layer.succeed(transportSchema, makeDaemonTransport(options.socketPath));
77
- /**
78
- * Convenience for command handlers: pull the Transport tag and call a daemon
79
- * command.
80
- * Every subcommand routes through this helper; command handlers do not
81
- * import `socket-client` directly.
82
- * @param tag Value supplied to the operation.
83
- * @param payload Value supplied to the operation.
84
- * @returns The command result.
85
- */
86
- export const command = (tag, payload) => Effect.flatMap(transportSchema, (t) => t.command(tag, payload));
87
- /**
88
- * Uniform error-to-exit adapter for subcommand handlers. Catches every error
89
- * channel, prints `Failed: &lt;msg>` to stderr, and exits non-zero. Uses the
90
- * tagged-error `message` field if present, otherwise the `_tag`, otherwise
91
- * a generic fallback. Shared across every subcommand wrapper so the
92
- * exit-code contract has a single implementation.
93
- *
94
- * No forced `process.exit(0)` — that would truncate piped stdout on large
95
- * payloads.
96
- * @param effect Effect to execute.
97
- * @returns The run handler result.
98
- */
99
- export const runHandler = (effect) => effect.pipe(Effect.catchAll((err) => {
100
- const msg = err.message !== undefined && err.message !== ""
101
- ? err.message
102
- : (err._tag ?? "unknown error");
103
- return Effect.logError(`Failed: ${msg}`).pipe(Effect.zipRight(Effect.sync(() => process.exit(1))));
104
- }));
105
- /**
106
- * Lazy resolver invoked by the CLI entrypoint BEFORE constructing the
107
- * transport layer. With `profileName` set, this resolves the named profile
108
- * into the profile agent's daemon socket; otherwise it uses the default
109
- * daemon socket.
110
- * @param parsed Value supplied to the operation.
111
- * @param parsed.profileName Value supplied to the operation.
112
- * @returns The resolve transport inputs result.
113
- */
114
- export const resolveTransportInputs = (parsed) => Effect.gen(function* () {
115
- // ─── Branch A: profile ─────────────────────────────────────────────────
116
- if (parsed.profileName !== undefined) {
117
- const record = yield* resolveProfileRecord(parsed.profileName);
118
- return {
119
- socketPath: getMoltZapAgentServiceSocketPath(record.agentId),
120
- };
121
- }
122
- // ─── Branch B: daemon ──────────────────────────────────────────────────
123
- return {
124
- socketPath: MoltZapService.SOCKET_PATH,
125
- };
126
- }).pipe(Effect.withSpan("resolveTransportInputs"));
127
- //# sourceMappingURL=transport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/cli/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE9E,OAAO,EACL,oBAAoB,GAGrB,MAAM,eAAe,CAAC;AAmBvB;;;GAGG;AACH,MAAM,uBAAwB,SAAQ,IAAI,CAAC,WAAW,CACpD,yBAAyB,CAIzB;CAAG;AAEL,mEAAmE;AACnE,MAAM,qBAAsB,SAAQ,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAG1E;CAAG;AAEL;;;;GAIG;AACH,MAAM,OAAO,iBAAkB,SAAQ,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAKzE;CAAG;AAEL,qFAAqF;AACrF,MAAM,oBAAqB,SAAQ,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAGxE;CAAG;AAeL,4CAA4C;AAC5C,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,CAC/C,uBAAuB,CACxB,CAAC;AAaF,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEjC,gFAAgF;AAChF,gFAAgF;AAChF,MAAM,cAAc,GAAG,CACrB,MAAc,EACd,GAA0C,EAC1C,UAAkB,EACF,EAAE;IAClB,IAAI,CAAC,CAAC,GAAG,YAAY,kBAAkB,CAAC,EAAE,CAAC;QACzC,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;IACxB,IACE,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC3B,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACtB,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAC5B,CAAC;QACD,OAAO,IAAI,uBAAuB,CAAC;YACjC,UAAU;YACV,KAAK,EAAE,GAAG;SACX,CAAC,CAAC;IACL,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACzD,OAAO,IAAI,qBAAqB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,IAAI,iBAAiB,CAAC;QAC3B,MAAM;QACN,GAAG,EAAE,GAAG,CAAC,IAAI;QACb,OAAO,EAAE,GAAG;KACb,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,UAAkB,EAAa,EAAE,CAAC,CAAC;IAC9D,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CACxB,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,IAAI,CACjD,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAC/D;CACJ,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,OAAyB,EACD,EAAE,CAC1B,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;AAE1E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,GAAQ,EACR,OAAuC,EACmC,EAAE,CAC5E,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AAElE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAIxB,MAAiC,EACF,EAAE,CACjC,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE;IACtB,MAAM,GAAG,GACP,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,KAAK,EAAE;QAC7C,CAAC,CAAC,GAAG,CAAC,OAAO;QACb,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,eAAe,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,IAAI,CAC3C,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CACpD,CAAC;AACJ,CAAC,CAAC,CACH,CAAC;AAEJ;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAEtC,EAAiD,EAAE,CAClD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,0EAA0E;IAC1E,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC/D,OAAO;YACL,UAAU,EAAE,gCAAgC,CAAC,MAAM,CAAC,OAAO,CAAC;SAC7D,CAAC;IACJ,CAAC;IACD,0EAA0E;IAC1E,OAAO;QACL,UAAU,EAAE,cAAc,CAAC,WAAW;KACvC,CAAC;AACJ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC"}
package/dist/config.d.ts DELETED
@@ -1,33 +0,0 @@
1
- import { Effect } from "effect";
2
- import type { AgentId, AgentKey } from "@moltzap/protocol/identity";
3
- import { type ServerBaseUrl as ServerBaseUrlType } from "@moltzap/protocol/network";
4
- import { type ProfileInvalidNameError, ProfileNotFoundError } from "./profile.js";
5
- /** Describes moltzap service config. */
6
- export interface MoltzapServiceConfig {
7
- readonly serverUrl: ServerBaseUrlType;
8
- readonly agentKey: AgentKey;
9
- readonly agentId: AgentId;
10
- }
11
- /** Represents service config error conditions. */
12
- export type ServiceConfigError = ConfigReadError | ProfileInvalidNameError | ProfileNotFoundError;
13
- declare const ConfigReadError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
14
- readonly _tag: "ConfigReadError";
15
- } & Readonly<A>;
16
- declare class ConfigReadError extends ConfigReadError_base<{
17
- readonly cause: unknown;
18
- readonly message: string;
19
- readonly path: string;
20
- }> {
21
- }
22
- /** Canonical path-free server address from the environment or default. */
23
- export declare const getServerUrl: Effect.Effect<ServerBaseUrlType, ConfigReadError>;
24
- /** HTTP control-plane origin derived from the same canonical address. */
25
- export declare const getHttpUrl: Effect.Effect<string, ConfigReadError>;
26
- /**
27
- * Provides the load service config runtime value.
28
- * @param profileName Value supplied to the operation.
29
- * @returns The load service config result.
30
- */
31
- export declare const loadServiceConfig: (profileName: string) => Effect.Effect<MoltzapServiceConfig, ServiceConfigError>;
32
- export {};
33
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,MAAM,EAAkB,MAAM,QAAQ,CAAC;AAC9E,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAIL,KAAK,aAAa,IAAI,iBAAiB,EACxC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAIL,KAAK,uBAAuB,EAC5B,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAEtB,wCAAwC;AACxC,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAKD,kDAAkD;AAClD,MAAM,MAAM,kBAAkB,GAC1B,eAAe,GACf,uBAAuB,GACvB,oBAAoB,CAAC;;;;AAEzB,cAAM,eAAgB,SAAQ,qBAAoC;IAChE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;CAAG;AA6BL,0EAA0E;AAC1E,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,eAAe,CAMxE,CAAC;AAEJ,yEAAyE;AACzE,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAClB,CAAC;AAE7C;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,gBACf,MAAM,KAClB,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,kBAAkB,CAgBV,CAAC"}
package/dist/config.js DELETED
@@ -1,45 +0,0 @@
1
- import { Config, ConfigProvider, Data, Effect, Option, Schema } from "effect";
2
- import { httpBaseUrl, serverBaseUrl, serverBaseUrlSchema, } from "@moltzap/protocol/network";
3
- import { loadLayeredConfig, parseProfileName, ProfileNotFoundError, } from "./profile.js";
4
- const DEFAULT_SERVER_URL = serverBaseUrl("wss://api.moltzap.xyz");
5
- const SERVER_URL_ENV = "MOLTZAP_SERVER_URL";
6
- class ConfigReadError extends Data.TaggedError("ConfigReadError") {
7
- }
8
- function describeCause(cause) {
9
- return cause instanceof Error ? cause.message : String(cause);
10
- }
11
- function configReadError(configPath, cause, detail) {
12
- return new ConfigReadError({
13
- cause,
14
- message: `Failed to ${detail} ${configPath}: ${describeCause(cause)}`,
15
- path: configPath,
16
- });
17
- }
18
- function configReadErrorFromProfile(error) {
19
- return configReadError(error.path, error.cause, "read");
20
- }
21
- const configuredServerUrl = Config.option(Config.string(SERVER_URL_ENV)).pipe(Effect.withConfigProvider(ConfigProvider.fromEnv()), Effect.map((value) => Option.getOrElse(value, () => DEFAULT_SERVER_URL)));
22
- /** Canonical path-free server address from the environment or default. */
23
- export const getServerUrl = configuredServerUrl.pipe(Effect.flatMap(Schema.decodeUnknown(serverBaseUrlSchema)), Effect.mapError((cause) => configReadError(SERVER_URL_ENV, cause, "read and validate")));
24
- /** HTTP control-plane origin derived from the same canonical address. */
25
- export const getHttpUrl = getServerUrl.pipe(Effect.map(httpBaseUrl));
26
- /**
27
- * Provides the load service config runtime value.
28
- * @param profileName Value supplied to the operation.
29
- * @returns The load service config result.
30
- */
31
- export const loadServiceConfig = (profileName) => Effect.gen(function* () {
32
- const name = yield* parseProfileName(profileName);
33
- const layered = yield* loadLayeredConfig.pipe(Effect.mapError(configReadErrorFromProfile));
34
- const profile = layered.profiles.get(name);
35
- if (profile === undefined) {
36
- return yield* new ProfileNotFoundError({ name });
37
- }
38
- const serverUrl = yield* getServerUrl;
39
- return {
40
- serverUrl,
41
- agentKey: profile.apiKey,
42
- agentId: profile.agentId,
43
- };
44
- }).pipe(Effect.withSpan("loadServiceConfig"));
45
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}