@cpajs/cpa 0.0.1-alpha-3 → 0.1.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +108 -12
  2. package/dist/client/resources/oauth.d.ts +6 -2
  3. package/dist/client/resources/oauth.d.ts.map +1 -1
  4. package/dist/client/resources/oauth.js +28 -8
  5. package/dist/client/resources/oauth.js.map +1 -1
  6. package/dist/client/transport.d.ts.map +1 -1
  7. package/dist/client/transport.js +7 -3
  8. package/dist/client/transport.js.map +1 -1
  9. package/dist/server/args.js +1 -1
  10. package/dist/server/args.js.map +1 -1
  11. package/dist/server/binary.d.ts +19 -0
  12. package/dist/server/binary.d.ts.map +1 -1
  13. package/dist/server/binary.js +35 -1
  14. package/dist/server/binary.js.map +1 -1
  15. package/dist/server/config.d.ts +46 -7
  16. package/dist/server/config.d.ts.map +1 -1
  17. package/dist/server/config.js +148 -22
  18. package/dist/server/config.js.map +1 -1
  19. package/dist/server/errors.d.ts +4 -2
  20. package/dist/server/errors.d.ts.map +1 -1
  21. package/dist/server/errors.js +1 -1
  22. package/dist/server/errors.js.map +1 -1
  23. package/dist/server/index.d.ts +18 -1
  24. package/dist/server/index.d.ts.map +1 -1
  25. package/dist/server/index.js +383 -79
  26. package/dist/server/index.js.map +1 -1
  27. package/dist/server/internal.d.ts +19 -0
  28. package/dist/server/internal.d.ts.map +1 -0
  29. package/dist/server/internal.js +10 -0
  30. package/dist/server/internal.js.map +1 -0
  31. package/dist/server/management.d.ts +29 -0
  32. package/dist/server/management.d.ts.map +1 -0
  33. package/dist/server/management.js +64 -0
  34. package/dist/server/management.js.map +1 -0
  35. package/dist/server/process.d.ts +12 -1
  36. package/dist/server/process.d.ts.map +1 -1
  37. package/dist/server/process.js +55 -13
  38. package/dist/server/process.js.map +1 -1
  39. package/dist/server/readiness.d.ts +16 -2
  40. package/dist/server/readiness.d.ts.map +1 -1
  41. package/dist/server/readiness.js +32 -2
  42. package/dist/server/readiness.js.map +1 -1
  43. package/dist/server/targets.d.ts +4 -0
  44. package/dist/server/targets.d.ts.map +1 -1
  45. package/dist/server/targets.js +6 -0
  46. package/dist/server/targets.js.map +1 -1
  47. package/dist/server/types.d.ts +88 -14
  48. package/dist/server/types.d.ts.map +1 -1
  49. package/package.json +31 -24
  50. package/src/client/resources/oauth.ts +28 -13
  51. package/src/client/transport.ts +7 -3
  52. package/src/server/args.ts +1 -1
  53. package/src/server/binary.ts +46 -1
  54. package/src/server/config.ts +169 -22
  55. package/src/server/errors.ts +4 -2
  56. package/src/server/index.ts +459 -94
  57. package/src/server/internal.ts +20 -0
  58. package/src/server/management.ts +89 -0
  59. package/src/server/process.ts +60 -13
  60. package/src/server/readiness.ts +38 -3
  61. package/src/server/targets.ts +8 -0
  62. package/src/server/types.ts +90 -14
package/README.md CHANGED
@@ -10,8 +10,11 @@ manage any CPA instance with a hand-written, typed client for its native **v8 ma
10
10
  - Prebuilt CPA binaries for 23 platforms come through `optionalDependencies`, so `npm install` is all that is
11
11
  needed.
12
12
 
13
- Bundled CLIProxyAPI: **v8.0.43**. See [docs/compatibility.md](docs/compatibility.md) for platforms and versions,
14
- and [docs/api-coverage.md](docs/api-coverage.md) for every route.
13
+ Bundled CLIProxyAPI: **v8.0.43**.
14
+
15
+ - Upgrading: [CHANGELOG.md](CHANGELOG.md) and [docs/migration.md](docs/migration.md).
16
+ - Platforms, versions and the versioning policy: [docs/compatibility.md](docs/compatibility.md).
17
+ - Every management API route: [docs/api-coverage.md](docs/api-coverage.md).
15
18
 
