@cpajs/cpa 0.0.1-alpha-2 → 0.0.1-alpha-3
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/README.md +7 -2
- package/dist/server/args.d.ts +4 -0
- package/dist/server/args.d.ts.map +1 -0
- package/dist/server/args.js +54 -0
- package/dist/server/args.js.map +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +9 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/types.d.ts +22 -1
- package/dist/server/types.d.ts.map +1 -1
- package/package.json +24 -24
- package/src/server/args.ts +53 -0
- package/src/server/index.ts +8 -2
- package/src/server/types.ts +23 -1
package/README.md
CHANGED
|
@@ -51,7 +51,12 @@ await server.stop();
|
|
|
51
51
|
- `managementKey` is passed through `MANAGEMENT_PASSWORD`, so it never touches disk. Upstream treats that
|
|
52
52
|
variable as also allowing remote management. The key, config secrets and `redact` values are masked in logs and
|
|
53
53
|
errors.
|
|
54
|
-
-
|
|
54
|
+
- CLI flags are typed options:
|
|
55
|
+
- `localModel: true` → `-local-model`, which uses the embedded model catalogs.
|
|
56
|
+
- `home: { jwt, disableClusterDiscovery }` → Home mode. The JWT is passed through `HOME_JWT`, so it never appears in argv.
|
|
57
|
+
|
|
58
|
+
`args` is only for flags that plugins register. One-shot commands (`-*-login`, `-discover`, `-tui`, …) and flags that have a typed option are rejected.
|
|
59
|
+
- `binaryPath` overrides the bundled binary.
|
|
55
60
|
|
|
56
61
|
## Manage a server
|
|
57
62
|
|
|
@@ -136,7 +141,7 @@ Release tooling, all in `scripts/` and run directly with Node's type stripping:
|
|
|
136
141
|
| `install-test.ts` | Install the tarballs through a local registry with npm, pnpm or bun, and run them. |
|
|
137
142
|
| `trust-publishers.ts` | Configure npm trusted publishing for all packages (run locally after the first publish). |
|
|
138
143
|
|
|
139
|
-
`.github/workflows/release.yml` runs these steps across the whole platform matrix and publishes on `v*` tags through npm trusted publishing (OIDC). Prerelease versions such as `0.0.1-alpha-1` go to a matching dist-tag (`alpha`). `trust-publishers.ts` configures trusted
|
|
144
|
+
`.github/workflows/release.yml` runs these steps across the whole platform matrix and publishes on `v*` tags through npm trusted publishing (OIDC). Prerelease versions such as `0.0.1-alpha-1` go to a matching dist-tag (`alpha`). There is no npm token; `trust-publishers.ts` configures the trusted publisher for every package. A newly added platform package has to exist on npm before it can be trusted.
|
|
140
145
|
|
|
141
146
|
## License
|
|
142
147
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/server/args.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAmCrD,8EAA8E;AAC9E,wBAAgB,SAAS,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAe/D"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { CpaStartError } from './errors.js';
|
|
2
|
+
// Flags that make cli-proxy-api run a one-shot command or an interactive UI instead of the server.
|
|
3
|
+
const COMMAND_FLAGS = new Set([
|
|
4
|
+
'codex-login',
|
|
5
|
+
'codex-device-login',
|
|
6
|
+
'claude-login',
|
|
7
|
+
'antigravity-login',
|
|
8
|
+
'kimi-login',
|
|
9
|
+
'kimi-ai-login',
|
|
10
|
+
'xai-login',
|
|
11
|
+
'devin-login',
|
|
12
|
+
'meta-login',
|
|
13
|
+
'discover',
|
|
14
|
+
'discover-json',
|
|
15
|
+
'vertex-import',
|
|
16
|
+
'siwc-bind',
|
|
17
|
+
'tui',
|
|
18
|
+
'standalone',
|
|
19
|
+
'management-base-url',
|
|
20
|
+
]);
|
|
21
|
+
// Flags startServer sets itself.
|
|
22
|
+
const MANAGED_FLAGS = {
|
|
23
|
+
config: 'config / configPath',
|
|
24
|
+
'local-model': 'localModel',
|
|
25
|
+
'home-jwt': 'home.jwt',
|
|
26
|
+
'home-disable-cluster-discovery': 'home.disableClusterDiscovery',
|
|
27
|
+
password: 'managementKey',
|
|
28
|
+
};
|
|
29
|
+
function flagName(arg) {
|
|
30
|
+
const match = /^--?([A-Za-z0-9][\w.-]*)(?:=.*)?$/.exec(arg);
|
|
31
|
+
return match?.[1];
|
|
32
|
+
}
|
|
33
|
+
/** CLI arguments after `-config <file>`: typed options first, then `args`. */
|
|
34
|
+
export function buildArgs(options) {
|
|
35
|
+
for (const arg of options.args ?? []) {
|
|
36
|
+
const name = flagName(arg);
|
|
37
|
+
if (name === undefined)
|
|
38
|
+
continue;
|
|
39
|
+
if (COMMAND_FLAGS.has(name)) {
|
|
40
|
+
throw new CpaStartError('invalid-options', `args must not contain -${name}: it runs a one-shot command instead of the server.`);
|
|
41
|
+
}
|
|
42
|
+
const option = MANAGED_FLAGS[name];
|
|
43
|
+
if (option)
|
|
44
|
+
throw new CpaStartError('invalid-options', `Use the ${option} option instead of passing -${name} in args.`);
|
|
45
|
+
}
|
|
46
|
+
const argv = [];
|
|
47
|
+
if (options.localModel)
|
|
48
|
+
argv.push('-local-model');
|
|
49
|
+
if (options.home?.disableClusterDiscovery)
|
|
50
|
+
argv.push('-home-disable-cluster-discovery');
|
|
51
|
+
argv.push(...(options.args ?? []));
|
|
52
|
+
return argv;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/server/args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,mGAAmG;AACnG,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,aAAa;IACb,oBAAoB;IACpB,cAAc;IACd,mBAAmB;IACnB,YAAY;IACZ,eAAe;IACf,WAAW;IACX,aAAa;IACb,YAAY;IACZ,UAAU;IACV,eAAe;IACf,eAAe;IACf,WAAW;IACX,KAAK;IACL,YAAY;IACZ,qBAAqB;CACtB,CAAC,CAAC;AACH,iCAAiC;AACjC,MAAM,aAAa,GAA2B;IAC5C,MAAM,EAAE,qBAAqB;IAC7B,aAAa,EAAE,YAAY;IAC3B,UAAU,EAAE,UAAU;IACtB,gCAAgC,EAAE,8BAA8B;IAChE,QAAQ,EAAE,eAAe;CAC1B,CAAC;AAEF,SAAS,QAAQ,CAAC,GAAW;IAC3B,MAAM,KAAK,GAAG,mCAAmC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5D,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,SAAS,CAAC,OAA2B;IACnD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,IAAI,KAAK,SAAS;YAAE,SAAS;QACjC,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,aAAa,CAAC,iBAAiB,EAAE,0BAA0B,IAAI,qDAAqD,CAAC,CAAC;QAClI,CAAC;QACD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,MAAM;YAAE,MAAM,IAAI,aAAa,CAAC,iBAAiB,EAAE,WAAW,MAAM,+BAA+B,IAAI,WAAW,CAAC,CAAC;IAC1H,CAAC;IACD,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,OAAO,CAAC,UAAU;QAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAClD,IAAI,OAAO,CAAC,IAAI,EAAE,uBAAuB;QAAE,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACxF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAc,kBAAkB,EAA0B,MAAM,YAAY,CAAC;AAEpG,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3F,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5D,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAClG,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC5E,mBAAmB,YAAY,CAAC;AAChC,YAAY,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AA+C3D;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,SAAS,CAAC,CAoGtF"}
|
package/dist/server/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import { mkdir, mkdtemp, rm } from 'node:fs/promises';
|
|
|
2
2
|
import { tmpdir } from 'node:os';
|
|
3
3
|
import { join, resolve } from 'node:path';
|
|
4
4
|
import { setTimeout as delay } from 'node:timers/promises';
|
|
5
|
+
import { buildArgs } from './args.js';
|
|
5
6
|
import { resolveBinary } from './binary.js';
|
|
6
7
|
import { inspectConfigFile, writeManagedConfig } from './config.js';
|
|
7
8
|
import { CpaStartError } from './errors.js';
|
|
@@ -25,6 +26,9 @@ function validate(options) {
|
|
|
25
26
|
if (options.configPath !== undefined && (options.host !== undefined || options.port !== undefined)) {
|
|
26
27
|
throw new CpaStartError('invalid-options', 'host and port cannot be combined with configPath; set them in the file.');
|
|
27
28
|
}
|
|
29
|
+
if (options.home !== undefined && !options.home.jwt) {
|
|
30
|
+
throw new CpaStartError('invalid-options', 'home.jwt must not be empty.');
|
|
31
|
+
}
|
|
28
32
|
const { port } = options;
|
|
29
33
|
if (port !== undefined && (!Number.isInteger(port) || port < 0 || port > 65_535)) {
|
|
30
34
|
throw new CpaStartError('invalid-options', `Invalid port ${String(port)}.`);
|
|
@@ -40,6 +44,8 @@ function buildEnv(options) {
|
|
|
40
44
|
}
|
|
41
45
|
if (options.managementKey !== undefined)
|
|
42
46
|
env.MANAGEMENT_PASSWORD = options.managementKey;
|
|
47
|
+
if (options.home !== undefined)
|
|
48
|
+
env.HOME_JWT = options.home.jwt;
|
|
43
49
|
return env;
|
|
44
50
|
}
|
|
45
51
|
function configListen(options) {
|
|
@@ -74,6 +80,7 @@ export async function startServer(options = {}) {
|
|
|
74
80
|
const startupTimeoutMs = options.startupTimeoutMs ?? DEFAULT_STARTUP_TIMEOUT_MS;
|
|
75
81
|
const deadline = Date.now() + startupTimeoutMs;
|
|
76
82
|
const env = buildEnv(options);
|
|
83
|
+
const extraArgs = buildArgs(options);
|
|
77
84
|
try {
|
|
78
85
|
for (let attempt = 1;; attempt++) {
|
|
79
86
|
let prepared;
|
|
@@ -90,14 +97,14 @@ export async function startServer(options = {}) {
|
|
|
90
97
|
prepared = await writeManagedConfig(options.config ?? {}, stateDir, listen);
|
|
91
98
|
}
|
|
92
99
|
const { host, port, tls } = prepared.listen;
|
|
93
|
-
const redact = createRedactor([options.managementKey, ...prepared.secrets, ...(options.redact ?? [])]);
|
|
100
|
+
const redact = createRedactor([options.managementKey, options.home?.jwt, ...prepared.secrets, ...(options.redact ?? [])]);
|
|
94
101
|
if (!dynamicPort && !(await isPortFree(host, port))) {
|
|
95
102
|
throw new CpaStartError('port-in-use', `Port ${port} on ${host || 'all interfaces'} is already in use.`);
|
|
96
103
|
}
|
|
97
104
|
const origin = formatOrigin(tls ? 'https' : 'http', connectHost(host), port);
|
|
98
105
|
let proc;
|
|
99
106
|
try {
|
|
100
|
-
proc = new ManagedProcess(binary.path, ['-config', prepared.configPath, ...
|
|
107
|
+
proc = new ManagedProcess(binary.path, ['-config', prepared.configPath, ...extraArgs], {
|
|
101
108
|
cwd: stateDir,
|
|
102
109
|
env,
|
|
103
110
|
redact,
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAuB,MAAM,aAAa,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE3F,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAClG,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAK/C,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAC1C,MAAM,uBAAuB,GAAG,MAAM,CAAC;AACvC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAChC,MAAM,cAAc,GAAG,+DAA+D,CAAC;AAEvF,SAAS,QAAQ,CAAC,OAA2B;IAC3C,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACrE,MAAM,IAAI,aAAa,CAAC,iBAAiB,EAAE,+CAA+C,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;QACnG,MAAM,IAAI,aAAa,CAAC,iBAAiB,EAAE,yEAAyE,CAAC,CAAC;IACxH,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACpD,MAAM,IAAI,aAAa,CAAC,iBAAiB,EAAE,6BAA6B,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACzB,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC;QACjF,MAAM,IAAI,aAAa,CAAC,iBAAiB,EAAE,gBAAgB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,OAA2B;IAC3C,MAAM,GAAG,GAAsB,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAClD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC;QAC7D,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;;YACpC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACxB,CAAC;IACD,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS;QAAE,GAAG,CAAC,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IACzF,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IAChE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY,CAAC,OAA+B;IACnD,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAuC,CAAC;IACpF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC3F,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,UAAU,CAAC,MAAmB,EAAE,MAAc;IACrD,OAAO,IAAI,aAAa,CAAC,SAAS,EAAE,0BAA0B,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACpG,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAO,GAAuB,EAAE;IAChE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,IAAI,MAAM,EAAE,OAAO;QAAE,MAAM,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACzG,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC;IACpD,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAS,CAAC,CAAC;IACrG,IAAI,CAAC,YAAY;QAAE,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,KAAK,IAAmB,EAAE;QACxC,IAAI,YAAY;YAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,0BAA0B,CAAC;IAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC;IAC/C,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAErC,IAAI,CAAC;QACH,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;YAClC,IAAI,QAAwB,CAAC;YAC7B,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACrC,QAAQ,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;gBACrC,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBACtB,MAAM,CAAC,IAAI,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC9C,WAAW,GAAG,IAAI,CAAC;gBACrB,CAAC;gBACD,QAAQ,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9E,CAAC;YAED,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC5C,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1H,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,aAAa,CAAC,aAAa,EAAE,QAAQ,IAAI,OAAO,IAAI,IAAI,gBAAgB,qBAAqB,CAAC,CAAC;YAC3G,CAAC;YAED,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;YAC7E,IAAI,IAAoB,CAAC;YACzB,IAAI,CAAC;gBACH,IAAI,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,UAAU,EAAE,GAAG,SAAS,CAAC,EAAE;oBACrF,GAAG,EAAE,QAAQ;oBACb,GAAG;oBACH,MAAM;oBACN,KAAK,EAAE,OAAO,CAAC,KAAK;iBACrB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,mFAAmF;gBACnF,MAAM,IAAI,aAAa,CAAC,cAAc,EAAE,mBAAmB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAE,KAAe,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5H,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YACrE,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;gBACxB,OAAO,YAAY,CAAC,IAAI,EAAE;oBACxB,MAAM;oBACN,IAAI;oBACJ,IAAI;oBACJ,UAAU,EAAE,MAAM,CAAC,IAAI;oBACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;oBAC/B,QAAQ;oBACR,aAAa,EAAE,OAAO,CAAC,aAAa;oBACpC,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,uBAAuB;oBAC/D,OAAO;iBACR,CAAC,CAAC;YACL,CAAC;YAED,2EAA2E;YAC3E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7B,IAAI,OAAO,KAAK,SAAS;gBAAE,MAAM,UAAU,CAAC,MAAO,EAAE,MAAM,CAAC,CAAC;YAC7D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,IAAI,aAAa,CAAC,SAAS,EAAE,2CAA2C,gBAAgB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACpH,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,MAAM,IAAI,aAAa,CAAC,cAAc,EAAE,mBAAmB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE;oBAC5G,MAAM;oBACN,KAAK,EAAE,IAAI,CAAC,UAAU;iBACvB,CAAC,CAAC;YACL,CAAC;YACD,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChC,mFAAmF;gBACnF,IAAI,WAAW,IAAI,OAAO,GAAG,qBAAqB;oBAAE,SAAS;gBAC7D,MAAM,IAAI,aAAa,CAAC,aAAa,EAAE,QAAQ,IAAI,OAAO,IAAI,IAAI,gBAAgB,qBAAqB,EAAE;oBACvG,MAAM;oBACN,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB,CAAC,CAAC;YACL,CAAC;YACD,MAAM,IAAI,aAAa,CACrB,QAAQ,EACR,kDAAkD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EACtG,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CACrD,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,EAAE,CAAC;QAChB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,IAAoB,EACpB,MAAc,EACd,QAAgB,EAChB,MAA+B;IAE/B,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QACzB,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,MAAM,EAAE,OAAO;YAAE,OAAO,SAAS,CAAC;QACtC,IAAI,MAAM;YAAE,OAAO,QAAQ,CAAC;QAC5B,MAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACxC,IAAI,SAAS,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QACrC,IAAI,MAAM,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;YACrE,kFAAkF;YAClF,OAAO,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;QACxD,CAAC;QACD,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CACnB,IAAoB,EACpB,IAUC;IAED,MAAM,MAAM,GAAwB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QACpE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,KAAK;QAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAI;QACpB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,OAAO,EAAE,IAAI,CAAC,KAAK;QACnB,IAAI,UAAU;YACZ,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM;QACN,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE;YACzB,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;YAC7D,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/server/types.d.ts
CHANGED
|
@@ -5,6 +5,16 @@ export interface LogLine {
|
|
|
5
5
|
/** One line of output with secrets redacted and the trailing newline removed. */
|
|
6
6
|
line: string;
|
|
7
7
|
}
|
|
8
|
+
export interface HomeOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Home control plane JWT (`-home-jwt`). It is passed through the `HOME_JWT`
|
|
11
|
+
* environment variable so it never appears in the process list, and it is
|
|
12
|
+
* redacted from logs.
|
|
13
|
+
*/
|
|
14
|
+
jwt: string;
|
|
15
|
+
/** Keep using the JWT's address instead of discovering cluster nodes (`-home-disable-cluster-discovery`). */
|
|
16
|
+
disableClusterDiscovery?: boolean;
|
|
17
|
+
}
|
|
8
18
|
interface CommonServerOptions {
|
|
9
19
|
/** Use this executable instead of the bundled platform package. */
|
|
10
20
|
binaryPath?: string;
|
|
@@ -19,7 +29,18 @@ interface CommonServerOptions {
|
|
|
19
29
|
* as allowing remote management access regardless of `management.allow-remote`.
|
|
20
30
|
*/
|
|
21
31
|
managementKey?: string;
|
|
22
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Use the model catalogs embedded in the binary instead of fetching them
|
|
34
|
+
* (`-local-model`). Explicit `models.*` config sources still win.
|
|
35
|
+
*/
|
|
36
|
+
localModel?: boolean;
|
|
37
|
+
/** Run as a node of a CPA Home control plane. Home mode disables the local management API. */
|
|
38
|
+
home?: HomeOptions;
|
|
39
|
+
/**
|
|
40
|
+
* Extra CLI arguments, for flags that plugins register at runtime. Passed as
|
|
41
|
+
* an argv array, never through a shell. One-shot commands (`-*-login`,
|
|
42
|
+
* `-discover`, `-vertex-import`, `-siwc-bind`, `-tui`) and `-config` are rejected.
|
|
43
|
+
*/
|
|
23
44
|
args?: readonly string[];
|
|
24
45
|
/** Environment for the child process. Defaults to `process.env`; entries set to `undefined` are removed. */
|
|
25
46
|
env?: Readonly<Record<string, string | undefined>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,mBAAmB;IAC3B,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cpajs/cpa",
|
|
3
|
-
"version": "0.0.1-alpha-
|
|
3
|
+
"version": "0.0.1-alpha-3",
|
|
4
4
|
"description": "Run the official CLIProxyAPI from JavaScript and talk to its v8 management API with a typed client",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "akarachen",
|
|
@@ -58,28 +58,28 @@
|
|
|
58
58
|
"access": "public"
|
|
59
59
|
},
|
|
60
60
|
"optionalDependencies": {
|
|
61
|
-
"@cpajs/darwin-x64": "0.0.1-alpha-
|
|
62
|
-
"@cpajs/darwin-arm64": "0.0.1-alpha-
|
|
63
|
-
"@cpajs/win32-x64": "0.0.1-alpha-
|
|
64
|
-
"@cpajs/win32-arm64": "0.0.1-alpha-
|
|
65
|
-
"@cpajs/win32-ia32": "0.0.1-alpha-
|
|
66
|
-
"@cpajs/linux-x64-gnu": "0.0.1-alpha-
|
|
67
|
-
"@cpajs/linux-arm64-gnu": "0.0.1-alpha-
|
|
68
|
-
"@cpajs/linux-x64-musl": "0.0.1-alpha-
|
|
69
|
-
"@cpajs/linux-arm64-musl": "0.0.1-alpha-
|
|
70
|
-
"@cpajs/linux-arm": "0.0.1-alpha-
|
|
71
|
-
"@cpajs/linux-ia32": "0.0.1-alpha-
|
|
72
|
-
"@cpajs/linux-riscv64": "0.0.1-alpha-
|
|
73
|
-
"@cpajs/linux-ppc64": "0.0.1-alpha-
|
|
74
|
-
"@cpajs/linux-s390x": "0.0.1-alpha-
|
|
75
|
-
"@cpajs/linux-loong64": "0.0.1-alpha-
|
|
76
|
-
"@cpajs/linux-mips": "0.0.1-alpha-
|
|
77
|
-
"@cpajs/linux-mipsel": "0.0.1-alpha-
|
|
78
|
-
"@cpajs/freebsd-x64": "0.0.1-alpha-
|
|
79
|
-
"@cpajs/freebsd-arm64": "0.0.1-alpha-
|
|
80
|
-
"@cpajs/freebsd-ia32": "0.0.1-alpha-
|
|
81
|
-
"@cpajs/openbsd-x64": "0.0.1-alpha-
|
|
82
|
-
"@cpajs/openbsd-arm64": "0.0.1-alpha-
|
|
83
|
-
"@cpajs/netbsd-x64": "0.0.1-alpha-
|
|
61
|
+
"@cpajs/darwin-x64": "0.0.1-alpha-3",
|
|
62
|
+
"@cpajs/darwin-arm64": "0.0.1-alpha-3",
|
|
63
|
+
"@cpajs/win32-x64": "0.0.1-alpha-3",
|
|
64
|
+
"@cpajs/win32-arm64": "0.0.1-alpha-3",
|
|
65
|
+
"@cpajs/win32-ia32": "0.0.1-alpha-3",
|
|
66
|
+
"@cpajs/linux-x64-gnu": "0.0.1-alpha-3",
|
|
67
|
+
"@cpajs/linux-arm64-gnu": "0.0.1-alpha-3",
|
|
68
|
+
"@cpajs/linux-x64-musl": "0.0.1-alpha-3",
|
|
69
|
+
"@cpajs/linux-arm64-musl": "0.0.1-alpha-3",
|
|
70
|
+
"@cpajs/linux-arm": "0.0.1-alpha-3",
|
|
71
|
+
"@cpajs/linux-ia32": "0.0.1-alpha-3",
|
|
72
|
+
"@cpajs/linux-riscv64": "0.0.1-alpha-3",
|
|
73
|
+
"@cpajs/linux-ppc64": "0.0.1-alpha-3",
|
|
74
|
+
"@cpajs/linux-s390x": "0.0.1-alpha-3",
|
|
75
|
+
"@cpajs/linux-loong64": "0.0.1-alpha-3",
|
|
76
|
+
"@cpajs/linux-mips": "0.0.1-alpha-3",
|
|
77
|
+
"@cpajs/linux-mipsel": "0.0.1-alpha-3",
|
|
78
|
+
"@cpajs/freebsd-x64": "0.0.1-alpha-3",
|
|
79
|
+
"@cpajs/freebsd-arm64": "0.0.1-alpha-3",
|
|
80
|
+
"@cpajs/freebsd-ia32": "0.0.1-alpha-3",
|
|
81
|
+
"@cpajs/openbsd-x64": "0.0.1-alpha-3",
|
|
82
|
+
"@cpajs/openbsd-arm64": "0.0.1-alpha-3",
|
|
83
|
+
"@cpajs/netbsd-x64": "0.0.1-alpha-3"
|
|
84
84
|
}
|
|
85
85
|
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { CpaStartError } from './errors.ts';
|
|
2
|
+
import type { StartServerOptions } from './types.ts';
|
|
3
|
+
|
|
4
|
+
// Flags that make cli-proxy-api run a one-shot command or an interactive UI instead of the server.
|
|
5
|
+
const COMMAND_FLAGS = new Set([
|
|
6
|
+
'codex-login',
|
|
7
|
+
'codex-device-login',
|
|
8
|
+
'claude-login',
|
|
9
|
+
'antigravity-login',
|
|
10
|
+
'kimi-login',
|
|
11
|
+
'kimi-ai-login',
|
|
12
|
+
'xai-login',
|
|
13
|
+
'devin-login',
|
|
14
|
+
'meta-login',
|
|
15
|
+
'discover',
|
|
16
|
+
'discover-json',
|
|
17
|
+
'vertex-import',
|
|
18
|
+
'siwc-bind',
|
|
19
|
+
'tui',
|
|
20
|
+
'standalone',
|
|
21
|
+
'management-base-url',
|
|
22
|
+
]);
|
|
23
|
+
// Flags startServer sets itself.
|
|
24
|
+
const MANAGED_FLAGS: Record<string, string> = {
|
|
25
|
+
config: 'config / configPath',
|
|
26
|
+
'local-model': 'localModel',
|
|
27
|
+
'home-jwt': 'home.jwt',
|
|
28
|
+
'home-disable-cluster-discovery': 'home.disableClusterDiscovery',
|
|
29
|
+
password: 'managementKey',
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
function flagName(arg: string): string | undefined {
|
|
33
|
+
const match = /^--?([A-Za-z0-9][\w.-]*)(?:=.*)?$/.exec(arg);
|
|
34
|
+
return match?.[1];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** CLI arguments after `-config <file>`: typed options first, then `args`. */
|
|
38
|
+
export function buildArgs(options: StartServerOptions): string[] {
|
|
39
|
+
for (const arg of options.args ?? []) {
|
|
40
|
+
const name = flagName(arg);
|
|
41
|
+
if (name === undefined) continue;
|
|
42
|
+
if (COMMAND_FLAGS.has(name)) {
|
|
43
|
+
throw new CpaStartError('invalid-options', `args must not contain -${name}: it runs a one-shot command instead of the server.`);
|
|
44
|
+
}
|
|
45
|
+
const option = MANAGED_FLAGS[name];
|
|
46
|
+
if (option) throw new CpaStartError('invalid-options', `Use the ${option} option instead of passing -${name} in args.`);
|
|
47
|
+
}
|
|
48
|
+
const argv: string[] = [];
|
|
49
|
+
if (options.localModel) argv.push('-local-model');
|
|
50
|
+
if (options.home?.disableClusterDiscovery) argv.push('-home-disable-cluster-discovery');
|
|
51
|
+
argv.push(...(options.args ?? []));
|
|
52
|
+
return argv;
|
|
53
|
+
}
|
package/src/server/index.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { mkdir, mkdtemp, rm } from 'node:fs/promises';
|
|
|
2
2
|
import { tmpdir } from 'node:os';
|
|
3
3
|
import { join, resolve } from 'node:path';
|
|
4
4
|
import { setTimeout as delay } from 'node:timers/promises';
|
|
5
|
+
import { buildArgs } from './args.ts';
|
|
5
6
|
import { resolveBinary } from './binary.ts';
|
|
6
7
|
import { inspectConfigFile, writeManagedConfig, type PreparedConfig } from './config.ts';
|
|
7
8
|
import { CpaStartError } from './errors.ts';
|
|
@@ -34,6 +35,9 @@ function validate(options: StartServerOptions): void {
|
|
|
34
35
|
if (options.configPath !== undefined && (options.host !== undefined || options.port !== undefined)) {
|
|
35
36
|
throw new CpaStartError('invalid-options', 'host and port cannot be combined with configPath; set them in the file.');
|
|
36
37
|
}
|
|
38
|
+
if (options.home !== undefined && !options.home.jwt) {
|
|
39
|
+
throw new CpaStartError('invalid-options', 'home.jwt must not be empty.');
|
|
40
|
+
}
|
|
37
41
|
const { port } = options;
|
|
38
42
|
if (port !== undefined && (!Number.isInteger(port) || port < 0 || port > 65_535)) {
|
|
39
43
|
throw new CpaStartError('invalid-options', `Invalid port ${String(port)}.`);
|
|
@@ -47,6 +51,7 @@ function buildEnv(options: StartServerOptions): NodeJS.ProcessEnv {
|
|
|
47
51
|
else env[key] = value;
|
|
48
52
|
}
|
|
49
53
|
if (options.managementKey !== undefined) env.MANAGEMENT_PASSWORD = options.managementKey;
|
|
54
|
+
if (options.home !== undefined) env.HOME_JWT = options.home.jwt;
|
|
50
55
|
return env;
|
|
51
56
|
}
|
|
52
57
|
|
|
@@ -83,6 +88,7 @@ export async function startServer(options: StartServerOptions = {}): Promise<Cpa
|
|
|
83
88
|
const startupTimeoutMs = options.startupTimeoutMs ?? DEFAULT_STARTUP_TIMEOUT_MS;
|
|
84
89
|
const deadline = Date.now() + startupTimeoutMs;
|
|
85
90
|
const env = buildEnv(options);
|
|
91
|
+
const extraArgs = buildArgs(options);
|
|
86
92
|
|
|
87
93
|
try {
|
|
88
94
|
for (let attempt = 1; ; attempt++) {
|
|
@@ -100,7 +106,7 @@ export async function startServer(options: StartServerOptions = {}): Promise<Cpa
|
|
|
100
106
|
}
|
|
101
107
|
|
|
102
108
|
const { host, port, tls } = prepared.listen;
|
|
103
|
-
const redact = createRedactor([options.managementKey, ...prepared.secrets, ...(options.redact ?? [])]);
|
|
109
|
+
const redact = createRedactor([options.managementKey, options.home?.jwt, ...prepared.secrets, ...(options.redact ?? [])]);
|
|
104
110
|
if (!dynamicPort && !(await isPortFree(host, port))) {
|
|
105
111
|
throw new CpaStartError('port-in-use', `Port ${port} on ${host || 'all interfaces'} is already in use.`);
|
|
106
112
|
}
|
|
@@ -108,7 +114,7 @@ export async function startServer(options: StartServerOptions = {}): Promise<Cpa
|
|
|
108
114
|
const origin = formatOrigin(tls ? 'https' : 'http', connectHost(host), port);
|
|
109
115
|
let proc: ManagedProcess;
|
|
110
116
|
try {
|
|
111
|
-
proc = new ManagedProcess(binary.path, ['-config', prepared.configPath, ...
|
|
117
|
+
proc = new ManagedProcess(binary.path, ['-config', prepared.configPath, ...extraArgs], {
|
|
112
118
|
cwd: stateDir,
|
|
113
119
|
env,
|
|
114
120
|
redact,
|
package/src/server/types.ts
CHANGED
|
@@ -7,6 +7,17 @@ export interface LogLine {
|
|
|
7
7
|
line: string;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
+
export interface HomeOptions {
|
|
11
|
+
/**
|
|
12
|
+
* Home control plane JWT (`-home-jwt`). It is passed through the `HOME_JWT`
|
|
13
|
+
* environment variable so it never appears in the process list, and it is
|
|
14
|
+
* redacted from logs.
|
|
15
|
+
*/
|
|
16
|
+
jwt: string;
|
|
17
|
+
/** Keep using the JWT's address instead of discovering cluster nodes (`-home-disable-cluster-discovery`). */
|
|
18
|
+
disableClusterDiscovery?: boolean;
|
|
19
|
+
}
|
|
20
|
+
|
|
10
21
|
interface CommonServerOptions {
|
|
11
22
|
/** Use this executable instead of the bundled platform package. */
|
|
12
23
|
binaryPath?: string;
|
|
@@ -21,7 +32,18 @@ interface CommonServerOptions {
|
|
|
21
32
|
* as allowing remote management access regardless of `management.allow-remote`.
|
|
22
33
|
*/
|
|
23
34
|
managementKey?: string;
|
|
24
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Use the model catalogs embedded in the binary instead of fetching them
|
|
37
|
+
* (`-local-model`). Explicit `models.*` config sources still win.
|
|
38
|
+
*/
|
|
39
|
+
localModel?: boolean;
|
|
40
|
+
/** Run as a node of a CPA Home control plane. Home mode disables the local management API. */
|
|
41
|
+
home?: HomeOptions;
|
|
42
|
+
/**
|
|
43
|
+
* Extra CLI arguments, for flags that plugins register at runtime. Passed as
|
|
44
|
+
* an argv array, never through a shell. One-shot commands (`-*-login`,
|
|
45
|
+
* `-discover`, `-vertex-import`, `-siwc-bind`, `-tui`) and `-config` are rejected.
|
|
46
|
+
*/
|
|
25
47
|
args?: readonly string[];
|
|
26
48
|
/** Environment for the child process. Defaults to `process.env`; entries set to `undefined` are removed. */
|
|
27
49
|
env?: Readonly<Record<string, string | undefined>>;
|