ai-fly 0.3.2 → 0.4.0-alpha.1
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/ai-fly.js +5 -5
- package/dist/{common-CqxqIg6D.mjs → common-BwKEJKOZ.mjs} +2 -2
- package/dist/{common-CgxCXeTt.mjs → common-Cr7D8JyX.mjs} +1 -1
- package/dist/{daemon-ZWUSWAgM.mjs → daemon-C4kj0IwL.mjs} +3 -3
- package/dist/{forget-BXL2x4Wv.mjs → forget-oMwM-SsU.mjs} +2 -2
- package/dist/{group-B96IKEDF.mjs → group-CjwGDch3.mjs} +1 -1
- package/dist/{import-rpBFh_pa.mjs → import-Zy3LL_PR.mjs} +4 -4
- package/dist/{join-CaFx5yoF.mjs → join-BJMcNGV-.mjs} +3 -3
- package/dist/{join-u1DqTU3U.mjs → join-CdKKj7QS.mjs} +2 -2
- package/dist/{key-KcUU3yhJ.mjs → key-BcNxtRJx.mjs} +3 -3
- package/dist/{key-BiEp995L.mjs → key-TP7lZeqW.mjs} +1 -1
- package/dist/{local-test-C3HGjGY3.mjs → local-test-DbpiPEsD.mjs} +1 -1
- package/dist/{models-dev-2UfQoIpQ.mjs → models-dev-7CclWuHF.mjs} +17 -1
- package/dist/{mux-CS1zhF4W.mjs → mux-BEXBL7rE.mjs} +1 -1
- package/dist/{ports-BRXd5UXh.mjs → ports-Csv91JOD.mjs} +2 -2
- package/dist/{presets-C73CAMZ6.mjs → presets-DRO5N4Vm.mjs} +2 -2
- package/dist/{revoke-CkpvK33Q.mjs → revoke-CXTcFgoT.mjs} +2 -2
- package/dist/{rewrite-xZHWnyJk.mjs → rewrite-BL3jNnFZ.mjs} +77 -7
- package/dist/{route-test-Oew0CO1U.mjs → route-test-DqKRThLp.mjs} +3 -3
- package/dist/{rpc-contract-5qyWzT5t.mjs → rpc-contract-CdiRZhUn.mjs} +4 -0
- package/dist/{run-3pdPsD8e.mjs → run-W7DBz_bR.mjs} +3 -3
- package/dist/{runtime-DNs9GtGp.mjs → runtime-CGF9Sndm.mjs} +2 -2
- package/dist/{secret-COdVHzjH.mjs → secret-DKN75Vry.mjs} +2 -2
- package/dist/secrets-BKKxR3iB.mjs +2 -0
- package/dist/{secrets-BYI6ooTJ.mjs → secrets-DFdwYE_V.mjs} +2 -2
- package/dist/{serve-DSBlodTF.mjs → serve-FjBsmK5n.mjs} +2 -2
- package/dist/{serve-Be4zdKVj.mjs → serve-GRJthOwO.mjs} +4 -4
- package/dist/{service-B5uORhl3.mjs → service-DnQhGK4m.mjs} +21 -7
- package/dist/{settings-C1Hb4zwd.mjs → settings-BAa8I7Ww.mjs} +2 -2
- package/dist/{settings-DU0YqNDt.mjs → settings-Dho5hk5Z.mjs} +1 -1
- package/dist/{share-Cug0944N.mjs → share-DpQPO1eC.mjs} +4 -4
- package/dist/{status-Bttb9aPj.mjs → status-BaRyycxh.mjs} +3 -3
- package/dist/{status-SkNsxGnk.mjs → status-Ce-lxy52.mjs} +3 -3
- package/dist/{store-CrTUwskE.mjs → store-YUMvMCBg.mjs} +1 -1
- package/dist/{store-CQShpYar.mjs → store-jmpkM28T.mjs} +1 -1
- package/dist/{test-mlaZC1y5.mjs → test-Dxkkc-KN.mjs} +2 -2
- package/package.json +1 -1
- package/dist/secrets-u19-8EyW.mjs +0 -2
package/dist/ai-fly.js
CHANGED
|
@@ -61,17 +61,17 @@ async function dispatch(command, rest) {
|
|
|
61
61
|
const lazy = (load) => {
|
|
62
62
|
return (argv, ctx) => load().then((m) => m.run([...argv], ctx));
|
|
63
63
|
};
|
|
64
|
-
return match(command).with("serve", () => lazy(() => import("./serve-
|
|
65
|
-
if (rest[0] === "add") return lazy(() => import("./key-
|
|
66
|
-
return lazy(() => import("./key-
|
|
64
|
+
return match(command).with("serve", () => lazy(() => import("./serve-FjBsmK5n.mjs"))(rest)).with("daemon", () => lazy(() => import("./daemon-C4kj0IwL.mjs"))(rest)).with("presets", () => lazy(() => import("./presets-DRO5N4Vm.mjs"))(rest)).with("secret", () => lazy(() => import("./secret-DKN75Vry.mjs"))(rest)).with("settings", async () => (await import("./settings-Dho5hk5Z.mjs")).runAsSettings(rest, {})).with("relay", async () => (await import("./settings-Dho5hk5Z.mjs")).runAsRelay(rest, {})).with("test", () => lazy(() => import("./test-Dxkkc-KN.mjs"))(rest)).with("service", () => lazy(() => import("./service-DnQhGK4m.mjs"))(rest)).with("group", () => lazy(() => import("./group-CjwGDch3.mjs"))(rest)).with("share", () => lazy(() => import("./share-DpQPO1eC.mjs"))(rest)).with("revoke", () => lazy(() => import("./revoke-CXTcFgoT.mjs"))(rest)).with("join", () => lazy(() => import("./join-BJMcNGV-.mjs"))(rest)).with("import", () => lazy(() => import("./import-Zy3LL_PR.mjs"))(rest)).with("run", () => lazy(() => import("./run-W7DBz_bR.mjs"))(rest)).with("ports", () => lazy(() => import("./ports-Csv91JOD.mjs"))(rest)).with("forget", () => lazy(() => import("./forget-oMwM-SsU.mjs"))(rest)).with("key", () => {
|
|
65
|
+
if (rest[0] === "add") return lazy(() => import("./key-BcNxtRJx.mjs"))(rest);
|
|
66
|
+
return lazy(() => import("./key-TP7lZeqW.mjs"))(rest);
|
|
67
67
|
}).with("status", async () => {
|
|
68
68
|
const [scope, ...tail] = rest;
|
|
69
69
|
const wantProvider = scope === "provider" || scope !== "consumer" && providerDirExists();
|
|
70
70
|
const wantConsumer = scope === "consumer" || scope !== "provider" && consumersRootExists();
|
|
71
71
|
const argv = scope === "provider" || scope === "consumer" ? tail : rest;
|
|
72
72
|
let code = 0;
|
|
73
|
-
if (wantProvider) code = Math.max(code, await lazy(() => import("./status-
|
|
74
|
-
if (wantConsumer) code = Math.max(code, await lazy(() => import("./status-
|
|
73
|
+
if (wantProvider) code = Math.max(code, await lazy(() => import("./status-Ce-lxy52.mjs"))(argv));
|
|
74
|
+
if (wantConsumer) code = Math.max(code, await lazy(() => import("./status-BaRyycxh.mjs"))(argv));
|
|
75
75
|
if (!wantProvider && !wantConsumer) process.stdout.write("nothing to report: no provider storage and no imported consumers\n");
|
|
76
76
|
return code;
|
|
77
77
|
}).otherwise(() => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as UsageError } from "./errors-BGtxPkM7.mjs";
|
|
2
2
|
import { n as resolveRelayUrls, t as loadConfig } from "./config-BlZnFqx7.mjs";
|
|
3
|
-
import { t as ProviderStore } from "./store-
|
|
4
|
-
import { t as loadSettings } from "./settings-
|
|
3
|
+
import { t as ProviderStore } from "./store-YUMvMCBg.mjs";
|
|
4
|
+
import { t as loadSettings } from "./settings-BAa8I7Ww.mjs";
|
|
5
5
|
import { homedir } from "node:os";
|
|
6
6
|
import { join } from "node:path";
|
|
7
7
|
//#region src/cli/commands/provider/common.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as resolveRelayUrls, t as loadConfig } from "./config-BlZnFqx7.mjs";
|
|
2
2
|
import { n as loadSdk, t as resolveHttpProxy } from "./proxy-D7VMUVEg.mjs";
|
|
3
|
-
import { t as loadSettings } from "./settings-
|
|
3
|
+
import { t as loadSettings } from "./settings-BAa8I7Ww.mjs";
|
|
4
4
|
import { homedir } from "node:os";
|
|
5
5
|
//#region src/cli/commands/consumer/common.ts
|
|
6
6
|
function ctxOut(ctx) {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { n as UsageError, r as reportCliError, t as CliError } from "./errors-BGtxPkM7.mjs";
|
|
2
2
|
import { n as parseArgv } from "./args-CSxXW9eD.mjs";
|
|
3
|
-
import { r as settingsPath, t as loadSettings } from "./settings-
|
|
3
|
+
import { r as settingsPath, t as loadSettings } from "./settings-BAa8I7Ww.mjs";
|
|
4
4
|
import { a as killHard, c as terminateGracefully, i as isAlive, l as writeLastStart, n as daemonDir, o as readLastStart, r as ensureDaemonDir, s as readPid, t as clearPid, u as writePid } from "./daemon-state-CYkiW3SA.mjs";
|
|
5
|
-
import { r as openStore } from "./common-
|
|
5
|
+
import { r as openStore } from "./common-BwKEJKOZ.mjs";
|
|
6
6
|
import { openSync, readFileSync } from "node:fs";
|
|
7
7
|
import { homedir } from "node:os";
|
|
8
8
|
import { isAbsolute, resolve } from "node:path";
|
|
@@ -99,7 +99,7 @@ async function start(startArgv, home) {
|
|
|
99
99
|
process.on("exit", () => {
|
|
100
100
|
clearPid(home);
|
|
101
101
|
});
|
|
102
|
-
const { run: serveRun } = await import("./serve-
|
|
102
|
+
const { run: serveRun } = await import("./serve-FjBsmK5n.mjs");
|
|
103
103
|
return serveRun([...startArgv], { homedir: home });
|
|
104
104
|
}
|
|
105
105
|
/** 后台 pid(活性核验;陈旧 pidfile 就地清理返回 null)。 */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as UsageError } from "./errors-BGtxPkM7.mjs";
|
|
2
2
|
import { n as parseArgv } from "./args-CSxXW9eD.mjs";
|
|
3
|
-
import { d as removeKeyring, n as consumersRoot } from "./store-
|
|
4
|
-
import { n as ctxHomedir, r as ctxOut } from "./common-
|
|
3
|
+
import { d as removeKeyring, n as consumersRoot } from "./store-jmpkM28T.mjs";
|
|
4
|
+
import { n as ctxHomedir, r as ctxOut } from "./common-Cr7D8JyX.mjs";
|
|
5
5
|
import { homedir } from "node:os";
|
|
6
6
|
//#region src/cli/commands/consumer/forget.ts
|
|
7
7
|
async function run(argv, ctx = {}) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as UsageError, r as reportCliError } from "./errors-BGtxPkM7.mjs";
|
|
2
2
|
import { n as parseArgv } from "./args-CSxXW9eD.mjs";
|
|
3
|
-
import { d as str, l as resolveDataDir, n as multi, r as openStore, s as parsePositiveInt } from "./common-
|
|
3
|
+
import { d as str, l as resolveDataDir, n as multi, r as openStore, s as parsePositiveInt } from "./common-BwKEJKOZ.mjs";
|
|
4
4
|
import { homedir } from "node:os";
|
|
5
5
|
//#region src/cli/commands/provider/group.ts
|
|
6
6
|
const SPEC = {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { n as UsageError } from "./errors-BGtxPkM7.mjs";
|
|
2
2
|
import { n as parseArgv } from "./args-CSxXW9eD.mjs";
|
|
3
|
-
import { n as consumersRoot, s as listKeyrings } from "./store-
|
|
4
|
-
import { a as ringsForRun, i as printListeners, n as ctxHomedir, o as waitForSignals, r as ctxOut, t as createSdkFabricFactory } from "./common-
|
|
5
|
-
import { a as importLink, i as formatLinkPreview, n as decodeShareLink, r as formatKeyringSummary } from "./join-
|
|
6
|
-
import { n as createFabricProviderTransport, t as startEngine } from "./runtime-
|
|
3
|
+
import { n as consumersRoot, s as listKeyrings } from "./store-jmpkM28T.mjs";
|
|
4
|
+
import { a as ringsForRun, i as printListeners, n as ctxHomedir, o as waitForSignals, r as ctxOut, t as createSdkFabricFactory } from "./common-Cr7D8JyX.mjs";
|
|
5
|
+
import { a as importLink, i as formatLinkPreview, n as decodeShareLink, r as formatKeyringSummary } from "./join-CdKKj7QS.mjs";
|
|
6
|
+
import { n as createFabricProviderTransport, t as startEngine } from "./runtime-CGF9Sndm.mjs";
|
|
7
7
|
import { homedir } from "node:os";
|
|
8
8
|
//#region src/cli/commands/consumer/import.ts
|
|
9
9
|
async function run(argv, ctx = {}) {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { n as UsageError } from "./errors-BGtxPkM7.mjs";
|
|
2
2
|
import { n as parseArgv } from "./args-CSxXW9eD.mjs";
|
|
3
|
-
import { n as consumersRoot } from "./store-
|
|
4
|
-
import { n as ctxHomedir, r as ctxOut, t as createSdkFabricFactory } from "./common-
|
|
5
|
-
import { o as joinDevice } from "./join-
|
|
3
|
+
import { n as consumersRoot } from "./store-jmpkM28T.mjs";
|
|
4
|
+
import { n as ctxHomedir, r as ctxOut, t as createSdkFabricFactory } from "./common-Cr7D8JyX.mjs";
|
|
5
|
+
import { o as joinDevice } from "./join-CdKKj7QS.mjs";
|
|
6
6
|
import { homedir } from "node:os";
|
|
7
7
|
//#region src/cli/commands/consumer/join.ts
|
|
8
8
|
async function run(argv, ctx = {}) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as CliError } from "./errors-BGtxPkM7.mjs";
|
|
2
|
-
import { o as decodeZ32, s as randomZ32 } from "./rpc-contract-
|
|
2
|
+
import { o as decodeZ32, s as randomZ32 } from "./rpc-contract-CdiRZhUn.mjs";
|
|
3
3
|
import { l as SERVICE_ENTRY_SCHEMA } from "./frames-BDqvhB2Y.mjs";
|
|
4
|
-
import { a as hasFabricIdentity, c as loadKeyring, f as saveKeyring, h as upsertKey, i as findKeyringDir, l as mergeImportView, o as keyringDir, r as fabricDir } from "./store-
|
|
4
|
+
import { a as hasFabricIdentity, c as loadKeyring, f as saveKeyring, h as upsertKey, i as findKeyringDir, l as mergeImportView, o as keyringDir, r as fabricDir } from "./store-jmpkM28T.mjs";
|
|
5
5
|
import { existsSync, mkdirSync, renameSync, rmSync } from "node:fs";
|
|
6
6
|
import { join } from "node:path";
|
|
7
7
|
import { z } from "zod";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { n as UsageError } from "./errors-BGtxPkM7.mjs";
|
|
2
2
|
import { n as parseArgv } from "./args-CSxXW9eD.mjs";
|
|
3
|
-
import { n as consumersRoot } from "./store-
|
|
4
|
-
import { n as ctxHomedir, r as ctxOut } from "./common-
|
|
5
|
-
import { r as formatKeyringSummary, t as addKey } from "./join-
|
|
3
|
+
import { n as consumersRoot } from "./store-jmpkM28T.mjs";
|
|
4
|
+
import { n as ctxHomedir, r as ctxOut } from "./common-Cr7D8JyX.mjs";
|
|
5
|
+
import { r as formatKeyringSummary, t as addKey } from "./join-CdKKj7QS.mjs";
|
|
6
6
|
import { homedir } from "node:os";
|
|
7
7
|
//#region src/cli/commands/consumer/key.ts
|
|
8
8
|
async function run(argv, ctx = {}) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as UsageError, r as reportCliError } from "./errors-BGtxPkM7.mjs";
|
|
2
2
|
import { n as parseArgv } from "./args-CSxXW9eD.mjs";
|
|
3
|
-
import { c as requireString, d as str, l as resolveDataDir, r as openStore } from "./common-
|
|
3
|
+
import { c as requireString, d as str, l as resolveDataDir, r as openStore } from "./common-BwKEJKOZ.mjs";
|
|
4
4
|
import { homedir } from "node:os";
|
|
5
5
|
//#region src/cli/commands/provider/key.ts
|
|
6
6
|
const SPEC = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as PRESET_SCHEMA } from "./rpc-contract-
|
|
1
|
+
import { t as PRESET_SCHEMA } from "./rpc-contract-CdiRZhUn.mjs";
|
|
2
2
|
import { mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
3
3
|
import { homedir } from "node:os";
|
|
4
4
|
import { dirname, join } from "node:path";
|
|
@@ -58,6 +58,22 @@ var providers_default = {
|
|
|
58
58
|
}],
|
|
59
59
|
"notes": "OpenAI-compatible at /v1/* (chat completions + responses, codex-ready); Anthropic-compatible surface at /anthropic/* (per vendor docs).",
|
|
60
60
|
"source": "https://models.dev/api.json + https://api-docs.deepseek.com/guides/anthropic_api"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"id": "codex",
|
|
64
|
+
"label": "Codex (ChatGPT backend)",
|
|
65
|
+
"apiForm": "openai-responses",
|
|
66
|
+
"baseUrl": "https://chatgpt.com",
|
|
67
|
+
"defaultPort": 4306,
|
|
68
|
+
"matchDomains": ["chatgpt.com"],
|
|
69
|
+
"routes": [{
|
|
70
|
+
"forms": ["openai-responses"],
|
|
71
|
+
"localPrefix": "/codex",
|
|
72
|
+
"upstreamPrefix": "/backend-api/codex"
|
|
73
|
+
}],
|
|
74
|
+
"authHeader": "$file:~/.codex/auth.json#.tokens.access_token?bearer",
|
|
75
|
+
"notes": "ChatGPT Codex backend (Responses API). Auth reads ~/.codex/auth.json per request (codex CLI login state; no key needed). Point agents at OPENAI_BASE_URL=http://127.0.0.1:<port>/codex with wire_api=responses. WS clients: ws://127.0.0.1:<port>/codex/responses upgrades to wss upstream.",
|
|
76
|
+
"source": "https://github.com/openai/codex (~/.codex/auth.json login state)"
|
|
61
77
|
}
|
|
62
78
|
]
|
|
63
79
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { s as randomZ32 } from "./rpc-contract-
|
|
1
|
+
import { s as randomZ32 } from "./rpc-contract-CdiRZhUn.mjs";
|
|
2
2
|
import { a as FRAME_TYPE_NAME, d as isKnownFrameType, i as FRAME_TYPE, r as FRAME_HEADER_SCHEMAS, t as ERROR_CODE, u as classifySchemaFailure } from "./frames-BDqvhB2Y.mjs";
|
|
3
3
|
//#region src/wire/codec.ts
|
|
4
4
|
const WIRE_MAGIC_PREFIX = "aifly";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as UsageError } from "./errors-BGtxPkM7.mjs";
|
|
2
2
|
import { n as parseArgv } from "./args-CSxXW9eD.mjs";
|
|
3
|
-
import { m as setPort, n as consumersRoot, s as listKeyrings } from "./store-
|
|
4
|
-
import { n as ctxHomedir, r as ctxOut } from "./common-
|
|
3
|
+
import { m as setPort, n as consumersRoot, s as listKeyrings } from "./store-jmpkM28T.mjs";
|
|
4
|
+
import { n as ctxHomedir, r as ctxOut } from "./common-Cr7D8JyX.mjs";
|
|
5
5
|
import { i as validatePortArg, n as desiredPortFor } from "./ports-pI59MtmI.mjs";
|
|
6
6
|
import { homedir } from "node:os";
|
|
7
7
|
//#region src/cli/commands/consumer/ports.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as UsageError, r as reportCliError } from "./errors-BGtxPkM7.mjs";
|
|
2
2
|
import { n as parseArgv } from "./args-CSxXW9eD.mjs";
|
|
3
|
-
import { t as loadSettings } from "./settings-
|
|
4
|
-
import { n as loadCuratedPresets, r as modelsDevCachePath, t as fetchModelsDevPresets } from "./models-dev-
|
|
3
|
+
import { t as loadSettings } from "./settings-BAa8I7Ww.mjs";
|
|
4
|
+
import { n as loadCuratedPresets, r as modelsDevCachePath, t as fetchModelsDevPresets } from "./models-dev-7CclWuHF.mjs";
|
|
5
5
|
import { homedir } from "node:os";
|
|
6
6
|
//#region src/cli/commands/provider/presets.ts
|
|
7
7
|
const SPEC = { json: { type: "boolean" } };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { n as UsageError, r as reportCliError } from "./errors-BGtxPkM7.mjs";
|
|
2
2
|
import { n as parseArgv } from "./args-CSxXW9eD.mjs";
|
|
3
3
|
import { t as resolveHttpProxy } from "./proxy-D7VMUVEg.mjs";
|
|
4
|
-
import { d as str, l as resolveDataDir, u as resolvedRelayUrls } from "./common-
|
|
5
|
-
import { t as openExistingFabric } from "./serve-
|
|
4
|
+
import { d as str, l as resolveDataDir, u as resolvedRelayUrls } from "./common-BwKEJKOZ.mjs";
|
|
5
|
+
import { t as openExistingFabric } from "./serve-GRJthOwO.mjs";
|
|
6
6
|
import { homedir } from "node:os";
|
|
7
7
|
//#region src/cli/commands/provider/revoke.ts
|
|
8
8
|
const SPEC = {
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { a as routeLocalPrefix } from "./rpc-contract-
|
|
1
|
+
import { a as routeLocalPrefix } from "./rpc-contract-CdiRZhUn.mjs";
|
|
2
2
|
import { n as FORBIDDEN_REQ_HEADER_NAMES } from "./frames-BDqvhB2Y.mjs";
|
|
3
|
-
import { a as parseUpstreamUrl, c as matchRequestPath, o as expandUriTemplate, s as compileMatchPattern } from "./store-
|
|
3
|
+
import { a as parseUpstreamUrl, c as matchRequestPath, o as expandUriTemplate, s as compileMatchPattern } from "./store-YUMvMCBg.mjs";
|
|
4
|
+
import { readFileSync } from "node:fs";
|
|
5
|
+
import { homedir } from "node:os";
|
|
6
|
+
import { join } from "node:path";
|
|
4
7
|
const ENV_REF_PREFIX = "$env:";
|
|
5
8
|
/** $secret 引用前缀(密钥库名;与 $env 同样按引用整体掩码)。 */
|
|
6
9
|
const SECRET_REF_PREFIX = "$secret:";
|
|
@@ -121,18 +124,85 @@ var SecretMissingError = class extends Error {
|
|
|
121
124
|
}
|
|
122
125
|
};
|
|
123
126
|
/**
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
127
|
+
* 解析 `$file:` 引用。path 支持 `~` 前缀(解析时展开);jsonPath 为 jq 风格
|
|
128
|
+
* 点径(`.tokens.access_token`,支持 `[n]` 数组下标);`?bearer` 后缀给非空
|
|
129
|
+
* 值拼 `Bearer ` 前缀。格式非法(缺 `#`)抛 SecretMissingError 同族的
|
|
130
|
+
* UsageError 语义由调用方决定——此处返回 null 交由上层按未命中处理。
|
|
128
131
|
*/
|
|
129
|
-
function
|
|
132
|
+
function parseFileRef(value) {
|
|
133
|
+
const body = value.slice(6);
|
|
134
|
+
const hash = body.indexOf("#");
|
|
135
|
+
if (hash <= 0) return null;
|
|
136
|
+
let spec = body.slice(hash + 1);
|
|
137
|
+
let bearer = false;
|
|
138
|
+
if (spec.endsWith("?bearer")) {
|
|
139
|
+
bearer = true;
|
|
140
|
+
spec = spec.slice(0, -7);
|
|
141
|
+
}
|
|
142
|
+
if (spec === "" || !spec.startsWith(".")) return null;
|
|
143
|
+
return {
|
|
144
|
+
path: body.slice(0, hash),
|
|
145
|
+
jsonPath: spec,
|
|
146
|
+
bearer
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
/** jq 风格点径求值(`.a.b` / `.a[0].b`;起点须以 `.` 开头)。未命中返回 undefined。 */
|
|
150
|
+
function evalJsonPath(root, jsonPath) {
|
|
151
|
+
if (!jsonPath.startsWith(".")) return void 0;
|
|
152
|
+
let cur = root;
|
|
153
|
+
const segments = jsonPath.slice(1).split(/(?=\[)|\./).filter((s) => s !== "");
|
|
154
|
+
for (const seg of segments) {
|
|
155
|
+
if (cur === null || cur === void 0) return void 0;
|
|
156
|
+
const arr = /^\[(\d+)\]$/.exec(seg);
|
|
157
|
+
if (arr !== null) {
|
|
158
|
+
if (!Array.isArray(cur)) return void 0;
|
|
159
|
+
cur = cur[Number(arr[1])];
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
if (typeof cur !== "object") return void 0;
|
|
163
|
+
cur = cur[seg];
|
|
164
|
+
}
|
|
165
|
+
return cur;
|
|
166
|
+
}
|
|
167
|
+
/** 默认文件凭据源:读文件 + JSON 解析 + 点径求值(仅字符串值;`~` 已在上层展开)。 */
|
|
168
|
+
const defaultFileCredentialSource = (path, jsonPath) => {
|
|
169
|
+
let raw;
|
|
170
|
+
try {
|
|
171
|
+
raw = readFileSync(path, "utf8");
|
|
172
|
+
} catch {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
let parsed;
|
|
176
|
+
try {
|
|
177
|
+
parsed = JSON.parse(raw);
|
|
178
|
+
} catch {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const value = evalJsonPath(parsed, jsonPath);
|
|
182
|
+
return typeof value === "string" && value !== "" ? value : void 0;
|
|
183
|
+
};
|
|
184
|
+
/**
|
|
185
|
+
* 头值解析:literal 原样;`$secret:<name>` 优先于 `$env:`/`$file:` 判定——命中
|
|
186
|
+
* 密钥库返回完整值,未命中(含空名/空值/未注入密钥源)抛 SecretMissingError
|
|
187
|
+
* (不回退空值、不省略该头);`$file:<path>#<json-path>[?bearer]` 每请求读盘
|
|
188
|
+
* (文件/键/空值未命中同抛 SecretMissingError;`?bearer` 拼前缀);
|
|
189
|
+
* `$env:<VAR>` 语义保持——空串/未设置返回 undefined(= 省略该头)。
|
|
190
|
+
* 各源可并存于不同头(逐头独立解析)。
|
|
191
|
+
*/
|
|
192
|
+
function resolveHeaderValue(value, env, secrets, files = defaultFileCredentialSource) {
|
|
130
193
|
if (value.startsWith("$secret:")) {
|
|
131
194
|
const name = value.slice(8);
|
|
132
195
|
const resolved = secrets?.(name);
|
|
133
196
|
if (resolved === void 0 || resolved === "") throw new SecretMissingError();
|
|
134
197
|
return resolved;
|
|
135
198
|
}
|
|
199
|
+
if (value.startsWith("$file:")) {
|
|
200
|
+
const ref = parseFileRef(value);
|
|
201
|
+
if (ref === null) throw new SecretMissingError();
|
|
202
|
+
const resolved = files(ref.path.startsWith("~/") ? join(homedir(), ref.path.slice(1)) : ref.path, ref.jsonPath);
|
|
203
|
+
if (resolved === void 0 || resolved === "") throw new SecretMissingError();
|
|
204
|
+
return ref.bearer ? `Bearer ${resolved}` : resolved;
|
|
205
|
+
}
|
|
136
206
|
if (!value.startsWith("$env:")) return value;
|
|
137
207
|
const name = value.slice(5);
|
|
138
208
|
if (name === "") return void 0;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { n as ROUTE_LOCAL_PREFIX } from "./rpc-contract-
|
|
2
|
-
import { t as formProbe } from "./local-test-
|
|
3
|
-
import { i as buildUpstreamRequest, t as PathNotOfferedError } from "./rewrite-
|
|
1
|
+
import { n as ROUTE_LOCAL_PREFIX } from "./rpc-contract-CdiRZhUn.mjs";
|
|
2
|
+
import { t as formProbe } from "./local-test-DbpiPEsD.mjs";
|
|
3
|
+
import { i as buildUpstreamRequest, t as PathNotOfferedError } from "./rewrite-BL3jNnFZ.mjs";
|
|
4
4
|
//#region src/provider/route-test.ts
|
|
5
5
|
const DEFAULT_TIMEOUT_MS = 2e4;
|
|
6
6
|
const BODY_EXCERPT_MAX = 2e3;
|
|
@@ -228,6 +228,7 @@ const CONSUMER_PROVIDER_STATUS_SCHEMA = z.object({
|
|
|
228
228
|
});
|
|
229
229
|
const API_FORM_SCHEMA = z.enum([
|
|
230
230
|
"openai-completions",
|
|
231
|
+
"openai-responses",
|
|
231
232
|
"anthropic-messages",
|
|
232
233
|
"gemini-native"
|
|
233
234
|
]);
|
|
@@ -240,6 +241,9 @@ const PRESET_SCHEMA = z.strictObject({
|
|
|
240
241
|
iconId: z.string().min(1).max(128).optional(),
|
|
241
242
|
/** 惯用环境变量名(仅用于 $env 注入建议与文档;本地运行时模板无此字段)。 */
|
|
242
243
|
keyEnv: z.string().min(1).max(256).optional(),
|
|
244
|
+
/** 预填 authorization 头值模板(如 `$file:~/.codex/auth.json#.tokens.access_token?bearer`);
|
|
245
|
+
* 优先级:显式 secretName > authHeader > keyEnv。 */
|
|
246
|
+
authHeader: z.string().min(3).max(2048).optional(),
|
|
243
247
|
/** 使用方本地端口建议(避开 <1024 特权段)。 */
|
|
244
248
|
defaultPort: z.number().int().min(1024).max(65535),
|
|
245
249
|
/** 官方域名集(exact/suffix 建议的生成源)。 */
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { n as UsageError, r as reportCliError, t as CliError } from "./errors-BGtxPkM7.mjs";
|
|
2
2
|
import { n as parseArgv } from "./args-CSxXW9eD.mjs";
|
|
3
|
-
import { n as consumersRoot, s as listKeyrings } from "./store-
|
|
4
|
-
import { a as ringsForRun, i as printListeners, n as ctxHomedir, o as waitForSignals, r as ctxOut, t as createSdkFabricFactory } from "./common-
|
|
5
|
-
import { n as createFabricProviderTransport, t as startEngine } from "./runtime-
|
|
3
|
+
import { n as consumersRoot, s as listKeyrings } from "./store-jmpkM28T.mjs";
|
|
4
|
+
import { a as ringsForRun, i as printListeners, n as ctxHomedir, o as waitForSignals, r as ctxOut, t as createSdkFabricFactory } from "./common-Cr7D8JyX.mjs";
|
|
5
|
+
import { n as createFabricProviderTransport, t as startEngine } from "./runtime-CGF9Sndm.mjs";
|
|
6
6
|
import { a as killHard, c as terminateGracefully, i as isAlive, l as writeLastStart, n as daemonDir, o as readLastStart, r as ensureDaemonDir, s as readPid, t as clearPid, u as writePid } from "./daemon-state-CYkiW3SA.mjs";
|
|
7
7
|
import { openSync, readFileSync } from "node:fs";
|
|
8
8
|
import { resolve } from "node:path";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { i as FRAME_TYPE, o as HTTP_METHODS } from "./frames-BDqvhB2Y.mjs";
|
|
2
|
-
import { c as loadKeyring, f as saveKeyring, p as setActualPorts, t as applyCatalog, u as reconcileKeyMetadata } from "./store-
|
|
3
|
-
import { i as splitBody, n as FabricWireAdapter, t as WireSession } from "./mux-
|
|
2
|
+
import { c as loadKeyring, f as saveKeyring, p as setActualPorts, t as applyCatalog, u as reconcileKeyMetadata } from "./store-jmpkM28T.mjs";
|
|
3
|
+
import { i as splitBody, n as FabricWireAdapter, t as WireSession } from "./mux-BEXBL7rE.mjs";
|
|
4
4
|
import { n as desiredPortFor, r as listenWithFallback, t as LOOPBACK_HOST } from "./ports-pI59MtmI.mjs";
|
|
5
5
|
import { Hono } from "hono";
|
|
6
6
|
import { createAdaptorServer } from "@hono/node-server";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as UsageError, r as reportCliError } from "./errors-BGtxPkM7.mjs";
|
|
2
2
|
import { n as parseArgv } from "./args-CSxXW9eD.mjs";
|
|
3
|
-
import { d as str, l as resolveDataDir } from "./common-
|
|
4
|
-
import { t as SecretsStore } from "./secrets-
|
|
3
|
+
import { d as str, l as resolveDataDir } from "./common-BwKEJKOZ.mjs";
|
|
4
|
+
import { t as SecretsStore } from "./secrets-DFdwYE_V.mjs";
|
|
5
5
|
import { homedir } from "node:os";
|
|
6
6
|
import process from "node:process";
|
|
7
7
|
import { createInterface } from "node:readline";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as SECRET_NAME_SCHEMA } from "./rpc-contract-
|
|
2
|
-
import { i as ensurePrivateDir, n as StoreError, r as atomicWriteFileSync } from "./store-
|
|
1
|
+
import { r as SECRET_NAME_SCHEMA } from "./rpc-contract-CdiRZhUn.mjs";
|
|
2
|
+
import { i as ensurePrivateDir, n as StoreError, r as atomicWriteFileSync } from "./store-YUMvMCBg.mjs";
|
|
3
3
|
import { existsSync, readFileSync } from "node:fs";
|
|
4
4
|
import { join } from "node:path";
|
|
5
5
|
import { z } from "zod";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { n as UsageError, r as reportCliError } from "./errors-BGtxPkM7.mjs";
|
|
2
2
|
import { n as parseArgv } from "./args-CSxXW9eD.mjs";
|
|
3
3
|
import { t as resolveHttpProxy } from "./proxy-D7VMUVEg.mjs";
|
|
4
|
-
import { d as str, l as resolveDataDir, u as resolvedRelayUrls } from "./common-
|
|
5
|
-
import { n as startProviderDaemon } from "./serve-
|
|
4
|
+
import { d as str, l as resolveDataDir, u as resolvedRelayUrls } from "./common-BwKEJKOZ.mjs";
|
|
5
|
+
import { n as startProviderDaemon } from "./serve-GRJthOwO.mjs";
|
|
6
6
|
import { homedir } from "node:os";
|
|
7
7
|
//#region src/cli/commands/provider/serve.ts
|
|
8
8
|
const SPEC = {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { c as RESP_META_HEADER_WHITELIST, i as FRAME_TYPE, s as REJECTED_CODE, t as ERROR_CODE } from "./frames-BDqvhB2Y.mjs";
|
|
2
2
|
import { n as loadSdk } from "./proxy-D7VMUVEg.mjs";
|
|
3
|
-
import { i as ensurePrivateDir, r as atomicWriteFileSync, t as ProviderStore } from "./store-
|
|
4
|
-
import { n as FabricWireAdapter, r as DEFAULT_BODY_CHUNK_BYTES, t as WireSession } from "./mux-
|
|
5
|
-
import { a as collectEnvVarNames, i as buildUpstreamRequest, n as RewriteError, r as SecretMissingError, s as buildServiceEntry, t as PathNotOfferedError } from "./rewrite-
|
|
6
|
-
import { t as SecretsStore } from "./secrets-
|
|
3
|
+
import { i as ensurePrivateDir, r as atomicWriteFileSync, t as ProviderStore } from "./store-YUMvMCBg.mjs";
|
|
4
|
+
import { n as FabricWireAdapter, r as DEFAULT_BODY_CHUNK_BYTES, t as WireSession } from "./mux-BEXBL7rE.mjs";
|
|
5
|
+
import { a as collectEnvVarNames, i as buildUpstreamRequest, n as RewriteError, r as SecretMissingError, s as buildServiceEntry, t as PathNotOfferedError } from "./rewrite-BL3jNnFZ.mjs";
|
|
6
|
+
import { t as SecretsStore } from "./secrets-DFdwYE_V.mjs";
|
|
7
7
|
import { appendFileSync, existsSync, readFileSync, readdirSync, watch } from "node:fs";
|
|
8
8
|
import "node:os";
|
|
9
9
|
import { dirname, join } from "node:path";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as UsageError, r as reportCliError } from "./errors-BGtxPkM7.mjs";
|
|
2
2
|
import { n as parseArgv } from "./args-CSxXW9eD.mjs";
|
|
3
|
-
import { a as parseMatchSpec, d as str, i as parseHeaderSetSpec, l as resolveDataDir, n as multi, o as parsePortNumber, r as openStore, t as buildRewrite } from "./common-
|
|
4
|
-
import { n as loadCuratedPresets } from "./models-dev-
|
|
3
|
+
import { a as parseMatchSpec, d as str, i as parseHeaderSetSpec, l as resolveDataDir, n as multi, o as parsePortNumber, r as openStore, t as buildRewrite } from "./common-BwKEJKOZ.mjs";
|
|
4
|
+
import { n as loadCuratedPresets } from "./models-dev-7CclWuHF.mjs";
|
|
5
5
|
import { homedir } from "node:os";
|
|
6
6
|
//#region src/cli/commands/provider/service.ts
|
|
7
7
|
const SPEC = {
|
|
@@ -75,6 +75,10 @@ function add(options, positionals, home) {
|
|
|
75
75
|
name: "authorization",
|
|
76
76
|
value: `\$secret:${str(options.secret)}`
|
|
77
77
|
});
|
|
78
|
+
else if (preset?.authHeader !== void 0 && !headerSetSpecs.some((h) => h.name.toLowerCase() === "authorization")) headerSetSpecs.push({
|
|
79
|
+
name: "authorization",
|
|
80
|
+
value: preset.authHeader
|
|
81
|
+
});
|
|
78
82
|
const dataDir = resolveDataDir(str(options.data), home);
|
|
79
83
|
const service = openStore(dataDir).addService({
|
|
80
84
|
name,
|
|
@@ -203,18 +207,28 @@ function get(options, positionals, home) {
|
|
|
203
207
|
async function test(options, positionals, home) {
|
|
204
208
|
const name = positionals[1];
|
|
205
209
|
if (name === void 0) throw new UsageError("error: service test requires a <name> argument");
|
|
206
|
-
const formRaw = options.form === void 0 ? "openai-chat" : str(options.form);
|
|
207
|
-
if (!ROUTE_FORMS.includes(formRaw)) throw new UsageError(`error: --form must be one of ${ROUTE_FORMS.join(", ")}`);
|
|
208
210
|
const dataDir = resolveDataDir(str(options.data), home);
|
|
209
211
|
const service = openStore(dataDir).getServiceByName(name);
|
|
210
212
|
if (service === void 0) throw new UsageError(`error: service '${name}' not found`);
|
|
211
|
-
|
|
212
|
-
|
|
213
|
+
let formRaw;
|
|
214
|
+
if (options.form !== void 0) formRaw = str(options.form);
|
|
215
|
+
else {
|
|
216
|
+
const localPrefix = options["local-prefix"] !== void 0 ? str(options["local-prefix"]) : void 0;
|
|
217
|
+
const routes = (service.routes ?? []).filter((r) => r.mode !== "pattern");
|
|
218
|
+
formRaw = (localPrefix !== void 0 ? routes.find((r) => r.localPrefix === localPrefix) : routes.length === 1 ? routes[0] : void 0)?.forms[0] ?? "openai-chat";
|
|
219
|
+
}
|
|
220
|
+
if (!ROUTE_FORMS.includes(formRaw)) throw new UsageError(`error: --form must be one of ${ROUTE_FORMS.join(", ")}`);
|
|
221
|
+
const { testServiceRoute } = await import("./route-test-DqKRThLp.mjs");
|
|
222
|
+
const { SecretsStore } = await import("./secrets-BKKxR3iB.mjs");
|
|
213
223
|
const secretsStore = SecretsStore.open(dataDir);
|
|
224
|
+
const hitLocalPrefix = options["local-prefix"] !== void 0 ? str(options["local-prefix"]) : (() => {
|
|
225
|
+
const routes = (service.routes ?? []).filter((r) => r.mode !== "pattern");
|
|
226
|
+
return routes.length === 1 ? routes[0].localPrefix : void 0;
|
|
227
|
+
})();
|
|
214
228
|
const result = await testServiceRoute({
|
|
215
229
|
service,
|
|
216
230
|
form: formRaw,
|
|
217
|
-
...
|
|
231
|
+
...hitLocalPrefix !== void 0 ? { localPrefix: hitLocalPrefix } : {},
|
|
218
232
|
...options.model !== void 0 ? { model: str(options.model) } : {},
|
|
219
233
|
...options.content !== void 0 ? { content: str(options.content) } : {},
|
|
220
234
|
secrets: (secretName) => secretsStore.resolve(secretName)?.headerValue
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { i as SETTINGS_SCHEMA } from "./rpc-contract-
|
|
2
|
-
import { i as ensurePrivateDir, r as atomicWriteFileSync } from "./store-
|
|
1
|
+
import { i as SETTINGS_SCHEMA } from "./rpc-contract-CdiRZhUn.mjs";
|
|
2
|
+
import { i as ensurePrivateDir, r as atomicWriteFileSync } from "./store-YUMvMCBg.mjs";
|
|
3
3
|
import { readFileSync } from "node:fs";
|
|
4
4
|
import { homedir } from "node:os";
|
|
5
5
|
import { join } from "node:path";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as UsageError, r as reportCliError } from "./errors-BGtxPkM7.mjs";
|
|
2
2
|
import { n as parseArgv } from "./args-CSxXW9eD.mjs";
|
|
3
|
-
import { n as saveSettings, r as settingsPath, t as loadSettings } from "./settings-
|
|
3
|
+
import { n as saveSettings, r as settingsPath, t as loadSettings } from "./settings-BAa8I7Ww.mjs";
|
|
4
4
|
import { homedir } from "node:os";
|
|
5
5
|
//#region src/cli/commands/settings.ts
|
|
6
6
|
const SPEC = { default: { type: "boolean" } };
|
|
@@ -2,10 +2,10 @@ import { r as reportCliError, t as CliError } from "./errors-BGtxPkM7.mjs";
|
|
|
2
2
|
import { n as parseArgv, r as parseDurationMs, t as assertDurationRange } from "./args-CSxXW9eD.mjs";
|
|
3
3
|
import { l as SERVICE_ENTRY_SCHEMA } from "./frames-BDqvhB2Y.mjs";
|
|
4
4
|
import { t as resolveHttpProxy } from "./proxy-D7VMUVEg.mjs";
|
|
5
|
-
import { n as StoreError } from "./store-
|
|
6
|
-
import { c as requireString, d as str, l as resolveDataDir, r as openStore, u as resolvedRelayUrls } from "./common-
|
|
7
|
-
import { t as openExistingFabric } from "./serve-
|
|
8
|
-
import { s as buildServiceEntry } from "./rewrite-
|
|
5
|
+
import { n as StoreError } from "./store-YUMvMCBg.mjs";
|
|
6
|
+
import { c as requireString, d as str, l as resolveDataDir, r as openStore, u as resolvedRelayUrls } from "./common-BwKEJKOZ.mjs";
|
|
7
|
+
import { t as openExistingFabric } from "./serve-GRJthOwO.mjs";
|
|
8
|
+
import { s as buildServiceEntry } from "./rewrite-BL3jNnFZ.mjs";
|
|
9
9
|
import { homedir } from "node:os";
|
|
10
10
|
import { z } from "zod";
|
|
11
11
|
//#region src/provider/link.ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as parseArgv } from "./args-CSxXW9eD.mjs";
|
|
2
|
-
import { n as consumersRoot, s as listKeyrings } from "./store-
|
|
3
|
-
import { a as ringsForRun, n as ctxHomedir, r as ctxOut, t as createSdkFabricFactory } from "./common-
|
|
4
|
-
import { n as createFabricProviderTransport, t as startEngine } from "./runtime-
|
|
2
|
+
import { n as consumersRoot, s as listKeyrings } from "./store-jmpkM28T.mjs";
|
|
3
|
+
import { a as ringsForRun, n as ctxHomedir, r as ctxOut, t as createSdkFabricFactory } from "./common-Cr7D8JyX.mjs";
|
|
4
|
+
import { n as createFabricProviderTransport, t as startEngine } from "./runtime-CGF9Sndm.mjs";
|
|
5
5
|
import { homedir } from "node:os";
|
|
6
6
|
//#region src/cli/commands/consumer/status.ts
|
|
7
7
|
/** 状态显示名(spec 六态)。 */
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { r as reportCliError } from "./errors-BGtxPkM7.mjs";
|
|
2
2
|
import { n as parseArgv } from "./args-CSxXW9eD.mjs";
|
|
3
3
|
import { t as resolveHttpProxy } from "./proxy-D7VMUVEg.mjs";
|
|
4
|
-
import { d as str, l as resolveDataDir, r as openStore, u as resolvedRelayUrls } from "./common-
|
|
5
|
-
import { t as openExistingFabric } from "./serve-
|
|
6
|
-
import { c as detailDisplayLines, o as buildServiceDetail } from "./rewrite-
|
|
4
|
+
import { d as str, l as resolveDataDir, r as openStore, u as resolvedRelayUrls } from "./common-BwKEJKOZ.mjs";
|
|
5
|
+
import { t as openExistingFabric } from "./serve-GRJthOwO.mjs";
|
|
6
|
+
import { c as detailDisplayLines, o as buildServiceDetail } from "./rewrite-BL3jNnFZ.mjs";
|
|
7
7
|
import { homedir } from "node:os";
|
|
8
8
|
//#region src/cli/commands/provider/status.ts
|
|
9
9
|
const SPEC = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as ROUTE_LOCAL_PREFIX, s as randomZ32 } from "./rpc-contract-
|
|
1
|
+
import { n as ROUTE_LOCAL_PREFIX, s as randomZ32 } from "./rpc-contract-CdiRZhUn.mjs";
|
|
2
2
|
import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { z } from "zod";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as CliError } from "./errors-BGtxPkM7.mjs";
|
|
2
|
-
import { s as randomZ32 } from "./rpc-contract-
|
|
2
|
+
import { s as randomZ32 } from "./rpc-contract-CdiRZhUn.mjs";
|
|
3
3
|
import { l as SERVICE_ENTRY_SCHEMA } from "./frames-BDqvhB2Y.mjs";
|
|
4
4
|
import { chmodSync, existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
|
|
5
5
|
import { homedir } from "node:os";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { n as UsageError, r as reportCliError } from "./errors-BGtxPkM7.mjs";
|
|
2
2
|
import { n as parseArgv } from "./args-CSxXW9eD.mjs";
|
|
3
|
-
import { n as consumersRoot, s as listKeyrings } from "./store-
|
|
3
|
+
import { n as consumersRoot, s as listKeyrings } from "./store-jmpkM28T.mjs";
|
|
4
4
|
import { n as desiredPortFor } from "./ports-pI59MtmI.mjs";
|
|
5
|
-
import { n as testLocalService } from "./local-test-
|
|
5
|
+
import { n as testLocalService } from "./local-test-DbpiPEsD.mjs";
|
|
6
6
|
import { homedir } from "node:os";
|
|
7
7
|
//#region src/cli/commands/consumer/test.ts
|
|
8
8
|
const SPEC = {
|
package/package.json
CHANGED