@moltzap/client 2026.529.0 → 2026.718.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 (363) hide show
  1. package/dist/agent-client.d.ts +2 -65
  2. package/dist/agent-client.d.ts.map +1 -1
  3. package/dist/agent-client.js +1 -286
  4. package/dist/agent-client.js.map +1 -1
  5. package/dist/app-client.d.ts +3 -0
  6. package/dist/app-client.d.ts.map +1 -0
  7. package/dist/app-client.js +2 -0
  8. package/dist/app-client.js.map +1 -0
  9. package/dist/auth.d.ts +6 -15
  10. package/dist/auth.d.ts.map +1 -1
  11. package/dist/auth.js +12 -16
  12. package/dist/auth.js.map +1 -1
  13. package/dist/channel-base/format-cross-conv.d.ts +10 -15
  14. package/dist/channel-base/format-cross-conv.d.ts.map +1 -1
  15. package/dist/channel-base/format-cross-conv.js +10 -15
  16. package/dist/channel-base/format-cross-conv.js.map +1 -1
  17. package/dist/channel-base/format-group-block.d.ts +8 -10
  18. package/dist/channel-base/format-group-block.d.ts.map +1 -1
  19. package/dist/channel-base/format-group-block.js +8 -10
  20. package/dist/channel-base/format-group-block.js.map +1 -1
  21. package/dist/channel-base/index.d.ts +3 -62
  22. package/dist/channel-base/index.d.ts.map +1 -1
  23. package/dist/channel-base/index.js +2 -65
  24. package/dist/channel-base/index.js.map +1 -1
  25. package/dist/channel-base/lease-guard.d.ts +0 -2
  26. package/dist/channel-base/lease-guard.d.ts.map +1 -1
  27. package/dist/channel-base/lease-guard.js +0 -2
  28. package/dist/channel-base/lease-guard.js.map +1 -1
  29. package/dist/channel-base/lease-store.d.ts +2 -3
  30. package/dist/channel-base/lease-store.d.ts.map +1 -1
  31. package/dist/channel-base/lease-store.js +2 -3
  32. package/dist/channel-base/lease-store.js.map +1 -1
  33. package/dist/channel-base/lease.d.ts +25 -31
  34. package/dist/channel-base/lease.d.ts.map +1 -1
  35. package/dist/channel-base/lease.js +29 -45
  36. package/dist/channel-base/lease.js.map +1 -1
  37. package/dist/channel-core-enrichment.d.ts +1 -1
  38. package/dist/channel-core-enrichment.d.ts.map +1 -1
  39. package/dist/channel-core-test-support.d.ts +17 -11
  40. package/dist/channel-core-test-support.d.ts.map +1 -1
  41. package/dist/channel-core-test-support.js +5 -6
  42. package/dist/channel-core-test-support.js.map +1 -1
  43. package/dist/channel-core.d.ts +24 -29
  44. package/dist/channel-core.d.ts.map +1 -1
  45. package/dist/channel-core.js +18 -42
  46. package/dist/channel-core.js.map +1 -1
  47. package/dist/cli/commands/agents.d.ts +3 -6
  48. package/dist/cli/commands/agents.d.ts.map +1 -1
  49. package/dist/cli/commands/agents.js +14 -50
  50. package/dist/cli/commands/agents.js.map +1 -1
  51. package/dist/cli/commands/contacts.d.ts +5 -6
  52. package/dist/cli/commands/contacts.d.ts.map +1 -1
  53. package/dist/cli/commands/contacts.js +15 -43
  54. package/dist/cli/commands/contacts.js.map +1 -1
  55. package/dist/cli/commands/conversations.d.ts +8 -18
  56. package/dist/cli/commands/conversations.d.ts.map +1 -1
  57. package/dist/cli/commands/conversations.js +14 -65
  58. package/dist/cli/commands/conversations.js.map +1 -1
  59. package/dist/cli/commands/messages.d.ts +13 -35
  60. package/dist/cli/commands/messages.d.ts.map +1 -1
  61. package/dist/cli/commands/messages.js +21 -46
  62. package/dist/cli/commands/messages.js.map +1 -1
  63. package/dist/cli/commands/register.d.ts +10 -12
  64. package/dist/cli/commands/register.d.ts.map +1 -1
  65. package/dist/cli/commands/register.js +47 -133
  66. package/dist/cli/commands/register.js.map +1 -1
  67. package/dist/cli/commands/send.d.ts +23 -36
  68. package/dist/cli/commands/send.d.ts.map +1 -1
  69. package/dist/cli/commands/send.js +25 -72
  70. package/dist/cli/commands/send.js.map +1 -1
  71. package/dist/cli/commands/start.d.ts +10 -124
  72. package/dist/cli/commands/start.d.ts.map +1 -1
  73. package/dist/cli/commands/start.js +28 -510
  74. package/dist/cli/commands/start.js.map +1 -1
  75. package/dist/cli/commands/status.d.ts +1 -1
  76. package/dist/cli/commands/status.d.ts.map +1 -1
  77. package/dist/cli/commands/status.js +8 -9
  78. package/dist/cli/commands/status.js.map +1 -1
  79. package/dist/cli/commands/test-transport.d.ts +12 -5
  80. package/dist/cli/commands/test-transport.d.ts.map +1 -1
  81. package/dist/cli/commands/test-transport.js +15 -15
  82. package/dist/cli/commands/test-transport.js.map +1 -1
  83. package/dist/cli/index.js +13 -40
  84. package/dist/cli/index.js.map +1 -1
  85. package/dist/cli/output.d.ts +4 -0
  86. package/dist/cli/output.d.ts.map +1 -0
  87. package/dist/cli/output.js +9 -0
  88. package/dist/cli/output.js.map +1 -0
  89. package/dist/cli/socket-client.d.ts +7 -14
  90. package/dist/cli/socket-client.d.ts.map +1 -1
  91. package/dist/cli/socket-client.js +15 -38
  92. package/dist/cli/socket-client.js.map +1 -1
  93. package/dist/cli/transport.d.ts +53 -116
  94. package/dist/cli/transport.d.ts.map +1 -1
  95. package/dist/cli/transport.js +45 -295
  96. package/dist/cli/transport.js.map +1 -1
  97. package/dist/config.d.ts +24 -0
  98. package/dist/config.d.ts.map +1 -0
  99. package/dist/config.js +35 -0
  100. package/dist/config.js.map +1 -0
  101. package/dist/config.test-utils.d.ts +13 -0
  102. package/dist/config.test-utils.d.ts.map +1 -0
  103. package/dist/config.test-utils.js +46 -0
  104. package/dist/config.test-utils.js.map +1 -0
  105. package/dist/index.d.ts +3 -8
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +2 -12
  108. package/dist/index.js.map +1 -1
  109. package/dist/local-daemon-rpc.d.ts +259 -8
  110. package/dist/local-daemon-rpc.d.ts.map +1 -1
  111. package/dist/local-daemon-rpc.js +189 -12
  112. package/dist/local-daemon-rpc.js.map +1 -1
  113. package/dist/{runtime/local-history.d.ts → local-history.d.ts} +16 -21
  114. package/dist/local-history.d.ts.map +1 -0
  115. package/dist/{runtime/local-history.js → local-history.js} +16 -21
  116. package/dist/local-history.js.map +1 -0
  117. package/dist/local-paths.d.ts +0 -2
  118. package/dist/local-paths.d.ts.map +1 -1
  119. package/dist/local-paths.js +0 -4
  120. package/dist/local-paths.js.map +1 -1
  121. package/dist/local-socket-server.d.ts +22 -0
  122. package/dist/local-socket-server.d.ts.map +1 -0
  123. package/dist/{runtime/local-socket-server.js → local-socket-server.js} +4 -9
  124. package/dist/local-socket-server.js.map +1 -0
  125. package/dist/message-rendering.d.ts +3 -0
  126. package/dist/message-rendering.d.ts.map +1 -0
  127. package/dist/message-rendering.js +7 -0
  128. package/dist/message-rendering.js.map +1 -0
  129. package/dist/notification/__tests__/{snapshot-semantics.types-check.d.ts → subscribe-signatures.types-check.d.ts} +1 -1
  130. package/dist/notification/__tests__/subscribe-signatures.types-check.d.ts.map +1 -0
  131. package/dist/notification/__tests__/subscribe-signatures.types-check.js +55 -0
  132. package/dist/notification/__tests__/subscribe-signatures.types-check.js.map +1 -0
  133. package/dist/notification/errors.d.ts +18 -6
  134. package/dist/notification/errors.d.ts.map +1 -1
  135. package/dist/notification/errors.js +13 -15
  136. package/dist/notification/errors.js.map +1 -1
  137. package/dist/notification/index.d.ts +5 -0
  138. package/dist/notification/index.d.ts.map +1 -0
  139. package/dist/notification/index.js +5 -0
  140. package/dist/notification/index.js.map +1 -0
  141. package/dist/notification/stream.d.ts +33 -49
  142. package/dist/notification/stream.d.ts.map +1 -1
  143. package/dist/notification/stream.js +33 -76
  144. package/dist/notification/stream.js.map +1 -1
  145. package/dist/pagination.d.ts +20 -10
  146. package/dist/pagination.d.ts.map +1 -1
  147. package/dist/pagination.js +8 -9
  148. package/dist/pagination.js.map +1 -1
  149. package/dist/profile.d.ts +92 -0
  150. package/dist/profile.d.ts.map +1 -0
  151. package/dist/profile.js +149 -0
  152. package/dist/profile.js.map +1 -0
  153. package/dist/refs.d.ts.map +1 -0
  154. package/dist/refs.js.map +1 -0
  155. package/dist/service-archive-purge.d.ts +2 -1
  156. package/dist/service-archive-purge.d.ts.map +1 -1
  157. package/dist/service-archive-purge.js.map +1 -1
  158. package/dist/{runtime/service-helpers.d.ts → service-helpers.d.ts} +5 -11
  159. package/dist/service-helpers.d.ts.map +1 -0
  160. package/dist/{runtime/service-helpers.js → service-helpers.js} +2 -9
  161. package/dist/service-helpers.js.map +1 -0
  162. package/dist/service-local-daemon.d.ts +22 -0
  163. package/dist/service-local-daemon.d.ts.map +1 -0
  164. package/dist/service-local-daemon.js +185 -0
  165. package/dist/service-local-daemon.js.map +1 -0
  166. package/dist/service.d.ts +65 -57
  167. package/dist/service.d.ts.map +1 -1
  168. package/dist/service.js +205 -156
  169. package/dist/service.js.map +1 -1
  170. package/dist/test-utils/channel-service-fixture.d.ts +3 -2
  171. package/dist/test-utils/channel-service-fixture.d.ts.map +1 -1
  172. package/dist/test-utils/channel-service-fixture.js.map +1 -1
  173. package/dist/test-utils/fake-service.d.ts +26 -18
  174. package/dist/test-utils/fake-service.d.ts.map +1 -1
  175. package/dist/test-utils/fake-service.js +28 -42
  176. package/dist/test-utils/fake-service.js.map +1 -1
  177. package/dist/test-utils/ids.d.ts +3 -1
  178. package/dist/test-utils/ids.d.ts.map +1 -1
  179. package/dist/test-utils/ids.js.map +1 -1
  180. package/dist/test-utils/index.d.ts +9 -2
  181. package/dist/test-utils/index.d.ts.map +1 -1
  182. package/dist/test-utils/index.js +8 -1
  183. package/dist/test-utils/index.js.map +1 -1
  184. package/dist/test-utils/standalone-provisioning.d.ts +17 -0
  185. package/dist/test-utils/standalone-provisioning.d.ts.map +1 -0
  186. package/dist/test-utils/standalone-provisioning.js +14 -0
  187. package/dist/test-utils/standalone-provisioning.js.map +1 -0
  188. package/dist/tsconfig.tsbuildinfo +1 -0
  189. package/package.json +49 -27
  190. package/dist/auth.test.d.ts +0 -2
  191. package/dist/auth.test.d.ts.map +0 -1
  192. package/dist/auth.test.js +0 -121
  193. package/dist/auth.test.js.map +0 -1
  194. package/dist/channel-core-context.test.d.ts +0 -2
  195. package/dist/channel-core-context.test.d.ts.map +0 -1
  196. package/dist/channel-core-context.test.js +0 -342
  197. package/dist/channel-core-context.test.js.map +0 -1
  198. package/dist/channel-core-dispatch.test.d.ts +0 -2
  199. package/dist/channel-core-dispatch.test.d.ts.map +0 -1
  200. package/dist/channel-core-dispatch.test.js +0 -557
  201. package/dist/channel-core-dispatch.test.js.map +0 -1
  202. package/dist/channel-core.test.d.ts +0 -2
  203. package/dist/channel-core.test.d.ts.map +0 -1
  204. package/dist/channel-core.test.js +0 -232
  205. package/dist/channel-core.test.js.map +0 -1
  206. package/dist/cli/__tests__/cli-multi-agent.int.test.d.ts +0 -2
  207. package/dist/cli/__tests__/cli-multi-agent.int.test.d.ts.map +0 -1
  208. package/dist/cli/__tests__/cli-multi-agent.int.test.js +0 -132
  209. package/dist/cli/__tests__/cli-multi-agent.int.test.js.map +0 -1
  210. package/dist/cli/commands/invite.d.ts +0 -7
  211. package/dist/cli/commands/invite.d.ts.map +0 -1
  212. package/dist/cli/commands/invite.js +0 -11
  213. package/dist/cli/commands/invite.js.map +0 -1
  214. package/dist/cli/commands/messages.test.d.ts +0 -2
  215. package/dist/cli/commands/messages.test.d.ts.map +0 -1
  216. package/dist/cli/commands/messages.test.js +0 -99
  217. package/dist/cli/commands/messages.test.js.map +0 -1
  218. package/dist/cli/commands/ping.d.ts +0 -7
  219. package/dist/cli/commands/ping.d.ts.map +0 -1
  220. package/dist/cli/commands/ping.js +0 -37
  221. package/dist/cli/commands/ping.js.map +0 -1
  222. package/dist/cli/commands/register.test.d.ts +0 -2
  223. package/dist/cli/commands/register.test.d.ts.map +0 -1
  224. package/dist/cli/commands/register.test.js +0 -91
  225. package/dist/cli/commands/register.test.js.map +0 -1
  226. package/dist/cli/commands/send.test.d.ts +0 -2
  227. package/dist/cli/commands/send.test.d.ts.map +0 -1
  228. package/dist/cli/commands/send.test.js +0 -59
  229. package/dist/cli/commands/send.test.js.map +0 -1
  230. package/dist/cli/commands/start.test.d.ts +0 -2
  231. package/dist/cli/commands/start.test.d.ts.map +0 -1
  232. package/dist/cli/commands/start.test.js +0 -624
  233. package/dist/cli/commands/start.test.js.map +0 -1
  234. package/dist/cli/commands/whoami.d.ts +0 -8
  235. package/dist/cli/commands/whoami.d.ts.map +0 -1
  236. package/dist/cli/commands/whoami.js +0 -28
  237. package/dist/cli/commands/whoami.js.map +0 -1
  238. package/dist/cli/config.d.ts +0 -66
  239. package/dist/cli/config.d.ts.map +0 -1
  240. package/dist/cli/config.js +0 -148
  241. package/dist/cli/config.js.map +0 -1
  242. package/dist/cli/config.test.d.ts +0 -2
  243. package/dist/cli/config.test.d.ts.map +0 -1
  244. package/dist/cli/config.test.js +0 -89
  245. package/dist/cli/config.test.js.map +0 -1
  246. package/dist/cli/http-client.d.ts +0 -17
  247. package/dist/cli/http-client.d.ts.map +0 -1
  248. package/dist/cli/http-client.js +0 -38
  249. package/dist/cli/http-client.js.map +0 -1
  250. package/dist/cli/profile.d.ts +0 -126
  251. package/dist/cli/profile.d.ts.map +0 -1
  252. package/dist/cli/profile.js +0 -231
  253. package/dist/cli/profile.js.map +0 -1
  254. package/dist/cli/profile.test.d.ts +0 -2
  255. package/dist/cli/profile.test.d.ts.map +0 -1
  256. package/dist/cli/profile.test.js +0 -369
  257. package/dist/cli/profile.test.js.map +0 -1
  258. package/dist/cli/transport.test.d.ts +0 -2
  259. package/dist/cli/transport.test.d.ts.map +0 -1
  260. package/dist/cli/transport.test.js +0 -312
  261. package/dist/cli/transport.test.js.map +0 -1
  262. package/dist/notification/__tests__/filter-equivalence.test.d.ts +0 -2
  263. package/dist/notification/__tests__/filter-equivalence.test.d.ts.map +0 -1
  264. package/dist/notification/__tests__/filter-equivalence.test.js +0 -123
  265. package/dist/notification/__tests__/filter-equivalence.test.js.map +0 -1
  266. package/dist/notification/__tests__/snapshot-semantics.test.d.ts +0 -2
  267. package/dist/notification/__tests__/snapshot-semantics.test.d.ts.map +0 -1
  268. package/dist/notification/__tests__/snapshot-semantics.test.js +0 -261
  269. package/dist/notification/__tests__/snapshot-semantics.test.js.map +0 -1
  270. package/dist/notification/__tests__/snapshot-semantics.types-check.d.ts.map +0 -1
  271. package/dist/notification/__tests__/snapshot-semantics.types-check.js +0 -62
  272. package/dist/notification/__tests__/snapshot-semantics.types-check.js.map +0 -1
  273. package/dist/pagination.test.d.ts +0 -2
  274. package/dist/pagination.test.d.ts.map +0 -1
  275. package/dist/pagination.test.js +0 -72
  276. package/dist/pagination.test.js.map +0 -1
  277. package/dist/runtime/close-info.d.ts +0 -84
  278. package/dist/runtime/close-info.d.ts.map +0 -1
  279. package/dist/runtime/close-info.js +0 -102
  280. package/dist/runtime/close-info.js.map +0 -1
  281. package/dist/runtime/close-info.test.d.ts +0 -2
  282. package/dist/runtime/close-info.test.d.ts.map +0 -1
  283. package/dist/runtime/close-info.test.js +0 -109
  284. package/dist/runtime/close-info.test.js.map +0 -1
  285. package/dist/runtime/errors.d.ts +0 -11
  286. package/dist/runtime/errors.d.ts.map +0 -1
  287. package/dist/runtime/errors.js +0 -41
  288. package/dist/runtime/errors.js.map +0 -1
  289. package/dist/runtime/errors.test.d.ts +0 -2
  290. package/dist/runtime/errors.test.d.ts.map +0 -1
  291. package/dist/runtime/errors.test.js +0 -79
  292. package/dist/runtime/errors.test.js.map +0 -1
  293. package/dist/runtime/frame.d.ts +0 -8
  294. package/dist/runtime/frame.d.ts.map +0 -1
  295. package/dist/runtime/frame.js +0 -12
  296. package/dist/runtime/frame.js.map +0 -1
  297. package/dist/runtime/frame.test.d.ts +0 -2
  298. package/dist/runtime/frame.test.d.ts.map +0 -1
  299. package/dist/runtime/frame.test.js +0 -59
  300. package/dist/runtime/frame.test.js.map +0 -1
  301. package/dist/runtime/index.d.ts +0 -10
  302. package/dist/runtime/index.d.ts.map +0 -1
  303. package/dist/runtime/index.js +0 -9
  304. package/dist/runtime/index.js.map +0 -1
  305. package/dist/runtime/local-history.d.ts.map +0 -1
  306. package/dist/runtime/local-history.js.map +0 -1
  307. package/dist/runtime/local-service-commands.d.ts +0 -26
  308. package/dist/runtime/local-service-commands.d.ts.map +0 -1
  309. package/dist/runtime/local-service-commands.js +0 -29
  310. package/dist/runtime/local-service-commands.js.map +0 -1
  311. package/dist/runtime/local-socket-server.d.ts +0 -20
  312. package/dist/runtime/local-socket-server.d.ts.map +0 -1
  313. package/dist/runtime/local-socket-server.js.map +0 -1
  314. package/dist/runtime/refs.d.ts.map +0 -1
  315. package/dist/runtime/refs.js.map +0 -1
  316. package/dist/runtime/runtime.test.d.ts +0 -2
  317. package/dist/runtime/runtime.test.d.ts.map +0 -1
  318. package/dist/runtime/runtime.test.js +0 -37
  319. package/dist/runtime/runtime.test.js.map +0 -1
  320. package/dist/runtime/service-helpers.d.ts.map +0 -1
  321. package/dist/runtime/service-helpers.js.map +0 -1
  322. package/dist/runtime/service-teardown.d.ts +0 -5
  323. package/dist/runtime/service-teardown.d.ts.map +0 -1
  324. package/dist/runtime/service-teardown.js +0 -36
  325. package/dist/runtime/service-teardown.js.map +0 -1
  326. package/dist/runtime/service-teardown.test.d.ts +0 -2
  327. package/dist/runtime/service-teardown.test.d.ts.map +0 -1
  328. package/dist/runtime/service-teardown.test.js +0 -80
  329. package/dist/runtime/service-teardown.test.js.map +0 -1
  330. package/dist/runtime/subscribers.d.ts +0 -152
  331. package/dist/runtime/subscribers.d.ts.map +0 -1
  332. package/dist/runtime/subscribers.js +0 -222
  333. package/dist/runtime/subscribers.js.map +0 -1
  334. package/dist/service-socket-path.test.d.ts +0 -2
  335. package/dist/service-socket-path.test.d.ts.map +0 -1
  336. package/dist/service-socket-path.test.js +0 -87
  337. package/dist/service-socket-path.test.js.map +0 -1
  338. package/dist/service.test.d.ts +0 -2
  339. package/dist/service.test.d.ts.map +0 -1
  340. package/dist/service.test.js +0 -796
  341. package/dist/service.test.js.map +0 -1
  342. package/dist/test/index.d.ts +0 -47
  343. package/dist/test/index.d.ts.map +0 -1
  344. package/dist/test/index.js +0 -39
  345. package/dist/test/index.js.map +0 -1
  346. package/dist/test-utils/conformance-adapter.d.ts +0 -40
  347. package/dist/test-utils/conformance-adapter.d.ts.map +0 -1
  348. package/dist/test-utils/conformance-adapter.js +0 -250
  349. package/dist/test-utils/conformance-adapter.js.map +0 -1
  350. package/dist/tm-client-test-support.d.ts +0 -184
  351. package/dist/tm-client-test-support.d.ts.map +0 -1
  352. package/dist/tm-client-test-support.js +0 -466
  353. package/dist/tm-client-test-support.js.map +0 -1
  354. package/dist/tm-client.d.ts +0 -269
  355. package/dist/tm-client.d.ts.map +0 -1
  356. package/dist/tm-client.js +0 -518
  357. package/dist/tm-client.js.map +0 -1
  358. package/dist/tm-client.test.d.ts +0 -2
  359. package/dist/tm-client.test.d.ts.map +0 -1
  360. package/dist/tm-client.test.js +0 -490
  361. package/dist/tm-client.test.js.map +0 -1
  362. /package/dist/{runtime/refs.d.ts → refs.d.ts} +0 -0
  363. /package/dist/{runtime/refs.js → refs.js} +0 -0
