wicked-crew 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/capture.d.ts +2 -2
- package/dist/api/delivery-assurance.d.ts +1 -6
- package/dist/api/delivery-assurance.d.ts.map +1 -1
- package/dist/api/delivery-assurance.js +4 -14
- package/dist/api/delivery-assurance.js.map +1 -1
- package/dist/api/governance-steering.d.ts +2 -2
- package/dist/api/mcp.d.ts +4 -4
- package/dist/api/recording.d.ts +29 -3
- package/dist/api/recording.d.ts.map +1 -1
- package/dist/api/recording.js +188 -0
- package/dist/api/recording.js.map +1 -1
- package/dist/api/roster-standing.d.ts +3 -2
- package/dist/api/roster-standing.d.ts.map +1 -1
- package/dist/api/roster-standing.js +3 -1
- package/dist/api/roster-standing.js.map +1 -1
- package/dist/api/routes.d.ts +112 -112
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +66 -5
- package/dist/api/routes.js.map +1 -1
- package/dist/api/seat-probe.d.ts +7 -0
- package/dist/api/seat-probe.d.ts.map +1 -1
- package/dist/api/seat-probe.js +27 -5
- package/dist/api/seat-probe.js.map +1 -1
- package/dist/api/seat-version.d.ts +8 -0
- package/dist/api/seat-version.d.ts.map +1 -1
- package/dist/api/seat-version.js +36 -4
- package/dist/api/seat-version.js.map +1 -1
- package/dist/api/testing.d.ts +4 -4
- package/dist/campaigns/routes.d.ts +2 -2
- package/dist/core/adapter.d.ts.map +1 -1
- package/dist/core/adapter.js +20 -0
- package/dist/core/adapter.js.map +1 -1
- package/dist/core/builtin-catalog.d.ts.map +1 -1
- package/dist/core/builtin-catalog.js +6 -1
- package/dist/core/builtin-catalog.js.map +1 -1
- package/dist/core/qe-acceptance-setting.d.ts +65 -0
- package/dist/core/qe-acceptance-setting.d.ts.map +1 -0
- package/dist/core/qe-acceptance-setting.js +93 -0
- package/dist/core/qe-acceptance-setting.js.map +1 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +3 -0
- package/dist/core/types.js.map +1 -1
- package/dist/editors/pack-install.d.ts +30 -3
- package/dist/editors/pack-install.d.ts.map +1 -1
- package/dist/editors/pack-install.js +59 -4
- package/dist/editors/pack-install.js.map +1 -1
- package/dist/events/terminals.d.ts +42 -2
- package/dist/events/terminals.d.ts.map +1 -1
- package/dist/events/terminals.js +136 -3
- package/dist/events/terminals.js.map +1 -1
- package/dist/studio/assets/index-1Ucvzihb.js +770 -0
- package/dist/studio/assets/index-B0u_f6HD.css +32 -0
- package/dist/studio/editors/wicked-deck/editor.json +56 -3
- package/dist/studio/editors/wicked-deck/index.html +53 -7
- package/dist/studio/editors/wicked-doc/editor.json +91 -0
- package/dist/studio/editors/wicked-doc/index.html +161 -0
- package/dist/studio/editors/wicked-page/editor.json +42 -4
- package/dist/studio/editors/wicked-page/index.html +24 -7
- package/dist/studio/editors/wicked-video/editor.json +271 -0
- package/dist/studio/editors/wicked-video/index.html +28 -0
- package/dist/studio/index.html +2 -2
- package/dist/studio/testid-inventory.json +660 -94
- package/dist/team/routes.d.ts +2 -2
- package/endpoint-manifest.json +14 -1
- package/package.json +3 -3
- package/dist/studio/assets/index-BSPM1fFW.css +0 -32
- package/dist/studio/assets/index-R8uK_NlG.js +0 -848
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* Nothing is written into the pack. The registry file is `daemon-editors.json`.
|
|
17
17
|
*/
|
|
18
18
|
import type { EditorConformanceSummary, InstallEditorResponse, PackCheckResult } from '../core/types.js';
|
|
19
|
+
import { execCapped } from '../core/exec.js';
|
|
19
20
|
import { EditorRegistry } from './registry.js';
|
|
20
21
|
export type PackCheckRunner = (packRoot: string) => Promise<PackCheckResult>;
|
|
21
22
|
/**
|
|
@@ -30,8 +31,31 @@ export declare class PackInstallError extends Error {
|
|
|
30
31
|
readonly body?: Record<string, unknown> | undefined;
|
|
31
32
|
constructor(status: 400 | 404 | 409 | 422 | 501, message: string, check?: PackCheckResult | undefined, body?: Record<string, unknown> | undefined);
|
|
32
33
|
}
|
|
33
|
-
/** The install-time conformance run: the pack root in, garden's report out
|
|
34
|
-
|
|
34
|
+
/** The install-time conformance run: the pack root in, garden's report out; `editors` (the manifest's
|
|
35
|
+
* entries) sizes the run's overall cap. */
|
|
36
|
+
export type ConformanceRunner = (packRoot: string, editors?: readonly Record<string, unknown>[]) => Promise<EditorConformanceSummary>;
|
|
37
|
+
/** garden's bound on each load of the conformance host page (scripts/editor/conformance.py `--timeout`):
|
|
38
|
+
* this env var, read by garden's runner itself in the daemon's environment, else 120 s. */
|
|
39
|
+
export declare const CONFORMANCE_TIMEOUT_ENV = "WG_EDITOR_CONFORMANCE_TIMEOUT";
|
|
40
|
+
export declare const DEFAULT_CONFORMANCE_LOAD_S = 120;
|
|
41
|
+
/**
|
|
42
|
+
* The per-load bound the runner will use, read the way garden's `load_timeout` reads it: Python's
|
|
43
|
+
* `float()` of the env value (surrounding spaces and digit-group underscores allowed, `1_000` = 1000),
|
|
44
|
+
* valid only within 5-1800 s. A value garden refuses fails its run at once, so the default stands.
|
|
45
|
+
*/
|
|
46
|
+
export declare function conformanceLoadSeconds(env?: NodeJS.ProcessEnv): number;
|
|
47
|
+
/**
|
|
48
|
+
* The overall cap on one conformance run, derived from garden's per-load bound so the two never
|
|
49
|
+
* disagree. Per editor (garden scripts/editor/conformance.py):
|
|
50
|
+
* - host-page loads, each allowed the whole bound: 2 (the cases, then the hash-pinned reload); for an
|
|
51
|
+
* editor that speaks protocol 2, 1 more for the card (full screen reuses it) and 1 per plugin-rendered
|
|
52
|
+
* options tab (at least 1 when it declares options);
|
|
53
|
+
* - the cases' fixed waits (~30 s) plus each sequential answer the host allows up to 2 s: every card
|
|
54
|
+
* action, every options tab, and the two full-screen mode changes;
|
|
55
|
+
* plus 60 s for the browser start. One protocol-2 editor with no surfaces, at the default 120 s:
|
|
56
|
+
* 60 + (30 + 2 x 2) + 3 x 120 = 454 s. A fixed 240 s cap killed a correct install at 249 s.
|
|
57
|
+
*/
|
|
58
|
+
export declare function conformanceCapMs(editors: readonly Record<string, unknown>[], loadS: number): number;
|
|
35
59
|
/** The cases a conformance run must report passing for every editor (garden's runner: 0-6 and 8-12). */
|
|
36
60
|
export declare const CONFORMANCE_CASES: readonly ["0-manifest", "1-handshake", "2-sizes", "3-no-network", "4-permissions", "5-typing", "6-forwarding", "8-strict-input", "9-liveness", "10-keyboard", "11-theme", "12-hash-pinned"];
|
|
37
61
|
/** The protocol-2 cases an editor whose `protocol` lists 2 must also pass (DES-EDITOR-PLUGIN-CONTRACT-001 §8.3):
|
|
@@ -45,7 +69,10 @@ export declare function requiredCases(entry: Record<string, unknown>): string[];
|
|
|
45
69
|
* --host-url <this daemon> --json`. A missing garden or runner, no daemon URL, no browser, or an
|
|
46
70
|
* unreadable report is a FAILED run with the reason — never a pass.
|
|
47
71
|
*/
|
|
48
|
-
export declare function gardenConformance(gardenRoot: string | null, hostUrl: () => string | null
|
|
72
|
+
export declare function gardenConformance(gardenRoot: string | null, hostUrl: () => string | null, deps?: {
|
|
73
|
+
env?: NodeJS.ProcessEnv;
|
|
74
|
+
exec?: typeof execCapped;
|
|
75
|
+
}): ConformanceRunner;
|
|
49
76
|
/** `POST /editors {packRoot, enabled?}`: the gate, the conformance run, then the registry. */
|
|
50
77
|
export declare function installPack(packRootRaw: string, enabled: boolean | undefined, deps: {
|
|
51
78
|
check: PackCheckRunner;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack-install.d.ts","sourceRoot":"","sources":["../../src/editors/pack-install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,KAAK,EAAE,wBAAwB,EAAwB,qBAAqB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"pack-install.d.ts","sourceRoot":"","sources":["../../src/editors/pack-install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,KAAK,EAAE,wBAAwB,EAAwB,qBAAqB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC/H,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAyB,cAAc,EAA2D,MAAM,eAAe,CAAC;AAE/H,MAAM,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;AAiB7E;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,eAAe,CAiC1E;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IAEvC,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;IAE5C,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAH9B,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAC5C,OAAO,EAAE,MAAM,EACN,KAAK,CAAC,EAAE,eAAe,YAAA,EACvB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAK1C;AAED;4CAC4C;AAC5C,MAAM,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAEtI;4FAC4F;AAC5F,eAAO,MAAM,uBAAuB,kCAAkC,CAAC;AACvE,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAKnF;AAcD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAWnG;AAED,wGAAwG;AACxG,eAAO,MAAM,iBAAiB,6LAA8L,CAAC;AAC7N;;4GAE4G;AAC5G,eAAO,MAAM,oBAAoB,8DAA+D,CAAC;AAEjG,0FAA0F;AAC1F,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAItE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,OAAO,EAAE,MAAM,MAAM,GAAG,IAAI,EAC5B,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,UAAU,CAAA;CAAO,GAC/D,iBAAiB,CAuDnB;AA0FD,8FAA8F;AAC9F,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,IAAI,EAAE;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,cAAc,CAAA;CAAE,GACzF,OAAO,CAAC,qBAAqB,CAAC,CA2DhC"}
|
|
@@ -87,6 +87,56 @@ export class PackInstallError extends Error {
|
|
|
87
87
|
this.name = 'PackInstallError';
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
|
+
/** garden's bound on each load of the conformance host page (scripts/editor/conformance.py `--timeout`):
|
|
91
|
+
* this env var, read by garden's runner itself in the daemon's environment, else 120 s. */
|
|
92
|
+
export const CONFORMANCE_TIMEOUT_ENV = 'WG_EDITOR_CONFORMANCE_TIMEOUT';
|
|
93
|
+
export const DEFAULT_CONFORMANCE_LOAD_S = 120;
|
|
94
|
+
/**
|
|
95
|
+
* The per-load bound the runner will use, read the way garden's `load_timeout` reads it: Python's
|
|
96
|
+
* `float()` of the env value (surrounding spaces and digit-group underscores allowed, `1_000` = 1000),
|
|
97
|
+
* valid only within 5-1800 s. A value garden refuses fails its run at once, so the default stands.
|
|
98
|
+
*/
|
|
99
|
+
export function conformanceLoadSeconds(env = process.env) {
|
|
100
|
+
const raw = (env[CONFORMANCE_TIMEOUT_ENV] ?? '').trim();
|
|
101
|
+
if (raw === '' || !/^[+-]?(\d(_?\d)*(\.(\d(_?\d)*)?)?|\.\d(_?\d)*)([eE][+-]?\d(_?\d)*)?$/.test(raw))
|
|
102
|
+
return DEFAULT_CONFORMANCE_LOAD_S;
|
|
103
|
+
const v = Number(raw.replace(/_/g, ''));
|
|
104
|
+
return Number.isFinite(v) && v >= 5 && v <= 1800 ? v : DEFAULT_CONFORMANCE_LOAD_S;
|
|
105
|
+
}
|
|
106
|
+
/** One editor's manifest surfaces, as far as the run's length depends on them. */
|
|
107
|
+
function surfaceCounts(entry) {
|
|
108
|
+
const surfaces = entry['surfaces'];
|
|
109
|
+
const o = typeof surfaces === 'object' && surfaces !== null ? surfaces : {};
|
|
110
|
+
const card = typeof o['card'] === 'object' && o['card'] !== null ? o['card'] : {};
|
|
111
|
+
const options = typeof o['options'] === 'object' && o['options'] !== null ? o['options'] : {};
|
|
112
|
+
const actions = Array.isArray(card['actions']) ? card['actions'].length : 0;
|
|
113
|
+
const tabs = Array.isArray(options['tabs']) ? options['tabs'] : [];
|
|
114
|
+
const pluginTabs = tabs.filter((t) => typeof t === 'object' && t !== null && t['render'] === 'plugin').length;
|
|
115
|
+
return { actions, tabs: tabs.length, pluginTabs };
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* The overall cap on one conformance run, derived from garden's per-load bound so the two never
|
|
119
|
+
* disagree. Per editor (garden scripts/editor/conformance.py):
|
|
120
|
+
* - host-page loads, each allowed the whole bound: 2 (the cases, then the hash-pinned reload); for an
|
|
121
|
+
* editor that speaks protocol 2, 1 more for the card (full screen reuses it) and 1 per plugin-rendered
|
|
122
|
+
* options tab (at least 1 when it declares options);
|
|
123
|
+
* - the cases' fixed waits (~30 s) plus each sequential answer the host allows up to 2 s: every card
|
|
124
|
+
* action, every options tab, and the two full-screen mode changes;
|
|
125
|
+
* plus 60 s for the browser start. One protocol-2 editor with no surfaces, at the default 120 s:
|
|
126
|
+
* 60 + (30 + 2 x 2) + 3 x 120 = 454 s. A fixed 240 s cap killed a correct install at 249 s.
|
|
127
|
+
*/
|
|
128
|
+
export function conformanceCapMs(editors, loadS) {
|
|
129
|
+
const list = editors.length > 0 ? editors : [{}];
|
|
130
|
+
let seconds = 60;
|
|
131
|
+
for (const e of list) {
|
|
132
|
+
const speaks2 = requiredCases(e).length > CONFORMANCE_CASES.length;
|
|
133
|
+
const c = surfaceCounts(e);
|
|
134
|
+
const loads = 2 + (speaks2 ? 1 + (c.tabs > 0 ? Math.max(1, c.pluginTabs) : 0) : 0);
|
|
135
|
+
const answers = speaks2 ? c.actions + c.tabs + 2 : 0;
|
|
136
|
+
seconds += 30 + 2 * answers + loads * loadS;
|
|
137
|
+
}
|
|
138
|
+
return Math.round(seconds * 1000);
|
|
139
|
+
}
|
|
90
140
|
/** The cases a conformance run must report passing for every editor (garden's runner: 0-6 and 8-12). */
|
|
91
141
|
export const CONFORMANCE_CASES = ['0-manifest', '1-handshake', '2-sizes', '3-no-network', '4-permissions', '5-typing', '6-forwarding', '8-strict-input', '9-liveness', '10-keyboard', '11-theme', '12-hash-pinned'];
|
|
92
142
|
/** The protocol-2 cases an editor whose `protocol` lists 2 must also pass (DES-EDITOR-PLUGIN-CONTRACT-001 §8.3):
|
|
@@ -104,9 +154,10 @@ export function requiredCases(entry) {
|
|
|
104
154
|
* --host-url <this daemon> --json`. A missing garden or runner, no daemon URL, no browser, or an
|
|
105
155
|
* unreadable report is a FAILED run with the reason — never a pass.
|
|
106
156
|
*/
|
|
107
|
-
export function gardenConformance(gardenRoot, hostUrl) {
|
|
157
|
+
export function gardenConformance(gardenRoot, hostUrl, deps = {}) {
|
|
108
158
|
const failed = (error) => ({ ok: false, at: new Date().toISOString(), editors: [], error });
|
|
109
|
-
|
|
159
|
+
const exec = deps.exec ?? execCapped;
|
|
160
|
+
return async (packRoot, editors = []) => {
|
|
110
161
|
if (gardenRoot === null)
|
|
111
162
|
return failed('no wicked-garden plugin found to run the editor conformance cases');
|
|
112
163
|
const script = join(gardenRoot, 'scripts', 'editor', 'conformance.py');
|
|
@@ -116,10 +167,14 @@ export function gardenConformance(gardenRoot, hostUrl) {
|
|
|
116
167
|
if (host === null)
|
|
117
168
|
return failed('this daemon does not know its own URL to serve the conformance host page');
|
|
118
169
|
const args = [script, '--pack', packRoot, '--host-url', host, '--json'];
|
|
170
|
+
// garden's runner gets the very bound the cap was sized from (any spelling of the env var it would
|
|
171
|
+
// read differently, e.g. non-ASCII digits, cannot make the two disagree — codex r2).
|
|
172
|
+
const loadS = conformanceLoadSeconds(deps.env);
|
|
173
|
+
const childEnv = { ...(deps.env ?? process.env), [CONFORMANCE_TIMEOUT_ENV]: String(loadS) };
|
|
119
174
|
let stdout = '';
|
|
120
175
|
for (const bin of ['python3', 'python']) {
|
|
121
176
|
try {
|
|
122
|
-
stdout = (await
|
|
177
|
+
stdout = (await exec(bin, args, { timeout: conformanceCapMs(editors, loadS), windowsHide: true, env: childEnv })).stdout;
|
|
123
178
|
break;
|
|
124
179
|
}
|
|
125
180
|
catch (err) {
|
|
@@ -258,7 +313,7 @@ export async function installPack(packRootRaw, enabled, deps) {
|
|
|
258
313
|
if (deps.registry.get(id)?.firstParty === true)
|
|
259
314
|
throw new PackInstallError(409, `${id} is a first-party editor's id`, verdict);
|
|
260
315
|
}
|
|
261
|
-
const conformance = await deps.conformance(pack.root);
|
|
316
|
+
const conformance = await deps.conformance(pack.root, pack.editors);
|
|
262
317
|
// The report counts only for the bytes being installed (codex r1): the run's own version and entry
|
|
263
318
|
// hash must be the manifest's, which the registry then re-reads at that same hash.
|
|
264
319
|
const missing = (e) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack-install.js","sourceRoot":"","sources":["../../src/editors/pack-install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAsB,MAAM,eAAe,CAAC;AAI/H,wEAAwE;AACxE,SAAS,gBAAgB,CAAC,MAAc;IACtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA6B,CAAC;QAC3D,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACxF,MAAM,QAAQ,GAAG,CAAC,IAAa,EAA6B,EAAE,CAC5D,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACjB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAsC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5G,CAAC,CAAC,EAAE,CAAC;QACT,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IACxF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,UAAyB;IACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,EAAE;QACxB,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,mDAAmD,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACzJ,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAC/D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,oEAAoE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC1K,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;QACvE,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChF,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;gBACpB,MAAM;YACR,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,GAA0E,CAAC;gBACrF,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;oBAAE,SAAS,CAAC,6CAA6C;gBAChF,2DAA2D;gBAC3D,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBAC3D,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;oBAClB,MAAM;gBACR,CAAC;gBACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,2BAA2B,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;YAC1I,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,wCAAwC,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACnN,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAE9B;IAEA;IACA;IAJX,YACW,MAAmC,EAC5C,OAAe,EACN,KAAuB,EACvB,IAA8B;QAEvC,KAAK,CAAC,OAAO,CAAC,CAAC;QALN,WAAM,GAAN,MAAM,CAA6B;QAEnC,UAAK,GAAL,KAAK,CAAkB;QACvB,SAAI,GAAJ,IAAI,CAA0B;QAGvC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAKD,wGAAwG;AACxG,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,CAAU,CAAC;AAC7N;;4GAE4G;AAC5G,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,CAAU,CAAC;AAEjG,0FAA0F;AAC1F,MAAM,UAAU,aAAa,CAAC,KAA8B;IAC1D,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,iBAAiB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAyB,EAAE,OAA4B;IACvF,MAAM,MAAM,GAAG,CAAC,KAAa,EAA4B,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9H,OAAO,KAAK,EAAE,QAAQ,EAAE,EAAE;QACxB,IAAI,UAAU,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC,mEAAmE,CAAC,CAAC;QAC5G,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACvE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC,4GAA4G,CAAC,CAAC;QACrJ,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC,0EAA0E,CAAC,CAAC;QAC7G,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxE,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,MAAM,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;gBACvF,MAAM;YACR,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,GAAkD,CAAC;gBAC7D,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;oBAAE,SAAS;gBAClC,0FAA0F;gBAC1F,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBAC3D,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;oBAClB,MAAM;gBACR,CAAC;gBACD,OAAO,MAAM,CAAC,uCAAuC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QACD,IAAI,MAAM,KAAK,EAAE;YAAE,OAAO,MAAM,CAAC,gDAAgD,CAAC,CAAC;QACnF,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAyD,CAAC;YACvF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;gBACxC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBACxB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI;wBAAE,OAAO,EAAE,CAAC;oBACnD,MAAM,CAAC,GAAG,CAAyG,CAAC;oBACpH,MAAM,KAAK,GAAoC,EAAE,CAAC;oBAClD,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;wBACpD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;4BAAE,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAK,CAAsB,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;oBAC9I,CAAC;oBACD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnG,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/K,CAAC,CAAC;gBACJ,CAAC,CAAC,EAAE,CAAC;YACP,OAAO;gBACL,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,IAAI;gBACnB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAC5B,OAAO;gBACP,GAAG,CAAC,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/D,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,MAAM,CAAC,gDAAgD,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAUD,KAAK,UAAU,eAAe,CAAC,WAAmB,EAAE,KAAsB;IACxE,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7F,MAAM,IAAI,gBAAgB,CAAC,GAAG,EAAE,6EAA6E,CAAC,CAAC;IACjH,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,CAAC;QACH,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC;IACD,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,gBAAgB,CAAC,GAAG,EAAE,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IAC3E,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,MAAM,IAAI,gBAAgB,CAAC,GAAG,EAAE,GAAG,QAAQ,4BAA4B,CAAC,CAAC;IACxG,wFAAwF;IACxF,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,MAAM,IAAI,gBAAgB,CAAC,GAAG,EAAE,8CAA8C,OAAO,CAAC,MAAM,CAAC,MAAM,SAAS,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC;IAClK,CAAC;IACD,IAAI,QAAiC,CAAC;IACtC,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAA4B,CAAC;IACvF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,gBAAgB,CAAC,GAAG,EAAE,iCAAiC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACvH,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAE,QAAQ,CAAC,SAAS,CAAoC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClH,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,gBAAgB,CAAC,GAAG,EAAE,qFAAqF,CAAC,CAAC;IACzH,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAE,QAAQ,CAAC,QAAQ,CAAoC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/G,MAAM,SAAS,GAAG,OAAO,QAAQ,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACjG,IAAI,MAAM,GAAa,EAAE,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACtC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;YAAE,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtG,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,EAAE,CAAC;IACd,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC;AAClF,CAAC;AAED,MAAM,GAAG,GAAG,CAAC,CAAU,EAAU,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACrE,MAAM,IAAI,GAAG,CAAC,CAAU,EAAY,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAErH,sFAAsF;AACtF,SAAS,YAAY,CAAC,IAAgB,EAAE,OAAwB;IAC9D,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;IACxB,OAAO;QACL,IAAI,EAAE,6BAA6B;QACnC,KAAK,EACH,uGAAuG;YACvG,wFAAwF;YACxF,oDAAoD;QACtD,KAAK,EAAE,OAAO;QACd,IAAI,EAAE;YACJ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACpB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAChC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAChB,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC1B,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACvB,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;oBAC1C,CAAC,CAAE,CAAC,CAAC,aAAa,CAAoC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC7G,CAAC,CAAC,EAAE;aACP,CAAC,CAAC;YACH,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;YACjJ,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB;KACF,CAAC;AACJ,CAAC;AAED,iGAAiG;AACjG,SAAS,QAAQ,CAAC,KAA8B;IAC9C,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,MAAM,IAAI,gBAAgB,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,6BAA6B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/L,OAAO,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,8FAA8F;AAC9F,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,WAAmB,EACnB,OAA4B,EAC5B,IAA0F;IAE1F,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACzE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,gBAAgB,CAAC,GAAG,EAAE,iCAAiC,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,OAAO,CAAuC,CAAC,CAAC;IACjJ,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,UAAU,KAAK,IAAI;YAAE,MAAM,IAAI,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,+BAA+B,EAAE,OAAO,CAAC,CAAC;IACjI,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,mGAAmG;IACnG,mFAAmF;IACnF,MAAM,OAAO,GAAG,CAAC,CAA0B,EAAY,EAAE;QACvD,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAClD,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAAE,OAAO,CAAC,eAAe,CAAC,CAAC,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC;QACnK,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,CAAC;IACjE,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1H,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;QACrD,MAAM,IAAI,gBAAgB,CACxB,GAAG,EACH,WAAW;YACT,CAAC,CAAC,gEAAgE,WAAW,CAAC,KAAK,IAAI,WAAW,EAAE;YACpG,CAAC,CAAC,0CAA0C,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAC1I,OAAO,EACP,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,uBAAuB,EAAE,WAAW,EAAE,CACzF,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACnC,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAkB;YAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI;YACJ,KAAK;YACL,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACxB,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC3B,WAAW,EAAE,GAAG;YAChB,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE;SACvE,CAAC;QACF,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,IAAI,SAAoD,CAAC;IACzD,IAAI,CAAC;QACH,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,qBAAqB;YAAE,MAAM,IAAI,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAChG,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,OAAO;QACL,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7D,KAAK,EAAE,OAAO;QACd,WAAW;KACZ,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"pack-install.js","sourceRoot":"","sources":["../../src/editors/pack-install.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,27 +10,67 @@ import type { CoreEvent } from '../core/types.js';
|
|
|
10
10
|
* base64-encoded (`bytesB64`); we decode and send it as a BINARY frame so
|
|
11
11
|
* xterm.js writes the exact bytes — control sequences and multi-byte UTF-8
|
|
12
12
|
* survive a text-frame round-trip.
|
|
13
|
+
*
|
|
14
|
+
* Output a terminal writes BEFORE its browser socket attaches is held (bounded) and flushed on
|
|
15
|
+
* attach: a login container prints its sign-in link and code the moment it starts, while the
|
|
16
|
+
* browser opens `/ws/terminals/:id` only after the POST that created it returns — seconds later on
|
|
17
|
+
* a loaded host — so without the hold the user would never see the link (wicked-core C6). A
|
|
18
|
+
* terminal that exited (before or after a socket attached) closes any socket that attaches to it.
|
|
13
19
|
*/
|
|
20
|
+
/** Per-terminal bytes held for a socket that has not attached yet (the oldest are dropped). */
|
|
21
|
+
export declare const EARLY_OUTPUT_MAX_BYTES: number;
|
|
22
|
+
/** Terminals whose early output is held at once (an exited one's hold is dropped first). */
|
|
23
|
+
export declare const EARLY_OUTPUT_MAX_TERMINALS = 64;
|
|
24
|
+
/** Exited terminal ids remembered (insertion order, bounded; ids are never reused). */
|
|
25
|
+
export declare const REAPED_MEMORY = 8192;
|
|
26
|
+
/** How long a socket the engine has no terminal for stays open before it is closed: frames the
|
|
27
|
+
* engine emitted before the refusal may still be on their way through the event stream, and the
|
|
28
|
+
* terminal's own exit frame (delivered in order after its output) closes it sooner. */
|
|
29
|
+
export declare const GONE_GRACE_MS = 10000;
|
|
14
30
|
export declare class TerminalHub {
|
|
15
31
|
private readonly sockets;
|
|
32
|
+
/** Output for ids no socket has attached to yet. */
|
|
33
|
+
private readonly early;
|
|
34
|
+
/** Ids whose `terminalExited` was seen (kept past their sockets: a later attach closes at once). */
|
|
35
|
+
private readonly reaped;
|
|
36
|
+
/** Ids whose socket detached: nothing is held for them again. */
|
|
37
|
+
private readonly retired;
|
|
16
38
|
/**
|
|
17
39
|
* ids whose `terminalExited` we've already routed — so the WS close handler
|
|
18
40
|
* skips a redundant `closeTerminal` (the engine already reaped that child).
|
|
19
41
|
*/
|
|
20
42
|
private readonly exited;
|
|
21
|
-
/** Bind a browser socket to a terminal id (later `terminalOutput` fans out to it)
|
|
43
|
+
/** Bind a browser socket to a terminal id (later `terminalOutput` fans out to it), first
|
|
44
|
+
* replaying what the terminal wrote before the socket attached; an exited terminal's socket
|
|
45
|
+
* is closed after the replay. */
|
|
22
46
|
register(id: string, socket: WebSocket): void;
|
|
47
|
+
/** Whether the hub remembers that terminal `id` exited. */
|
|
48
|
+
knowsExited(id: string): boolean;
|
|
49
|
+
/** Whether `socket` is the one bound to `id` now (a newer attach replaces an older one). */
|
|
50
|
+
isCurrent(id: string, socket: WebSocket): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* The engine holds no terminal `id` for `socket` (never opened, or reaped with its exit no
|
|
53
|
+
* longer remembered). After [`GONE_GRACE_MS`] — time for frames already emitted to arrive and
|
|
54
|
+
* be routed in order — the socket is closed if it is still open; the id's bookkeeping is
|
|
55
|
+
* marked exited only if `socket` is still the bound one (a replaced socket owns nothing).
|
|
56
|
+
*/
|
|
57
|
+
gone(id: string, socket: WebSocket, graceMs?: number): void;
|
|
23
58
|
/** True once a `terminalExited` frame has been routed for this id. */
|
|
24
59
|
hasExited(id: string): boolean;
|
|
25
60
|
/** Drop the socket + exit bookkeeping for a terminal id. */
|
|
26
61
|
unregister(id: string): void;
|
|
27
62
|
/** Live terminal-socket count (diagnostics / tests). */
|
|
28
63
|
size(): number;
|
|
64
|
+
/** Terminals with output held for a socket that has not attached yet (diagnostics / tests). */
|
|
65
|
+
heldCount(): number;
|
|
29
66
|
/**
|
|
30
67
|
* Route one CoreEvent frame to the terminal socket it belongs to. Called for
|
|
31
|
-
* EVERY core event; non-terminal frames and
|
|
68
|
+
* EVERY core event; non-terminal frames are no-ops, and a terminal frame for an id no socket
|
|
69
|
+
* has attached to yet is held for it.
|
|
32
70
|
*/
|
|
33
71
|
route(event: CoreEvent): void;
|
|
72
|
+
/** Hold a terminal's output for a socket that has not attached yet (bounded both ways). */
|
|
73
|
+
private hold;
|
|
34
74
|
}
|
|
35
75
|
/**
|
|
36
76
|
* The per-terminal WS channel: `GET /ws/terminals/:id`. Binds the browser socket
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminals.d.ts","sourceRoot":"","sources":["../../src/events/terminals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAgB,MAAM,IAAI,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD
|
|
1
|
+
{"version":3,"file":"terminals.d.ts","sourceRoot":"","sources":["../../src/events/terminals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAgB,MAAM,IAAI,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;;;;;;;;;;;GAcG;AACH,+FAA+F;AAC/F,eAAO,MAAM,sBAAsB,QAAY,CAAC;AAChD,4FAA4F;AAC5F,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,uFAAuF;AACvF,eAAO,MAAM,aAAa,OAAO,CAAC;AAClC;;wFAEwF;AACxF,eAAO,MAAM,aAAa,QAAS,CAAC;AAepC,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgC;IACxD,oDAAoD;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0D;IAChF,oGAAoG;IACpG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,iEAAiE;IACjE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAE5C;;sCAEkC;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI;IAc7C,2DAA2D;IAC3D,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIhC,4FAA4F;IAC5F,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO;IAIjD;;;;;OAKG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAE,MAAsB,GAAG,IAAI;IAU1E,sEAAsE;IACtE,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI9B,4DAA4D;IAC5D,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAO5B,wDAAwD;IACxD,IAAI,IAAI,MAAM;IAId,+FAA+F;IAC/F,SAAS,IAAI,MAAM;IAInB;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAsB7B,2FAA2F;IAC3F,OAAO,CAAC,IAAI;CAkCb;AASD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,WAAW,GACf,IAAI,CAwCN"}
|
package/dist/events/terminals.js
CHANGED
|
@@ -7,17 +7,92 @@ import { WebSocket } from 'ws';
|
|
|
7
7
|
* base64-encoded (`bytesB64`); we decode and send it as a BINARY frame so
|
|
8
8
|
* xterm.js writes the exact bytes — control sequences and multi-byte UTF-8
|
|
9
9
|
* survive a text-frame round-trip.
|
|
10
|
+
*
|
|
11
|
+
* Output a terminal writes BEFORE its browser socket attaches is held (bounded) and flushed on
|
|
12
|
+
* attach: a login container prints its sign-in link and code the moment it starts, while the
|
|
13
|
+
* browser opens `/ws/terminals/:id` only after the POST that created it returns — seconds later on
|
|
14
|
+
* a loaded host — so without the hold the user would never see the link (wicked-core C6). A
|
|
15
|
+
* terminal that exited (before or after a socket attached) closes any socket that attaches to it.
|
|
10
16
|
*/
|
|
17
|
+
/** Per-terminal bytes held for a socket that has not attached yet (the oldest are dropped). */
|
|
18
|
+
export const EARLY_OUTPUT_MAX_BYTES = 64 * 1024;
|
|
19
|
+
/** Terminals whose early output is held at once (an exited one's hold is dropped first). */
|
|
20
|
+
export const EARLY_OUTPUT_MAX_TERMINALS = 64;
|
|
21
|
+
/** Exited terminal ids remembered (insertion order, bounded; ids are never reused). */
|
|
22
|
+
export const REAPED_MEMORY = 8192;
|
|
23
|
+
/** How long a socket the engine has no terminal for stays open before it is closed: frames the
|
|
24
|
+
* engine emitted before the refusal may still be on their way through the event stream, and the
|
|
25
|
+
* terminal's own exit frame (delivered in order after its output) closes it sooner. */
|
|
26
|
+
export const GONE_GRACE_MS = 10_000;
|
|
27
|
+
/** Ids whose socket came and went, remembered (bounded) so their last frames are never held. */
|
|
28
|
+
const RETIRED_MEMORY = 1024;
|
|
29
|
+
/** Insert into a bounded insertion-ordered set, dropping the oldest entry past `cap`. */
|
|
30
|
+
function remember(set, id, cap) {
|
|
31
|
+
set.delete(id);
|
|
32
|
+
set.add(id);
|
|
33
|
+
if (set.size > cap) {
|
|
34
|
+
const oldest = set.values().next().value;
|
|
35
|
+
if (oldest !== undefined)
|
|
36
|
+
set.delete(oldest);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
11
39
|
export class TerminalHub {
|
|
12
40
|
sockets = new Map();
|
|
41
|
+
/** Output for ids no socket has attached to yet. */
|
|
42
|
+
early = new Map();
|
|
43
|
+
/** Ids whose `terminalExited` was seen (kept past their sockets: a later attach closes at once). */
|
|
44
|
+
reaped = new Set();
|
|
45
|
+
/** Ids whose socket detached: nothing is held for them again. */
|
|
46
|
+
retired = new Set();
|
|
13
47
|
/**
|
|
14
48
|
* ids whose `terminalExited` we've already routed — so the WS close handler
|
|
15
49
|
* skips a redundant `closeTerminal` (the engine already reaped that child).
|
|
16
50
|
*/
|
|
17
51
|
exited = new Set();
|
|
18
|
-
/** Bind a browser socket to a terminal id (later `terminalOutput` fans out to it)
|
|
52
|
+
/** Bind a browser socket to a terminal id (later `terminalOutput` fans out to it), first
|
|
53
|
+
* replaying what the terminal wrote before the socket attached; an exited terminal's socket
|
|
54
|
+
* is closed after the replay. */
|
|
19
55
|
register(id, socket) {
|
|
20
56
|
this.sockets.set(id, socket);
|
|
57
|
+
this.retired.delete(id);
|
|
58
|
+
const held = this.early.get(id);
|
|
59
|
+
this.early.delete(id);
|
|
60
|
+
if (held !== undefined && socket.readyState === WebSocket.OPEN) {
|
|
61
|
+
for (const chunk of held.chunks)
|
|
62
|
+
socket.send(chunk);
|
|
63
|
+
}
|
|
64
|
+
if (this.reaped.has(id)) {
|
|
65
|
+
this.exited.add(id);
|
|
66
|
+
if (socket.readyState === WebSocket.OPEN)
|
|
67
|
+
socket.close();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/** Whether the hub remembers that terminal `id` exited. */
|
|
71
|
+
knowsExited(id) {
|
|
72
|
+
return this.reaped.has(id);
|
|
73
|
+
}
|
|
74
|
+
/** Whether `socket` is the one bound to `id` now (a newer attach replaces an older one). */
|
|
75
|
+
isCurrent(id, socket) {
|
|
76
|
+
return this.sockets.get(id) === socket;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* The engine holds no terminal `id` for `socket` (never opened, or reaped with its exit no
|
|
80
|
+
* longer remembered). After [`GONE_GRACE_MS`] — time for frames already emitted to arrive and
|
|
81
|
+
* be routed in order — the socket is closed if it is still open; the id's bookkeeping is
|
|
82
|
+
* marked exited only if `socket` is still the bound one (a replaced socket owns nothing).
|
|
83
|
+
*/
|
|
84
|
+
gone(id, socket, graceMs = GONE_GRACE_MS) {
|
|
85
|
+
const close = () => {
|
|
86
|
+
if (socket.readyState !== WebSocket.OPEN)
|
|
87
|
+
return;
|
|
88
|
+
if (this.isCurrent(id, socket))
|
|
89
|
+
this.exited.add(id);
|
|
90
|
+
socket.close();
|
|
91
|
+
};
|
|
92
|
+
if (graceMs <= 0)
|
|
93
|
+
close();
|
|
94
|
+
else
|
|
95
|
+
setTimeout(close, graceMs).unref?.();
|
|
21
96
|
}
|
|
22
97
|
/** True once a `terminalExited` frame has been routed for this id. */
|
|
23
98
|
hasExited(id) {
|
|
@@ -27,22 +102,33 @@ export class TerminalHub {
|
|
|
27
102
|
unregister(id) {
|
|
28
103
|
this.sockets.delete(id);
|
|
29
104
|
this.exited.delete(id);
|
|
105
|
+
this.early.delete(id);
|
|
106
|
+
remember(this.retired, id, RETIRED_MEMORY);
|
|
30
107
|
}
|
|
31
108
|
/** Live terminal-socket count (diagnostics / tests). */
|
|
32
109
|
size() {
|
|
33
110
|
return this.sockets.size;
|
|
34
111
|
}
|
|
112
|
+
/** Terminals with output held for a socket that has not attached yet (diagnostics / tests). */
|
|
113
|
+
heldCount() {
|
|
114
|
+
return this.early.size;
|
|
115
|
+
}
|
|
35
116
|
/**
|
|
36
117
|
* Route one CoreEvent frame to the terminal socket it belongs to. Called for
|
|
37
|
-
* EVERY core event; non-terminal frames and
|
|
118
|
+
* EVERY core event; non-terminal frames are no-ops, and a terminal frame for an id no socket
|
|
119
|
+
* has attached to yet is held for it.
|
|
38
120
|
*/
|
|
39
121
|
route(event) {
|
|
40
122
|
const id = typeof event.id === 'string' ? event.id : undefined;
|
|
41
123
|
if (id === undefined)
|
|
42
124
|
return;
|
|
125
|
+
if (event.type === 'terminalExited')
|
|
126
|
+
remember(this.reaped, id, REAPED_MEMORY);
|
|
43
127
|
const socket = this.sockets.get(id);
|
|
44
|
-
if (!socket)
|
|
128
|
+
if (!socket) {
|
|
129
|
+
this.hold(id, event);
|
|
45
130
|
return;
|
|
131
|
+
}
|
|
46
132
|
if (event.type === 'terminalOutput') {
|
|
47
133
|
if (typeof event.bytesB64 === 'string' && socket.readyState === WebSocket.OPEN) {
|
|
48
134
|
socket.send(Buffer.from(event.bytesB64, 'base64'));
|
|
@@ -56,6 +142,43 @@ export class TerminalHub {
|
|
|
56
142
|
socket.close();
|
|
57
143
|
}
|
|
58
144
|
}
|
|
145
|
+
/** Hold a terminal's output for a socket that has not attached yet (bounded both ways). */
|
|
146
|
+
hold(id, event) {
|
|
147
|
+
if (event.type !== 'terminalOutput' || typeof event.bytesB64 !== 'string')
|
|
148
|
+
return;
|
|
149
|
+
if (this.retired.has(id))
|
|
150
|
+
return;
|
|
151
|
+
let held = this.early.get(id);
|
|
152
|
+
if (held === undefined) {
|
|
153
|
+
if (this.early.size >= EARLY_OUTPUT_MAX_TERMINALS) {
|
|
154
|
+
// An exited terminal's hold goes first: a live one (a login printing its link) is the one
|
|
155
|
+
// a browser is about to attach to.
|
|
156
|
+
let victim;
|
|
157
|
+
for (const key of this.early.keys()) {
|
|
158
|
+
if (this.reaped.has(key)) {
|
|
159
|
+
victim = key;
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
victim ??= this.early.keys().next().value;
|
|
164
|
+
if (victim !== undefined)
|
|
165
|
+
this.early.delete(victim);
|
|
166
|
+
}
|
|
167
|
+
held = { chunks: [], bytes: 0 };
|
|
168
|
+
this.early.set(id, held);
|
|
169
|
+
}
|
|
170
|
+
const whole = Buffer.from(event.bytesB64, 'base64');
|
|
171
|
+
// One frame past the bound keeps only a COPY of its tail (agy c6-r1, codex c6-r6): a subarray
|
|
172
|
+
// would keep the whole decoded frame alive behind 64 KiB of accounting.
|
|
173
|
+
const chunk = whole.length > EARLY_OUTPUT_MAX_BYTES
|
|
174
|
+
? Buffer.from(whole.subarray(whole.length - EARLY_OUTPUT_MAX_BYTES))
|
|
175
|
+
: whole;
|
|
176
|
+
held.chunks.push(chunk);
|
|
177
|
+
held.bytes += chunk.length;
|
|
178
|
+
while (held.bytes > EARLY_OUTPUT_MAX_BYTES && held.chunks.length > 1) {
|
|
179
|
+
held.bytes -= held.chunks.shift()?.length ?? 0;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
59
182
|
}
|
|
60
183
|
/** Normalise a ws frame (Buffer | ArrayBuffer | Buffer[]) to a single Buffer. */
|
|
61
184
|
function toBuffer(data) {
|
|
@@ -75,7 +198,13 @@ export function registerTerminalWs(app, adapter, hub) {
|
|
|
75
198
|
app.get('/ws/terminals/:id', { websocket: true }, (socket, req) => {
|
|
76
199
|
const { id } = req.params;
|
|
77
200
|
const ws = socket;
|
|
201
|
+
// Liveness, unless the hub remembers the exit (register then closes at once; codex c6-r1/r3/r4):
|
|
202
|
+
// an empty write is a no-op on a live terminal and refused for one the engine does not hold. A
|
|
203
|
+
// refused socket is closed after a grace in which frames already emitted still arrive.
|
|
204
|
+
const exitKnown = hub.knowsExited(id);
|
|
78
205
|
hub.register(id, ws);
|
|
206
|
+
if (!exitKnown)
|
|
207
|
+
void adapter.writeTerminal(id, Buffer.alloc(0)).catch(() => hub.gone(id, ws));
|
|
79
208
|
// Browser keystrokes (xterm.onData → ws.send): text or binary, both are raw
|
|
80
209
|
// input bytes for the PTY. Failures (unknown/closed id) are swallowed — the
|
|
81
210
|
// exit/close path tears the socket down.
|
|
@@ -89,6 +218,10 @@ export function registerTerminalWs(app, adapter, hub) {
|
|
|
89
218
|
if (torn)
|
|
90
219
|
return;
|
|
91
220
|
torn = true;
|
|
221
|
+
// A socket a newer attach replaced owns nothing any more (codex c6-r2): unbinding or closing
|
|
222
|
+
// here would strand the newer socket (its sign-in dialog open forever) or kill its terminal.
|
|
223
|
+
if (!hub.isCurrent(id, ws))
|
|
224
|
+
return;
|
|
92
225
|
const alreadyExited = hub.hasExited(id);
|
|
93
226
|
hub.unregister(id);
|
|
94
227
|
// Socket dropped by the browser (unmount) → close the PTY. Skip when the PTY
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminals.js","sourceRoot":"","sources":["../../src/events/terminals.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAgB,MAAM,IAAI,CAAC;AAI7C
|
|
1
|
+
{"version":3,"file":"terminals.js","sourceRoot":"","sources":["../../src/events/terminals.ts"],"names":[],"mappings":"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"}
|