16
19
  ```sh
17
20
  npm install @cpajs/cpa
@@ -24,7 +27,7 @@ import { startServer } from '@cpajs/cpa/server';
24
27
 
25
28
  const server = await startServer({
26
29
  stateDir: './.cpa', // omit for a temporary directory that is removed on stop
27
- managementKey: process.env.CPA_MANAGEMENT_KEY,
30
+ management: { key: process.env.CPA_MANAGEMENT_KEY! },
28
31
  config: { // native v8 config, typed as CpaConfig
29
32
  access: { 'api-keys': ['sk-my-model-key'] },
30
33
  routing: { strategy: 'fill-first' },
@@ -39,18 +42,95 @@ await server.stop();
39
42
  ```
40
43
 
41
44
  - `config` and `configPath` are mutually exclusive.
42
- - `config` is written to `<stateDir>/config.yaml` on every start. Credentials go to `<stateDir>/auths` unless
43
- `oauth.auth-dir` is set. The server binds `127.0.0.1` unless you pass `host` or set `server.host`.
44
- - `configPath` hands an existing file to CPA unchanged. CPA may rewrite it, for example to hash
45
- `management.secret-key`. The file must set a fixed port, because CPA does not report the port it picks.
45
+ - `config` is written as YAML to `<stateDir>/config.yaml` only when that file does not exist yet. On later
46
+ starts the existing file is reused, so changes made through the management API (or by CPA itself) survive
47
+ `stop()` and `startServer()`. Pass `overwriteConfig: true` to replace it; when a file is kept, `config`, `host`
48
+ and `port` are not applied and a message is emitted through `onLog`. Credentials go to `<stateDir>/auths`
49
+ unless `oauth.auth-dir` is set. The server binds `127.0.0.1` unless you pass `host` or set `server.host`.
50
+ - `configPath` hands an existing file to CPA unchanged. CPA may rewrite it on startup: it hashes a plaintext
51
+ `management.secret-key`, removes legacy keys that conflict with their v8 equivalents, and normalizes the
52
+ layout (`internal/config/config_load.go` and `NormalizeConfigLayout`).
53
+
54
+ Both modes require the file to set a fixed positive port: CPA does not default the port, and a missing or
55
+ non-positive one becomes 0, which makes CPA bind a random port it does not report. Like upstream,
56
+ `server.host` / `server.port` / `server.tls.enable` win by presence over the legacy top-level `host` / `port` /
57
+ `tls.enable`. When cpajs writes the file and no port is given, it picks a free port first; a reused file keeps
58
+ the port it already has.
46
59
  - `startServer` resolves only once `/healthz` answers. It rejects with `CpaStartError` on early exit, port
47
60
  conflict, timeout (`startupTimeoutMs`, default 30 s) or `signal` abort. In every failure case the process is
48
61
  stopped and the temporary directory removed.
