@cluesmith/codev 3.3.5 → 3.3.7
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/dashboard-dist/assets/{index-r3bZzLmX.css → index-BjcqV9Vv.css} +1 -1
- package/dashboard-dist/assets/{index-BuflRUi6.js → index-b7GnZV2i.js} +55 -55
- package/dashboard-dist/assets/index-b7GnZV2i.js.map +1 -0
- package/dashboard-dist/index.html +2 -2
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +50 -17
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/architect.d.ts.map +1 -1
- package/dist/agent-farm/commands/architect.js +5 -1
- package/dist/agent-farm/commands/architect.js.map +1 -1
- package/dist/agent-farm/commands/attach.d.ts +1 -1
- package/dist/agent-farm/commands/attach.d.ts.map +1 -1
- package/dist/agent-farm/commands/cleanup.d.ts +1 -1
- package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
- package/dist/agent-farm/commands/cleanup.js +2 -1
- package/dist/agent-farm/commands/cleanup.js.map +1 -1
- package/dist/agent-farm/commands/decisions.d.ts +25 -0
- package/dist/agent-farm/commands/decisions.d.ts.map +1 -0
- package/dist/agent-farm/commands/decisions.js +54 -0
- package/dist/agent-farm/commands/decisions.js.map +1 -0
- package/dist/agent-farm/commands/ide.d.ts +32 -3
- package/dist/agent-farm/commands/ide.d.ts.map +1 -1
- package/dist/agent-farm/commands/ide.js +180 -19
- package/dist/agent-farm/commands/ide.js.map +1 -1
- package/dist/agent-farm/commands/reset/context.d.ts +4 -2
- package/dist/agent-farm/commands/reset/context.d.ts.map +1 -1
- package/dist/agent-farm/commands/reset/context.js +12 -4
- package/dist/agent-farm/commands/reset/context.js.map +1 -1
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +13 -18
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.d.ts +7 -0
- package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.js +51 -18
- package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
- package/dist/agent-farm/commands/spawn.d.ts +17 -0
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +41 -19
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/lib/builder-lookup.d.ts +3 -2
- package/dist/agent-farm/lib/builder-lookup.d.ts.map +1 -1
- package/dist/agent-farm/lib/builder-lookup.js +24 -9
- package/dist/agent-farm/lib/builder-lookup.js.map +1 -1
- package/dist/agent-farm/lib/ide-extensions.d.ts +82 -0
- package/dist/agent-farm/lib/ide-extensions.d.ts.map +1 -0
- package/dist/agent-farm/lib/ide-extensions.js +179 -0
- package/dist/agent-farm/lib/ide-extensions.js.map +1 -0
- package/dist/agent-farm/lib/ide-prefix.d.ts +10 -0
- package/dist/agent-farm/lib/ide-prefix.d.ts.map +1 -0
- package/dist/agent-farm/lib/ide-prefix.js +13 -0
- package/dist/agent-farm/lib/ide-prefix.js.map +1 -0
- package/dist/agent-farm/lib/ide-record.d.ts +20 -3
- package/dist/agent-farm/lib/ide-record.d.ts.map +1 -1
- package/dist/agent-farm/lib/ide-record.js +34 -3
- package/dist/agent-farm/lib/ide-record.js.map +1 -1
- package/dist/agent-farm/lib/ide-version.d.ts +97 -0
- package/dist/agent-farm/lib/ide-version.d.ts.map +1 -0
- package/dist/agent-farm/lib/ide-version.js +224 -0
- package/dist/agent-farm/lib/ide-version.js.map +1 -0
- package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -1
- package/dist/agent-farm/lib/tunnel-client.js +7 -3
- package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
- package/dist/agent-farm/servers/agent-state/broadcast.d.ts +19 -0
- package/dist/agent-farm/servers/agent-state/broadcast.d.ts.map +1 -0
- package/dist/agent-farm/servers/agent-state/broadcast.js +30 -0
- package/dist/agent-farm/servers/agent-state/broadcast.js.map +1 -0
- package/dist/agent-farm/servers/agent-state/identity.d.ts +50 -0
- package/dist/agent-farm/servers/agent-state/identity.d.ts.map +1 -0
- package/dist/agent-farm/servers/agent-state/identity.js +120 -0
- package/dist/agent-farm/servers/agent-state/identity.js.map +1 -0
- package/dist/agent-farm/servers/agent-state/liveness.d.ts +107 -0
- package/dist/agent-farm/servers/agent-state/liveness.d.ts.map +1 -0
- package/dist/agent-farm/servers/agent-state/liveness.js +224 -0
- package/dist/agent-farm/servers/agent-state/liveness.js.map +1 -0
- package/dist/agent-farm/servers/agent-state/route.d.ts +38 -0
- package/dist/agent-farm/servers/agent-state/route.d.ts.map +1 -0
- package/dist/agent-farm/servers/agent-state/route.js +170 -0
- package/dist/agent-farm/servers/agent-state/route.js.map +1 -0
- package/dist/agent-farm/servers/agent-state/serve.d.ts +31 -0
- package/dist/agent-farm/servers/agent-state/serve.d.ts.map +1 -0
- package/dist/agent-farm/servers/agent-state/serve.js +49 -0
- package/dist/agent-farm/servers/agent-state/serve.js.map +1 -0
- package/dist/agent-farm/servers/agent-state/store.d.ts +76 -0
- package/dist/agent-farm/servers/agent-state/store.d.ts.map +1 -0
- package/dist/agent-farm/servers/agent-state/store.js +157 -0
- package/dist/agent-farm/servers/agent-state/store.js.map +1 -0
- package/dist/agent-farm/servers/decisions/parse.d.ts.map +1 -1
- package/dist/agent-farm/servers/decisions/parse.js +45 -15
- package/dist/agent-farm/servers/decisions/parse.js.map +1 -1
- package/dist/agent-farm/servers/decisions/stamp.d.ts +6 -2
- package/dist/agent-farm/servers/decisions/stamp.d.ts.map +1 -1
- package/dist/agent-farm/servers/decisions/stamp.js +53 -29
- package/dist/agent-farm/servers/decisions/stamp.js.map +1 -1
- package/dist/agent-farm/servers/decisions/template.d.ts +2 -0
- package/dist/agent-farm/servers/decisions/template.d.ts.map +1 -0
- package/dist/agent-farm/servers/decisions/template.js +15 -0
- package/dist/agent-farm/servers/decisions/template.js.map +1 -0
- package/dist/agent-farm/servers/ide-forward.d.ts +57 -5
- package/dist/agent-farm/servers/ide-forward.d.ts.map +1 -1
- package/dist/agent-farm/servers/ide-forward.js +263 -31
- package/dist/agent-farm/servers/ide-forward.js.map +1 -1
- package/dist/agent-farm/servers/ide-server.d.ts +28 -8
- package/dist/agent-farm/servers/ide-server.d.ts.map +1 -1
- package/dist/agent-farm/servers/ide-server.js +151 -52
- package/dist/agent-farm/servers/ide-server.js.map +1 -1
- package/dist/agent-farm/servers/overview.d.ts +27 -1
- package/dist/agent-farm/servers/overview.d.ts.map +1 -1
- package/dist/agent-farm/servers/overview.js +184 -31
- package/dist/agent-farm/servers/overview.js.map +1 -1
- package/dist/agent-farm/servers/tower-instances.d.ts +14 -1
- package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-instances.js +51 -9
- package/dist/agent-farm/servers/tower-instances.js.map +1 -1
- package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-routes.js +149 -15
- package/dist/agent-farm/servers/tower-routes.js.map +1 -1
- package/dist/agent-farm/servers/tower-server.js +35 -1
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.d.ts +25 -0
- package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.js +128 -4
- package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
- package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-utils.js +18 -5
- package/dist/agent-farm/servers/tower-utils.js.map +1 -1
- package/dist/agent-farm/servers/tower-websocket.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-websocket.js +11 -7
- package/dist/agent-farm/servers/tower-websocket.js.map +1 -1
- package/dist/agent-farm/utils/builder-worktree-identity.d.ts +39 -0
- package/dist/agent-farm/utils/builder-worktree-identity.d.ts.map +1 -0
- package/dist/agent-farm/utils/builder-worktree-identity.js +42 -0
- package/dist/agent-farm/utils/builder-worktree-identity.js.map +1 -0
- package/dist/agent-farm/utils/harness.d.ts +71 -0
- package/dist/agent-farm/utils/harness.d.ts.map +1 -1
- package/dist/agent-farm/utils/harness.js +153 -0
- package/dist/agent-farm/utils/harness.js.map +1 -1
- package/dist/agent-farm/utils/lifecycle-reporter.d.ts +79 -0
- package/dist/agent-farm/utils/lifecycle-reporter.d.ts.map +1 -0
- package/dist/agent-farm/utils/lifecycle-reporter.js +347 -0
- package/dist/agent-farm/utils/lifecycle-reporter.js.map +1 -0
- package/dist/agent-farm/utils/server-utils.d.ts +54 -19
- package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
- package/dist/agent-farm/utils/server-utils.js +144 -27
- package/dist/agent-farm/utils/server-utils.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +17 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts +16 -2
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +67 -23
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/bootstrap-docs.d.ts +132 -0
- package/dist/commands/bootstrap-docs.d.ts.map +1 -0
- package/dist/commands/bootstrap-docs.js +725 -0
- package/dist/commands/bootstrap-docs.js.map +1 -0
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +14 -1
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/consult/tree-tripwire.d.ts +2 -75
- package/dist/commands/consult/tree-tripwire.d.ts.map +1 -1
- package/dist/commands/consult/tree-tripwire.js +7 -184
- package/dist/commands/consult/tree-tripwire.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +36 -4
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/porch/state.d.ts +0 -4
- package/dist/commands/porch/state.d.ts.map +1 -1
- package/dist/commands/porch/state.js +23 -10
- package/dist/commands/porch/state.js.map +1 -1
- package/dist/commands/update.d.ts +5 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +73 -18
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/agent-env.d.ts +22 -1
- package/dist/lib/agent-env.d.ts.map +1 -1
- package/dist/lib/agent-env.js +27 -1
- package/dist/lib/agent-env.js.map +1 -1
- package/dist/lib/agent-process.d.ts +23 -0
- package/dist/lib/agent-process.d.ts.map +1 -0
- package/dist/lib/agent-process.js +24 -0
- package/dist/lib/agent-process.js.map +1 -0
- package/dist/lib/forge-contracts.d.ts +9 -3
- package/dist/lib/forge-contracts.d.ts.map +1 -1
- package/dist/lib/forge-contracts.js.map +1 -1
- package/dist/lib/forge.d.ts +8 -5
- package/dist/lib/forge.d.ts.map +1 -1
- package/dist/lib/forge.js +57 -1
- package/dist/lib/forge.js.map +1 -1
- package/dist/lib/github.d.ts.map +1 -1
- package/dist/lib/github.js +38 -0
- package/dist/lib/github.js.map +1 -1
- package/dist/lib/governance-bootstrap.d.ts +155 -0
- package/dist/lib/governance-bootstrap.d.ts.map +1 -0
- package/dist/lib/governance-bootstrap.js +469 -0
- package/dist/lib/governance-bootstrap.js.map +1 -0
- package/dist/lib/issue-id.d.ts +34 -0
- package/dist/lib/issue-id.d.ts.map +1 -0
- package/dist/lib/issue-id.js +61 -0
- package/dist/lib/issue-id.js.map +1 -0
- package/dist/lib/scaffold.d.ts +4 -0
- package/dist/lib/scaffold.d.ts.map +1 -1
- package/dist/lib/scaffold.js +29 -5
- package/dist/lib/scaffold.js.map +1 -1
- package/dist/lib/shipped-skill-hashes.d.ts +10 -0
- package/dist/lib/shipped-skill-hashes.d.ts.map +1 -0
- package/dist/lib/shipped-skill-hashes.js +197 -0
- package/dist/lib/shipped-skill-hashes.js.map +1 -0
- package/dist/lib/skill-refresh.d.ts +90 -0
- package/dist/lib/skill-refresh.d.ts.map +1 -0
- package/dist/lib/skill-refresh.js +267 -0
- package/dist/lib/skill-refresh.js.map +1 -0
- package/dist/lib/tree-snapshot.d.ts +172 -0
- package/dist/lib/tree-snapshot.d.ts.map +1 -0
- package/dist/lib/tree-snapshot.js +393 -0
- package/dist/lib/tree-snapshot.js.map +1 -0
- package/dist/terminal/pty-session.d.ts +5 -0
- package/dist/terminal/pty-session.d.ts.map +1 -1
- package/dist/terminal/pty-session.js +7 -0
- package/dist/terminal/pty-session.js.map +1 -1
- package/ide-extension/codev-vscode.vsix +0 -0
- package/ide-extension/manifest.json +7 -0
- package/package.json +8 -6
- package/scripts/forge/jira/_lib.sh +113 -0
- package/scripts/forge/jira/auth-status.sh +29 -0
- package/scripts/forge/jira/issue-comment.sh +23 -0
- package/scripts/forge/jira/issue-list.sh +32 -0
- package/scripts/forge/jira/issue-search.sh +40 -0
- package/scripts/forge/jira/issue-view.sh +41 -0
- package/scripts/forge/jira/recently-closed.sh +81 -0
- package/scripts/forge/jira/user-identity.sh +18 -0
- package/skeleton/.claude/skills/afx/SKILL.md +36 -0
- package/skeleton/.claude/skills/codev/SKILL.md +18 -2
- package/skeleton/.claude/skills/update-arch-docs/SKILL.md +28 -2
- package/skeleton/.codex/skills/afx/SKILL.md +36 -0
- package/skeleton/.codex/skills/codev/SKILL.md +18 -2
- package/skeleton/.codex/skills/update-arch-docs/SKILL.md +28 -2
- package/skeleton/resources/commands/agent-farm.md +139 -0
- package/skeleton/resources/commands/codev.md +47 -0
- package/skeleton/resources/commands/overview.md +1 -0
- package/skeleton/resources/decision-protocol.md +215 -0
- package/skeleton/resources/workflow-reference.md +12 -0
- package/skeleton/roles/architect.md +6 -0
- package/skeleton/templates/bootstrap-docs-prompt.md +16 -0
- package/skeleton/templates/bootstrap-docs-review-prompt.md +19 -0
- package/skeleton/templates/cheatsheet.md +1 -0
- package/templates/tower.html +78 -3
- package/dashboard-dist/assets/index-BuflRUi6.js.map +0 -1
|
@@ -17,8 +17,9 @@ import { URL } from 'node:url';
|
|
|
17
17
|
import { readCloudConfig } from '../lib/cloud-config.js';
|
|
18
18
|
import { TUNNEL_PROXY_HEADER } from '../lib/tunnel-client.js';
|
|
19
19
|
import { TOWER_KEY_HEADER, LEGACY_WEB_KEY_HEADER } from '@cluesmith/codev-types';
|
|
20
|
-
import { IDE_DEFAULT_PREFIX, readIdeConnectionToken } from '../lib/ide-record.js';
|
|
20
|
+
import { IDE_DEFAULT_PREFIX, matchIdePrefix, readIdeConnectionToken } from '../lib/ide-record.js';
|
|
21
21
|
import { getRecordedIdePort, ensureIdeServerLive } from './ide-server.js';
|
|
22
|
+
import { IDE_FORWARD_COOKIE } from '../utils/server-utils.js';
|
|
22
23
|
/** Hop-by-hop headers not forwarded between connections (RFC 7230 §6.1). */
|
|
23
24
|
const HOP_BY_HOP = new Set([
|
|
24
25
|
'connection',
|
|
@@ -38,16 +39,31 @@ const HOP_BY_HOP = new Set([
|
|
|
38
39
|
* server must never see it.
|
|
39
40
|
* - `x-codev-tunnel-proxy`: Tower's tunnel marker — never forwarded, so it
|
|
40
41
|
* cannot leak or be trusted downstream (marker integrity, #1674).
|
|
42
|
+
* - `x-forwarded-host` / `-proto` / `-prefix`: only Tower's own stamps reach the
|
|
43
|
+
* IDE server (Issue #1869); a client copy could steer the workbench's
|
|
44
|
+
* `remoteAuthority` or base path.
|
|
41
45
|
* - `host`: replaced with the loopback target authority below.
|
|
42
46
|
*/
|
|
43
47
|
const STRIP_BEFORE_FORWARD = new Set([
|
|
44
48
|
'x-forwarded-port',
|
|
45
49
|
'x-original-host',
|
|
50
|
+
// Tower's own x-forwarded-* stamps are the only ones the IDE server may see
|
|
51
|
+
// (Issue #1869): client-supplied copies are dropped on every path.
|
|
52
|
+
'x-forwarded-host',
|
|
53
|
+
'x-forwarded-proto',
|
|
54
|
+
'x-forwarded-prefix',
|
|
46
55
|
TOWER_KEY_HEADER,
|
|
47
56
|
LEGACY_WEB_KEY_HEADER,
|
|
48
57
|
TUNNEL_PROXY_HEADER,
|
|
49
58
|
'host',
|
|
50
59
|
]);
|
|
60
|
+
/**
|
|
61
|
+
* Response headers never relayed from the IDE server, on any path (Issue #1869):
|
|
62
|
+
* Tower must NEVER send `Access-Control-Allow-Credentials` (Tower reflects any
|
|
63
|
+
* loopback `Origin`, so with it another localhost page could read
|
|
64
|
+
* cookie-authorized `/ide` responses).
|
|
65
|
+
*/
|
|
66
|
+
const STRIP_FROM_RESPONSE = new Set(['access-control-allow-credentials']);
|
|
51
67
|
/** True if this request arrived over the tunnel (stamped by `TunnelClient`, #1588). */
|
|
52
68
|
function isTunnelBorne(headers) {
|
|
53
69
|
return headers[TUNNEL_PROXY_HEADER] === '1';
|
|
@@ -55,17 +71,38 @@ function isTunnelBorne(headers) {
|
|
|
55
71
|
/** The connection-token cookie name the VS Code server reads. */
|
|
56
72
|
const IDE_TOKEN_COOKIE = 'vscode-tkn';
|
|
57
73
|
/**
|
|
58
|
-
*
|
|
59
|
-
* preserving every
|
|
60
|
-
* `vscode-tkn` (Issue #
|
|
74
|
+
* Set the IDE connection token in a Cookie header value as `vscode-tkn=…`,
|
|
75
|
+
* preserving every other cookie. Tower's token REPLACES any incoming
|
|
76
|
+
* `vscode-tkn` (Issue #1869): Tower is the sole legitimate source, so a
|
|
77
|
+
* browser-held copy (a hand-built `?tkn=` URL, a pre-fix session, a token
|
|
78
|
+
* stale after rotation) is never authoritative. Exported for testing.
|
|
61
79
|
*/
|
|
62
80
|
export function mergeConnectionTokenCookie(existing, token) {
|
|
63
|
-
const
|
|
64
|
-
// Never clobber: if a vscode-tkn is already present, leave the header as-is.
|
|
65
|
-
if (new RegExp(`(^|;\\s*)${IDE_TOKEN_COOKIE}=`).test(current))
|
|
66
|
-
return current;
|
|
81
|
+
const others = stripCookie(existing, IDE_TOKEN_COOKIE);
|
|
67
82
|
const pair = `${IDE_TOKEN_COOKIE}=${token}`;
|
|
68
|
-
return
|
|
83
|
+
return others ? `${others}; ${pair}` : pair;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Remove one cookie (exact name) from a Cookie header value, preserving every
|
|
87
|
+
* other pair in order. Accepts the string | string[] shape. Returns '' when no
|
|
88
|
+
* pair remains. Used to keep Tower's forward cookie (Issue #1869) away from the
|
|
89
|
+
* IDE server, the way the key header is stripped. Exported for testing.
|
|
90
|
+
*/
|
|
91
|
+
export function stripCookie(existing, name) {
|
|
92
|
+
if (existing === undefined)
|
|
93
|
+
return '';
|
|
94
|
+
const joined = Array.isArray(existing) ? existing.join('; ') : existing;
|
|
95
|
+
return joined
|
|
96
|
+
.split(';')
|
|
97
|
+
.map((pair) => pair.trim())
|
|
98
|
+
.filter((pair) => {
|
|
99
|
+
if (pair.length === 0)
|
|
100
|
+
return false;
|
|
101
|
+
const eq = pair.indexOf('=');
|
|
102
|
+
const pairName = eq < 0 ? pair : pair.slice(0, eq).trim();
|
|
103
|
+
return pairName !== name;
|
|
104
|
+
})
|
|
105
|
+
.join('; ');
|
|
69
106
|
}
|
|
70
107
|
/**
|
|
71
108
|
* Derive the tunnel's public authority from the cloud config, matching the
|
|
@@ -111,38 +148,216 @@ export function buildForwardHeaders(incoming, port, publicAuthority, connectionT
|
|
|
111
148
|
out[key] = value;
|
|
112
149
|
}
|
|
113
150
|
out['host'] = `127.0.0.1:${port}`;
|
|
114
|
-
if (isTunnelBorne(incoming)
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
151
|
+
if (isTunnelBorne(incoming)) {
|
|
152
|
+
if (publicAuthority) {
|
|
153
|
+
out['x-forwarded-host'] = publicAuthority.host;
|
|
154
|
+
out['x-forwarded-proto'] = publicAuthority.proto;
|
|
155
|
+
out['x-forwarded-prefix'] = publicAuthority.prefix;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else if (typeof incoming.host === 'string' && incoming.host.length > 0) {
|
|
159
|
+
// Local browser (Issue #1869): the IDE server builds the workbench's
|
|
160
|
+
// `remoteAuthority` from the Host it sees, and the rewrite above makes that
|
|
161
|
+
// its own port, so the workbench would dial the IDE server directly and
|
|
162
|
+
// bypass Tower's forward seam. Stamp Tower's own authority (the incoming
|
|
163
|
+
// Host, already Host-guarded) so the workbench's sockets and remote
|
|
164
|
+
// resources come back through Tower. No prefix: locally `/ide` IS the
|
|
165
|
+
// server's base path.
|
|
166
|
+
out['x-forwarded-host'] = incoming.host;
|
|
167
|
+
out['x-forwarded-proto'] = 'http';
|
|
118
168
|
}
|
|
119
169
|
// Present the IDE server's connection token as a cookie. The server is
|
|
120
|
-
// spawned with `--connection-token-file` and 403s without it, and
|
|
121
|
-
//
|
|
122
|
-
//
|
|
123
|
-
//
|
|
170
|
+
// spawned with `--connection-token-file` and 403s without it, and the
|
|
171
|
+
// browser never holds the token (Tower strips the server's Set-Cookie,
|
|
172
|
+
// Issue #1869), so Tower injects it here on every request (Issue #1668),
|
|
173
|
+
// REPLACING any browser-held `vscode-tkn` and keeping every other cookie.
|
|
174
|
+
// Tower's own forward cookie is stripped first: the IDE server must never
|
|
175
|
+
// see it (Issue #1869).
|
|
176
|
+
const cookie = stripCookie(incoming.cookie, IDE_FORWARD_COOKIE);
|
|
177
|
+
delete out['cookie'];
|
|
124
178
|
if (connectionToken) {
|
|
125
|
-
out['cookie'] = mergeConnectionTokenCookie(
|
|
179
|
+
out['cookie'] = mergeConnectionTokenCookie(cookie, connectionToken);
|
|
180
|
+
}
|
|
181
|
+
else if (cookie) {
|
|
182
|
+
out['cookie'] = cookie;
|
|
126
183
|
}
|
|
127
184
|
return out;
|
|
128
185
|
}
|
|
129
|
-
/** True if `pathname` targets the IDE forward prefix
|
|
130
|
-
export
|
|
131
|
-
|
|
132
|
-
|
|
186
|
+
/** True if `pathname` targets the IDE forward prefix; defined beside the prefix constant. */
|
|
187
|
+
export { matchIdePrefix };
|
|
188
|
+
/**
|
|
189
|
+
* Drop every `vscode-tkn` cookie the IDE server tries to set in the browser
|
|
190
|
+
* (Issue #1869). The server answers an authenticated request with
|
|
191
|
+
* `Set-Cookie: vscode-tkn=<connection token>` (7 days, SameSite=Lax); cookies
|
|
192
|
+
* are not port-scoped, so a browser holding it could open the remote protocol
|
|
193
|
+
* on the IDE server's own port from any localhost page, bypassing Tower. Tower
|
|
194
|
+
* injects the token on every forwarded request, so the browser never needs it.
|
|
195
|
+
* Returns undefined when nothing remains. Exported for testing.
|
|
196
|
+
*/
|
|
197
|
+
export function stripConnectionTokenSetCookie(value) {
|
|
198
|
+
if (value === undefined)
|
|
199
|
+
return undefined;
|
|
200
|
+
const entries = Array.isArray(value) ? value : [value];
|
|
201
|
+
const kept = entries.filter((entry) => !new RegExp(`^\\s*${IDE_TOKEN_COOKIE}=`).test(entry));
|
|
202
|
+
return kept.length > 0 ? kept : undefined;
|
|
133
203
|
}
|
|
134
|
-
/**
|
|
135
|
-
|
|
204
|
+
/**
|
|
205
|
+
* Copy response headers, dropping hop-by-hop; preserves `Cache-Control` /
|
|
206
|
+
* `ETag`. With `stripTokenCookie` (a LOCAL request, Issue #1869) it also drops
|
|
207
|
+
* the IDE server's `vscode-tkn` Set-Cookie; the tunnel path relays it unchanged
|
|
208
|
+
* (the cloud variant is a separate follow-up). Exported for testing.
|
|
209
|
+
*/
|
|
210
|
+
export function copyResponseHeaders(headers, stripTokenCookie) {
|
|
136
211
|
const out = {};
|
|
137
212
|
for (const [key, value] of Object.entries(headers)) {
|
|
138
213
|
if (value === undefined)
|
|
139
214
|
continue;
|
|
140
|
-
|
|
215
|
+
const lower = key.toLowerCase();
|
|
216
|
+
if (HOP_BY_HOP.has(lower))
|
|
217
|
+
continue;
|
|
218
|
+
if (STRIP_FROM_RESPONSE.has(lower))
|
|
219
|
+
continue;
|
|
220
|
+
if (stripTokenCookie && lower === 'set-cookie') {
|
|
221
|
+
const kept = stripConnectionTokenSetCookie(value);
|
|
222
|
+
if (kept)
|
|
223
|
+
out[key] = kept;
|
|
141
224
|
continue;
|
|
225
|
+
}
|
|
142
226
|
out[key] = value;
|
|
143
227
|
}
|
|
144
228
|
return out;
|
|
145
229
|
}
|
|
230
|
+
/** Opening of the workbench configuration the IDE server embeds in its page. */
|
|
231
|
+
const WORKBENCH_CONFIG_OPEN = '<meta id="vscode-workbench-web-configuration" data-settings="{';
|
|
232
|
+
/** Largest workbench page Tower will buffer to rewrite; anything bigger streams unchanged. */
|
|
233
|
+
export const MAX_WORKBENCH_HTML_BYTES = 2 * 1024 * 1024;
|
|
234
|
+
/** Only a plain alphanumeric token is ever written into the page. */
|
|
235
|
+
const SAFE_TOKEN = /^[A-Za-z0-9-]+$/;
|
|
236
|
+
/** Decode the HTML character references the server uses in `data-settings`. */
|
|
237
|
+
function decodeAttribute(value) {
|
|
238
|
+
return value
|
|
239
|
+
.replace(/&#x([0-9a-fA-F]+);/g, (_m, hex) => String.fromCodePoint(parseInt(hex, 16)))
|
|
240
|
+
.replace(/&#(\d+);/g, (_m, dec) => String.fromCodePoint(parseInt(dec, 10)))
|
|
241
|
+
.replace(/"/g, '"')
|
|
242
|
+
.replace(/'|'/g, "'")
|
|
243
|
+
.replace(/</g, '<')
|
|
244
|
+
.replace(/>/g, '>')
|
|
245
|
+
.replace(/&/g, '&');
|
|
246
|
+
}
|
|
247
|
+
/** The decoded `data-settings` JSON object, or null when it does not parse as one. */
|
|
248
|
+
function parseSettings(attribute) {
|
|
249
|
+
try {
|
|
250
|
+
const parsed = JSON.parse(decodeAttribute(attribute));
|
|
251
|
+
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed))
|
|
252
|
+
return null;
|
|
253
|
+
return parsed;
|
|
254
|
+
}
|
|
255
|
+
catch {
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Hand the workbench its connection token through its own configuration
|
|
261
|
+
* instead of the browser cookie jar (Issue #1869). The workbench takes
|
|
262
|
+
* `connectionToken` from its configuration first and falls back to the
|
|
263
|
+
* `vscode-tkn` cookie, which Tower strips locally because a cookie is readable
|
|
264
|
+
* by every localhost port. Same shape as Tower's same-origin key injection into
|
|
265
|
+
* the dashboard shell: post-auth only, never cross-origin readable.
|
|
266
|
+
*
|
|
267
|
+
* Inserts `"connectionToken":"<token>"` as the first key of the HTML-escaped
|
|
268
|
+
* JSON in `data-settings` (no trailing comma for an empty `{}`). Returns null,
|
|
269
|
+
* so the caller relays the page unchanged, when the token is not
|
|
270
|
+
* `^[A-Za-z0-9-]+$`, the page carries no workbench configuration, the
|
|
271
|
+
* configuration does not parse, it already names a `connectionToken`, or the
|
|
272
|
+
* rewritten configuration would not decode to valid JSON carrying the token.
|
|
273
|
+
* Exported for testing.
|
|
274
|
+
*/
|
|
275
|
+
export function injectWorkbenchConnectionToken(html, token) {
|
|
276
|
+
if (!SAFE_TOKEN.test(token))
|
|
277
|
+
return null;
|
|
278
|
+
const start = html.indexOf(WORKBENCH_CONFIG_OPEN);
|
|
279
|
+
if (start < 0)
|
|
280
|
+
return null;
|
|
281
|
+
const valueStart = start + WORKBENCH_CONFIG_OPEN.length - 1; // at the "{"
|
|
282
|
+
const valueEnd = html.indexOf('"', valueStart);
|
|
283
|
+
if (valueEnd < 0)
|
|
284
|
+
return null;
|
|
285
|
+
const original = html.slice(valueStart, valueEnd);
|
|
286
|
+
const settings = parseSettings(original);
|
|
287
|
+
if (!settings || 'connectionToken' in settings)
|
|
288
|
+
return null;
|
|
289
|
+
const isEmpty = Object.keys(settings).length === 0;
|
|
290
|
+
const entry = `"connectionToken":"${token}"`;
|
|
291
|
+
let rewritten = `{${entry},${original.slice(1)}`;
|
|
292
|
+
if (isEmpty)
|
|
293
|
+
rewritten = `{${entry}}`;
|
|
294
|
+
const check = parseSettings(rewritten);
|
|
295
|
+
if (!check || check.connectionToken !== token)
|
|
296
|
+
return null;
|
|
297
|
+
return html.slice(0, valueStart) + rewritten + html.slice(valueEnd);
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* True for a response Tower may rewrite: 200, uncompressed `text/html`, and not
|
|
301
|
+
* declared larger than the bound. Everything else streams unchanged.
|
|
302
|
+
*/
|
|
303
|
+
function isRewritableWorkbenchPage(res) {
|
|
304
|
+
if (res.statusCode !== 200)
|
|
305
|
+
return false;
|
|
306
|
+
const type = res.headers['content-type'] ?? '';
|
|
307
|
+
if (!type.startsWith('text/html'))
|
|
308
|
+
return false;
|
|
309
|
+
if (res.headers['content-encoding'] !== undefined)
|
|
310
|
+
return false;
|
|
311
|
+
const declared = Number(res.headers['content-length']);
|
|
312
|
+
if (Number.isFinite(declared) && declared > MAX_WORKBENCH_HTML_BYTES)
|
|
313
|
+
return false;
|
|
314
|
+
return true;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Buffer a workbench page (up to the bound), inject the connection token, and
|
|
318
|
+
* relay it with a corrected Content-Length. A body that outgrows the bound
|
|
319
|
+
* mid-stream is relayed unchanged: the buffered bytes, then a pipe of the rest.
|
|
320
|
+
*/
|
|
321
|
+
function relayWorkbenchHtml(proxyRes, res, token) {
|
|
322
|
+
const chunks = [];
|
|
323
|
+
let size = 0;
|
|
324
|
+
let streaming = false;
|
|
325
|
+
const onData = (chunk) => {
|
|
326
|
+
chunks.push(chunk);
|
|
327
|
+
size += chunk.length;
|
|
328
|
+
if (size <= MAX_WORKBENCH_HTML_BYTES)
|
|
329
|
+
return;
|
|
330
|
+
streaming = true;
|
|
331
|
+
proxyRes.off('data', onData);
|
|
332
|
+
res.writeHead(proxyRes.statusCode ?? 502, copyResponseHeaders(proxyRes.headers, true));
|
|
333
|
+
for (const buffered of chunks)
|
|
334
|
+
res.write(buffered);
|
|
335
|
+
proxyRes.pipe(res);
|
|
336
|
+
};
|
|
337
|
+
proxyRes.on('data', onData);
|
|
338
|
+
proxyRes.on('end', () => {
|
|
339
|
+
if (streaming)
|
|
340
|
+
return;
|
|
341
|
+
const original = Buffer.concat(chunks).toString('utf8');
|
|
342
|
+
const rewritten = injectWorkbenchConnectionToken(original, token);
|
|
343
|
+
const body = Buffer.from(rewritten ?? original, 'utf8');
|
|
344
|
+
const out = copyResponseHeaders(proxyRes.headers, true);
|
|
345
|
+
for (const key of Object.keys(out)) {
|
|
346
|
+
const lower = key.toLowerCase();
|
|
347
|
+
if (lower === 'content-length' || lower === 'transfer-encoding')
|
|
348
|
+
delete out[key];
|
|
349
|
+
}
|
|
350
|
+
out['content-length'] = body.length;
|
|
351
|
+
res.writeHead(proxyRes.statusCode ?? 502, out);
|
|
352
|
+
res.end(body);
|
|
353
|
+
});
|
|
354
|
+
proxyRes.on('error', () => {
|
|
355
|
+
if (!res.headersSent)
|
|
356
|
+
res.writeHead(502, { 'Content-Type': 'application/json' });
|
|
357
|
+
if (!res.writableEnded)
|
|
358
|
+
res.end();
|
|
359
|
+
});
|
|
360
|
+
}
|
|
146
361
|
/**
|
|
147
362
|
* Forward a plain HTTP request to the local IDE server. Assumes authorization
|
|
148
363
|
* has already passed. Path and query are forwarded unchanged (the workbench
|
|
@@ -158,9 +373,17 @@ export async function forwardIdeHttp(req, res, log) {
|
|
|
158
373
|
res.end(JSON.stringify({ error: 'IDE server unavailable' }));
|
|
159
374
|
return;
|
|
160
375
|
}
|
|
161
|
-
const
|
|
376
|
+
const connectionToken = readIdeConnectionToken();
|
|
377
|
+
const local = !isTunnelBorne(req.headers);
|
|
378
|
+
const headers = buildForwardHeaders(req.headers, port, getPublicAuthority(), connectionToken);
|
|
162
379
|
const proxyReq = http.request({ hostname: '127.0.0.1', port, path: req.url || '/', method: req.method, headers }, (proxyRes) => {
|
|
163
|
-
|
|
380
|
+
// Local only (Issue #1869): the browser gets the token through the
|
|
381
|
+
// workbench configuration, never as a cookie. The tunnel path is unchanged.
|
|
382
|
+
if (local && connectionToken && isRewritableWorkbenchPage(proxyRes)) {
|
|
383
|
+
relayWorkbenchHtml(proxyRes, res, connectionToken);
|
|
384
|
+
return;
|
|
385
|
+
}
|
|
386
|
+
res.writeHead(proxyRes.statusCode ?? 502, copyResponseHeaders(proxyRes.headers, local));
|
|
164
387
|
proxyRes.pipe(res);
|
|
165
388
|
proxyRes.on('error', () => {
|
|
166
389
|
if (!res.writableEnded)
|
|
@@ -221,7 +444,7 @@ export async function forwardIdeWebSocket(req, socket, head, log) {
|
|
|
221
444
|
});
|
|
222
445
|
upstream.on('upgrade', (_upstreamRes, upstreamSocket, upstreamHead) => {
|
|
223
446
|
// Replay the handshake response and any buffered bytes, then pipe both ways.
|
|
224
|
-
socket.write(rebuildUpgradeResponse(_upstreamRes));
|
|
447
|
+
socket.write(rebuildUpgradeResponse(_upstreamRes, !isTunnelBorne(req.headers)));
|
|
225
448
|
if (upstreamHead.length > 0)
|
|
226
449
|
socket.write(upstreamHead);
|
|
227
450
|
if (head.length > 0)
|
|
@@ -254,11 +477,20 @@ export async function forwardIdeWebSocket(req, socket, head, log) {
|
|
|
254
477
|
});
|
|
255
478
|
upstream.end();
|
|
256
479
|
}
|
|
257
|
-
/**
|
|
258
|
-
|
|
480
|
+
/**
|
|
481
|
+
* Reconstruct the HTTP/1.1 101 switching-protocols response line + headers.
|
|
482
|
+
* With `stripTokenCookie` (a LOCAL request) it drops the IDE server's
|
|
483
|
+
* `vscode-tkn` Set-Cookie like the HTTP path does. Exported for testing.
|
|
484
|
+
*/
|
|
485
|
+
export function rebuildUpgradeResponse(res, stripTokenCookie) {
|
|
259
486
|
const statusLine = `HTTP/1.1 ${res.statusCode ?? 101} ${res.statusMessage ?? 'Switching Protocols'}`;
|
|
260
487
|
const lines = [statusLine];
|
|
261
|
-
for (const [key,
|
|
488
|
+
for (const [key, raw] of Object.entries(res.headers)) {
|
|
489
|
+
if (STRIP_FROM_RESPONSE.has(key.toLowerCase()))
|
|
490
|
+
continue;
|
|
491
|
+
let value = raw;
|
|
492
|
+
if (stripTokenCookie && key.toLowerCase() === 'set-cookie')
|
|
493
|
+
value = stripConnectionTokenSetCookie(raw);
|
|
262
494
|
if (value === undefined)
|
|
263
495
|
continue;
|
|
264
496
|
if (Array.isArray(value)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ide-forward.js","sourceRoot":"","sources":["../../../src/agent-farm/servers/ide-forward.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ide-forward.js","sourceRoot":"","sources":["../../../src/agent-farm/servers/ide-forward.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,10 +7,18 @@
|
|
|
7
7
|
* Runtime state lives in the `~/.agent-farm/ide-server.json` record (Issue
|
|
8
8
|
* #1668 §D3) — no config file, no `global.db` change. Liveness is discovered by
|
|
9
9
|
* port (`getProcessesOnPort`), the same way Tower finds its own process.
|
|
10
|
+
*
|
|
11
|
+
* Every spawn runs a preflight first (Spec 1789): the server version floor and
|
|
12
|
+
* the embedded sidebar install into the Tower-owned extensions directory. The
|
|
13
|
+
* preflight throws before anything is stopped, replaced or recorded, so a
|
|
14
|
+
* refused start leaves a live server and its record untouched. Lifecycle
|
|
15
|
+
* operations are serialized by `withIdeLock`, taken only at the entry points
|
|
16
|
+
* (`spawnIdeServer`, `stopIdeServer`, the respawn in `ensureIdeServerLive`);
|
|
17
|
+
* the unlocked bodies call each other freely, so the nesting cannot deadlock.
|
|
10
18
|
*/
|
|
11
19
|
import http from 'node:http';
|
|
12
20
|
import { type IdeServerRecord } from '../lib/ide-record.js';
|
|
13
|
-
type LogFn
|
|
21
|
+
import { type LogFn } from '../lib/ide-version.js';
|
|
14
22
|
/**
|
|
15
23
|
* The recorded IDE server port, or null if none — the forward's hot-path target
|
|
16
24
|
* resolution. A plain record read, no port scan (Issue #1668): a dead server
|
|
@@ -21,18 +29,31 @@ export declare function getRecordedIdePort(): number | null;
|
|
|
21
29
|
export interface SpawnIdeOptions {
|
|
22
30
|
serverPath: string;
|
|
23
31
|
port?: number;
|
|
24
|
-
|
|
32
|
+
}
|
|
33
|
+
export interface SpawnIdeResult {
|
|
34
|
+
record: IdeServerRecord;
|
|
35
|
+
/**
|
|
36
|
+
* True when an already-live server was adopted that is not running what
|
|
37
|
+
* this start asked for: the sidebar just changed, the recorded server path,
|
|
38
|
+
* sidebar version or extensions directory differs from the current one
|
|
39
|
+
* (including a legacy record with neither), or its launch arguments are
|
|
40
|
+
* unknown (no prior record). The live server is never killed; the user
|
|
41
|
+
* restarts it.
|
|
42
|
+
*/
|
|
43
|
+
restartRequired: boolean;
|
|
25
44
|
}
|
|
26
45
|
/**
|
|
27
46
|
* Spawn the IDE server detached (so it survives a Tower restart, like a
|
|
28
|
-
* shellper) and write the runtime record. Resolves
|
|
29
|
-
*
|
|
47
|
+
* shellper) and write the runtime record. Resolves once the server is
|
|
48
|
+
* listening, or throws if the binary is missing, fails the preflight, or never
|
|
49
|
+
* binds. Serialized with every other lifecycle operation.
|
|
30
50
|
*/
|
|
31
|
-
export declare function spawnIdeServer(opts: SpawnIdeOptions, log: LogFn): Promise<
|
|
51
|
+
export declare function spawnIdeServer(opts: SpawnIdeOptions, log: LogFn): Promise<SpawnIdeResult>;
|
|
32
52
|
/**
|
|
33
53
|
* Stop the IDE server on the recorded port: SIGTERM, wait for exit, escalate to
|
|
34
54
|
* SIGKILL for survivors (mirrors `towerStop`, #1668 plan §4), then delete the
|
|
35
|
-
* record. Cold path — `getProcessesOnPort` is fine here.
|
|
55
|
+
* record. Cold path — `getProcessesOnPort` is fine here. Serialized with every
|
|
56
|
+
* other lifecycle operation.
|
|
36
57
|
*/
|
|
37
58
|
export declare function stopIdeServer(log: LogFn): Promise<{
|
|
38
59
|
stopped: boolean;
|
|
@@ -59,10 +80,9 @@ export declare function ensureIdeServerLive(log?: LogFn): Promise<number | null>
|
|
|
59
80
|
export declare function reconcileIdeServer(log: LogFn): Promise<void>;
|
|
60
81
|
/**
|
|
61
82
|
* Local-only `/api/ide` management endpoint driving the lifecycle above:
|
|
62
|
-
* `POST` starts (body `{ serverPath, port
|
|
83
|
+
* `POST` starts (body `{ serverPath, port? }`), `DELETE` stops,
|
|
63
84
|
* `GET` reports status. Reached only post-`isRequestAllowed` (key required) and
|
|
64
85
|
* blocked from the tunnel like `/api/tunnel/*` — it spawns/kills a process.
|
|
65
86
|
*/
|
|
66
87
|
export declare function handleIdeApi(req: http.IncomingMessage, res: http.ServerResponse, log: LogFn): Promise<void>;
|
|
67
|
-
export {};
|
|
68
88
|
//# sourceMappingURL=ide-server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ide-server.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/servers/ide-server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ide-server.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/servers/ide-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAK7B,OAAO,EAGL,KAAK,eAAe,EAMrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAGL,KAAK,KAAK,EAGX,MAAM,uBAAuB,CAAC;AA2B/B;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAElD;AAwBD,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,eAAe,CAAC;IACxB;;;;;;;OAOG;IACH,eAAe,EAAE,OAAO,CAAC;CAC1B;AA4BD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,CAEzF;AAsID;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAE5F;AAsCD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,IAAI,SAAS,CAK3C;AAKD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,GAAE,KAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUvF;AAwBD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAQlE;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,GAAG,EAAE,KAAK,GACT,OAAO,CAAC,IAAI,CAAC,CA4Cf"}
|