@moltzap/client 2026.414.0 → 2026.425.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 (216) hide show
  1. package/dist/channel-core.d.ts +28 -15
  2. package/dist/channel-core.d.ts.map +1 -1
  3. package/dist/channel-core.js +113 -74
  4. package/dist/channel-core.js.map +1 -1
  5. package/dist/channel-core.test.js +126 -34
  6. package/dist/channel-core.test.js.map +1 -1
  7. package/dist/cli/__tests__/cli-multi-agent.int.test.d.ts +2 -0
  8. package/dist/cli/__tests__/cli-multi-agent.int.test.d.ts.map +1 -0
  9. package/dist/cli/__tests__/cli-multi-agent.int.test.js +26 -0
  10. package/dist/cli/__tests__/cli-multi-agent.int.test.js.map +1 -0
  11. package/dist/cli/commands/agents.d.ts +13 -2
  12. package/dist/cli/commands/agents.d.ts.map +1 -1
  13. package/dist/cli/commands/agents.js +30 -18
  14. package/dist/cli/commands/agents.js.map +1 -1
  15. package/dist/cli/commands/apps.d.ts +96 -0
  16. package/dist/cli/commands/apps.d.ts.map +1 -0
  17. package/dist/cli/commands/apps.js +193 -0
  18. package/dist/cli/commands/apps.js.map +1 -0
  19. package/dist/cli/commands/apps.test.d.ts +2 -0
  20. package/dist/cli/commands/apps.test.d.ts.map +1 -0
  21. package/dist/cli/commands/apps.test.js +220 -0
  22. package/dist/cli/commands/apps.test.js.map +1 -0
  23. package/dist/cli/commands/contacts.d.ts +18 -2
  24. package/dist/cli/commands/contacts.d.ts.map +1 -1
  25. package/dist/cli/commands/contacts.js +44 -52
  26. package/dist/cli/commands/contacts.js.map +1 -1
  27. package/dist/cli/commands/conversations-v2.test.d.ts +2 -0
  28. package/dist/cli/commands/conversations-v2.test.d.ts.map +1 -0
  29. package/dist/cli/commands/conversations-v2.test.js +92 -0
  30. package/dist/cli/commands/conversations-v2.test.js.map +1 -0
  31. package/dist/cli/commands/conversations.d.ts +73 -3
  32. package/dist/cli/commands/conversations.d.ts.map +1 -1
  33. package/dist/cli/commands/conversations.js +157 -108
  34. package/dist/cli/commands/conversations.js.map +1 -1
  35. package/dist/cli/commands/invite.d.ts +6 -2
  36. package/dist/cli/commands/invite.d.ts.map +1 -1
  37. package/dist/cli/commands/invite.js +8 -6
  38. package/dist/cli/commands/invite.js.map +1 -1
  39. package/dist/cli/commands/messages.d.ts +48 -0
  40. package/dist/cli/commands/messages.d.ts.map +1 -0
  41. package/dist/cli/commands/messages.js +68 -0
  42. package/dist/cli/commands/messages.js.map +1 -0
  43. package/dist/cli/commands/messages.test.d.ts +2 -0
  44. package/dist/cli/commands/messages.test.d.ts.map +1 -0
  45. package/dist/cli/commands/messages.test.js +73 -0
  46. package/dist/cli/commands/messages.test.js.map +1 -0
  47. package/dist/cli/commands/permissions.d.ts +66 -0
  48. package/dist/cli/commands/permissions.d.ts.map +1 -0
  49. package/dist/cli/commands/permissions.js +101 -0
  50. package/dist/cli/commands/permissions.js.map +1 -0
  51. package/dist/cli/commands/permissions.test.d.ts +2 -0
  52. package/dist/cli/commands/permissions.test.d.ts.map +1 -0
  53. package/dist/cli/commands/permissions.test.js +126 -0
  54. package/dist/cli/commands/permissions.test.js.map +1 -0
  55. package/dist/cli/commands/ping.d.ts +6 -2
  56. package/dist/cli/commands/ping.d.ts.map +1 -1
  57. package/dist/cli/commands/ping.js +21 -20
  58. package/dist/cli/commands/ping.js.map +1 -1
  59. package/dist/cli/commands/presence.d.ts +10 -2
  60. package/dist/cli/commands/presence.d.ts.map +1 -1
  61. package/dist/cli/commands/presence.js +27 -15
  62. package/dist/cli/commands/presence.js.map +1 -1
  63. package/dist/cli/commands/register.d.ts +24 -2
  64. package/dist/cli/commands/register.d.ts.map +1 -1
  65. package/dist/cli/commands/register.js +123 -47
  66. package/dist/cli/commands/register.js.map +1 -1
  67. package/dist/cli/commands/register.test.js +45 -27
  68. package/dist/cli/commands/register.test.js.map +1 -1
  69. package/dist/cli/commands/send.d.ts +43 -2
  70. package/dist/cli/commands/send.d.ts.map +1 -1
  71. package/dist/cli/commands/send.js +55 -13
  72. package/dist/cli/commands/send.js.map +1 -1
  73. package/dist/cli/commands/send.test.js +20 -19
  74. package/dist/cli/commands/send.test.js.map +1 -1
  75. package/dist/cli/commands/status.d.ts +6 -2
  76. package/dist/cli/commands/status.d.ts.map +1 -1
  77. package/dist/cli/commands/status.js +16 -10
  78. package/dist/cli/commands/status.js.map +1 -1
  79. package/dist/cli/commands/whoami.d.ts +7 -2
  80. package/dist/cli/commands/whoami.d.ts.map +1 -1
  81. package/dist/cli/commands/whoami.js +13 -7
  82. package/dist/cli/commands/whoami.js.map +1 -1
  83. package/dist/cli/config.d.ts +24 -8
  84. package/dist/cli/config.d.ts.map +1 -1
  85. package/dist/cli/config.js +65 -39
  86. package/dist/cli/config.js.map +1 -1
  87. package/dist/cli/config.test.js +12 -10
  88. package/dist/cli/config.test.js.map +1 -1
  89. package/dist/cli/http-client.d.ts +6 -2
  90. package/dist/cli/http-client.d.ts.map +1 -1
  91. package/dist/cli/http-client.js +25 -24
  92. package/dist/cli/http-client.js.map +1 -1
  93. package/dist/cli/index.d.ts +16 -1
  94. package/dist/cli/index.d.ts.map +1 -1
  95. package/dist/cli/index.js +160 -27
  96. package/dist/cli/index.js.map +1 -1
  97. package/dist/cli/profile.d.ts +134 -0
  98. package/dist/cli/profile.d.ts.map +1 -0
  99. package/dist/cli/profile.js +217 -0
  100. package/dist/cli/profile.js.map +1 -0
  101. package/dist/cli/profile.test.d.ts +2 -0
  102. package/dist/cli/profile.test.d.ts.map +1 -0
  103. package/dist/cli/profile.test.js +263 -0
  104. package/dist/cli/profile.test.js.map +1 -0
  105. package/dist/cli/runtime.d.ts +34 -0
  106. package/dist/cli/runtime.d.ts.map +1 -0
  107. package/dist/cli/runtime.js +94 -0
  108. package/dist/cli/runtime.js.map +1 -0
  109. package/dist/cli/socket-client.d.ts +15 -12
  110. package/dist/cli/socket-client.d.ts.map +1 -1
  111. package/dist/cli/socket-client.js +72 -75
  112. package/dist/cli/socket-client.js.map +1 -1
  113. package/dist/cli/transport.d.ts +181 -0
  114. package/dist/cli/transport.d.ts.map +1 -0
  115. package/dist/cli/transport.js +324 -0
  116. package/dist/cli/transport.js.map +1 -0
  117. package/dist/cli/transport.test.d.ts +2 -0
  118. package/dist/cli/transport.test.d.ts.map +1 -0
  119. package/dist/cli/transport.test.js +197 -0
  120. package/dist/cli/transport.test.js.map +1 -0
  121. package/dist/index.d.ts +6 -2
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +1 -0
  124. package/dist/index.js.map +1 -1
  125. package/dist/runtime/close-info.d.ts +94 -0
  126. package/dist/runtime/close-info.d.ts.map +1 -0
  127. package/dist/runtime/close-info.js +109 -0
  128. package/dist/runtime/close-info.js.map +1 -0
  129. package/dist/runtime/close-info.test.d.ts +2 -0
  130. package/dist/runtime/close-info.test.d.ts.map +1 -0
  131. package/dist/runtime/close-info.test.js +102 -0
  132. package/dist/runtime/close-info.test.js.map +1 -0
  133. package/dist/runtime/errors.d.ts +47 -0
  134. package/dist/runtime/errors.d.ts.map +1 -0
  135. package/dist/runtime/errors.js +20 -0
  136. package/dist/runtime/errors.js.map +1 -0
  137. package/dist/runtime/errors.test.d.ts +2 -0
  138. package/dist/runtime/errors.test.d.ts.map +1 -0
  139. package/dist/runtime/errors.test.js +66 -0
  140. package/dist/runtime/errors.test.js.map +1 -0
  141. package/dist/runtime/frame.d.ts +25 -0
  142. package/dist/runtime/frame.d.ts.map +1 -0
  143. package/dist/runtime/frame.js +106 -0
  144. package/dist/runtime/frame.js.map +1 -0
  145. package/dist/runtime/frame.test.d.ts +2 -0
  146. package/dist/runtime/frame.test.d.ts.map +1 -0
  147. package/dist/runtime/frame.test.js +32 -0
  148. package/dist/runtime/frame.test.js.map +1 -0
  149. package/dist/runtime/index.d.ts +3 -0
  150. package/dist/runtime/index.d.ts.map +1 -0
  151. package/dist/runtime/index.js +3 -0
  152. package/dist/runtime/index.js.map +1 -0
  153. package/dist/runtime/refs.d.ts +10 -0
  154. package/dist/runtime/refs.d.ts.map +1 -0
  155. package/dist/runtime/refs.js +10 -0
  156. package/dist/runtime/refs.js.map +1 -0
  157. package/dist/runtime/runtime.test.d.ts +2 -0
  158. package/dist/runtime/runtime.test.d.ts.map +1 -0
  159. package/dist/runtime/runtime.test.js +29 -0
  160. package/dist/runtime/runtime.test.js.map +1 -0
  161. package/dist/runtime/subscribers.d.ts +157 -0
  162. package/dist/runtime/subscribers.d.ts.map +1 -0
  163. package/dist/runtime/subscribers.js +131 -0
  164. package/dist/runtime/subscribers.js.map +1 -0
  165. package/dist/runtime/subscribers.test.d.ts +2 -0
  166. package/dist/runtime/subscribers.test.d.ts.map +1 -0
  167. package/dist/runtime/subscribers.test.js +155 -0
  168. package/dist/runtime/subscribers.test.js.map +1 -0
  169. package/dist/service.d.ts +68 -17
  170. package/dist/service.d.ts.map +1 -1
  171. package/dist/service.js +461 -307
  172. package/dist/service.js.map +1 -1
  173. package/dist/service.test.js +266 -77
  174. package/dist/service.test.js.map +1 -1
  175. package/dist/test/index.d.ts +33 -0
  176. package/dist/test/index.d.ts.map +1 -0
  177. package/dist/test/index.js +44 -0
  178. package/dist/test/index.js.map +1 -0
  179. package/dist/test-utils/channel-service-fixture.d.ts +2 -1
  180. package/dist/test-utils/channel-service-fixture.d.ts.map +1 -1
  181. package/dist/test-utils/channel-service-fixture.js +31 -11
  182. package/dist/test-utils/channel-service-fixture.js.map +1 -1
  183. package/dist/test-utils/conformance-adapter.d.ts +50 -0
  184. package/dist/test-utils/conformance-adapter.d.ts.map +1 -0
  185. package/dist/test-utils/conformance-adapter.js +206 -0
  186. package/dist/test-utils/conformance-adapter.js.map +1 -0
  187. package/dist/test-utils/fake-service.d.ts +85 -0
  188. package/dist/test-utils/fake-service.d.ts.map +1 -0
  189. package/dist/test-utils/fake-service.js +103 -0
  190. package/dist/test-utils/fake-service.js.map +1 -0
  191. package/dist/test-utils/index.d.ts +2 -0
  192. package/dist/test-utils/index.d.ts.map +1 -1
  193. package/dist/test-utils/index.js +3 -2
  194. package/dist/test-utils/index.js.map +1 -1
  195. package/dist/ws-client.d.ts +157 -18
  196. package/dist/ws-client.d.ts.map +1 -1
  197. package/dist/ws-client.js +432 -94
  198. package/dist/ws-client.js.map +1 -1
  199. package/dist/ws-client.test.d.ts +2 -0
  200. package/dist/ws-client.test.d.ts.map +1 -0
  201. package/dist/ws-client.test.js +672 -0
  202. package/dist/ws-client.test.js.map +1 -0
  203. package/package.json +23 -14
  204. package/LICENSE +0 -21
  205. package/dist/__tests__/service.integration.test.d.ts +0 -2
  206. package/dist/__tests__/service.integration.test.d.ts.map +0 -1
  207. package/dist/__tests__/service.integration.test.js +0 -1087
  208. package/dist/__tests__/service.integration.test.js.map +0 -1
  209. package/dist/cli/commands/delete.d.ts +0 -3
  210. package/dist/cli/commands/delete.d.ts.map +0 -1
  211. package/dist/cli/commands/delete.js +0 -10
  212. package/dist/cli/commands/delete.js.map +0 -1
  213. package/dist/cli/commands/react.d.ts +0 -3
  214. package/dist/cli/commands/react.d.ts.map +0 -1
  215. package/dist/cli/commands/react.js +0 -18
  216. package/dist/cli/commands/react.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.test.js","sourceRoot":"","sources":["../../src/cli/profile.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Effect runtime, logger, and process boundary for the `moltzap` CLI.