49
- - `stop()` is idempotent: it sends SIGTERM and then SIGKILL after `stopTimeoutMs` (default 10 s). On Windows Node
50
- can only terminate forcefully. `server.exited` settles however the process ends.
51
- - `managementKey` is passed through `MANAGEMENT_PASSWORD`, so it never touches disk. Upstream treats that
52
- variable as also allowing remote management. The key, config secrets and `redact` values are masked in logs and
53
- errors.
62
+ - `stop()` is idempotent: on POSIX it sends SIGTERM and then SIGKILL after `stopTimeoutMs` (default 10 s). On
63
+ Windows Node cannot deliver a graceful shutdown signal, so `stop()` terminates the process forcefully (equivalent
64
+ to SIGKILL), `stopTimeoutMs` has no effect, and CPA gets no chance to flush state or update auth files. The same
65
+ applies to the stop half of `restart()`. `server.exited` settles on the final stop or an unexpected exit.
66
+ - `restart({ timeoutMs, signal })` stops the old process with the same SIGTERM → SIGKILL sequence
67
+ (`timeoutMs` defaults to `stopTimeoutMs`) and starts it again with the original options. The handle keeps
68
+ `origin`, `baseUrl`, `host`, `port`, `stateDir` and `configPath`; `pid`, `process` and `recentLogs` point at the
69
+ new process. The existing `config.yaml` is reused and never rewritten, so changes made through the management
70
+ API survive. A dynamic port is reused too; if another process took it meanwhile, restart fails with
71
+ `CpaStartError` code `port-in-use` instead of changing `origin`. Concurrent `restart()` calls share one
72
+ operation, `stop()` during a restart aborts it, and `restart()` after `stop()` rejects. A failed restart leaves
73
+ the handle stopped and cleans up a temporary state directory like `startServer` does.
74
+ - Shutdown: CPA does not outlive your process, even if it is killed with SIGKILL, crashes, or is restarted by
75
+ `tsx watch` / `nodemon`. Each platform package ships a small `cpa-launcher` (pure Go, in `launcher/`) that
76
+ relies only on operating-system facilities:
77
+ - Linux: it sets `PR_SET_PDEATHSIG` and execs CPA, so there is no extra process. The kernel sends CPA SIGTERM
78
+ when your process dies.
79
+ - macOS / BSD: it stays as CPA's parent and stops CPA when the pipe to your process closes. `server.pid` is
80
+ then the launcher's pid; signals sent to it reach CPA.
81
+ - Windows: no launcher is needed, because Node already kills child processes with their parent.
82
+
83
+ Pass `launcher: false` to start CPA directly. With a custom `binaryPath`, the launcher is looked up next to
84
+ that binary and then in the installed platform package; if none is found, a notice is logged. A graceful stop
85
+ is still nicer than a kill, and `stopAllServers()` stops every server this process started:
86
+
87
+ ```ts
88
+ import { stopAllServers } from '@cpajs/cpa/server';
89
+
90
+ for (const signal of ['SIGINT', 'SIGTERM'] as const) {
91
+ process.once(signal, async () => {
92
+ await stopAllServers();
93
+ process.exit(0);
94
+ });
95
+ }
96
+ ```
97
+
98
+ Lines longer than 64 KiB in CPA's output are truncated, with a marker saying how much was dropped.
99
+ - `management: { key }` manages the management API key. The default mode writes a bcrypt hash into
100
+ `management.secret-key` of the managed config and sets `management.allow-remote` from `allowRemote`
101
+ (default `false`), so the plaintext never reaches disk and remote management stays off.
102
+
103
+ Redaction: the key, secrets found in the config when the server starts, and `redact` values are replaced with
104
+ `[REDACTED]` in `onLog`, `recentLogs` and startup errors. This is best-effort, with known limits:
105
+ - Values shorter than 4 characters are not redacted.
106
+ - Credentials added while the server runs (management API, OAuth logins, `restart()`) are not added to
107
+ the redaction list.
108
+ - A line longer than 64 KiB is truncated before redaction, which can leave the start of a secret at the cut.
109
+
110
+ Do not treat CPA's output as safe to publish.
111
+
112
+ | Mode | How CPA compares the key | Remote access |
113
+ | --- | --- | --- |
114
+ | `management: { key }` (default) | bcrypt hash in `management.secret-key` | Written from `allowRemote`, default `false` |
115
+ | `management: { key, allowRemote: true }` | bcrypt hash in `management.secret-key` | Non-loopback clients allowed |
116
+ | `management: { key, viaEnvironment: true }` | Plaintext `MANAGEMENT_PASSWORD` | Always allowed: upstream treats the variable as `allow-remote: true` |
117
+ | `config.management['secret-key']` | What you write; CPA hashes plaintext on startup | `config.management['allow-remote']` |
118
+ | `configPath` | `secret-key` in the file | `allow-remote` in the file |
119
+ | `managementKey` (deprecated) | bcrypt hash, same as the default | Same as the default; it no longer opens remote access |
120
+
121
+ `management.key` is rejected together with `config.management['secret-key']`, or with a `secret-key`
122
+ already present in `configPath`. In `configPath` mode it also requires `viaEnvironment: true`, because
123
+ cpajs must not edit your file.
124
+
125
+ `MANAGEMENT_PASSWORD` reaches CPA only through `viaEnvironment: true`. One inherited from the parent
126
+ environment is always removed, and setting it in `env` is rejected. Otherwise it would quietly add a
127
+ plaintext key and turn remote management on.
128
+
129
+ `viaEnvironment: true` always emits a warning through `onLog`, because the key is compared in plaintext and
130
+ remote management cannot be turned off. `allowRemote: true` emits one when the bind host is not loopback.
131
+ These are warnings, not errors, because both are explicit choices.
132
+
133
+ The server handle does not expose the key. Keep it in your own code and pass it to `createClient`.
54
134
  - CLI flags are typed options:
55
135
  - `localModel: true` → `-local-model`, which uses the embedded model catalogs.
56
136
  - `home: { jwt, disableClusterDiscovery }` → Home mode. The JWT is passed through `HOME_JWT`, so it never appears in argv.
@@ -110,6 +190,16 @@ Every method takes `{ signal, timeoutMs, headers }`. Errors:
110
190
 
