@cpajs/cpa 0.0.1-alpha-2 → 0.1.0-rc.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/README.md +108 -14
- package/dist/client/resources/oauth.d.ts +6 -2
- package/dist/client/resources/oauth.d.ts.map +1 -1
- package/dist/client/resources/oauth.js +28 -8
- package/dist/client/resources/oauth.js.map +1 -1
- package/dist/client/transport.d.ts.map +1 -1
- package/dist/client/transport.js +7 -3
- package/dist/client/transport.js.map +1 -1
- 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/config.d.ts +46 -7
- package/dist/server/config.d.ts.map +1 -1
- package/dist/server/config.js +148 -22
- package/dist/server/config.js.map +1 -1
- package/dist/server/errors.d.ts +4 -2
- package/dist/server/errors.d.ts.map +1 -1
- package/dist/server/errors.js +1 -1
- package/dist/server/errors.js.map +1 -1
- package/dist/server/index.d.ts +18 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +365 -77
- package/dist/server/index.js.map +1 -1
- package/dist/server/internal.d.ts +16 -0
- package/dist/server/internal.d.ts.map +1 -0
- package/dist/server/internal.js +10 -0
- package/dist/server/internal.js.map +1 -0
- package/dist/server/management.d.ts +29 -0
- package/dist/server/management.d.ts.map +1 -0
- package/dist/server/management.js +64 -0
- package/dist/server/management.js.map +1 -0
- package/dist/server/process.d.ts +4 -1
- package/dist/server/process.d.ts.map +1 -1
- package/dist/server/process.js +24 -4
- package/dist/server/process.js.map +1 -1
- package/dist/server/readiness.d.ts +16 -2
- package/dist/server/readiness.d.ts.map +1 -1
- package/dist/server/readiness.js +32 -2
- package/dist/server/readiness.js.map +1 -1
- package/dist/server/types.d.ts +94 -15
- package/dist/server/types.d.ts.map +1 -1
- package/package.json +31 -24
- package/src/client/resources/oauth.ts +28 -13
- package/src/client/transport.ts +7 -3
- package/src/server/args.ts +53 -0
- package/src/server/config.ts +169 -22
- package/src/server/errors.ts +4 -2
- package/src/server/index.ts +433 -92
- package/src/server/internal.ts +16 -0
- package/src/server/management.ts +89 -0
- package/src/server/process.ts +23 -4
- package/src/server/readiness.ts +38 -3
- package/src/server/types.ts +97 -15
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**.
|
|
14
|
-
|
|
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
|
-
|
|
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,19 +42,94 @@ await server.stop();
|
|
|
39
42
|
```
|
|
40
43
|
|
|
41
44
|
- `config` and `configPath` are mutually exclusive.
|
|
42
|
-
- `config` is written to `<stateDir>/config.yaml`
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
`
|
|
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
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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 processes are killed when the host exits normally or calls `process.exit()`. A signal the host
|
|
75
|
+
does not handle (for example a default SIGTERM) ends Node without that cleanup, and cpajs does not install
|
|
76
|
+
signal handlers, because doing so would change how your process reacts to them. To leave nothing behind,
|
|
77
|
+
stop servers from your own handlers. `stopAllServers()` stops every server this process started:
|
|
78
|
+
|
|
79
|
+
```ts
|
|
80
|
+
import { stopAllServers } from '@cpajs/cpa/server';
|
|
81
|
+
|
|
82
|
+
for (const signal of ['SIGINT', 'SIGTERM'] as const) {
|
|
83
|
+
process.once(signal, async () => {
|
|
84
|
+
await stopAllServers();
|
|
85
|
+
process.exit(0);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
SIGKILL cannot be handled, so nothing can clean up after it. Lines longer than 64 KiB in CPA's output are
|
|
91
|
+
truncated, with a marker saying how much was dropped.
|
|
92
|
+
- `management: { key }` manages the management API key. The default mode writes a bcrypt hash into
|
|
93
|
+
`management.secret-key` of the managed config and sets `management.allow-remote` from `allowRemote`
|
|
94
|
+
(default `false`), so the plaintext never reaches disk and remote management stays off.
|
|
95
|
+
|
|
96
|
+
Redaction: the key, secrets found in the config when the server starts, and `redact` values are replaced with
|
|
97
|
+
`[REDACTED]` in `onLog`, `recentLogs` and startup errors. This is best-effort, with known limits:
|
|
98
|
+
- Values shorter than 4 characters are not redacted.
|
|
99
|
+
- Credentials added while the server runs (management API, OAuth logins, `restart()`) are not added to
|
|
100
|
+
the redaction list.
|
|
101
|
+
- A line longer than 64 KiB is truncated before redaction, which can leave the start of a secret at the cut.
|
|
102
|
+
|
|
103
|
+
Do not treat CPA's output as safe to publish.
|
|
104
|
+
|
|
105
|
+
| Mode | How CPA compares the key | Remote access |
|
|
106
|
+
| --- | --- | --- |
|
|
107
|
+
| `management: { key }` (default) | bcrypt hash in `management.secret-key` | Written from `allowRemote`, default `false` |
|
|
108
|
+
| `management: { key, allowRemote: true }` | bcrypt hash in `management.secret-key` | Non-loopback clients allowed |
|
|
109
|
+
| `management: { key, viaEnvironment: true }` | Plaintext `MANAGEMENT_PASSWORD` | Always allowed: upstream treats the variable as `allow-remote: true` |
|
|
110
|
+
| `config.management['secret-key']` | What you write; CPA hashes plaintext on startup | `config.management['allow-remote']` |
|
|
111
|
+
| `configPath` | `secret-key` in the file | `allow-remote` in the file |
|
|
112
|
+
| `managementKey` (deprecated) | bcrypt hash, same as the default | Same as the default; it no longer opens remote access |
|
|
113
|
+
|
|
114
|
+
`management.key` is rejected together with `config.management['secret-key']`, or with a `secret-key`
|
|
115
|
+
already present in `configPath`. In `configPath` mode it also requires `viaEnvironment: true`, because
|
|
116
|
+
cpajs must not edit your file.
|
|
117
|
+
|
|
118
|
+
`MANAGEMENT_PASSWORD` reaches CPA only through `viaEnvironment: true`. One inherited from the parent
|
|
119
|
+
environment is always removed, and setting it in `env` is rejected. Otherwise it would quietly add a
|
|
120
|
+
plaintext key and turn remote management on.
|
|
121
|
+
|
|
122
|
+
`viaEnvironment: true` always emits a warning through `onLog`, because the key is compared in plaintext and
|
|
123
|
+
remote management cannot be turned off. `allowRemote: true` emits one when the bind host is not loopback.
|
|
124
|
+
These are warnings, not errors, because both are explicit choices.
|
|
125
|
+
|
|
126
|
+
The server handle does not expose the key. Keep it in your own code and pass it to `createClient`.
|
|
127
|
+
- CLI flags are typed options:
|
|
128
|
+
- `localModel: true` → `-local-model`, which uses the embedded model catalogs.
|
|
129
|
+
- `home: { jwt, disableClusterDiscovery }` → Home mode. The JWT is passed through `HOME_JWT`, so it never appears in argv.
|
|
130
|
+
|
|
131
|
+
`args` is only for flags that plugins register. One-shot commands (`-*-login`, `-discover`, `-tui`, …) and flags that have a typed option are rejected.
|
|
132
|
+
- `binaryPath` overrides the bundled binary.
|
|
55
133
|
|
|
56
134
|
## Manage a server
|
|
57
135
|
|
|
@@ -105,6 +183,16 @@ Every method takes `{ signal, timeoutMs, headers }`. Errors:
|
|
|
105
183
|
|
|
106
184
|
A 207 partial result resolves normally. Use `client.request()` for anything without a typed method.
|
|
107
185
|
|
|
186
|
+
### Management-key bans
|
|
187
|
+
|
|
188
|
+
The fifth consecutive wrong management key from one IP address bans that IP for 30 minutes. While banned, CPA
|
|
189
|
+
answers 403 `{"error":"IP banned due to too many failed attempts. Try again in <duration>"}` before it even checks
|
|
190
|
+
the supplied key. Loopback clients are included, and `127.0.0.1` and `::1` are separate counters. The failed-attempt
|
|
191
|
+
map is in process memory and upstream has no unban route.
|
|
192
|
+
|
|
193
|
+
For a server you started with `startServer`, call `server.restart()` to clear the ban. For a remote instance you
|
|
194
|
+
can only wait for it to expire. Do not retry a 401 `invalid management key` or `missing management key` in a loop.
|
|
195
|
+
|
|
108
196
|
### Model API
|
|
109
197
|
|
|
110
198
|
The management key and model API keys are different things. Model requests go to `server.baseUrl` or
|
|
@@ -119,11 +207,17 @@ const openai = new OpenAI({ baseURL: server.baseUrl, apiKey: 'sk-my-model-key' }
|
|
|
119
207
|
|
|
120
208
|
```sh
|
|
121
209
|
pnpm install
|
|
210
|
+
pnpm lint # Biome
|
|
122
211
|
pnpm typecheck && pnpm test # unit tests (mocked fetch + a fake CPA process)
|
|
212
|
+
pnpm test:coverage # line coverage for client resources and src/server
|
|
123
213
|
node scripts/build-binary.ts --target linux-x64-musl
|
|
124
214
|
CPA_BINARY=dist-bin/linux-x64-musl/cli-proxy-api pnpm test:e2e # contract tests against real CPA
|
|
125
215
|
```
|
|
126
216
|
|
|
217
|
+
Biome formatting is configured to match the existing style. The current tree predates it, so enforcing
|
|
218
|
+
formatting across the whole repository is left to a dedicated change; `pnpm format:check` currently covers
|
|
219
|
+
new examples only.
|
|
220
|
+
|
|
127
221
|
Release tooling, all in `scripts/` and run directly with Node's type stripping:
|
|
128
222
|
|
|
129
223
|
| Script | Purpose |
|
|
@@ -136,7 +230,7 @@ Release tooling, all in `scripts/` and run directly with Node's type stripping:
|
|
|
136
230
|
| `install-test.ts` | Install the tarballs through a local registry with npm, pnpm or bun, and run them. |
|
|
137
231
|
| `trust-publishers.ts` | Configure npm trusted publishing for all packages (run locally after the first publish). |
|
|
138
232
|
|
|
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
|
|
233
|
+
`.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
234
|
|
|
141
235
|
## License
|
|
142
236
|
|
|
@@ -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
|
|
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
|
-
/**
|
|
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;
|
|
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
|
-
/**
|
|
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
|
|
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":"
|
|
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,
|
|
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"}
|
package/dist/client/transport.js
CHANGED
|
@@ -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
|
-
//
|
|
150
|
-
//
|
|
151
|
-
|
|
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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"}
|
|
@@ -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: 'management.key',
|
|
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,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"}
|
package/dist/server/config.d.ts
CHANGED
|
@@ -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
|
|
12
|
-
*
|
|
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
|
|
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
|
|
28
|
-
*
|
|
29
|
-
*
|
|
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,
|
|
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"}
|