3
+ *
4
+ * The CLI is Effect-native end to end — commands build Effects, and the
5
+ * process entry runs a single `NodeRuntime.runMain` at `index.ts`. No
6
+ * per-command `Effect.runPromise`.
7
+ *
8
+ * Logging is Pino under the hood (matching the server's pattern) wrapped
9
+ * as an Effect `Logger` so `Effect.logInfo(...).pipe(Effect.annotateLogs(...))`
10
+ * inside commands routes through the same output format.
11
+ */
12
+ import { Logger as EffectLogger, LogLevel } from "effect";
13
+ import pino from "pino";
14
+ /**
15
+ * Effect `Logger` backed by a Pino instance. Same wrapping shape as the
16
+ * server's `effectLogger` — annotations become Pino's first-arg object,
17
+ * the message is the string payload. Pino throw (shutdown transport
18
+ * torn down, etc.) is swallowed to stderr so the Effect fiber doesn't
19
+ * die on a log-write failure.
20
+ */
21
+ export declare const effectLogger: EffectLogger.Logger<unknown, void>;
22
+ /**
23
+ * Replaces Effect's default console logger at the root of the program,
24
+ * and honors `MOLTZAP_LOG_LEVEL` (default "info") for minimum level.
25
+ */
26
+ export declare const LoggerLive: import("effect/Layer").Layer<never, never, never>;
27
+ /**
28
+ * Minimum Effect log level, mapped from MOLTZAP_LOG_LEVEL.
29
+ * Used when composing layers at the CLI entrypoint.
30
+ */
31
+ export declare const minLogLevel: LogLevel.LogLevel;
32
+ /** Pino instance for raw synchronous logging (e.g. fatal exits). */
33
+ export declare const rawLogger: pino.Logger<never, boolean>;
34
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/cli/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,IAAI,MAAM,MAAM,CAAC;AAwBxB;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,oCA0BxB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,mDAOtB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,QAmB/B,CAAC;AAEL,oEAAoE;AACpE,eAAO,MAAM,SAAS,6BAAO,CAAC"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Effect runtime, logger, and process boundary for the `moltzap` CLI.
3
+ *
4
+ * The CLI is Effect-native end to end — commands build Effects, and the
5
+ * process entry runs a single `NodeRuntime.runMain` at `index.ts`. No
6
+ * per-command `Effect.runPromise`.
7
+ *
8
+ * Logging is Pino under the hood (matching the server's pattern) wrapped
9
+ * as an Effect `Logger` so `Effect.logInfo(...).pipe(Effect.annotateLogs(...))`
10
+ * inside commands routes through the same output format.
11
+ */
12
+ import { Logger as EffectLogger, LogLevel } from "effect";
13
+ import pino from "pino";
14
+ const PINO = pino({
15
+ level: process.env["MOLTZAP_LOG_LEVEL"] ?? "info",
16
+ transport: process.env["NODE_ENV"] !== "production"
17
+ ? { target: "pino-pretty", options: { colorize: true } }
18
+ : undefined,
19
+ });
20
+ const LEVEL_TO_PINO = {
21
+ All: "trace",
22
+ Trace: "trace",
23
+ Debug: "debug",
24
+ Info: "info",
25
+ Warning: "warn",
26
+ Error: "error",
27
+ Fatal: "fatal",
28
+ None: "trace",
29
+ };
30
+ /**
31
+ * Effect `Logger` backed by a Pino instance. Same wrapping shape as the
32
+ * server's `effectLogger` — annotations become Pino's first-arg object,
33
+ * the message is the string payload. Pino throw (shutdown transport
34
+ * torn down, etc.) is swallowed to stderr so the Effect fiber doesn't
35
+ * die on a log-write failure.
36
+ */
37
+ export const effectLogger = EffectLogger.make(({ logLevel, message, annotations }) => {
38
+ const merged = {};
39
+ for (const [k, v] of annotations)
40
+ merged[k] = v;
41
+ const pinoMethod = LEVEL_TO_PINO[logLevel._tag] ?? "info";
42
+ const msg = typeof message === "string"
43
+ ? message
44
+ : Array.isArray(message) && message.length === 1
45
+ ? String(message[0])
46
+ : String(message);
47
+ try {
48
+ PINO[pinoMethod](merged, msg);
49
+ }
50
+ catch (err) {
51
+ try {
52
+ process.stderr.write(`[cli-logger-fallback] ${msg} (${err instanceof Error ? err.message : String(err)})\n`);
53
+ // #ignore-sloppy-code-next-line[bare-catch]: inner fallback for stderr write failure — last resort, nothing to log to
54
+ }
55
+ catch (_innerErr) {
56
+ // stderr unavailable — drop rather than crash.
57
+ }
58
+ }
59
+ });
60
+ /**
61
+ * Replaces Effect's default console logger at the root of the program,
62
+ * and honors `MOLTZAP_LOG_LEVEL` (default "info") for minimum level.
63
+ */
64
+ export const LoggerLive = EffectLogger.replace(EffectLogger.defaultLogger, effectLogger).pipe(
65
+ // Pino does its own level filtering, but we also gate via Effect so
66
+ // sub-info annotations don't build objects unnecessarily.
67
+ (layer) => layer);
68
+ /**
69
+ * Minimum Effect log level, mapped from MOLTZAP_LOG_LEVEL.
70
+ * Used when composing layers at the CLI entrypoint.
71
+ */
72
+ export const minLogLevel = (() => {
73
+ const env = (process.env["MOLTZAP_LOG_LEVEL"] ?? "info").toLowerCase();
74
+ switch (env) {
75
+ case "trace":
76
+ return LogLevel.Trace;
77
+ case "debug":
78
+ return LogLevel.Debug;
79
+ case "info":
80
+ return LogLevel.Info;
81
+ case "warn":
82
+ case "warning":
83
+ return LogLevel.Warning;
84
+ case "error":
85
+ return LogLevel.Error;
86
+ case "fatal":
87
+ return LogLevel.Fatal;
88
+ default:
89
+ return LogLevel.Info;
90
+ }
91
+ })();
92
+ /** Pino instance for raw synchronous logging (e.g. fatal exits). */
93
+ export const rawLogger = PINO;
94
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/cli/runtime.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,21 @@
1
+ import { Effect } from "effect";
1
2
  /**
2
- * Send a request to the MoltZapService via Unix socket and return the result.
3
- * Throws if the service is not running or the request fails.
3
+ * Send a request to the MoltZapService via Unix socket, returning the `result`
4
+ * field as an Effect. Typed failures:
5
+ * - "service not running" when the socket path doesn't exist / ECONNREFUSED
6
+ * - "timeout" when the 10s deadline elapses
7
+ * - "remote error" when the server responds with `{error: "..."}`
8
+ * - "malformed" when the response isn't parseable JSON
9
+ *
10
+ * Uses `Effect.async` so fiber interruption cleanly destroys the socket
11
+ * (AbortSignal callback) — no leaked fd if a parent fiber times out.
4
12
  */
5
- export declare function request(method: string, params?: Record<string, unknown>, socketPath?: string): Promise<unknown>;
6
- /**
7
- * Wrap a Commander action to catch errors and exit cleanly.
8
- * Commander's .action() accepts (...args: any[]) => void, so the
9
- * generic signature here just preserves the caller's argument types.
10
- */
11
- export declare function action<A extends unknown[]>(fn: (...args: A) => Promise<void>): (...args: A) => void;
13
+ export declare const request: (method: string, params?: Record<string, unknown>, socketPath?: string) => Effect.Effect<unknown, Error>;
12
14
  /** Resolve "agent:name" or "agent:<uuid>" to { type, id }. */
13
- export declare function resolveParticipant(raw: string): Promise<{
15
+ export declare const resolveParticipant: (raw: string) => Effect.Effect<{
14
16
  type: string;
15
17
  id: string;
16
- }>;
17
- export declare function isServiceRunning(): boolean;
18
+ }, Error>;
19
+ /** Pure predicate: socket path exists. Wrapped in Effect so callers compose it. */
20
+ export declare const isServiceRunning: Effect.Effect<boolean>;
18
21
  //# sourceMappingURL=socket-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"socket-client.d.ts","sourceRoot":"","sources":["../../src/cli/socket-client.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CA2DlB;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,EACxC,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAChC,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,CAStB;AAKD,8DAA8D;AAC9D,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAYvC;AAED,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C"}
1
+ {"version":3,"file":"socket-client.d.ts","sourceRoot":"","sources":["../../src/cli/socket-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAQhC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,OAAO,GAClB,QAAQ,MAAM,EACd,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,aAAa,MAAM,KAClB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAuE3B,CAAC;AASL,8DAA8D;AAC9D,eAAO,MAAM,kBAAkB,GAC7B,KAAK,MAAM,KACV,MAAM,CAAC,MAAM,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,CAmBhD,CAAC;AAEL,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAEnD,CAAC"}
@@ -1,98 +1,95 @@
1
1
  import * as net from "node:net";
2
2
  import * as fs from "node:fs";
3
+ import { Effect } from "effect";
3
4
  import { MoltZapService } from "../service.js";
4
5
  /**
5
- * Send a request to the MoltZapService via Unix socket and return the result.
6
- * Throws if the service is not running or the request fails.
6
+ * Send a request to the MoltZapService via Unix socket, returning the `result`
7
+ * field as an Effect. Typed failures:
8
+ * - "service not running" when the socket path doesn't exist / ECONNREFUSED
9
+ * - "timeout" when the 10s deadline elapses
10
+ * - "remote error" when the server responds with `{error: "..."}`
11
+ * - "malformed" when the response isn't parseable JSON
12
+ *
13
+ * Uses `Effect.async` so fiber interruption cleanly destroys the socket
14
+ * (AbortSignal callback) — no leaked fd if a parent fiber times out.
7
15
  */
8
- export async function request(method, params, socketPath) {
16
+ export const request = (method, params, socketPath) => Effect.async((resume, signal) => {
9
17
  const sockPath = socketPath ?? MoltZapService.SOCKET_PATH;
10
- return new Promise((resolve, reject) => {
11
- const conn = net.createConnection(sockPath);
12
- let buffer = "";
13
- let settled = false;
14
- const timer = setTimeout(() => {
15
- if (settled)
16
- return;
17
- settled = true;
18
- conn.destroy();
19
- reject(new Error("Socket request timed out"));
20
- }, 10_000);
21
- conn.on("connect", () => {
22
- conn.write(JSON.stringify({ method, params }) + "\n");
23
- });
24
- conn.on("data", (chunk) => {
25
- buffer += chunk.toString();
26
- const idx = buffer.indexOf("\n");
27
- if (idx !== -1) {
28
- const line = buffer.slice(0, idx);
29
- conn.end();
30
- clearTimeout(timer);
31
- if (settled)
32
- return;
33
- settled = true;
34
- try {
35
- const response = JSON.parse(line);
36
- if (response.error) {
37
- reject(new Error(response.error));
38
- }
39
- else {
40
- resolve(response.result);
41
- }
42
- }
43
- catch {
44
- reject(new Error("Malformed response from service"));
45
- }
18
+ const conn = net.createConnection(sockPath);
19
+ let buffer = "";
20
+ let settled = false;
21
+ const done = (outcome) => {
22
+ if (settled)
23
+ return;
24
+ settled = true;
25
+ clearTimeout(timer);
26
+ conn.removeAllListeners();
27
+ conn.destroy();
28
+ resume(outcome);
29
+ };
30
+ const timer = setTimeout(() => {
31
+ done(Effect.fail(new Error("Socket request timed out")));
32
+ }, 10_000);
33
+ signal.addEventListener("abort", () => {
34
+ done(Effect.fail(new Error("Socket request aborted")));
35
+ });
36
+ conn.on("connect", () => {
37
+ conn.write(JSON.stringify({ method, params }) + "\n");
38
+ });
39
+ conn.on("data", (chunk) => {
40
+ buffer += chunk.toString();
41
+ const idx = buffer.indexOf("\n");
42
+ if (idx !== -1) {
43
+ const line = buffer.slice(0, idx);
44
+ conn.end();
45
+ let parsed;
46
+ try {
47
+ parsed = JSON.parse(line);
46
48
  }
47
- });
48
- conn.on("error", (err) => {
49
- clearTimeout(timer);
50
- if (settled)
49
+ catch (err) {
50
+ done(Effect.fail(new Error(`Malformed response from service: ${err instanceof Error ? err.message : String(err)}`)));
51
51
  return;
52
- settled = true;
53
- const code = err.code;
54
- if (code === "ENOENT" || code === "ECONNREFUSED") {
55
- reject(new Error("MoltZap service is not running. Start the OpenClaw channel plugin first."));
52
+ }
53
+ if (parsed.error) {
54
+ done(Effect.fail(new Error(parsed.error)));
56
55
  }
57
56
  else {
58
- reject(err);
57
+ done(Effect.succeed(parsed.result));
59
58
  }
60
- });
59
+ }
61
60
  });
62
- }
63
- /**
64
- * Wrap a Commander action to catch errors and exit cleanly.
65
- * Commander's .action() accepts (...args: any[]) => void, so the
66
- * generic signature here just preserves the caller's argument types.
67
- */
68
- export function action(fn) {
69
- return (...args) => {
70
- fn(...args).catch((err) => {
71
- console.error(`Failed: ${err instanceof Error ? err.message : String(err)}`);
72
- process.exit(1);
73
- });
74
- };
75
- }
61
+ conn.on("error", (err) => {
62
+ const code = err.code;
63
+ if (code === "ENOENT" || code === "ECONNREFUSED") {
64
+ done(Effect.fail(new Error("MoltZap service is not running. Start the OpenClaw channel plugin first.")));
65
+ }
66
+ else {
67
+ done(Effect.fail(err));
68
+ }
69
+ });
70
+ });
76
71
  const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
77
72
  /** Resolve "agent:name" or "agent:<uuid>" to { type, id }. */
78
- export async function resolveParticipant(raw) {
73
+ export const resolveParticipant = (raw) => Effect.gen(function* () {
79
74
  const colon = raw.indexOf(":");
80
- if (colon === -1)
81
- throw new Error(`Invalid: "${raw}". Use agent:name`);
75
+ if (colon === -1) {
76
+ return yield* Effect.fail(new Error(`Invalid: "${raw}". Use agent:name`));
77
+ }
82
78
  const type = raw.slice(0, colon);
83
79
  const value = raw.slice(colon + 1);
84
80
  if (UUID_RE.test(value))
85
81
  return { type, id: value };
86
- if (type !== "agent")
87
- throw new Error(`Cannot resolve "${raw}"`);
88
- const result = (await request("agents/lookupByName", {
82
+ if (type !== "agent") {
83
+ return yield* Effect.fail(new Error(`Cannot resolve "${raw}"`));
84
+ }
85
+ const result = (yield* request("agents/lookupByName", {
89
86
  names: [value],
90
87
  }));
91
- if (result.agents.length === 0)
92
- throw new Error(`Agent "${value}" not found`);
88
+ if (result.agents.length === 0) {
89
+ return yield* Effect.fail(new Error(`Agent "${value}" not found`));
90
+ }
93
91
  return { type: "agent", id: result.agents[0].id };
94
- }
95
- export function isServiceRunning() {
96
- return fs.existsSync(MoltZapService.SOCKET_PATH);
97
- }
92
+ });
93
+ /** Pure predicate: socket path exists. Wrapped in Effect so callers compose it. */
94
+ export const isServiceRunning = Effect.sync(() => fs.existsSync(MoltZapService.SOCKET_PATH));
98
95
  //# sourceMappingURL=socket-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"socket-client.js","sourceRoot":"","sources":["../../src/cli/socket-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"socket-client.js","sourceRoot":"","sources":["../../src/cli/socket-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,181 @@
1
+ import { Context, Effect, Layer } from "effect";
2
+ import type { ProfileError } from "./profile.js";
3
+ /** Errors any Transport.rpc call may surface. Exhaustive. */
4
+ export type TransportError = ServiceUnreachableError | TransportTimeoutError | TransportRpcError | TransportDecodeError | TransportConfigError;
5
+ 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 & {
6
+ readonly _tag: "ServiceUnreachableError";
7
+ } & Readonly<A>;
8
+ /**
9
+ * The daemon socket path did not exist or refused connection. Only raised
10
+ * by the daemon branch; the direct branch never raises this.
11
+ */
12
+ export declare class ServiceUnreachableError extends ServiceUnreachableError_base<{
13
+ readonly socketPath: string;
14
+ readonly cause: unknown;
15
+ }> {
16
+ }
17
+ 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 & {
18
+ readonly _tag: "TransportTimeoutError";
19
+ } & Readonly<A>;
20
+ /** RPC exceeded the per-call deadline without a response frame. */
21
+ export declare class TransportTimeoutError extends TransportTimeoutError_base<{
22
+ readonly method: string;
23
+ readonly timeoutMs: number;
24
+ }> {
25
+ }
26
+ 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 & {
27
+ readonly _tag: "TransportRpcError";
28
+ } & Readonly<A>;
29
+ /**
30
+ * Server returned a structured error response frame. `code` matches the
31
+ * JSON-RPC-style error code emitted by `packages/server`.
32
+ */
33
+ export declare class TransportRpcError extends TransportRpcError_base<{
34
+ readonly method: string;
35
+ readonly code: number;
36
+ readonly message: string;
37
+ readonly data?: unknown;
38
+ }> {
39
+ }
40
+ 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 & {
41
+ readonly _tag: "TransportDecodeError";
42
+ } & Readonly<A>;
43
+ /** Response frame failed to parse or did not match the expected RPC result shape. */
44
+ export declare class TransportDecodeError extends TransportDecodeError_base<{
45
+ readonly method: string;
46
+ readonly cause: unknown;
47
+ }> {
48
+ }
49
+ declare const TransportConfigError_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 & {
50
+ readonly _tag: "TransportConfigError";
51
+ } & Readonly<A>;
52
+ /**
53
+ * Transport inputs were self-inconsistent (e.g., `--as` set with no
54
+ * `serverUrl` resolvable). Surfaces at Layer construction, not at RPC time.
55
+ */
56
+ export declare class TransportConfigError extends TransportConfigError_base<{
57
+ readonly reason: string;
58
+ }> {
59
+ }
60
+ /**
61
+ * Kind of transport currently in use. Observable for logs and tests.
62
+ * Commands never branch on kind.
63
+ */
64
+ export type TransportKind = "daemon" | "direct" | "test";
65
+ /**
66
+ * Transport surface used by every CLI command. One generic RPC call; the
67
+ * `kind` is for logs/tests. Commands never branch on `kind`.
68
+ */
69
+ export interface Transport {
70
+ readonly kind: TransportKind;
71
+ readonly rpc: <Result>(method: string, params: Record<string, unknown>) => Effect.Effect<Result, TransportError>;
72
+ }
73
+ export declare const Transport: Context.Tag<Transport, Transport>;
74
+ /**
75
+ * Inputs shaping the transport for one CLI invocation. Assembled from
76
+ * parsed CLI options, env, and layered config by the CLI entrypoint.
77
+ * `impersonateKey` wins over `profileKey` wins over daemon.
78
+ */
79
+ export interface TransportOptions {
80
+ /** `--as <apiKey>` literal. When set, force direct transport. */
81
+ readonly impersonateKey?: string;
82
+ /** Resolved profile apiKey if `--profile <name>` supplied. */
83
+ readonly profileKey?: string;
84
+ /** Server URL resolved from config + env (wss:// or http://). */
85
+ readonly serverUrl: string;
86
+ /** Daemon socket path (absent only in tests that don't set it). */
87
+ readonly socketPath?: string;
88
+ /**
89
+ * Lazy probe: called ONLY on the env-fallback branch (step 2 below).
90
+ * The as-flag branch never invokes it (Invariant §4.2: --as must not
91
+ * touch the daemon socket, not even to check reachability). Passed as
92
+ * a thunk so the probe is a side effect of the fall-through branch,
93
+ * not of the decision input.
94
+ */
95
+ readonly probeDaemon?: () => Effect.Effect<boolean, never>;
96
+ }
97
+ /**
98
+ * Decision of which branch {@link makeTransportLayer} selected, exported for
99
+ * log annotations and assertion in tests.
100
+ */
101
+ export type TransportDecision = {
102
+ readonly _tag: "UseDaemon";
103
+ readonly socketPath: string;
104
+ } | {
105
+ readonly _tag: "UseDirect";
106
+ readonly reason: "as-flag" | "env-fallback" | "profile";
107
+ } | {
108
+ readonly _tag: "UseTest";
109
+ };
110
+ /**
111
+ * Decision function — Effect-returning because the env-fallback branch
112
+ * may invoke the `probeDaemon` thunk. The as-flag branch short-circuits
113
+ * BEFORE any probe: `impersonateKey` present ⇒ returns
114
+ * `UseDirect{as-flag}` without calling `probeDaemon`, without reading
115
+ * env, without any side effect (Invariant §4.2).
116
+ */
117
+ export declare const decideTransport: (options: TransportOptions) => Effect.Effect<TransportDecision, never>;
118
+ /** @internal exported for decoder-fixture tests only (sbd#198). */
119
+ export declare const tagWsError: (method: string, err: {
120
+ readonly _tag?: string;
121
+ readonly message?: string;
122
+ readonly code?: number;
123
+ readonly timeoutMs?: number;
124
+ readonly data?: unknown;
125
+ }) => TransportError;
126
+ /**
127
+ * Build the Layer that provides {@link Transport} for the current invocation.
128
+ *
129
+ * Branch points (in priority order):
130
+ * 1. `options.impersonateKey` → direct WS, Invariant §4.2 isolation guaranteed.
131
+ * 2. `process.env.MOLTZAP_API_KEY` present AND daemon unreachable → direct WS.
132
+ * 3. `options.profileKey` set → direct WS with that key.
133
+ * 4. otherwise → daemon transport over `options.socketPath`.
134
+ *
135
+ * The direct branch must NOT open the daemon socket, mutate
136
+ * `~/.moltzap/config.json`, or share any Effect fiber with the daemon.
137
+ * Integration test §7 of the design doc verifies this with a two-agent
138
+ * concurrent roster.
139
+ */
140
+ export declare const makeTransportLayer: (options: TransportOptions) => Layer.Layer<Transport, TransportConfigError>;
141
+ /**
142
+ * Convenience for command handlers: pull the Transport tag and call rpc.
143
+ * Every new subcommand routes through this helper; raw `socket-client.request`
144
+ * imports in new commands are a lint-level violation (see design doc §3).
145
+ */
146
+ export declare const rpc: <Result>(method: string, params: Record<string, unknown>) => Effect.Effect<Result, TransportError, Transport>;
147
+ /**
148
+ * Uniform error-to-exit adapter for subcommand handlers. Catches every error
149
+ * channel, prints `Failed: <msg>` to stderr, and exits non-zero. Uses the
150
+ * tagged-error `message` field if present, otherwise the `_tag`, otherwise
151
+ * a generic fallback. Shared across every v2 subcommand wrapper so the
152
+ * exit-code contract (Invariant §4.6) has a single implementation.
153
+ *
154
+ * On success, this returns normally and relies on the `Layer.scoped`
155
+ * finalizer in `makeDirectTransport` to close the ws-client and drain
156
+ * the event loop (sbd#198 / moltzap#228 Bug-2 fix). No forced
157
+ * `process.exit(0)` — that would truncate piped stdout on large payloads.
158
+ */
159
+ export declare const runHandler: <E extends {
160
+ readonly message?: string;
161
+ readonly _tag?: string;
162
+ }>(effect: Effect.Effect<void, E, Transport>) => Effect.Effect<void, never, Transport>;
163
+ /**
164
+ * Lazy resolver invoked by the CLI entrypoint BEFORE constructing the
165
+ * transport layer. Closes the composition-boundary leak (architect design
166
+ * doc rev 4 finding 1): with `impersonateKey` set, this function does NOT
167
+ * call `cli/config.ts:loadConfig`, does NOT read `MOLTZAP_API_KEY` env,
168
+ * does NOT open `~/.moltzap/config.json`. The only resolution performed on
169
+ * the as-flag branch is `MOLTZAP_SERVER_URL` (or the hard-coded default).
170
+ *
171
+ * This function is the true CLI-boundary gate on Invariant §4.2 — without
172
+ * it, eager config-read side effects leak even when `decideTransport` is
173
+ * later short-circuited. Unit tests assert on `fs.open` and `env` read
174
+ * spies that zero calls happen on the `impersonateKey` branch.
175
+ */
176
+ export declare const resolveTransportInputs: (parsed: {
177
+ readonly impersonateKey?: string;
178
+ readonly profileName?: string;
179
+ }) => Effect.Effect<TransportOptions, TransportConfigError | ProfileError>;
180
+ export {};
181
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/cli/transport.ts"],"names":[],"mappings":"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"}