111
191
  A 207 partial result resolves normally. Use `client.request()` for anything without a typed method.
112
192
 
193
+ ### Management-key bans
194
+
195
+ The fifth consecutive wrong management key from one IP address bans that IP for 30 minutes. While banned, CPA
196
+ answers 403 `{"error":"IP banned due to too many failed attempts. Try again in <duration>"}` before it even checks
197
+ the supplied key. Loopback clients are included, and `127.0.0.1` and `::1` are separate counters. The failed-attempt
198
+ map is in process memory and upstream has no unban route.
199
+
200
+ For a server you started with `startServer`, call `server.restart()` to clear the ban. For a remote instance you
201
+ can only wait for it to expire. Do not retry a 401 `invalid management key` or `missing management key` in a loop.
202
+
113
203
  ### Model API
114
204
 
115
205
  The management key and model API keys are different things. Model requests go to `server.baseUrl` or
@@ -124,11 +214,17 @@ const openai = new OpenAI({ baseURL: server.baseUrl, apiKey: 'sk-my-model-key' }
124
214
 
125
215
  ```sh
126
216
  pnpm install
217
+ pnpm lint # Biome
127
218
  pnpm typecheck && pnpm test # unit tests (mocked fetch + a fake CPA process)
219
+ pnpm test:coverage # line coverage for client resources and src/server
128
220
  node scripts/build-binary.ts --target linux-x64-musl
129
221
  CPA_BINARY=dist-bin/linux-x64-musl/cli-proxy-api pnpm test:e2e # contract tests against real CPA
130
222
  ```
131
223
 
224
+ Biome formatting is configured to match the existing style. The current tree predates it, so enforcing
225
+ formatting across the whole repository is left to a dedicated change; `pnpm format:check` currently covers
226
+ new examples only.
227
+
132
228
  Release tooling, all in `scripts/` and run directly with Node's type stripping:
133
229
 
134
230
  | Script | Purpose |
@@ -1,6 +1,6 @@
1
1
  import type { CancelOAuthSessionResponse, OAuthAuthUrlRequest, OAuthAuthUrlResponse, OAuthCallbackRequest, OAuthCallbackResponse, OAuthStatusResponse, SIWCBindResponse, VertexImportResponse } from '../types/oauth.ts';
2
2
  import type { SIWCStatusResponse } from '../types/credentials.ts';
3
- import type { RequestOptions, Transport } from '../transport.ts';
3
+ import { type RequestOptions, type Transport } from '../transport.ts';
4
4
  import type { CredentialContent, CredentialSelector } from './credentials.ts';
5
5
  export interface WaitForOAuthOptions extends RequestOptions {
6
6
  /** Poll interval. Default 2 000 ms. */
@@ -17,7 +17,11 @@ export declare class OAuthResource {
17
17
  start(request: OAuthAuthUrlRequest, options?: RequestOptions): Promise<OAuthAuthUrlResponse>;
18
18
  /** Session state: `wait` while pending, `ok` when done, `error` with a message otherwise. */
19
19
  status(state: string, options?: RequestOptions): Promise<OAuthStatusResponse>;
20
- /** Polls {@link status} until the session leaves `wait`. Abort with `signal`. */
20
+ /**
21
+ * Polls {@link status} until the session leaves `wait`. Abort with `signal`
22
+ * (for an overall limit use `AbortSignal.timeout()`); cancellation always
23
+ * rejects with `CpaAbortError`, whether it happens during a request or between polls.
24
+ */
21
25
  waitForCompletion(state: string, options?: WaitForOAuthOptions): Promise<Exclude<OAuthStatusResponse, {
22
26
  status: 'wait';
23
27
  }>>;
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/client/resources/oauth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE9E,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,oDAAoD;AACpD,qBAAa,aAAa;;IAGxB,YAAY,SAAS,EAAE,SAAS,EAE/B;IAED;;;OAGG;IACG,KAAK,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAErG;IAED,6FAA6F;IACvF,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAEtF;IAED,iFAAiF;IAC3E,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAiBnI;IAED,6FAA6F;IACvF,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAE7F;IAED;;;;OAIG;IACG,QAAQ,CAAC,OAAO,EAAE,oBAAoB,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAG1G;IAED,yEAAyE;IACnE,YAAY,CAChB,KAAK,EAAE;QAAE,cAAc,EAAE,iBAAiB,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAClF,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CAc/B;IAED,mFAAmF;IAC7E,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAEpF;IAED,6DAA6D;IACvD,UAAU,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAExG;CACF"}
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/client/resources/oauth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAiB,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE9E,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,oDAAoD;AACpD,qBAAa,aAAa;;IAGxB,YAAY,SAAS,EAAE,SAAS,EAE/B;IAED;;;OAGG;IACG,KAAK,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAErG;IAED,6FAA6F;IACvF,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAEtF;IAED;;;;OAIG;IACG,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAUnI;IAED,6FAA6F;IACvF,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAE7F;IAED;;;;OAIG;IACG,QAAQ,CAAC,OAAO,EAAE,oBAAoB,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAG1G;IAED,yEAAyE;IACnE,YAAY,CAChB,KAAK,EAAE;QAAE,cAAc,EAAE,iBAAiB,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAClF,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CAc/B;IAED,mFAAmF;IAC7E,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAEpF;IAED,6DAA6D;IACvD,UAAU,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAExG;CACF"}
@@ -1,3 +1,5 @@
1
+ import { CpaAbortError } from '../errors.js';
2
+ import { managementUrl } from '../transport.js';
1
3
  /** `/v8/management/oauth/*`: native login flows. */
2
4
  export class OAuthResource {
3
5
  #t;
@@ -15,20 +17,21 @@ export class OAuthResource {
15
17
  async status(state, options = {}) {
16
18
  return (await this.#t.request({ ...options, method: 'GET', path: '/oauth/status', query: { state } })).data;
17
19
  }
18
- /** Polls {@link status} until the session leaves `wait`. Abort with `signal`. */
20
+ /**
21
+ * Polls {@link status} until the session leaves `wait`. Abort with `signal`
22
+ * (for an overall limit use `AbortSignal.timeout()`); cancellation always
23
+ * rejects with `CpaAbortError`, whether it happens during a request or between polls.
24
+ */
19
25
  async waitForCompletion(state, options = {}) {
20
26
  const { intervalMs = 2_000, ...requestOptions } = options;
27
+ const url = managementUrl(this.#t.baseUrl, '/oauth/status');
28
+ url.searchParams.set('state', state);
29
+ const target = { method: 'GET', url: url.toString() };
21
30
  while (true) {
22
31
  const result = await this.status(state, requestOptions);
23
32
  if (result.status !== 'wait')
24
33
  return result;
25
- await new Promise((resolve, reject) => {
26
- const timer = setTimeout(resolve, intervalMs);
27
- requestOptions.signal?.addEventListener('abort', () => {
28
- clearTimeout(timer);
29
- reject(requestOptions.signal.reason);
30
- }, { once: true });
31
- });
34
+ await abortableDelay(intervalMs, requestOptions.signal, target);
32
35
  }
33
36
  }
34
37
  /** Cancels a pending session. `cancelled` is false if it was unknown or already finished. */
@@ -67,4 +70,21 @@ export class OAuthResource {
67
70
  return (await this.#t.request({ ...options, method: 'GET', path: '/oauth/siwc/status', query: { ...selector } })).data;
68
71
  }
69
72
  }
73
+ /** Waits `ms`, rejecting with `CpaAbortError` if `signal` aborts; never leaves a listener behind. */
74
+ function abortableDelay(ms, signal, target) {
75
+ const aborted = () => new CpaAbortError(`${target.method} ${target.url} was aborted`, target, { cause: signal.reason });
76
+ if (signal?.aborted)
77
+ return Promise.reject(aborted());
78
+ return new Promise((resolve, reject) => {
79
+ const onAbort = () => {
80
+ clearTimeout(timer);
81
+ reject(aborted());
82
+ };
83
+ const timer = setTimeout(() => {
84
+ signal?.removeEventListener('abort', onAbort);
85
+ resolve();
86
+ }, ms);
87
+ signal?.addEventListener('abort', onAbort, { once: true });
88
+ });
89
+ }
70
90
  //# sourceMappingURL=oauth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/client/resources/oauth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/client/resources/oauth.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/client/transport.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAElD,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE9D,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;AAC/G,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC;IACtB,8FAA8F;IAC9F,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9C,uCAAuC;IACvC,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAEjE,MAAM,WAAW,UAAW,SAAQ,cAAc;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,sEAAsE;IACtE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,kDAAkD;IAClD,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,2DAA2D;IAC3D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0EAA0E;IAC1E,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAWD,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,UAAQ,GAAG,GAAG,CAMpF;AAED,qBAAa,SAAS;;IAOpB,YAAY,OAAO,EAAE,aAAa,EAYjC;IAED,IAAI,OAAO,IAAI,GAAG,CAEjB;IAEK,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAmG/D;CACF;AAED,iEAAiE;AACjE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAAE,IAAI,SAAS,GAAG,MAAM,CASlF"}
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/client/transport.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAElD,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE9D,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;AAC/G,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC;IACtB,8FAA8F;IAC9F,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9C,uCAAuC;IACvC,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAEjE,MAAM,WAAW,UAAW,SAAQ,cAAc;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,sEAAsE;IACtE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,kDAAkD;IAClD,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,2DAA2D;IAC3D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0EAA0E;IAC1E,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAWD,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,UAAQ,GAAG,GAAG,CAMpF;AAED,qBAAa,SAAS;;IAOpB,YAAY,OAAO,EAAE,aAAa,EAYjC;IAED,IAAI,OAAO,IAAI,GAAG,CAEjB;IAEK,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAuG/D;CACF;AAED,iEAAiE;AACjE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EAAE,IAAI,SAAS,GAAG,MAAM,CASlF"}
@@ -110,6 +110,8 @@ export class Transport {
110
110
  if (body !== undefined)
111
111
  init.body = body;
112
112
  const responseType = req.responseType ?? 'json';
113
+ // Set once a Response is handed to the caller, who then owns reading its body.
114
+ let handedOff = false;
113
115
  try {
114
116
  let response;
115
117
  try {
@@ -122,6 +124,7 @@ export class Transport {
122
124
  throw new CpaHttpError(target, response, await guard(response.text()));
123
125
  }
124
126
  if (responseType === 'response') {
127
+ handedOff = true;
125
128
  return { data: response, status: response.status, headers: response.headers };
126
129
  }
127
130
  if (responseType === 'blob') {
@@ -146,9 +149,10 @@ export class Transport {
146
149
  throw classify(error);
147
150
  }
148
151
  finally {
149
- // For `response`, the caller reads the body; the timeout covers the headers only,
150
- // while the caller's own signal keeps working through the request's signal.
151
- if (responseType === 'response')
152
+ // A handed-off Response is read by the caller: the timeout covered the headers
153
+ // only, and the caller's signal must keep cancelling the body, so its listener
154
+ // stays until that signal aborts. Every other outcome releases everything.
155
+ if (handedOff)
152
156
  clearTimeout(timer);
153
157
  else
154
158
  release();
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/client/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/client/transport.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,7 @@ const MANAGED_FLAGS = {
24
24
  'local-model': 'localModel',
25
25
  'home-jwt': 'home.jwt',
26
26
  'home-disable-cluster-discovery': 'home.disableClusterDiscovery',
27
- password: 'managementKey',
27
+ password: 'management.key',
28
28
  };
29
29
  function flagName(arg) {
30
30
  const match = /^--?([A-Za-z0-9][\w.-]*)(?:=.*)?$/.exec(arg);
@@ -1 +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
+ {"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,gBAAgB;CAC3B,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"}
@@ -32,4 +32,23 @@ export declare function resolveBinary(options?: {
32
32
  binaryPath?: string;
33
33
  platform?: HostPlatform;
34
34
  }): ResolvedBinary;
35
+ /** How the launcher keeps CPA from outliving this process. */
36
+ export type LauncherMode = 'exec' | 'supervise';
37
+ export interface ResolvedLauncher {
38
+ path: string;
39
+ /**
40
+ * `exec` (Linux): the launcher sets PR_SET_PDEATHSIG and becomes CPA.
41
+ * `supervise` (macOS, BSD): the launcher stays as CPA's parent and stops it
42
+ * when its stdin pipe from this process closes.
43
+ */
44
+ mode: LauncherMode;
45
+ }
46
+ /**
47
+ * Finds `cpa-launcher` for a CPA binary: next to the binary first (platform
48
+ * packages and local builds keep both in one directory), then in an installed
49
+ * platform package. Returns undefined on Windows, where Node already places
50
+ * child processes in a job object that is closed (and its processes killed)
51
+ * when this process exits.
52
+ */
53
+ export declare function resolveLauncher(cpaPath: string, platform?: HostPlatform): ResolvedLauncher | undefined;
35
54
  //# sourceMappingURL=binary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../src/server/binary.ts"],"names":[],"mappings":"AAIA,OAAO,EAA2D,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAIpG,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,MAAM,CAAC;AAEpC,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC;IACzB,gCAAgC;IAChC,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,0FAA0F;IAC1F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,yDAAyD;AACzD,wBAAgB,UAAU,IAAI,IAAI,GAAG,SAAS,CAc7C;AAED,wBAAgB,eAAe,IAAI,YAAY,CAG9C;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,EAAE,CAO7D;AAuBD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,YAAY,CAAA;CAAO,GAAG,cAAc,CAuC5G"}
1
+ {"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../src/server/binary.ts"],"names":[],"mappings":"AAIA,OAAO,EAA0E,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAInH,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,MAAM,CAAC;AAEpC,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC;IACzB,gCAAgC;IAChC,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,0FAA0F;IAC1F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,yDAAyD;AACzD,wBAAgB,UAAU,IAAI,IAAI,GAAG,SAAS,CAc7C;AAED,wBAAgB,eAAe,IAAI,YAAY,CAG9C;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,EAAE,CAO7D;AAuBD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,YAAY,CAAA;CAAO,GAAG,cAAc,CAuC5G;AAED,8DAA8D;AAC9D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,WAAW,CAAC;AAEhD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,EAAE,YAAY,CAAC;CACpB;AAYD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,YAAgC,GAAG,gBAAgB,GAAG,SAAS,CAazH"}
@@ -2,7 +2,7 @@ import { accessSync, chmodSync, constants, existsSync, readdirSync, statSync } f
2
2
  import { createRequire } from 'node:module';
3
3
  import { dirname, join } from 'node:path';
4
4
  import { CpaBinaryError } from './errors.js';
5
- import { TARGETS, UNSUPPORTED_PLATFORMS, binaryName, packageName } from './targets.js';
5
+ import { LAUNCHER_NAME, TARGETS, UNSUPPORTED_PLATFORMS, binaryName, packageName } from './targets.js';
6
6
  const require = createRequire(import.meta.url);
7
7
  /** Detects the C library of the running Linux system. */
8
8
  export function detectLibc() {
@@ -105,4 +105,38 @@ export function resolveBinary(options = {}) {
105
105
  'It is an optional dependency of @cpajs/cpa; reinstall without --no-optional / --omit=optional, ' +
106
106
  'make sure your lockfile was not created on another platform without it, or pass binaryPath.');
107
107
  }
108
+ function isExecutable(path) {
109
+ try {
110
+ if (!statSync(path).isFile())
111
+ return false;
112
+ accessSync(path, constants.X_OK);
113
+ return true;
114
+ }
115
+ catch {
116
+ return false;
117
+ }
118
+ }
119
+ /**
120
+ * Finds `cpa-launcher` for a CPA binary: next to the binary first (platform
121
+ * packages and local builds keep both in one directory), then in an installed
122
+ * platform package. Returns undefined on Windows, where Node already places
123
+ * child processes in a job object that is closed (and its processes killed)
124
+ * when this process exits.
125
+ */
126
+ export function resolveLauncher(cpaPath, platform = currentPlatform()) {
127
+ if (platform.os === 'win32')
128
+ return undefined;
129
+ const mode = platform.os === 'linux' ? 'exec' : 'supervise';
130
+ const candidates = [join(dirname(cpaPath), LAUNCHER_NAME)];
131
+ for (const target of candidateTargets(platform)) {
132
+ try {
133
+ candidates.push(join(dirname(require.resolve(`${packageName(target)}/package.json`)), 'bin', LAUNCHER_NAME));
134
+ }
135
+ catch {
136
+ // Package not installed.
137
+ }
138
+ }
139
+ const path = candidates.find(isExecutable);
140
+ return path === undefined ? undefined : { path, mode };
141
+ }
108
142
  //# sourceMappingURL=binary.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../src/server/binary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../src/server/binary.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,13 @@
1
1
  import type { CpaConfig } from '../client/types/config.ts';
2
- export declare const DEFAULT_PORT = 8317;
3
2
  export declare const MANAGED_CONFIG_FILE = "config.yaml";
3
+ export interface ManagementSettings {
4
+ /** `management.allow-remote`, falling back to the legacy `remote-management` key. */
5
+ allowRemote: boolean;
6
+ /** True when the document already has a non-empty `secret-key`. */
7
+ hasSecret: boolean;
8
+ /** The stored `secret-key` (plaintext or a bcrypt hash), if any. */
9
+ secretKey: string | undefined;
10
+ }
4
11
  export interface ListenSettings {
5
12
  /** The `server.host` value as configured; empty means all interfaces. */
6
13
  host: string;
@@ -8,30 +15,62 @@ export interface ListenSettings {
8
15
  tls: boolean;
9
16
  }
10
17
  /**
11
- * Reads listener settings from a parsed config document. The v8 `server.*`
12
- * keys win over the legacy top-level `host`/`port`/`tls` keys, mirroring CPA.
18
+ * Reads listener settings from a parsed config document using upstream's
19
+ * presence-based precedence: a `server.*` leaf wins whenever it is present,
20
+ * even when it is `0`, `false` or `null` (internal/config/config_v8.go).
21
+ * Legacy top-level `host`/`port`/`tls` are used only when that v8 leaf is
22
+ * absent, and `tls.enable` is resolved leaf by leaf rather than by replacing
23
+ * the whole `tls` object.
13
24
  */
14
25
  export declare function readListenSettings(doc: unknown): ListenSettings;
26
+ /**
27
+ * Reads management settings from a parsed config document. The v8 `management`
28
+ * section wins over the legacy `remote-management` alias, mirroring CPA.
29
+ */
30
+ export declare function readManagementSettings(doc: unknown): ManagementSettings;
15
31
  /** Secrets that appear in a config document and must never reach logs. */
16
32
  export declare function configSecrets(doc: unknown): string[];
17
33
  export interface PreparedConfig {
18
34
  configPath: string;
19
35
  listen: ListenSettings;
36
+ management: ManagementSettings;
20
37
  secrets: string[];
21
- /** True when the file was written by this package. */
38
+ /** True when the file belongs to the managed state directory. */
22
39
  managed: boolean;
40
+ /** True when an existing file was reused instead of written. */
41
+ reused: boolean;
23
42
  }
24
43
  /**
25
44
  * Writes a `config` object to the managed config file in `stateDir`.
26
45
  *
27
- * The object is serialised as JSON, which is valid YAML and is read by CPA's
28
- * YAML loader unchanged. Listener and auth directory defaults are filled in so
29
- * the process stays inside `stateDir` and binds to loopback unless told otherwise.
46
+ * The object is serialised as YAML so CPA and humans see the same stable shape.
47
+ * Listener and auth directory defaults are filled in so the process stays inside
48
+ * `stateDir` and binds to loopback unless told otherwise.
30
49
  */
31
50
  export declare function writeManagedConfig(config: CpaConfig, stateDir: string, listen: {
32
51
  host: string;
33
52
  port: number;
53
+ }, management?: {
54
+ secretKeyHash: string;
55
+ allowRemote: boolean;
34
56
  }): Promise<PreparedConfig>;
57
+ /**
58
+ * Reads the managed config file in `stateDir` without modifying it.
59
+ *
60
+ * Returns `undefined` when the file does not exist yet. An existing file must
61
+ * set a fixed `server.port`, because CPA does not report the port it picks and
62
+ * a later start cannot discover it.
63
+ */
64
+ export declare function readManagedConfig(stateDir: string): Promise<PreparedConfig | undefined>;
65
+ /**
66
+ * Sets `management.secret-key` and `management.allow-remote` in a reused
67
+ * managed config, leaving every other key and comment as CPA left them.
68
+ * The legacy `remote-management` section is dropped so it cannot shadow them.
69
+ */
70
+ export declare function updateManagedSecret(configPath: string, management: {
71
+ secretKeyHash: string;
72
+ allowRemote: boolean;
73
+ }): Promise<void>;
35
74
  /** Reads an existing config file without modifying it. */
36
75
  export declare function inspectConfigFile(configPath: string): Promise<PreparedConfig>;
37
76
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/server/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAG3D,eAAO,MAAM,YAAY,OAAO,CAAC;AACjC,eAAO,MAAM,mBAAmB,gBAAgB,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;CACd;AAQD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAe/D;AAKD,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAkBpD;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,sDAAsD;IACtD,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrC,OAAO,CAAC,cAAc,CAAC,CAgBzB;AAED,0DAA0D;AAC1D,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAsBnF"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/server/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAG3D,eAAO,MAAM,mBAAmB,gBAAgB,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IACjC,qFAAqF;IACrF,WAAW,EAAE,OAAO,CAAC;IACrB,mEAAmE;IACnE,SAAS,EAAE,OAAO,CAAC;IACnB,oEAAoE;IACpE,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;CACd;AAsBD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAmB/D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,CAavE;AAUD,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAkBpD;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACtC,UAAU,CAAC,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,GAC3D,OAAO,CAAC,cAAc,CAAC,CA+BzB;AAMD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CA8B7F;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,GAC1D,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,0DAA0D;AAC1D,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAqCnF"}