@moltzap/client 2026.503.2 → 2026.503.4
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/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 +7 -3
- package/dist/cli/commands/apps.d.ts.map +1 -1
- package/dist/cli/commands/apps.js +21 -17
- package/dist/cli/commands/apps.js.map +1 -1
- package/dist/cli/commands/apps.test.js +7 -6
- package/dist/cli/commands/apps.test.js.map +1 -1
- package/dist/cli/commands/contacts.d.ts.map +1 -1
- package/dist/cli/commands/contacts.js +6 -4
- package/dist/cli/commands/contacts.js.map +1 -1
- package/dist/cli/commands/conversations-v2.test.js +4 -3
- 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 +26 -26
- 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 +4 -9
- package/dist/cli/commands/messages.js.map +1 -1
- package/dist/cli/commands/messages.test.js +2 -1
- package/dist/cli/commands/messages.test.js.map +1 -1
- package/dist/cli/commands/permissions.d.ts +7 -3
- package/dist/cli/commands/permissions.d.ts.map +1 -1
- package/dist/cli/commands/permissions.js +11 -12
- package/dist/cli/commands/permissions.js.map +1 -1
- package/dist/cli/commands/permissions.test.js +4 -3
- package/dist/cli/commands/permissions.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 +2 -1
- 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 +5 -3
- package/dist/cli/commands/send.js.map +1 -1
- package/dist/cli/commands/send.test.js +4 -3
- package/dist/cli/commands/send.test.js.map +1 -1
- 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.js +2 -1
- 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 +11 -7
- package/dist/cli/runtime.js.map +1 -1
- package/dist/cli/socket-client.d.ts +22 -2
- package/dist/cli/socket-client.d.ts.map +1 -1
- package/dist/cli/socket-client.js +28 -12
- package/dist/cli/socket-client.js.map +1 -1
- package/dist/cli/transport.d.ts +3 -7
- package/dist/cli/transport.d.ts.map +1 -1
- package/dist/cli/transport.js +42 -32
- package/dist/cli/transport.js.map +1 -1
- package/dist/cli/transport.test.js +17 -14
- package/dist/cli/transport.test.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/__tests__/s2c-partition-key.test.js +16 -15
- package/dist/internal/__tests__/s2c-partition-key.test.js.map +1 -1
- package/dist/internal/__tests__/s2c-partition-worker.test.js +2 -1
- package/dist/internal/__tests__/s2c-partition-worker.test.js.map +1 -1
- package/dist/internal/__tests__/s2c-partitioned-dispatcher-real-ws.test.js +10 -9
- package/dist/internal/__tests__/s2c-partitioned-dispatcher-real-ws.test.js.map +1 -1
- package/dist/internal/__tests__/s2c-partitioned-dispatcher.test.js +10 -9
- package/dist/internal/__tests__/s2c-partitioned-dispatcher.test.js.map +1 -1
- package/dist/internal/s2c-partition-key.d.ts +13 -4
- package/dist/internal/s2c-partition-key.d.ts.map +1 -1
- package/dist/internal/s2c-partition-key.js +15 -9
- package/dist/internal/s2c-partition-key.js.map +1 -1
- package/dist/internal/s2c-partitioned-dispatcher.d.ts.map +1 -1
- package/dist/internal/s2c-partitioned-dispatcher.js +5 -6
- package/dist/internal/s2c-partitioned-dispatcher.js.map +1 -1
- 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.test.js +4 -5
- package/dist/runtime/errors.test.js.map +1 -1
- package/dist/runtime/frame.d.ts +1 -0
- package/dist/runtime/frame.d.ts.map +1 -1
- package/dist/runtime/frame.js +1 -0
- package/dist/runtime/frame.js.map +1 -1
- package/dist/runtime/runtime.test.js +3 -2
- package/dist/runtime/runtime.test.js.map +1 -1
- package/dist/runtime/subscribers.d.ts +3 -4
- package/dist/runtime/subscribers.d.ts.map +1 -1
- package/dist/runtime/subscribers.js +8 -16
- package/dist/runtime/subscribers.js.map +1 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +35 -16
- package/dist/service.js.map +1 -1
- package/dist/service.test.js +21 -22
- 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/conformance-adapter.d.ts.map +1 -1
- package/dist/test-utils/conformance-adapter.js +53 -38
- package/dist/test-utils/conformance-adapter.js.map +1 -1
- package/dist/test-utils/fake-service.d.ts +5 -6
- package/dist/test-utils/fake-service.d.ts.map +1 -1
- package/dist/test-utils/fake-service.js +10 -10
- package/dist/test-utils/fake-service.js.map +1 -1
- package/dist/test-utils/index.d.ts.map +1 -1
- package/dist/test-utils/index.js +13 -4
- package/dist/test-utils/index.js.map +1 -1
- package/dist/ws-client.d.ts +7 -1
- package/dist/ws-client.d.ts.map +1 -1
- package/dist/ws-client.js +99 -58
- package/dist/ws-client.js.map +1 -1
- package/dist/ws-client.test.js +49 -26
- package/dist/ws-client.test.js.map +1 -1
- package/package.json +3 -3
package/dist/cli/profile.js
CHANGED
|
@@ -19,10 +19,15 @@
|
|
|
19
19
|
import * as fs from "node:fs";
|
|
20
20
|
import * as os from "node:os";
|
|
21
21
|
import * as path from "node:path";
|
|
22
|
-
import { Data, Effect } from "effect";
|
|
22
|
+
import { Brand, Config, ConfigProvider, Data, Effect, Option } from "effect";
|
|
23
|
+
export const ProfileName = Brand.nominal();
|
|
23
24
|
const NAME_PATTERN = /^[a-z0-9][a-z0-9-]{1,30}[a-z0-9]$/;
|
|
24
25
|
const DEFAULT_SERVER_URL = "wss://api.moltzap.xyz";
|
|
25
|
-
const
|
|
26
|
+
const CONFIG_FILE_MODE = 0o600;
|
|
27
|
+
const JSON_INDENT_SPACES = 2;
|
|
28
|
+
const ConfigHome = Config.option(Config.string("MOLTZAP_CONFIG_HOME"));
|
|
29
|
+
const getConfigHomeSync = () => Option.getOrUndefined(Effect.runSync(ConfigHome.pipe(Effect.withConfigProvider(ConfigProvider.fromEnv()))));
|
|
30
|
+
const getConfigDir = () => getConfigHomeSync() ?? path.join(os.homedir(), ".moltzap");
|
|
26
31
|
const getConfigFilePathSync = () => path.join(getConfigDir(), "config.json");
|
|
27
32
|
export class ProfileNotFoundError extends Data.TaggedError("ProfileNotFoundError") {
|
|
28
33
|
}
|
|
@@ -49,7 +54,7 @@ export const parseProfileName = (raw) => {
|
|
|
49
54
|
reason: "must be 3-32 chars, lowercase alphanumeric and hyphens, cannot start or end with a hyphen",
|
|
50
55
|
}));
|
|
51
56
|
}
|
|
52
|
-
return Effect.succeed(raw);
|
|
57
|
+
return Effect.succeed(ProfileName(raw));
|
|
53
58
|
};
|
|
54
59
|
const isRecord = (x) => typeof x === "object" && x !== null && !Array.isArray(x);
|
|
55
60
|
const decodeProfileRecord = (raw, fallbackServerUrl) => {
|
|
@@ -67,29 +72,37 @@ const decodeProfileRecord = (raw, fallbackServerUrl) => {
|
|
|
67
72
|
}
|
|
68
73
|
return record;
|
|
69
74
|
};
|
|
70
|
-
const readRawConfig = () => Effect.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
try
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
75
|
+
const readRawConfig = () => Effect.gen(function* () {
|
|
76
|
+
const configPath = getConfigFilePathSync();
|
|
77
|
+
const text = yield* Effect.try({
|
|
78
|
+
try: () => fs.readFileSync(configPath, "utf-8"),
|
|
79
|
+
catch: (err) => err,
|
|
80
|
+
}).pipe(Effect.catchAll((err) => {
|
|
81
|
+
const code = err.code;
|
|
82
|
+
return code === "ENOENT"
|
|
83
|
+
? Effect.succeed(null)
|
|
84
|
+
: Effect.fail(new ProfileConfigReadError({
|
|
85
|
+
path: configPath,
|
|
86
|
+
cause: err,
|
|
87
|
+
}));
|
|
88
|
+
}));
|
|
89
|
+
if (text === null) {
|
|
90
|
+
return { raw: {}, existed: false };
|
|
91
|
+
}
|
|
92
|
+
const parsed = yield* Effect.try({
|
|
93
|
+
try: () => JSON.parse(text),
|
|
94
|
+
catch: (err) => new ProfileConfigReadError({
|
|
95
|
+
path: configPath,
|
|
96
|
+
cause: err,
|
|
97
|
+
}),
|
|
98
|
+
});
|
|
99
|
+
if (!isRecord(parsed)) {
|
|
100
|
+
return yield* Effect.fail(new ProfileConfigReadError({
|
|
101
|
+
path: configPath,
|
|
102
|
+
cause: "config root is not a JSON object",
|
|
103
|
+
}));
|
|
104
|
+
}
|
|
105
|
+
return { raw: parsed, existed: true };
|
|
93
106
|
});
|
|
94
107
|
/**
|
|
95
108
|
* Load the full layered config view. Missing file resolves to an empty
|
|
@@ -118,7 +131,7 @@ export const loadLayeredConfig = Effect.gen(function* () {
|
|
|
118
131
|
continue; // tolerate malformed entries
|
|
119
132
|
const record = decodeProfileRecord(value, serverUrl);
|
|
120
133
|
if (record !== undefined) {
|
|
121
|
-
profiles.set(name, record);
|
|
134
|
+
profiles.set(ProfileName(name), record);
|
|
122
135
|
}
|
|
123
136
|
}
|
|
124
137
|
}
|
|
@@ -184,8 +197,8 @@ export const writeProfile = (name, record) => Effect.gen(function* () {
|
|
|
184
197
|
yield* Effect.try({
|
|
185
198
|
try: () => {
|
|
186
199
|
fs.mkdirSync(configDir, { recursive: true });
|
|
187
|
-
fs.writeFileSync(configPath, JSON.stringify(next, null,
|
|
188
|
-
mode:
|
|
200
|
+
fs.writeFileSync(configPath, JSON.stringify(next, null, JSON_INDENT_SPACES) + "\n", {
|
|
201
|
+
mode: CONFIG_FILE_MODE,
|
|
189
202
|
});
|
|
190
203
|
},
|
|
191
204
|
catch: (err) => new ProfileConfigWriteError({ path: configPath, cause: err }),
|
package/dist/cli/profile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/cli/profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/cli/profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAS7E,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,EAAe,CAAC;AAKxD,MAAM,YAAY,GAAG,mCAAmC,CAAC;AAEzD,MAAM,kBAAkB,GAAG,uBAAuB,CAAC;AACnD,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAEvE,MAAM,iBAAiB,GAAG,GAAuB,EAAE,CACjD,MAAM,CAAC,cAAc,CACnB,MAAM,CAAC,OAAO,CACZ,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,CACrE,CACF,CAAC;AAEJ,MAAM,YAAY,GAAG,GAAW,EAAE,CAChC,iBAAiB,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AAE7D,MAAM,qBAAqB,GAAG,GAAW,EAAE,CACzC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,CAAC,CAAC;AAwC3C,MAAM,OAAO,oBAAqB,SAAQ,IAAI,CAAC,WAAW,CACxD,sBAAsB,CAGtB;CAAG;AAEL,MAAM,OAAO,yBAA0B,SAAQ,IAAI,CAAC,WAAW,CAC7D,2BAA2B,CAG3B;CAAG;AAEL,MAAM,OAAO,uBAAwB,SAAQ,IAAI,CAAC,WAAW,CAC3D,yBAAyB,CAIzB;CAAG;AAEL,MAAM,OAAO,sBAAuB,SAAQ,IAAI,CAAC,WAAW,CAC1D,wBAAwB,CAIxB;CAAG;AAEL,MAAM,OAAO,uBAAwB,SAAQ,IAAI,CAAC,WAAW,CAC3D,yBAAyB,CAIzB;CAAG;AAEL,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,GAAW,EAC0C,EAAE;IACvD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC,IAAI,CAChB,IAAI,uBAAuB,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CACnE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,IAAI,CAChB,IAAI,uBAAuB,CAAC;YAC1B,IAAI,EAAE,GAAG;YACT,MAAM,EACJ,2FAA2F;SAC9F,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC;AASF,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAgC,EAAE,CAC5D,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAE3D,MAAM,mBAAmB,GAAG,CAC1B,GAAY,EACZ,iBAAyB,EACE,EAAE;IAC7B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IACrC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAC1B,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAChE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,SAAS,GACb,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC;IACxE,MAAM,MAAM,GAAkB,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAC/D,IAAI,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QACzC,OAAO,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC;IACvD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,GAGpB,EAAE,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;IAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAC7B,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC;QAC/C,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG;KACpB,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE;QACtB,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAC;QACjD,OAAO,IAAI,KAAK,QAAQ;YACtB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;YACtB,CAAC,CAAC,MAAM,CAAC,IAAI,CACT,IAAI,sBAAsB,CAAC;gBACzB,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,GAAG;aACX,CAAC,CACH,CAAC;IACR,CAAC,CAAC,CACH,CAAC;IACF,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAC/B,GAAG,EAAE,GAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QACpC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CACb,IAAI,sBAAsB,CAAC;YACzB,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,GAAG;SACX,CAAC;KACL,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,sBAAsB,CAAC;YACzB,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,kCAAkC;SAC1C,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,MAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACrD,CAAC,CAAC,CAAC;AAEL;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAG1B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACtB,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC;IACvC,MAAM,SAAS,GACb,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAEzE,IAAI,aAAwC,CAAC;IAC7C,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACxE,aAAa,GAAG;YACd,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,SAAS;SACV,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAC;IACvD,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,SAAS,CAAC,6BAA6B;YACrE,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACrD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AACzD,CAAC,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,IAA6B,EAI7B,EAAE,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC;IACzC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,oBAAoB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAC9C,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC,CAAC;AAEL;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,IAAoC,EACpC,MAAqB,EACkD,EAAE,CACzE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC;IACvC,MAAM,IAAI,GAA4B,EAAE,GAAG,GAAG,EAAE,CAAC;IAEjD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,MAAM,WAAW,GAA4B;YAC3C,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC;QACF,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACtC,WAAW,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,gBAAgB,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC;QAC7D,yDAAyD;QACzD,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACvC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACpC,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;IAC3C,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAChB,GAAG,EAAE,GAAG,EAAE;YACR,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,EAAE,CAAC,aAAa,CACd,UAAU,EACV,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,kBAAkB,CAAC,GAAG,IAAI,EACrD;gBACE,IAAI,EAAE,gBAAgB;aACvB,CACF,CAAC;QACJ,CAAC;QACD,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CACb,IAAI,uBAAuB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;KAChE,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,MAAqB,EACqC,EAAE,CAC5D,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AAE7B,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAiC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAC9E,qBAAqB,EAAE,CACxB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/cli/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/cli/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAIL,MAAM,IAAI,YAAY,EACtB,QAAQ,EACT,MAAM,QAAQ,CAAC;AAChB,OAAO,IAAI,MAAM,MAAM,CAAC;AAiCxB;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,oCAyBxB,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"}
|
package/dist/cli/runtime.js
CHANGED
|
@@ -9,11 +9,16 @@
|
|
|
9
9
|
* as an Effect `Logger` so `Effect.logInfo(...).pipe(Effect.annotateLogs(...))`
|
|
10
10
|
* inside commands routes through the same output format.
|
|
11
11
|
*/
|
|
12
|
-
import { Logger as EffectLogger, LogLevel } from "effect";
|
|
12
|
+
import { Config, ConfigProvider, Effect, Logger as EffectLogger, LogLevel, } from "effect";
|
|
13
13
|
import pino from "pino";
|
|
14
|
+
const CliRuntimeEnv = Config.all({
|
|
15
|
+
logLevel: Config.string("MOLTZAP_LOG_LEVEL").pipe(Config.withDefault("info")),
|
|
16
|
+
nodeEnv: Config.string("NODE_ENV").pipe(Config.withDefault("development")),
|
|
17
|
+
});
|
|
18
|
+
const runtimeEnv = Effect.runSync(CliRuntimeEnv.pipe(Effect.withConfigProvider(ConfigProvider.fromEnv())));
|
|
14
19
|
const PINO = pino({
|
|
15
|
-
level:
|
|
16
|
-
transport:
|
|
20
|
+
level: runtimeEnv.logLevel,
|
|
21
|
+
transport: runtimeEnv.nodeEnv !== "production"
|
|
17
22
|
? { target: "pino-pretty", options: { colorize: true } }
|
|
18
23
|
: undefined,
|
|
19
24
|
});
|
|
@@ -50,10 +55,9 @@ export const effectLogger = EffectLogger.make(({ logLevel, message, annotations
|
|
|
50
55
|
catch (err) {
|
|
51
56
|
try {
|
|
52
57
|
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
58
|
}
|
|
55
|
-
catch {
|
|
56
|
-
|
|
59
|
+
catch (stderrErr) {
|
|
60
|
+
console.error("[cli-logger-fallback] stderr write failed", stderrErr);
|
|
57
61
|
}
|
|
58
62
|
}
|
|
59
63
|
});
|
|
@@ -70,7 +74,7 @@ export const LoggerLive = EffectLogger.replace(EffectLogger.defaultLogger, effec
|
|
|
70
74
|
* Used when composing layers at the CLI entrypoint.
|
|
71
75
|
*/
|
|
72
76
|
export const minLogLevel = (() => {
|
|
73
|
-
const env =
|
|
77
|
+
const env = runtimeEnv.logLevel.toLowerCase();
|
|
74
78
|
switch (env) {
|
|
75
79
|
case "trace":
|
|
76
80
|
return LogLevel.Trace;
|
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,23 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
+
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 & {
|
|
3
|
+
readonly _tag: "SocketRequestError";
|
|
4
|
+
} & Readonly<A>;
|
|
5
|
+
export declare class SocketRequestError extends SocketRequestError_base<{
|
|
6
|
+
readonly method: string;
|
|
7
|
+
readonly message: string;
|
|
8
|
+
readonly cause?: unknown;
|
|
9
|
+
}> {
|
|
10
|
+
}
|
|
11
|
+
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 & {
|
|
12
|
+
readonly _tag: "ParticipantResolveError";
|
|
13
|
+
} & Readonly<A>;
|
|
14
|
+
export declare class ParticipantResolveError extends ParticipantResolveError_base<{
|
|
15
|
+
readonly input: string;
|
|
16
|
+
readonly message: string;
|
|
17
|
+
readonly cause?: unknown;
|
|
18
|
+
}> {
|
|
19
|
+
}
|
|
20
|
+
export type SocketClientError = SocketRequestError | ParticipantResolveError;
|
|
2
21
|
/**
|
|
3
22
|
* Send a request to the MoltZapService via Unix socket, returning the `result`
|
|
4
23
|
* field as an Effect. Typed failures:
|
|
@@ -10,12 +29,13 @@ import { Effect } from "effect";
|
|
|
10
29
|
* Uses `Effect.async` so fiber interruption cleanly destroys the socket
|
|
11
30
|
* (AbortSignal callback) — no leaked fd if a parent fiber times out.
|
|
12
31
|
*/
|
|
13
|
-
export declare const request: (method: string, params?: Record<string, unknown>, socketPath?: string) => Effect.Effect<unknown,
|
|
32
|
+
export declare const request: (method: string, params?: Record<string, unknown>, socketPath?: string) => Effect.Effect<unknown, SocketRequestError>;
|
|
14
33
|
/** Resolve "agent:name" or "agent:<uuid>" to { type, id }. */
|
|
15
34
|
export declare const resolveParticipant: (raw: string) => Effect.Effect<{
|
|
16
35
|
type: string;
|
|
17
36
|
id: string;
|
|
18
|
-
},
|
|
37
|
+
}, SocketClientError>;
|
|
19
38
|
/** Pure predicate: socket path exists. Wrapped in Effect so callers compose it. */
|
|
20
39
|
export declare const isServiceRunning: Effect.Effect<boolean>;
|
|
40
|
+
export {};
|
|
21
41
|
//# 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;;;;AAYtC,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;AAQ7E;;;;;;;;;;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,kBAAkB,CA2ExC,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,iBAAiB,CAkC5D,CAAC;AAEL,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAEnD,CAAC"}
|
|
@@ -1,7 +1,14 @@
|
|
|
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 { AgentsLookupByName } from "@moltzap/protocol";
|
|
6
|
+
const SOCKET_REQUEST_TIMEOUT_MS = 10_000;
|
|
7
|
+
export class SocketRequestError extends Data.TaggedError("SocketRequestError") {
|
|
8
|
+
}
|
|
9
|
+
export class ParticipantResolveError extends Data.TaggedError("ParticipantResolveError") {
|
|
10
|
+
}
|
|
11
|
+
const socketRequestError = (method, message, cause) => new SocketRequestError({ method, message, cause });
|
|
5
12
|
/**
|
|
6
13
|
* Send a request to the MoltZapService via Unix socket, returning the `result`
|
|
7
14
|
* field as an Effect. Typed failures:
|
|
@@ -28,10 +35,10 @@ export const request = (method, params, socketPath) => Effect.async((resume, sig
|
|
|
28
35
|
resume(outcome);
|
|
29
36
|
};
|
|
30
37
|
const timer = setTimeout(() => {
|
|
31
|
-
done(Effect.fail(
|
|
32
|
-
},
|
|
38
|
+
done(Effect.fail(socketRequestError(method, "Socket request timed out")));
|
|
39
|
+
}, SOCKET_REQUEST_TIMEOUT_MS);
|
|
33
40
|
signal.addEventListener("abort", () => {
|
|
34
|
-
done(Effect.fail(
|
|
41
|
+
done(Effect.fail(socketRequestError(method, "Socket request aborted")));
|
|
35
42
|
});
|
|
36
43
|
conn.on("connect", () => {
|
|
37
44
|
conn.write(JSON.stringify({ method, params }) + "\n");
|
|
@@ -47,11 +54,11 @@ export const request = (method, params, socketPath) => Effect.async((resume, sig
|
|
|
47
54
|
parsed = JSON.parse(line);
|
|
48
55
|
}
|
|
49
56
|
catch (err) {
|
|
50
|
-
done(Effect.fail(
|
|
57
|
+
done(Effect.fail(socketRequestError(method, `Malformed response from service: ${err instanceof Error ? err.message : String(err)}`, err)));
|
|
51
58
|
return;
|
|
52
59
|
}
|
|
53
60
|
if (parsed.error) {
|
|
54
|
-
done(Effect.fail(
|
|
61
|
+
done(Effect.fail(socketRequestError(method, parsed.error)));
|
|
55
62
|
}
|
|
56
63
|
else {
|
|
57
64
|
done(Effect.succeed(parsed.result));
|
|
@@ -61,10 +68,10 @@ export const request = (method, params, socketPath) => Effect.async((resume, sig
|
|
|
61
68
|
conn.on("error", (err) => {
|
|
62
69
|
const code = err.code;
|
|
63
70
|
if (code === "ENOENT" || code === "ECONNREFUSED") {
|
|
64
|
-
done(Effect.fail(
|
|
71
|
+
done(Effect.fail(socketRequestError(method, "MoltZap service is not running. Start the OpenClaw channel plugin first.", err)));
|
|
65
72
|
}
|
|
66
73
|
else {
|
|
67
|
-
done(Effect.fail(err));
|
|
74
|
+
done(Effect.fail(socketRequestError(method, err.message, err)));
|
|
68
75
|
}
|
|
69
76
|
});
|
|
70
77
|
});
|
|
@@ -73,20 +80,29 @@ const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/
|
|
|
73
80
|
export const resolveParticipant = (raw) => Effect.gen(function* () {
|
|
74
81
|
const colon = raw.indexOf(":");
|
|
75
82
|
if (colon === -1) {
|
|
76
|
-
return yield* Effect.fail(new
|
|
83
|
+
return yield* Effect.fail(new ParticipantResolveError({
|
|
84
|
+
input: raw,
|
|
85
|
+
message: `Invalid: "${raw}". Use agent:name`,
|
|
86
|
+
}));
|
|
77
87
|
}
|
|
78
88
|
const type = raw.slice(0, colon);
|
|
79
89
|
const value = raw.slice(colon + 1);
|
|
80
90
|
if (UUID_RE.test(value))
|
|
81
91
|
return { type, id: value };
|
|
82
92
|
if (type !== "agent") {
|
|
83
|
-
return yield* Effect.fail(new
|
|
93
|
+
return yield* Effect.fail(new ParticipantResolveError({
|
|
94
|
+
input: raw,
|
|
95
|
+
message: `Cannot resolve "${raw}"`,
|
|
96
|
+
}));
|
|
84
97
|
}
|
|
85
|
-
const result = (yield* request(
|
|
98
|
+
const result = (yield* request(AgentsLookupByName.name, {
|
|
86
99
|
names: [value],
|
|
87
100
|
}));
|
|
88
101
|
if (result.agents.length === 0) {
|
|
89
|
-
return yield* Effect.fail(new
|
|
102
|
+
return yield* Effect.fail(new ParticipantResolveError({
|
|
103
|
+
input: raw,
|
|
104
|
+
message: `Agent "${value}" not found`,
|
|
105
|
+
}));
|
|
90
106
|
}
|
|
91
107
|
return { type: "agent", id: result.agents[0].id };
|
|
92
108
|
});
|
|
@@ -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
|
@@ -81,6 +81,8 @@ export interface TransportOptions {
|
|
|
81
81
|
readonly impersonateKey?: string;
|
|
82
82
|
/** Resolved profile apiKey if `--profile <name>` supplied. */
|
|
83
83
|
readonly profileKey?: string;
|
|
84
|
+
/** Resolved MOLTZAP_API_KEY for the legacy direct fallback branch. */
|
|
85
|
+
readonly envFallbackKey?: string;
|
|
84
86
|
/** Server URL resolved from config + env (wss:// or http://). */
|
|
85
87
|
readonly serverUrl: string;
|
|
86
88
|
/** Daemon socket path (absent only in tests that don't set it). */
|
|
@@ -116,13 +118,7 @@ export type TransportDecision = {
|
|
|
116
118
|
*/
|
|
117
119
|
export declare const decideTransport: (options: TransportOptions) => Effect.Effect<TransportDecision, never>;
|
|
118
120
|
/** @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;
|
|
121
|
+
export declare const tagWsError: (method: string, err: unknown) => TransportError;
|
|
126
122
|
/**
|
|
127
123
|
* Build the Layer that provides {@link Transport} for the current invocation.
|
|
128
124
|
*
|
|
@@ -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 "../runtime/errors.js";
|
|
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,7 +102,7 @@ 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
|
};
|
|
@@ -102,31 +111,30 @@ const makeDaemonTransport = (socketPath) => ({
|
|
|
102
111
|
rpc: (method, params) => daemonRequest(method, params, socketPath).pipe(Effect.map((v) => v), Effect.mapError((err) => tagDaemonError(method, 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`
|
|
@@ -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) {
|
|
@@ -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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"}
|