@moltzap/client 2026.503.3 → 2026.504.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.
- package/dist/auth.d.ts +10 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +8 -5
- package/dist/auth.js.map +1 -1
- package/dist/channel-core.d.ts +1 -4
- package/dist/channel-core.d.ts.map +1 -1
- package/dist/channel-core.js +0 -9
- package/dist/channel-core.js.map +1 -1
- package/dist/channel-core.test.js +90 -71
- package/dist/channel-core.test.js.map +1 -1
- package/dist/cli/commands/agents.d.ts.map +1 -1
- package/dist/cli/commands/agents.js +5 -3
- package/dist/cli/commands/agents.js.map +1 -1
- package/dist/cli/commands/apps.d.ts +9 -27
- package/dist/cli/commands/apps.d.ts.map +1 -1
- package/dist/cli/commands/apps.js +36 -57
- package/dist/cli/commands/apps.js.map +1 -1
- package/dist/cli/commands/apps.test.js +63 -75
- package/dist/cli/commands/apps.test.js.map +1 -1
- package/dist/cli/commands/contacts.d.ts +1 -5
- package/dist/cli/commands/contacts.d.ts.map +1 -1
- package/dist/cli/commands/contacts.js +14 -27
- package/dist/cli/commands/contacts.js.map +1 -1
- package/dist/cli/commands/conversations-v2.test.js +34 -29
- package/dist/cli/commands/conversations-v2.test.js.map +1 -1
- package/dist/cli/commands/conversations.d.ts +7 -3
- package/dist/cli/commands/conversations.d.ts.map +1 -1
- package/dist/cli/commands/conversations.js +63 -48
- package/dist/cli/commands/conversations.js.map +1 -1
- package/dist/cli/commands/messages.d.ts +7 -3
- package/dist/cli/commands/messages.d.ts.map +1 -1
- package/dist/cli/commands/messages.js +13 -15
- package/dist/cli/commands/messages.js.map +1 -1
- package/dist/cli/commands/messages.test.js +30 -31
- package/dist/cli/commands/messages.test.js.map +1 -1
- package/dist/cli/commands/ping.d.ts +9 -0
- package/dist/cli/commands/ping.d.ts.map +1 -1
- package/dist/cli/commands/ping.js +17 -4
- package/dist/cli/commands/ping.js.map +1 -1
- package/dist/cli/commands/presence.d.ts.map +1 -1
- package/dist/cli/commands/presence.js +6 -4
- package/dist/cli/commands/presence.js.map +1 -1
- package/dist/cli/commands/register.d.ts.map +1 -1
- package/dist/cli/commands/register.js +2 -1
- package/dist/cli/commands/register.js.map +1 -1
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +22 -11
- package/dist/cli/commands/send.js.map +1 -1
- package/dist/cli/commands/send.test.js +12 -9
- package/dist/cli/commands/send.test.js.map +1 -1
- package/dist/cli/commands/status.js +2 -2
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/test-transport.d.ts +10 -0
- package/dist/cli/commands/test-transport.d.ts.map +1 -0
- package/dist/cli/commands/test-transport.js +29 -0
- package/dist/cli/commands/test-transport.js.map +1 -0
- package/dist/cli/commands/whoami.d.ts.map +1 -1
- package/dist/cli/commands/whoami.js +5 -1
- package/dist/cli/commands/whoami.js.map +1 -1
- package/dist/cli/config.d.ts +42 -6
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +91 -27
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/http-client.d.ts +11 -1
- package/dist/cli/http-client.d.ts.map +1 -1
- package/dist/cli/http-client.js +13 -4
- package/dist/cli/http-client.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/profile.d.ts +3 -4
- package/dist/cli/profile.d.ts.map +1 -1
- package/dist/cli/profile.js +42 -29
- package/dist/cli/profile.js.map +1 -1
- package/dist/cli/runtime.d.ts.map +1 -1
- package/dist/cli/runtime.js +9 -4
- package/dist/cli/runtime.js.map +1 -1
- package/dist/cli/socket-client.d.ts +29 -4
- package/dist/cli/socket-client.d.ts.map +1 -1
- package/dist/cli/socket-client.js +52 -21
- package/dist/cli/socket-client.js.map +1 -1
- package/dist/cli/transport.d.ts +6 -9
- package/dist/cli/transport.d.ts.map +1 -1
- package/dist/cli/transport.js +47 -37
- package/dist/cli/transport.js.map +1 -1
- package/dist/cli/transport.test.js +19 -16
- package/dist/cli/transport.test.js.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/__tests__/app-callback-partition-key.test.d.ts +2 -0
- package/dist/internal/__tests__/app-callback-partition-key.test.d.ts.map +1 -0
- package/dist/internal/__tests__/app-callback-partition-key.test.js +33 -0
- package/dist/internal/__tests__/app-callback-partition-key.test.js.map +1 -0
- package/dist/internal/__tests__/app-callback-partition-worker.test.d.ts +2 -0
- package/dist/internal/__tests__/app-callback-partition-worker.test.d.ts.map +1 -0
- package/dist/internal/__tests__/{s2c-partition-worker.test.js → app-callback-partition-worker.test.js} +6 -8
- package/dist/internal/__tests__/app-callback-partition-worker.test.js.map +1 -0
- package/dist/internal/__tests__/app-callback-partitioned-dispatcher-real-ws.test.d.ts +2 -0
- package/dist/internal/__tests__/app-callback-partitioned-dispatcher-real-ws.test.d.ts.map +1 -0
- package/dist/internal/__tests__/{s2c-partitioned-dispatcher-real-ws.test.js → app-callback-partitioned-dispatcher-real-ws.test.js} +69 -93
- package/dist/internal/__tests__/app-callback-partitioned-dispatcher-real-ws.test.js.map +1 -0
- package/dist/internal/__tests__/app-callback-partitioned-dispatcher.test.d.ts +2 -0
- package/dist/internal/__tests__/app-callback-partitioned-dispatcher.test.d.ts.map +1 -0
- package/dist/internal/__tests__/{s2c-partitioned-dispatcher.test.js → app-callback-partitioned-dispatcher.test.js} +36 -69
- package/dist/internal/__tests__/app-callback-partitioned-dispatcher.test.js.map +1 -0
- package/dist/internal/__tests__/app-callback-test-requests.d.ts +58 -0
- package/dist/internal/__tests__/app-callback-test-requests.d.ts.map +1 -0
- package/dist/internal/__tests__/app-callback-test-requests.js +124 -0
- package/dist/internal/__tests__/app-callback-test-requests.js.map +1 -0
- package/dist/internal/{s2c-dispatcher-errors.d.ts → app-callback-dispatcher-errors.d.ts} +5 -21
- package/dist/internal/app-callback-dispatcher-errors.d.ts.map +1 -0
- package/dist/internal/{s2c-dispatcher-errors.js → app-callback-dispatcher-errors.js} +3 -13
- package/dist/internal/app-callback-dispatcher-errors.js.map +1 -0
- package/dist/internal/app-callback-partition-key.d.ts +68 -0
- package/dist/internal/app-callback-partition-key.d.ts.map +1 -0
- package/dist/internal/app-callback-partition-key.js +90 -0
- package/dist/internal/app-callback-partition-key.js.map +1 -0
- package/dist/internal/{s2c-partition-worker.d.ts → app-callback-partition-worker.d.ts} +5 -5
- package/dist/internal/app-callback-partition-worker.d.ts.map +1 -0
- package/dist/internal/{s2c-partition-worker.js → app-callback-partition-worker.js} +5 -5
- package/dist/internal/app-callback-partition-worker.js.map +1 -0
- package/dist/internal/{s2c-partitioned-dispatcher.d.ts → app-callback-partitioned-dispatcher.d.ts} +9 -10
- package/dist/internal/app-callback-partitioned-dispatcher.d.ts.map +1 -0
- package/dist/internal/{s2c-partitioned-dispatcher.js → app-callback-partitioned-dispatcher.js} +13 -21
- package/dist/internal/app-callback-partitioned-dispatcher.js.map +1 -0
- package/dist/runtime/close-info.d.ts +15 -16
- package/dist/runtime/close-info.d.ts.map +1 -1
- package/dist/runtime/close-info.js +12 -8
- package/dist/runtime/close-info.js.map +1 -1
- package/dist/runtime/errors.d.ts +2 -28
- package/dist/runtime/errors.d.ts.map +1 -1
- package/dist/runtime/errors.js +0 -9
- package/dist/runtime/errors.js.map +1 -1
- package/dist/runtime/errors.test.js +4 -3
- package/dist/runtime/errors.test.js.map +1 -1
- package/dist/runtime/frame.d.ts +17 -18
- package/dist/runtime/frame.d.ts.map +1 -1
- package/dist/runtime/frame.js +86 -31
- package/dist/runtime/frame.js.map +1 -1
- package/dist/runtime/frame.test.js +15 -11
- package/dist/runtime/frame.test.js.map +1 -1
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +1 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/local-service-commands.d.ts +7 -0
- package/dist/runtime/local-service-commands.d.ts.map +1 -0
- package/dist/runtime/local-service-commands.js +6 -0
- package/dist/runtime/local-service-commands.js.map +1 -0
- package/dist/runtime/runtime.test.js +3 -3
- package/dist/runtime/runtime.test.js.map +1 -1
- package/dist/runtime/subscribers.d.ts +37 -33
- package/dist/runtime/subscribers.d.ts.map +1 -1
- package/dist/runtime/subscribers.js +22 -21
- package/dist/runtime/subscribers.js.map +1 -1
- package/dist/runtime/subscribers.test.js +50 -31
- package/dist/runtime/subscribers.test.js.map +1 -1
- package/dist/service.d.ts +24 -39
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +190 -171
- package/dist/service.js.map +1 -1
- package/dist/service.test.js +117 -175
- package/dist/service.test.js.map +1 -1
- package/dist/test/index.d.ts +9 -1
- package/dist/test/index.d.ts.map +1 -1
- package/dist/test/index.js +14 -3
- package/dist/test/index.js.map +1 -1
- package/dist/test-utils/channel-service-fixture.d.ts +1 -2
- package/dist/test-utils/channel-service-fixture.d.ts.map +1 -1
- package/dist/test-utils/channel-service-fixture.js +28 -20
- package/dist/test-utils/channel-service-fixture.js.map +1 -1
- package/dist/test-utils/conformance-adapter.d.ts +2 -2
- package/dist/test-utils/conformance-adapter.d.ts.map +1 -1
- package/dist/test-utils/conformance-adapter.js +78 -54
- package/dist/test-utils/conformance-adapter.js.map +1 -1
- package/dist/test-utils/fake-service.d.ts +14 -39
- package/dist/test-utils/fake-service.d.ts.map +1 -1
- package/dist/test-utils/fake-service.js +33 -39
- package/dist/test-utils/fake-service.js.map +1 -1
- package/dist/test-utils/ids.d.ts +9 -0
- package/dist/test-utils/ids.d.ts.map +1 -0
- package/dist/test-utils/ids.js +52 -0
- package/dist/test-utils/ids.js.map +1 -0
- package/dist/test-utils/index.d.ts +10 -2
- package/dist/test-utils/index.d.ts.map +1 -1
- package/dist/test-utils/index.js +25 -9
- package/dist/test-utils/index.js.map +1 -1
- package/dist/ws-client.d.ts +59 -64
- package/dist/ws-client.d.ts.map +1 -1
- package/dist/ws-client.js +228 -175
- package/dist/ws-client.js.map +1 -1
- package/dist/ws-client.test.js +190 -176
- package/dist/ws-client.test.js.map +1 -1
- package/package.json +3 -3
- package/dist/cli/commands/permissions.d.ts +0 -66
- package/dist/cli/commands/permissions.d.ts.map +0 -1
- package/dist/cli/commands/permissions.js +0 -101
- package/dist/cli/commands/permissions.js.map +0 -1
- package/dist/cli/commands/permissions.test.d.ts +0 -2
- package/dist/cli/commands/permissions.test.d.ts.map +0 -1
- package/dist/cli/commands/permissions.test.js +0 -126
- package/dist/cli/commands/permissions.test.js.map +0 -1
- package/dist/internal/__tests__/s2c-partition-key.test.d.ts +0 -2
- package/dist/internal/__tests__/s2c-partition-key.test.d.ts.map +0 -1
- package/dist/internal/__tests__/s2c-partition-key.test.js +0 -230
- package/dist/internal/__tests__/s2c-partition-key.test.js.map +0 -1
- package/dist/internal/__tests__/s2c-partition-worker.test.d.ts +0 -2
- package/dist/internal/__tests__/s2c-partition-worker.test.d.ts.map +0 -1
- package/dist/internal/__tests__/s2c-partition-worker.test.js.map +0 -1
- package/dist/internal/__tests__/s2c-partitioned-dispatcher-real-ws.test.d.ts +0 -2
- package/dist/internal/__tests__/s2c-partitioned-dispatcher-real-ws.test.d.ts.map +0 -1
- package/dist/internal/__tests__/s2c-partitioned-dispatcher-real-ws.test.js.map +0 -1
- package/dist/internal/__tests__/s2c-partitioned-dispatcher.test.d.ts +0 -2
- package/dist/internal/__tests__/s2c-partitioned-dispatcher.test.d.ts.map +0 -1
- package/dist/internal/__tests__/s2c-partitioned-dispatcher.test.js.map +0 -1
- package/dist/internal/s2c-dispatcher-errors.d.ts.map +0 -1
- package/dist/internal/s2c-dispatcher-errors.js.map +0 -1
- package/dist/internal/s2c-partition-key.d.ts +0 -71
- package/dist/internal/s2c-partition-key.d.ts.map +0 -1
- package/dist/internal/s2c-partition-key.js +0 -140
- package/dist/internal/s2c-partition-key.js.map +0 -1
- package/dist/internal/s2c-partition-worker.d.ts.map +0 -1
- package/dist/internal/s2c-partition-worker.js.map +0 -1
- package/dist/internal/s2c-partitioned-dispatcher.d.ts.map +0 -1
- package/dist/internal/s2c-partitioned-dispatcher.js.map +0 -1
package/dist/cli/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/cli/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/cli/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
+
import { LocalServiceCommands, type LocalServiceCommand } from "../runtime/local-service-commands.js";
|
|
3
|
+
import { agentId, type ParamsOf, type ResultOf, type RpcDefinition, type TSchema } from "@moltzap/protocol";
|
|
4
|
+
export { LocalServiceCommands };
|
|
5
|
+
export type { LocalServiceCommand };
|
|
6
|
+
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 & {
|
|
7
|
+
readonly _tag: "SocketRequestError";
|
|
8
|
+
} & Readonly<A>;
|
|
9
|
+
export declare class SocketRequestError extends SocketRequestError_base<{
|
|
10
|
+
readonly method: string;
|
|
11
|
+
readonly message: string;
|
|
12
|
+
readonly cause?: unknown;
|
|
13
|
+
}> {
|
|
14
|
+
}
|
|
15
|
+
declare const ParticipantResolveError_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 & {
|
|
16
|
+
readonly _tag: "ParticipantResolveError";
|
|
17
|
+
} & Readonly<A>;
|
|
18
|
+
export declare class ParticipantResolveError extends ParticipantResolveError_base<{
|
|
19
|
+
readonly input: string;
|
|
20
|
+
readonly message: string;
|
|
21
|
+
readonly cause?: unknown;
|
|
22
|
+
}> {
|
|
23
|
+
}
|
|
24
|
+
export type SocketClientError = SocketRequestError | ParticipantResolveError;
|
|
2
25
|
/**
|
|
3
26
|
* Send a request to the MoltZapService via Unix socket, returning the `result`
|
|
4
27
|
* field as an Effect. Typed failures:
|
|
@@ -10,12 +33,14 @@ import { Effect } from "effect";
|
|
|
10
33
|
* Uses `Effect.async` so fiber interruption cleanly destroys the socket
|
|
11
34
|
* (AbortSignal callback) — no leaked fd if a parent fiber times out.
|
|
12
35
|
*/
|
|
13
|
-
export declare const request: (
|
|
36
|
+
export declare const request: <D extends RpcDefinition<string, TSchema, TSchema>>(definition: D, params: ParamsOf<D>, socketPath?: string) => Effect.Effect<ResultOf<D>, SocketRequestError>;
|
|
37
|
+
export declare const requestLocalService: (command: LocalServiceCommand, params?: Record<string, unknown>, socketPath?: string) => Effect.Effect<unknown, SocketRequestError>;
|
|
38
|
+
export declare const sendSocketRequest: (method: string, params: unknown, socketPath?: string) => Effect.Effect<unknown, SocketRequestError>;
|
|
14
39
|
/** Resolve "agent:name" or "agent:<uuid>" to { type, id }. */
|
|
15
40
|
export declare const resolveParticipant: (raw: string) => Effect.Effect<{
|
|
16
|
-
type:
|
|
17
|
-
id:
|
|
18
|
-
},
|
|
41
|
+
readonly type: "agent";
|
|
42
|
+
readonly id: ReturnType<typeof agentId>;
|
|
43
|
+
}, SocketClientError>;
|
|
19
44
|
/** Pure predicate: socket path exists. Wrapped in Effect so callers compose it. */
|
|
20
45
|
export declare const isServiceRunning: Effect.Effect<boolean>;
|
|
21
46
|
//# 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":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"socket-client.d.ts","sourceRoot":"","sources":["../../src/cli/socket-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAQ,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EACL,oBAAoB,EACpB,KAAK,mBAAmB,EACzB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAEL,OAAO,EAEP,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,OAAO,EACb,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAChC,YAAY,EAAE,mBAAmB,EAAE,CAAC;;;;AAEpC,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;;;;AAEL,qBAAa,uBAAwB,SAAQ,6BAE3C;IACA,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;CAAG;AAEL,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAAG,uBAAuB,CAAC;AAW7E;;;;;;;;;;GAUG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EACvE,YAAY,CAAC,EACb,QAAQ,QAAQ,CAAC,CAAC,CAAC,EACnB,aAAa,MAAM,KAClB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAa7C,CAAC;AAEJ,eAAO,MAAM,mBAAmB,GAC9B,SAAS,mBAAmB,EAC5B,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,aAAa,MAAM,KAClB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,kBAAkB,CACI,CAAC;AAEjD,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,MAAM,EACd,QAAQ,OAAO,EACf,aAAa,MAAM,KAClB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAuGxC,CAAC;AAKL,8DAA8D;AAC9D,eAAO,MAAM,kBAAkB,GAC7B,KAAK,MAAM,KACV,MAAM,CAAC,MAAM,CACd;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,CAAA;CAAE,EACnE,iBAAiB,CAmCf,CAAC;AAEL,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAEnD,CAAC"}
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import * as net from "node:net";
|
|
2
2
|
import * as fs from "node:fs";
|
|
3
|
-
import { Effect } from "effect";
|
|
3
|
+
import { Data, Effect } from "effect";
|
|
4
4
|
import { MoltZapService } from "../service.js";
|
|
5
|
+
import { LocalServiceCommands, } from "../runtime/local-service-commands.js";
|
|
6
|
+
import { AgentsLookupByName, agentId, decodeRpcResult, } from "@moltzap/protocol";
|
|
7
|
+
const SOCKET_REQUEST_TIMEOUT_MS = 10_000;
|
|
8
|
+
export { LocalServiceCommands };
|
|
9
|
+
export class SocketRequestError extends Data.TaggedError("SocketRequestError") {
|
|
10
|
+
}
|
|
11
|
+
export class ParticipantResolveError extends Data.TaggedError("ParticipantResolveError") {
|
|
12
|
+
}
|
|
13
|
+
const socketRequestError = (method, message, cause) => new SocketRequestError({ method, message, cause });
|
|
14
|
+
const isPlainRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
5
15
|
/**
|
|
6
16
|
* Send a request to the MoltZapService via Unix socket, returning the `result`
|
|
7
17
|
* field as an Effect. Typed failures:
|
|
@@ -13,7 +23,9 @@ import { MoltZapService } from "../service.js";
|
|
|
13
23
|
* Uses `Effect.async` so fiber interruption cleanly destroys the socket
|
|
14
24
|
* (AbortSignal callback) — no leaked fd if a parent fiber times out.
|
|
15
25
|
*/
|
|
16
|
-
export const request = (
|
|
26
|
+
export const request = (definition, params, socketPath) => sendSocketRequest(definition.name, params, socketPath).pipe(Effect.flatMap((result) => decodeRpcResult(definition, result).pipe(Effect.mapError(() => socketRequestError(definition.name, `Malformed result for method: ${definition.name}`, result)))));
|
|
27
|
+
export const requestLocalService = (command, params, socketPath) => sendSocketRequest(command, params, socketPath);
|
|
28
|
+
export const sendSocketRequest = (method, params, socketPath) => Effect.async((resume, signal) => {
|
|
17
29
|
const sockPath = socketPath ?? MoltZapService.SOCKET_PATH;
|
|
18
30
|
const conn = net.createConnection(sockPath);
|
|
19
31
|
let buffer = "";
|
|
@@ -28,10 +40,10 @@ export const request = (method, params, socketPath) => Effect.async((resume, sig
|
|
|
28
40
|
resume(outcome);
|
|
29
41
|
};
|
|
30
42
|
const timer = setTimeout(() => {
|
|
31
|
-
done(Effect.fail(
|
|
32
|
-
},
|
|
43
|
+
done(Effect.fail(socketRequestError(method, "Socket request timed out")));
|
|
44
|
+
}, SOCKET_REQUEST_TIMEOUT_MS);
|
|
33
45
|
signal.addEventListener("abort", () => {
|
|
34
|
-
done(Effect.fail(
|
|
46
|
+
done(Effect.fail(socketRequestError(method, "Socket request aborted")));
|
|
35
47
|
});
|
|
36
48
|
conn.on("connect", () => {
|
|
37
49
|
conn.write(JSON.stringify({ method, params }) + "\n");
|
|
@@ -47,24 +59,34 @@ export const request = (method, params, socketPath) => Effect.async((resume, sig
|
|
|
47
59
|
parsed = JSON.parse(line);
|
|
48
60
|
}
|
|
49
61
|
catch (err) {
|
|
50
|
-
done(Effect.fail(
|
|
62
|
+
done(Effect.fail(socketRequestError(method, `Malformed response from service: ${err instanceof Error ? err.message : String(err)}`, err)));
|
|
51
63
|
return;
|
|
52
64
|
}
|
|
53
|
-
if (parsed
|
|
54
|
-
done(Effect.fail(
|
|
65
|
+
if (!isPlainRecord(parsed)) {
|
|
66
|
+
done(Effect.fail(socketRequestError(method, "Malformed response from service: expected object", parsed)));
|
|
67
|
+
return;
|
|
55
68
|
}
|
|
56
|
-
|
|
57
|
-
|
|
69
|
+
const error = parsed["error"];
|
|
70
|
+
if (error !== undefined) {
|
|
71
|
+
if (typeof error === "string") {
|
|
72
|
+
done(Effect.fail(socketRequestError(method, error)));
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
done(Effect.fail(socketRequestError(method, "Malformed response from service: error must be a string", parsed)));
|
|
76
|
+
return;
|
|
58
77
|
}
|
|
78
|
+
done(Effect.succeed(parsed["result"]));
|
|
59
79
|
}
|
|
60
80
|
});
|
|
61
81
|
conn.on("error", (err) => {
|
|
62
|
-
const code = err
|
|
82
|
+
const code = typeof err === "object" && err !== null && "code" in err
|
|
83
|
+
? err.code
|
|
84
|
+
: undefined;
|
|
63
85
|
if (code === "ENOENT" || code === "ECONNREFUSED") {
|
|
64
|
-
done(Effect.fail(
|
|
86
|
+
done(Effect.fail(socketRequestError(method, "MoltZap service is not running. Start the OpenClaw channel plugin first.", err)));
|
|
65
87
|
}
|
|
66
88
|
else {
|
|
67
|
-
done(Effect.fail(err));
|
|
89
|
+
done(Effect.fail(socketRequestError(method, err.message, err)));
|
|
68
90
|
}
|
|
69
91
|
});
|
|
70
92
|
});
|
|
@@ -73,22 +95,31 @@ const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/
|
|
|
73
95
|
export const resolveParticipant = (raw) => Effect.gen(function* () {
|
|
74
96
|
const colon = raw.indexOf(":");
|
|
75
97
|
if (colon === -1) {
|
|
76
|
-
return yield* Effect.fail(new
|
|
98
|
+
return yield* Effect.fail(new ParticipantResolveError({
|
|
99
|
+
input: raw,
|
|
100
|
+
message: `Invalid: "${raw}". Use agent:name`,
|
|
101
|
+
}));
|
|
77
102
|
}
|
|
78
103
|
const type = raw.slice(0, colon);
|
|
79
104
|
const value = raw.slice(colon + 1);
|
|
80
|
-
if (UUID_RE.test(value))
|
|
81
|
-
return { type, id: value };
|
|
82
105
|
if (type !== "agent") {
|
|
83
|
-
return yield* Effect.fail(new
|
|
106
|
+
return yield* Effect.fail(new ParticipantResolveError({
|
|
107
|
+
input: raw,
|
|
108
|
+
message: `Cannot resolve "${raw}"`,
|
|
109
|
+
}));
|
|
84
110
|
}
|
|
85
|
-
|
|
111
|
+
if (UUID_RE.test(value))
|
|
112
|
+
return { type: "agent", id: agentId(value) };
|
|
113
|
+
const result = yield* request(AgentsLookupByName, {
|
|
86
114
|
names: [value],
|
|
87
|
-
})
|
|
115
|
+
});
|
|
88
116
|
if (result.agents.length === 0) {
|
|
89
|
-
return yield* Effect.fail(new
|
|
117
|
+
return yield* Effect.fail(new ParticipantResolveError({
|
|
118
|
+
input: raw,
|
|
119
|
+
message: `Agent "${value}" not found`,
|
|
120
|
+
}));
|
|
90
121
|
}
|
|
91
|
-
return { type: "agent", id: result.agents[0].id };
|
|
122
|
+
return { type: "agent", id: agentId(result.agents[0].id) };
|
|
92
123
|
});
|
|
93
124
|
/** Pure predicate: socket path exists. Wrapped in Effect so callers compose it. */
|
|
94
125
|
export const isServiceRunning = Effect.sync(() => fs.existsSync(MoltZapService.SOCKET_PATH));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-client.js","sourceRoot":"","sources":["../../src/cli/socket-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"socket-client.js","sourceRoot":"","sources":["../../src/cli/socket-client.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/transport.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Context, Effect, Layer } from "effect";
|
|
2
2
|
import type { ProfileError } from "./profile.js";
|
|
3
|
+
import type { ParamsOf, ResultOf, RpcDefinition, TSchema } from "@moltzap/protocol";
|
|
3
4
|
/** Errors any Transport.rpc call may surface. Exhaustive. */
|
|
4
5
|
export type TransportError = ServiceUnreachableError | TransportTimeoutError | TransportRpcError | TransportDecodeError | TransportConfigError;
|
|
5
6
|
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 & {
|
|
@@ -68,7 +69,7 @@ export type TransportKind = "daemon" | "direct" | "test";
|
|
|
68
69
|
*/
|
|
69
70
|
export interface Transport {
|
|
70
71
|
readonly kind: TransportKind;
|
|
71
|
-
readonly rpc: <
|
|
72
|
+
readonly rpc: <D extends RpcDefinition<string, TSchema, TSchema>>(definition: D, params: ParamsOf<D>) => Effect.Effect<ResultOf<D>, TransportError>;
|
|
72
73
|
}
|
|
73
74
|
export declare const Transport: Context.Tag<Transport, Transport>;
|
|
74
75
|
/**
|
|
@@ -81,6 +82,8 @@ export interface TransportOptions {
|
|
|
81
82
|
readonly impersonateKey?: string;
|
|
82
83
|
/** Resolved profile apiKey if `--profile <name>` supplied. */
|
|
83
84
|
readonly profileKey?: string;
|
|
85
|
+
/** Resolved MOLTZAP_API_KEY for the legacy direct fallback branch. */
|
|
86
|
+
readonly envFallbackKey?: string;
|
|
84
87
|
/** Server URL resolved from config + env (wss:// or http://). */
|
|
85
88
|
readonly serverUrl: string;
|
|
86
89
|
/** Daemon socket path (absent only in tests that don't set it). */
|
|
@@ -116,13 +119,7 @@ export type TransportDecision = {
|
|
|
116
119
|
*/
|
|
117
120
|
export declare const decideTransport: (options: TransportOptions) => Effect.Effect<TransportDecision, never>;
|
|
118
121
|
/** @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;
|
|
122
|
+
export declare const tagWsError: (method: string, err: unknown) => TransportError;
|
|
126
123
|
/**
|
|
127
124
|
* Build the Layer that provides {@link Transport} for the current invocation.
|
|
128
125
|
*
|
|
@@ -143,7 +140,7 @@ export declare const makeTransportLayer: (options: TransportOptions) => Layer.La
|
|
|
143
140
|
* Every new subcommand routes through this helper; raw `socket-client.request`
|
|
144
141
|
* imports in new commands are a lint-level violation (see design doc §3).
|
|
145
142
|
*/
|
|
146
|
-
export declare const rpc: <
|
|
143
|
+
export declare const rpc: <D extends RpcDefinition<string, TSchema, TSchema>>(definition: D, params: ParamsOf<D>) => Effect.Effect<ResultOf<D>, TransportError, Transport>;
|
|
147
144
|
/**
|
|
148
145
|
* Uniform error-to-exit adapter for subcommand handlers. Catches every error
|
|
149
146
|
* channel, prints `Failed: <msg>` to stderr, and exits non-zero. Uses the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/cli/transport.ts"],"names":[],"mappings":"AAgBA,OAAO,
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/cli/transport.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/transport.js
CHANGED
|
@@ -14,8 +14,9 @@
|
|
|
14
14
|
* directly via `Effect.provideService`.
|
|
15
15
|
*/
|
|
16
16
|
import * as net from "node:net";
|
|
17
|
-
import { Context, Data, Effect, Layer, Scope } from "effect";
|
|
17
|
+
import { Config, Context, Data, Effect, Layer, Option, Scope } from "effect";
|
|
18
18
|
import { MoltZapService } from "../service.js";
|
|
19
|
+
import { NotConnectedError, RpcServerError, RpcTimeoutError, } from "@moltzap/protocol";
|
|
19
20
|
import { MoltZapWsClient } from "../ws-client.js";
|
|
20
21
|
import { request as daemonRequest } from "./socket-client.js";
|
|
21
22
|
import { loadLayeredConfig, parseProfileName, resolveProfileAuth, } from "./profile.js";
|
|
@@ -45,6 +46,14 @@ export class TransportConfigError extends Data.TaggedError("TransportConfigError
|
|
|
45
46
|
}
|
|
46
47
|
export const Transport = Context.GenericTag("moltzap/cli/Transport");
|
|
47
48
|
const DEFAULT_SERVER_URL = "wss://api.moltzap.xyz";
|
|
49
|
+
const DAEMON_TIMEOUT_MS = 10_000;
|
|
50
|
+
const JSON_RPC_SERVER_ERROR_CODE = -32000;
|
|
51
|
+
const PROBE_DAEMON_TIMEOUT_MS = 250;
|
|
52
|
+
const EnvServerUrl = Config.option(Config.string("MOLTZAP_SERVER_URL"));
|
|
53
|
+
const EnvApiKey = Config.option(Config.string("MOLTZAP_API_KEY"));
|
|
54
|
+
const loadEnvServerUrl = EnvServerUrl.pipe(Effect.map(Option.getOrUndefined), Effect.orElseSucceed(() => undefined));
|
|
55
|
+
const loadEnvServerUrlWithDefault = loadEnvServerUrl.pipe(Effect.map((serverUrl) => serverUrl ?? DEFAULT_SERVER_URL));
|
|
56
|
+
const loadEnvApiKey = EnvApiKey.pipe(Effect.map(Option.getOrUndefined), Effect.orElseSucceed(() => undefined));
|
|
48
57
|
/**
|
|
49
58
|
* Decision function — Effect-returning because the env-fallback branch
|
|
50
59
|
* may invoke the `probeDaemon` thunk. The as-flag branch short-circuits
|
|
@@ -60,7 +69,7 @@ export const decideTransport = (options) => Effect.gen(function* () {
|
|
|
60
69
|
return { _tag: "UseDirect", reason: "profile" };
|
|
61
70
|
}
|
|
62
71
|
// Env-fallback branch: MOLTZAP_API_KEY is set AND daemon is unreachable.
|
|
63
|
-
const hasEnvKey =
|
|
72
|
+
const hasEnvKey = options.envFallbackKey !== undefined;
|
|
64
73
|
if (hasEnvKey && options.probeDaemon !== undefined) {
|
|
65
74
|
const reachable = yield* options.probeDaemon();
|
|
66
75
|
if (!reachable) {
|
|
@@ -85,7 +94,7 @@ const tagDaemonError = (method, err) => {
|
|
|
85
94
|
});
|
|
86
95
|
}
|
|
87
96
|
if (msg.includes("timed out") || msg.includes("aborted")) {
|
|
88
|
-
return new TransportTimeoutError({ method, timeoutMs:
|
|
97
|
+
return new TransportTimeoutError({ method, timeoutMs: DAEMON_TIMEOUT_MS });
|
|
89
98
|
}
|
|
90
99
|
if (msg.startsWith("Malformed")) {
|
|
91
100
|
return new TransportDecodeError({ method, cause: err });
|
|
@@ -93,40 +102,39 @@ const tagDaemonError = (method, err) => {
|
|
|
93
102
|
// Remote error surfaces as a bare message from the service.
|
|
94
103
|
return new TransportRpcError({
|
|
95
104
|
method,
|
|
96
|
-
code:
|
|
105
|
+
code: JSON_RPC_SERVER_ERROR_CODE,
|
|
97
106
|
message: msg,
|
|
98
107
|
});
|
|
99
108
|
};
|
|
100
109
|
const makeDaemonTransport = (socketPath) => ({
|
|
101
110
|
kind: "daemon",
|
|
102
|
-
rpc: (
|
|
111
|
+
rpc: (definition, params) => daemonRequest(definition, params, socketPath).pipe(Effect.mapError((err) => tagDaemonError(definition.name, err))),
|
|
103
112
|
});
|
|
104
113
|
// Map ws-client errors (NotConnectedError | RpcTimeoutError | RpcServerError)
|
|
105
|
-
// to TransportError tags.
|
|
106
|
-
// to avoid a circular import chain through runtime/errors.
|
|
114
|
+
// to TransportError tags.
|
|
107
115
|
/** @internal exported for decoder-fixture tests only (sbd#198). */
|
|
108
116
|
export const tagWsError = (method, err) => {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
});
|
|
115
|
-
case "RpcTimeoutError":
|
|
116
|
-
return new TransportTimeoutError({
|
|
117
|
-
method,
|
|
118
|
-
timeoutMs: err.timeoutMs ?? 30_000,
|
|
119
|
-
});
|
|
120
|
-
case "RpcServerError":
|
|
121
|
-
return new TransportRpcError({
|
|
122
|
-
method,
|
|
123
|
-
code: err.code ?? -32000,
|
|
124
|
-
message: err.message ?? "RPC error",
|
|
125
|
-
data: err.data,
|
|
126
|
-
});
|
|
127
|
-
default:
|
|
128
|
-
return new TransportDecodeError({ method, cause: err });
|
|
117
|
+
if (err instanceof NotConnectedError) {
|
|
118
|
+
return new ServiceUnreachableError({
|
|
119
|
+
socketPath: "(direct-ws)",
|
|
120
|
+
cause: err,
|
|
121
|
+
});
|
|
129
122
|
}
|
|
123
|
+
if (err instanceof RpcTimeoutError) {
|
|
124
|
+
return new TransportTimeoutError({
|
|
125
|
+
method,
|
|
126
|
+
timeoutMs: err.timeoutMs,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
if (err instanceof RpcServerError) {
|
|
130
|
+
return new TransportRpcError({
|
|
131
|
+
method,
|
|
132
|
+
code: err.code,
|
|
133
|
+
message: err.message,
|
|
134
|
+
data: err.data,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
return new TransportDecodeError({ method, cause: err });
|
|
130
138
|
};
|
|
131
139
|
/**
|
|
132
140
|
* Build a direct-WebSocket transport. Requires `Scope` so `Layer.scoped`
|
|
@@ -173,9 +181,9 @@ const makeDirectTransport = (serverUrl, agentKey) => Effect.gen(function* () {
|
|
|
173
181
|
}));
|
|
174
182
|
return {
|
|
175
183
|
kind: "direct",
|
|
176
|
-
rpc: (
|
|
177
|
-
.sendRpc(
|
|
178
|
-
.pipe(Effect.mapError((e) => tagWsError(
|
|
184
|
+
rpc: (definition, params) => connectOnce.pipe(Effect.flatMap((c) => c
|
|
185
|
+
.sendRpc(definition, params)
|
|
186
|
+
.pipe(Effect.mapError((e) => tagWsError(definition.name, e))))),
|
|
179
187
|
};
|
|
180
188
|
});
|
|
181
189
|
/**
|
|
@@ -207,7 +215,7 @@ export const makeTransportLayer = (options) => Layer.scoped(Transport, Effect.ge
|
|
|
207
215
|
key = options.profileKey;
|
|
208
216
|
break;
|
|
209
217
|
case "env-fallback":
|
|
210
|
-
key =
|
|
218
|
+
key = options.envFallbackKey;
|
|
211
219
|
break;
|
|
212
220
|
}
|
|
213
221
|
if (key === undefined) {
|
|
@@ -230,7 +238,7 @@ export const makeTransportLayer = (options) => Layer.scoped(Transport, Effect.ge
|
|
|
230
238
|
* Every new subcommand routes through this helper; raw `socket-client.request`
|
|
231
239
|
* imports in new commands are a lint-level violation (see design doc §3).
|
|
232
240
|
*/
|
|
233
|
-
export const rpc = (
|
|
241
|
+
export const rpc = (definition, params) => Effect.flatMap(Transport, (t) => t.rpc(definition, params));
|
|
234
242
|
/**
|
|
235
243
|
* Uniform error-to-exit adapter for subcommand handlers. Catches every error
|
|
236
244
|
* channel, prints `Failed: <msg>` to stderr, and exits non-zero. Uses the
|
|
@@ -267,7 +275,7 @@ export const resolveTransportInputs = (parsed) => Effect.gen(function* () {
|
|
|
267
275
|
// ─── Branch A: impersonate (--as) ──────────────────────────────────────
|
|
268
276
|
// Invariant §4.2: no loadConfig, no MOLTZAP_API_KEY read, no config.json open.
|
|
269
277
|
if (parsed.impersonateKey !== undefined) {
|
|
270
|
-
const serverUrl =
|
|
278
|
+
const serverUrl = yield* loadEnvServerUrlWithDefault;
|
|
271
279
|
return {
|
|
272
280
|
impersonateKey: parsed.impersonateKey,
|
|
273
281
|
serverUrl,
|
|
@@ -278,17 +286,19 @@ export const resolveTransportInputs = (parsed) => Effect.gen(function* () {
|
|
|
278
286
|
const name = yield* parseProfileName(parsed.profileName);
|
|
279
287
|
const layered = yield* loadLayeredConfig;
|
|
280
288
|
const record = yield* resolveProfileAuth(name);
|
|
281
|
-
const serverUrl =
|
|
289
|
+
const serverUrl = yield* loadEnvServerUrl;
|
|
282
290
|
return {
|
|
283
291
|
profileKey: record.apiKey,
|
|
284
|
-
serverUrl,
|
|
292
|
+
serverUrl: serverUrl ?? record.serverUrl ?? layered.serverUrl,
|
|
285
293
|
socketPath: MoltZapService.SOCKET_PATH,
|
|
286
294
|
probeDaemon: probeDaemonDefault,
|
|
287
295
|
};
|
|
288
296
|
}
|
|
289
297
|
// ─── Branch C: legacy daemon / env fallback ────────────────────────────
|
|
290
|
-
const serverUrl =
|
|
298
|
+
const serverUrl = yield* loadEnvServerUrlWithDefault;
|
|
299
|
+
const envFallbackKey = yield* loadEnvApiKey;
|
|
291
300
|
return {
|
|
301
|
+
...(envFallbackKey !== undefined ? { envFallbackKey } : {}),
|
|
292
302
|
serverUrl,
|
|
293
303
|
socketPath: MoltZapService.SOCKET_PATH,
|
|
294
304
|
probeDaemon: probeDaemonDefault,
|
|
@@ -314,7 +324,7 @@ const probeDaemonDefault = () => Effect.async((resume) => {
|
|
|
314
324
|
resume(Effect.succeed(reachable));
|
|
315
325
|
};
|
|
316
326
|
const conn = net.createConnection(MoltZapService.SOCKET_PATH);
|
|
317
|
-
const timer = setTimeout(() => done(false),
|
|
327
|
+
const timer = setTimeout(() => done(false), PROBE_DAEMON_TIMEOUT_MS);
|
|
318
328
|
conn.once("connect", () => done(true));
|
|
319
329
|
conn.once("error", () => done(false));
|
|
320
330
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/cli/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/cli/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Cause, Effect, Exit, Option } from "effect";
|
|
7
7
|
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
8
|
+
import { NotConnectedError, RpcServerError, RpcTimeoutError, } from "@moltzap/protocol";
|
|
8
9
|
import { decideTransport, makeTransportLayer, resolveTransportInputs, tagWsError, Transport, TransportDecodeError, TransportRpcError, ServiceUnreachableError, TransportTimeoutError, } from "./transport.js";
|
|
10
|
+
import { AppsListSessions } from "@moltzap/protocol";
|
|
9
11
|
/**
|
|
10
12
|
* Module-level mock so transport.ts's `new MoltZapWsClient(...)` call is
|
|
11
13
|
* intercepted for the composed-rpc test below. Existing tests (decideTransport,
|
|
@@ -14,11 +16,11 @@ import { decideTransport, makeTransportLayer, resolveTransportInputs, tagWsError
|
|
|
14
16
|
*/
|
|
15
17
|
vi.mock("../ws-client.js", async () => {
|
|
16
18
|
const effect = await import("effect");
|
|
17
|
-
const
|
|
19
|
+
const protocol = await import("@moltzap/protocol");
|
|
18
20
|
return {
|
|
19
21
|
MoltZapWsClient: vi.fn().mockImplementation(() => ({
|
|
20
22
|
connect: () => effect.Effect.void,
|
|
21
|
-
sendRpc: (
|
|
23
|
+
sendRpc: (_definition, _params) => effect.Effect.fail(new protocol.RpcServerError({
|
|
22
24
|
code: -32001,
|
|
23
25
|
message: "item not found",
|
|
24
26
|
})),
|
|
@@ -55,14 +57,16 @@ describe("decideTransport", () => {
|
|
|
55
57
|
const decision = await Effect.runPromise(decideTransport(makeOpts({ profileKey: "pk-1" })));
|
|
56
58
|
expect(decision).toEqual({ _tag: "UseDirect", reason: "profile" });
|
|
57
59
|
});
|
|
58
|
-
it("returns UseDirect{env-fallback} when
|
|
59
|
-
|
|
60
|
-
|
|
60
|
+
it("returns UseDirect{env-fallback} when envFallbackKey + daemonReachable=false", async () => {
|
|
61
|
+
const decision = await Effect.runPromise(decideTransport(makeOpts({
|
|
62
|
+
envFallbackKey: "env-key",
|
|
63
|
+
probeDaemon: () => Effect.succeed(false),
|
|
64
|
+
})));
|
|
61
65
|
expect(decision).toEqual({ _tag: "UseDirect", reason: "env-fallback" });
|
|
62
66
|
});
|
|
63
|
-
it("returns UseDaemon when
|
|
64
|
-
process.env.MOLTZAP_API_KEY = "env-key";
|
|
67
|
+
it("returns UseDaemon when envFallbackKey + daemonReachable=true", async () => {
|
|
65
68
|
const decision = await Effect.runPromise(decideTransport(makeOpts({
|
|
69
|
+
envFallbackKey: "env-key",
|
|
66
70
|
socketPath: "/tmp/sock",
|
|
67
71
|
probeDaemon: () => Effect.succeed(true),
|
|
68
72
|
})));
|
|
@@ -97,11 +101,10 @@ describe("decideTransport", () => {
|
|
|
97
101
|
*/
|
|
98
102
|
describe("tagWsError — maps ws-client error tags to TransportError variants", () => {
|
|
99
103
|
it("RpcServerError maps to TransportRpcError (not TransportDecodeError)", () => {
|
|
100
|
-
const err = tagWsError(
|
|
101
|
-
_tag: "RpcServerError",
|
|
104
|
+
const err = tagWsError(AppsListSessions.name, new RpcServerError({
|
|
102
105
|
code: -32001,
|
|
103
106
|
message: "session not found",
|
|
104
|
-
});
|
|
107
|
+
}));
|
|
105
108
|
expect(err).toBeInstanceOf(TransportRpcError);
|
|
106
109
|
expect(err._tag).toBe("TransportRpcError");
|
|
107
110
|
if (err instanceof TransportRpcError) {
|
|
@@ -110,15 +113,15 @@ describe("tagWsError — maps ws-client error tags to TransportError variants",
|
|
|
110
113
|
}
|
|
111
114
|
});
|
|
112
115
|
it("NotConnectedError maps to ServiceUnreachableError", () => {
|
|
113
|
-
const err = tagWsError(
|
|
116
|
+
const err = tagWsError(AppsListSessions.name, new NotConnectedError({ message: "not connected" }));
|
|
114
117
|
expect(err).toBeInstanceOf(ServiceUnreachableError);
|
|
115
118
|
expect(err._tag).toBe("ServiceUnreachableError");
|
|
116
119
|
});
|
|
117
120
|
it("RpcTimeoutError maps to TransportTimeoutError with timeoutMs forwarded", () => {
|
|
118
|
-
const err = tagWsError(
|
|
119
|
-
|
|
121
|
+
const err = tagWsError(AppsListSessions.name, new RpcTimeoutError({
|
|
122
|
+
method: AppsListSessions.name,
|
|
120
123
|
timeoutMs: 15_000,
|
|
121
|
-
});
|
|
124
|
+
}));
|
|
122
125
|
expect(err).toBeInstanceOf(TransportTimeoutError);
|
|
123
126
|
if (err instanceof TransportTimeoutError) {
|
|
124
127
|
expect(err.timeoutMs).toBe(15_000);
|
|
@@ -128,7 +131,7 @@ describe("tagWsError — maps ws-client error tags to TransportError variants",
|
|
|
128
131
|
// Guards the regression: a future runPromise bridge would produce an object
|
|
129
132
|
// with no _tag (FiberFailureImpl shape). This pins the default branch to
|
|
130
133
|
// TransportDecodeError so the error is observable, not silently swallowed.
|
|
131
|
-
const err = tagWsError(
|
|
134
|
+
const err = tagWsError(AppsListSessions.name, {
|
|
132
135
|
message: "some unknown error",
|
|
133
136
|
});
|
|
134
137
|
expect(err).toBeInstanceOf(TransportDecodeError);
|
|
@@ -181,7 +184,7 @@ describe("makeDirectTransport — composed rpc() failure path", () => {
|
|
|
181
184
|
impersonateKey: "test-key",
|
|
182
185
|
serverUrl: "wss://test.example",
|
|
183
186
|
};
|
|
184
|
-
const exit = await Effect.runPromise(Transport.pipe(Effect.flatMap((t) => t.rpc(
|
|
187
|
+
const exit = await Effect.runPromise(Transport.pipe(Effect.flatMap((t) => t.rpc(AppsListSessions, {})), Effect.exit, Effect.provide(makeTransportLayer(opts))));
|
|
185
188
|
expect(Exit.isFailure(exit)).toBe(true);
|
|
186
189
|
if (Exit.isFailure(exit)) {
|
|
187
190
|
const failure = Cause.failureOption(exit.cause);
|