@@ -1,312 +0,0 @@
1
- /**
2
- * Unit tests for the transport layer — pure decision table + composition-
3
- * boundary checks. Integration coverage of the direct-WS branch lives in
4
- * the E2E fixture (`__tests__/cli-multi-agent.int.test.ts`).
5
- */
6
- import { Cause, Effect, Exit, Option } from "effect";
7
- import * as fc from "fast-check";
8
- import { it as effectIt } from "@effect/vitest";
9
- import { afterEach, beforeEach, describe, expect, vi } from "vitest";
10
- import { NotConnectedError, RpcServerError, RpcTimeoutError, } from "@moltzap/protocol";
11
- import { decideTransport, makeTransportLayer, resolveTransportInputs, tagWsError, Transport, TransportDecodeError, TransportRpcError, ServiceUnreachableError, TransportTimeoutError, } from "./transport.js";
12
- import { TaskList, TaskRejectedError } from "@moltzap/protocol";
13
- const it = effectIt.effect;
14
- const SESSION_NOT_FOUND_CODE = -32001;
15
- const RPC_TIMEOUT_MS = 15_000;
16
- const SERVER_URL = "wss://example.test";
17
- const TEST_SOCKET_PATH = "/var/run/moltzap-test.sock";
18
- const USE_DIRECT_TAG = "UseDirect";
19
- const USE_DAEMON_TAG = "UseDaemon";
20
- const AS_FLAG_REASON = "as-flag";
21
- const PROFILE_REASON = "profile";
22
- const ENV_FALLBACK_REASON = "env-fallback";
23
- const TRANSPORT_RPC_ERROR_TAG = "TransportRpcError";
24
- const SERVICE_UNREACHABLE_ERROR_TAG = "ServiceUnreachableError";
25
- const TRANSPORT_DECODE_ERROR_TAG = "TransportDecodeError";
26
- const SESSION_NOT_FOUND_MESSAGE = "session not found";
27
- const ITEM_NOT_FOUND_MESSAGE = "item not found";
28
- const NOT_CONNECTED_MESSAGE = "not connected";
29
- const UNKNOWN_ERROR_MESSAGE = "some unknown error";
30
- const IMPERSONATE_KEY = "key-1";
31
- const PROFILE_KEY = "pk-1";
32
- const ENV_KEY = "env-key";
33
- const LEAKED_ENV_KEY = "leaked-key";
34
- const EXPLICIT_KEY = "explicit-key";
35
- const OVERRIDE_SERVER_URL = "wss://override.test";
36
- const DIRECT_TEST_KEY = "test-key";
37
- const DIRECT_TEST_SERVER_URL = "wss://test.example";
38
- function makeMockWsClient() {
39
- return {
40
- connect: () => Effect.void,
41
- sendRpc: () => Effect.fail(new RpcServerError({
42
- code: SESSION_NOT_FOUND_CODE,
43
- message: ITEM_NOT_FOUND_MESSAGE,
44
- })),
45
- close: () => Effect.void,
46
- };
47
- }
48
- /**
49
- * Module-level mock so transport.ts's `new MoltZapAgentClient(...)` call is
50
- * intercepted for the composed-rpc test below. Existing tests (decideTransport,
51
- * tagWsError, resolveTransportInputs) do not exercise the ws-client path, so
52
- * the mock is a no-op for them.
53
- */
54
- vi.mock("../agent-client.js", () => ({
55
- MoltZapAgentClient: vi.fn().mockImplementation(makeMockWsClient),
56
- }));
57
- const makeOpts = (over = {}) => ({
58
- serverUrl: SERVER_URL,
59
- ...over,
60
- });
61
- const unreachableDaemon = () => Effect.succeed(false);
62
- const reachableDaemon = () => Effect.succeed(true);
63
- function countedProbe(counter) {
64
- return () => Effect.sync(() => {
65
- counter.count++;
66
- return true;
67
- });
68
- }
69
- function useDirectAsFlag() {
70
- return Effect.gen(function* () {
71
- const probe = { count: 0 };
72
- const decision = yield* decideTransport(makeOpts({
73
- impersonateKey: IMPERSONATE_KEY,
74
- probeDaemon: countedProbe(probe),
75
- }));
76
- expect(decision).toEqual({ _tag: USE_DIRECT_TAG, reason: AS_FLAG_REASON });
77
- expect(probe.count).toBe(0);
78
- });
79
- }
80
- function useDirectProfile() {
81
- return Effect.gen(function* () {
82
- const decision = yield* decideTransport(makeOpts({ profileKey: PROFILE_KEY }));
83
- expect(decision).toEqual({ _tag: USE_DIRECT_TAG, reason: PROFILE_REASON });
84
- });
85
- }
86
- function useDirectEnvFallback() {
87
- return Effect.gen(function* () {
88
- const decision = yield* decideTransport(makeOpts({ envFallbackKey: ENV_KEY, probeDaemon: unreachableDaemon }));
89
- expect(decision).toEqual({
90
- _tag: USE_DIRECT_TAG,
91
- reason: ENV_FALLBACK_REASON,
92
- });
93
- });
94
- }
95
- function useDaemonWhenReachable() {
96
- return Effect.gen(function* () {
97
- const decision = yield* decideTransport(makeOpts({
98
- envFallbackKey: ENV_KEY,
99
- socketPath: TEST_SOCKET_PATH,
100
- probeDaemon: reachableDaemon,
101
- }));
102
- expect(decision._tag).toBe(USE_DAEMON_TAG);
103
- });
104
- }
105
- function useDaemonByDefault() {
106
- return Effect.gen(function* () {
107
- const decision = yield* decideTransport(makeOpts({ socketPath: TEST_SOCKET_PATH }));
108
- expect(decision).toEqual({
109
- _tag: USE_DAEMON_TAG,
110
- socketPath: TEST_SOCKET_PATH,
111
- });
112
- });
113
- }
114
- function impersonateBypassesProbe() {
115
- return Effect.gen(function* () {
116
- const probe = { count: 0 };
117
- yield* decideTransport(makeOpts({
118
- impersonateKey: IMPERSONATE_KEY,
119
- probeDaemon: countedProbe(probe),
120
- }));
121
- expect(probe.count).toBe(0);
122
- });
123
- }
124
- function expectBypassForKey(key) {
125
- const probe = { count: 0 };
126
- const decision = Effect.runSync(decideTransport(makeOpts({
127
- impersonateKey: key,
128
- probeDaemon: countedProbe(probe),
129
- })));
130
- expect(decision._tag).toBe(USE_DIRECT_TAG);
131
- expect(probe.count).toBe(0);
132
- }
133
- function impersonateBypassesProbeForAnyKey() {
134
- return Effect.sync(() => {
135
- fc.assert(fc.property(fc.string({ minLength: 1 }), expectBypassForKey));
136
- });
137
- }
138
- describe("decideTransport", () => {
139
- beforeEach(() => {
140
- vi.unstubAllEnvs();
141
- });
142
- afterEach(() => {
143
- vi.unstubAllEnvs();
144
- });
145
- it("impersonate key bypasses daemon probe for any non-empty key", impersonateBypassesProbeForAnyKey);
146
- it("returns UseDirect{as-flag} when impersonateKey is set", useDirectAsFlag);
147
- it("returns UseDirect{profile} when profileKey set and no --as", useDirectProfile);
148
- it("returns UseDirect{env-fallback} when envFallbackKey + daemonReachable=false", useDirectEnvFallback);
149
- it("returns UseDaemon when envFallbackKey + daemonReachable=true", useDaemonWhenReachable);
150
- it("returns UseDaemon when neither as-flag nor env-fallback nor profile", useDaemonByDefault);
151
- it("never invokes probeDaemon when impersonateKey is set (Invariant §4.2)", impersonateBypassesProbe);
152
- });
153
- function expectTimeoutForwarded(timeoutMs) {
154
- const err = tagWsError(TaskList.name, new RpcTimeoutError({ method: TaskList.name, timeoutMs }));
155
- expect(err).toBeInstanceOf(TransportTimeoutError);
156
- if (err instanceof TransportTimeoutError) {
157
- expect(err.timeoutMs).toBe(timeoutMs);
158
- }
159
- }
160
- function timeoutErrorForwardsGeneratedTimeouts() {
161
- return Effect.sync(() => {
162
- fc.assert(fc.property(fc.integer({ min: 1, max: 60_000 }), expectTimeoutForwarded));
163
- });
164
- }
165
- function rpcServerErrorMapsToTransportRpcError() {
166
- return Effect.sync(() => {
167
- const err = tagWsError(TaskList.name, new RpcServerError({
168
- code: SESSION_NOT_FOUND_CODE,
169
- message: SESSION_NOT_FOUND_MESSAGE,
170
- }));
171
- expect(err).toBeInstanceOf(TransportRpcError);
172
- expect(err._tag).toBe(TRANSPORT_RPC_ERROR_TAG);
173
- if (err instanceof TransportRpcError) {
174
- expect(err.code).toBe(SESSION_NOT_FOUND_CODE);
175
- expect(err.message).toBe(SESSION_NOT_FOUND_MESSAGE);
176
- }
177
- });
178
- }
179
- function registeredWireErrorMapsToTransportRpcError() {
180
- return Effect.sync(() => {
181
- // A registered domain wire error (decoded from a -32024 frame) carries its
182
- // numeric code on the constructor, not the instance. It must map to
183
- // TransportRpcError preserving code/reason — not fall through to decode.
184
- const err = tagWsError(TaskList.name, new TaskRejectedError({
185
- message: TaskRejectedError.message,
186
- data: { taskId: "task-1" },
187
- }));
188
- expect(err).toBeInstanceOf(TransportRpcError);
189
- expect(err._tag).toBe(TRANSPORT_RPC_ERROR_TAG);
190
- if (err instanceof TransportRpcError) {
191
- expect(err.code).toBe(TaskRejectedError.code);
192
- expect(err.message).toBe(TaskRejectedError.message);
193
- expect(err.data).toEqual({ taskId: "task-1" });
194
- }
195
- });
196
- }
197
- function notConnectedMapsToServiceUnreachable() {
198
- return Effect.sync(() => {
199
- const err = tagWsError(TaskList.name, new NotConnectedError({ message: NOT_CONNECTED_MESSAGE }));
200
- expect(err).toBeInstanceOf(ServiceUnreachableError);
201
- expect(err._tag).toBe(SERVICE_UNREACHABLE_ERROR_TAG);
202
- });
203
- }
204
- function rpcTimeoutMapsToTransportTimeout() {
205
- return Effect.sync(() => {
206
- const err = tagWsError(TaskList.name, new RpcTimeoutError({
207
- method: TaskList.name,
208
- timeoutMs: RPC_TIMEOUT_MS,
209
- }));
210
- expect(err).toBeInstanceOf(TransportTimeoutError);
211
- if (err instanceof TransportTimeoutError) {
212
- expect(err.timeoutMs).toBe(RPC_TIMEOUT_MS);
213
- }
214
- });
215
- }
216
- function unknownErrorMapsToTransportDecode() {
217
- return Effect.sync(() => {
218
- const err = tagWsError(TaskList.name, {
219
- message: UNKNOWN_ERROR_MESSAGE,
220
- });
221
- expect(err).toBeInstanceOf(TransportDecodeError);
222
- expect(err._tag).toBe(TRANSPORT_DECODE_ERROR_TAG);
223
- });
224
- }
225
- /**
226
- * Regression guard for sbd#198: the original v2 implementation at 069135d
227
- * used `Effect.runPromise(sendRpc)` inside `Effect.tryPromise`. In Effect 3.21,
228
- * `runPromise` wraps typed failures in `FiberFailureImpl` (no `_tag`), so
229
- * `tagWsError`'s switch hit the default branch and emitted `TransportDecodeError`
230
- * for every ws error. Fixed by code-guard commit ff2de0d; these tests guard
231
- * against regression to that pattern.
232
- *
233
- * `tagWsError` is `@internal`-exported so this suite can reach it directly
234
- * without a mock WS server.
235
- */
236
- describe("tagWsError — maps ws-client error tags to TransportError variants", () => {
237
- it("RpcTimeoutError forwards generated timeoutMs values", timeoutErrorForwardsGeneratedTimeouts);
238
- it("RpcServerError maps to TransportRpcError (not TransportDecodeError)", rpcServerErrorMapsToTransportRpcError);
239
- it("registered wire error (TaskRejected) maps to TransportRpcError with its static code", registeredWireErrorMapsToTransportRpcError);
240
- it("NotConnectedError maps to ServiceUnreachableError", notConnectedMapsToServiceUnreachable);
241
- it("RpcTimeoutError maps to TransportTimeoutError with timeoutMs forwarded", rpcTimeoutMapsToTransportTimeout);
242
- it("FiberFailureImpl-shaped error (no _tag) maps to TransportDecodeError — not to TransportRpcError", unknownErrorMapsToTransportDecode);
243
- });
244
- function explicitKeyIgnoresEnvKey() {
245
- return Effect.gen(function* () {
246
- vi.stubEnv("MOLTZAP_API_KEY", LEAKED_ENV_KEY);
247
- const opts = yield* resolveTransportInputs({
248
- impersonateKey: EXPLICIT_KEY,
249
- });
250
- expect(opts.impersonateKey).toBe(EXPLICIT_KEY);
251
- expect(opts.profileKey).toBeUndefined();
252
- });
253
- }
254
- function explicitKeyUsesServerUrlEnv() {
255
- return Effect.gen(function* () {
256
- vi.stubEnv("MOLTZAP_SERVER_URL", OVERRIDE_SERVER_URL);
257
- const opts = yield* resolveTransportInputs({ impersonateKey: "k" });
258
- expect(opts.serverUrl).toBe(OVERRIDE_SERVER_URL);
259
- });
260
- }
261
- function emptyInputUsesDaemon() {
262
- return Effect.gen(function* () {
263
- const opts = yield* resolveTransportInputs({});
264
- expect(opts.impersonateKey).toBeUndefined();
265
- expect(opts.profileKey).toBeUndefined();
266
- expect(opts.socketPath).toBeDefined();
267
- });
268
- }
269
- function directRpcFailurePropagates() {
270
- return Effect.gen(function* () {
271
- const opts = {
272
- impersonateKey: DIRECT_TEST_KEY,
273
- serverUrl: DIRECT_TEST_SERVER_URL,
274
- };
275
- const exit = yield* Transport.pipe(Effect.flatMap((transport) => transport.rpc(TaskList, {})), Effect.exit, Effect.provide(makeTransportLayer(opts)));
276
- expect(Exit.isFailure(exit)).toBe(true);
277
- if (Exit.isFailure(exit)) {
278
- const failure = Cause.failureOption(exit.cause);
279
- expect(Option.isSome(failure)).toBe(true);
280
- if (Option.isSome(failure)) {
281
- expect(failure.value).toBeInstanceOf(TransportRpcError);
282
- expect(failure.value._tag).toBe(TRANSPORT_RPC_ERROR_TAG);
283
- }
284
- }
285
- });
286
- }
287
- describe("resolveTransportInputs (composition-boundary gate)", () => {
288
- beforeEach(() => {
289
- vi.unstubAllEnvs();
290
- });
291
- afterEach(() => {
292
- vi.unstubAllEnvs();
293
- });
294
- it("impersonateKey branch does NOT read MOLTZAP_API_KEY env", explicitKeyIgnoresEnvKey);
295
- it("impersonateKey branch uses MOLTZAP_SERVER_URL if present, else default", explicitKeyUsesServerUrlEnv);
296
- it("empty input falls through to legacy daemon path (no impersonate, no profile)", emptyInputUsesDaemon);
297
- });
298
- /**
299
- * Composed rpc() failure path — pins the full call chain so a future
300
- * regression to `Effect.runPromise(sendRpc)` inside `Effect.tryPromise`
301
- * is caught here, not just in the isolated `tagWsError` suite above.
302
- *
303
- * The ws-client mock (module-level `vi.mock("../agent-client.js")`) makes
304
- * `sendRpc` return `Effect.fail(new RpcServerError(...))` so the test
305
- * exercises: connect (success) → sendRpc (RpcServerError) → tagWsError
306
- * → TransportRpcError. A runPromise bridge would wrap RpcServerError in
307
- * FiberFailureImpl (no _tag) and the result would be TransportDecodeError.
308
- */
309
- describe("makeDirectTransport — composed rpc() failure path", () => {
310
- it("RpcServerError from sendRpc propagates as TransportRpcError through tagWsError", directRpcFailurePropagates);
311
- });
312
- //# sourceMappingURL=transport.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transport.test.js","sourceRoot":"","sources":["../../src/cli/transport.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=filter-equivalence.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"filter-equivalence.test.d.ts","sourceRoot":"","sources":["../../../src/notification/__tests__/filter-equivalence.test.ts"],"names":[],"mappings":""}
@@ -1,123 +0,0 @@
1
- /* eslint-disable max-nested-callbacks, max-lines-per-function, sonarjs/max-lines-per-function, agent-code-guard/as-unknown-as, agent-code-guard/async-keyword, jsdoc/text-escaping -- fast-check + Effect.gen + Stream.runForEach nest by construction; the cross-shape brand erasure in `oracle`/`fakeOtherFrame` is the typed→erased boundary the property test deliberately probes; fc.asyncProperty requires an async function */
2
- /**
3
- * Filter-equivalence oracle (spec #596 §Acceptance criteria).
4
- *
5
- * For any property-generated sequence of inbound notifications (length up
6
- * to 32, value pool size up to 8) and any property-generated typed
7
- * predicate `p`, the Stream-based subscribe API output equals the pure-JS
8
- * reference `frames.filter(frame => def===frame.definition && p(frame.params))`.
9
- *
10
- * The oracle is a pure-JS reference implementation embedded in this file
11
- * (NOT a reference to the deleted three-storage shape).
12
- *
13
- * Bounded generators per spec: max array length 32, value pool size 8.
14
- *
15
- * The type-guard overload narrows the Stream's payload to
16
- * `DecodedNotification<D, R>`; the second property-test below pins the
17
- * runtime narrowing matches the compile-time canary in
18
- * `snapshot-semantics.types-check.ts → Canary #1`.
19
- */
20
- import { describe, expect, it } from "vitest";
21
- import * as fc from "fast-check";
22
- import { Effect, Fiber, Ref, Stream } from "effect";
23
- import { PresenceChangedNotificationDefinition, } from "@moltzap/protocol";
24
- import { makeSubscriberRegistry } from "../../runtime/subscribers.js";
25
- import { subscribe } from "../stream.js";
26
- const MAX_SEQUENCE_LENGTH = 32;
27
- const VALUE_POOL_SIZE = 8;
28
- const PROPERTY_RUN_COUNT = 25;
29
- const arbAgentId = fc
30
- .integer({ min: 0, max: VALUE_POOL_SIZE - 1 })
31
- .map((n) => `agent-${n}`);
32
- const arbStatus = fc.constantFrom("online", "offline");
33
- const arbGeneratedFrame = fc.record({
34
- definitionTag: fc.constantFrom("presence", "other"),
35
- agentId: arbAgentId,
36
- status: arbStatus,
37
- });
38
- const arbSequence = fc.array(arbGeneratedFrame, {
39
- minLength: 0,
40
- maxLength: MAX_SEQUENCE_LENGTH,
41
- });
42
- /** Pure-JS reference oracle. Filters by definition identity + predicate. */
43
- function oracle(frames, predicate) {
44
- const presenceOnly = frames.filter((f) => f.definitionTag === "presence");
45
- const presenceParams = presenceOnly.map((f) => ({ agentId: f.agentId, status: f.status }));
46
- return presenceParams.filter(predicate);
47
- }
48
- function decodedPresence(generated) {
49
- return {
50
- _tag: "Notification",
51
- jsonrpc: "2.0",
52
- definition: PresenceChangedNotificationDefinition,
53
- method: PresenceChangedNotificationDefinition.name,
54
- params: {
55
- agentId: generated.agentId,
56
- status: generated.status,
57
- },
58
- };
59
- }
60
- function fakeOtherFrame(generated) {
61
- // A frame whose `.definition` reference does NOT match
62
- // `PresenceChangedNotificationDefinition` — used to verify the registry's
63
- // definition-identity filter drops it before the predicate runs.
64
- const raw = {
65
- _tag: "Notification",
66
- jsonrpc: "2.0",
67
- definition: { name: "other/method" },
68
- method: "other/method",
69
- params: { agentId: generated.agentId, status: generated.status },
70
- };
71
- return raw; // #ignore-sloppy-code[as-unknown-as]: fake-frame for the non-matching arm; the test is precisely about the boundary's behaviour on misshapen frames
72
- }
73
- describe("Spec B filter-equivalence oracle", () => {
74
- it("Stream output equals pure-JS filter oracle for arbitrary inputs", () => fc.assert(fc.asyncProperty(arbSequence, async (frames) => {
75
- // Property-generated predicate: deterministic, total, varies by
76
- // status. Closing over an outer counter would invalidate the
77
- // oracle equivalence.
78
- const predicate = (params) => params.status === "online";
79
- const collected = await Effect.runPromise(Effect.gen(function* () {
80
- const registry = yield* makeSubscriberRegistry();
81
- const seen = yield* Ref.make([]);
82
- const fiber = yield* Effect.fork(subscribe(registry, PresenceChangedNotificationDefinition, predicate).pipe(Stream.runForEach((frame) => Ref.update(seen, (xs) => [...xs, frame.params])), Effect.catchAll(() => Effect.void)));
83
- // Yield once to materialise the Stream's subscription via
84
- // Stream.async's register callback.
85
- yield* Effect.yieldNow();
86
- for (const f of frames) {
87
- const decoded = f.definitionTag === "presence"
88
- ? decodedPresence(f)
89
- : fakeOtherFrame(f);
90
- yield* registry.dispatch(decoded);
91
- }
92
- yield* Effect.yieldNow();
93
- yield* registry.closeAll;
94
- yield* Fiber.join(fiber);
95
- return yield* Ref.get(seen);
96
- }));
97
- const expected = oracle(frames, predicate);
98
- expect(collected).toEqual(expected);
99
- }), { numRuns: PROPERTY_RUN_COUNT }));
100
- it("user-defined type guard narrows the Stream payload", () => Effect.runPromise(Effect.gen(function* () {
101
- const registry = yield* makeSubscriberRegistry();
102
- const seen = yield* Ref.make([]);
103
- const isOnline = (params) => params.status === "online";
104
- const fiber = yield* Effect.fork(subscribe(registry, PresenceChangedNotificationDefinition, isOnline).pipe(Stream.runForEach((frame) => Ref.update(seen, (xs) => [...xs, frame.params])), Effect.catchAll(() => Effect.void)));
105
- yield* Effect.yieldNow();
106
- yield* registry.dispatch(decodedPresence({
107
- definitionTag: "presence",
108
- agentId: "agent-0",
109
- status: "online",
110
- }));
111
- yield* registry.dispatch(decodedPresence({
112
- definitionTag: "presence",
113
- agentId: "agent-1",
114
- status: "offline",
115
- }));
116
- yield* Effect.yieldNow();
117
- yield* registry.closeAll;
118
- yield* Fiber.join(fiber);
119
- const observed = yield* Ref.get(seen);
120
- expect(observed).toEqual([{ agentId: "agent-0", status: "online" }]);
121
- })));
122
- });
123
- //# sourceMappingURL=filter-equivalence.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"filter-equivalence.test.js","sourceRoot":"","sources":["../../../src/notification/__tests__/filter-equivalence.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=snapshot-semantics.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"snapshot-semantics.test.d.ts","sourceRoot":"","sources":["../../../src/notification/__tests__/snapshot-semantics.test.ts"],"names":[],"mappings":""}