anyray-connect 0.11.39 → 0.11.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -56
- package/dist/cli.js +117 -23
- package/dist/cli.js.map +1 -1
- package/dist/commands/doctor.js +31 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/tools/claudeCode.js +43 -14
- package/dist/tools/claudeCode.js.map +1 -1
- package/dist/tools/codex.js +12 -4
- package/dist/tools/codex.js.map +1 -1
- package/dist/tools/copilotChat.js +8 -6
- package/dist/tools/copilotChat.js.map +1 -1
- package/dist/tools/manual.js +26 -5
- package/dist/tools/manual.js.map +1 -1
- package/dist/tools/opencode.js +7 -5
- package/dist/tools/opencode.js.map +1 -1
- package/dist/tools/shellEnv.js +43 -1
- package/dist/tools/shellEnv.js.map +1 -1
- package/dist/util/jsonFile.js +43 -5
- package/dist/util/jsonFile.js.map +1 -1
- package/dist/util/persist.js +61 -0
- package/dist/util/persist.js.map +1 -1
- package/dist/util/profile.js +8 -0
- package/dist/util/profile.js.map +1 -1
- package/package.json +1 -1
- package/dist/commands/agent.js +0 -347
- package/dist/commands/agent.js.map +0 -1
- package/dist/commands/agentProxy.js +0 -670
- package/dist/commands/agentProxy.js.map +0 -1
- package/dist/util/agentAllowlist.js +0 -107
- package/dist/util/agentAllowlist.js.map +0 -1
- package/dist/util/agentCa.js +0 -209
- package/dist/util/agentCa.js.map +0 -1
- package/dist/util/agentPaths.js +0 -38
- package/dist/util/agentPaths.js.map +0 -1
- package/dist/util/agentService.js +0 -215
- package/dist/util/agentService.js.map +0 -1
- package/dist/util/agentTrust.js +0 -517
- package/dist/util/agentTrust.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agentProxy.js","sourceRoot":"","sources":["../../src/commands/agentProxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The AI-provider domain allowlist for the device-capture agent.
|
|
3
|
-
*
|
|
4
|
-
* This is the single most privacy-critical constant in the agent: it is the
|
|
5
|
-
* ONLY set of hosts whose TLS the agent terminates (MITM). Every host NOT on
|
|
6
|
-
* this list is tunneled byte-for-byte, never decrypted (RFC 0002 §2). It is a
|
|
7
|
-
* small, code-reviewed constant — deliberately NOT runtime-editable, so the
|
|
8
|
-
* proxy can never be reconfigured into a general corporate wiretap (RFC §12).
|
|
9
|
-
*
|
|
10
|
-
* Keep it tight: add a host only when there's a real AI-inference endpoint
|
|
11
|
-
* behind it that we intend to meter. `originHost` is the canonical scheme+host
|
|
12
|
-
* the gateway relays to (the value the agent puts in `x-anyray-origin-host`);
|
|
13
|
-
* `app` is the content-free source label for the console breakdown.
|
|
14
|
-
*
|
|
15
|
-
* Pure module — no I/O, no deps — so it unit-tests directly.
|
|
16
|
-
*/
|
|
17
|
-
/**
|
|
18
|
-
* The audited allowlist. Ordered most-specific-first so an exact/backend host
|
|
19
|
-
* wins over a broad suffix. Every entry is an AI-inference domain we mean to
|
|
20
|
-
* meter — nothing here is a general corporate service.
|
|
21
|
-
*/
|
|
22
|
-
export const AI_ALLOWLIST = [
|
|
23
|
-
// OpenAI API (Codex API-key traffic and SDK jobs that resolve here directly).
|
|
24
|
-
{
|
|
25
|
-
host: 'api.openai.com',
|
|
26
|
-
originHost: 'https://api.openai.com',
|
|
27
|
-
app: 'openai-api',
|
|
28
|
-
},
|
|
29
|
-
// ChatGPT desktop app + browser (chatgpt.com/backend-api/*, incl. the Codex seat backend).
|
|
30
|
-
{
|
|
31
|
-
host: 'chatgpt.com',
|
|
32
|
-
suffix: true,
|
|
33
|
-
originHost: 'https://chatgpt.com',
|
|
34
|
-
app: 'chatgpt-desktop',
|
|
35
|
-
},
|
|
36
|
-
// Anthropic API (Claude Code, SDK jobs).
|
|
37
|
-
{
|
|
38
|
-
host: 'api.anthropic.com',
|
|
39
|
-
originHost: 'https://api.anthropic.com',
|
|
40
|
-
app: 'anthropic-api',
|
|
41
|
-
},
|
|
42
|
-
// Claude desktop app + browser (claude.ai/api/*).
|
|
43
|
-
{
|
|
44
|
-
host: 'claude.ai',
|
|
45
|
-
suffix: true,
|
|
46
|
-
originHost: 'https://claude.ai',
|
|
47
|
-
app: 'claude-desktop',
|
|
48
|
-
},
|
|
49
|
-
// GitHub Copilot (VS Code / Visual Studio) — per-plan CAPI subdomains.
|
|
50
|
-
{
|
|
51
|
-
host: 'githubcopilot.com',
|
|
52
|
-
suffix: true,
|
|
53
|
-
originHost: 'https://api.githubcopilot.com',
|
|
54
|
-
app: 'copilot',
|
|
55
|
-
},
|
|
56
|
-
];
|
|
57
|
-
/** Lower-case a host and strip an optional `:port` and trailing dot. */
|
|
58
|
-
export const normalizeHost = (host) => host.trim().toLowerCase().replace(/\.$/, '').replace(/:\d+$/, '');
|
|
59
|
-
/**
|
|
60
|
-
* Exact hosts that must TUNNEL even though a broad `suffix` entry above would
|
|
61
|
-
* otherwise match them. These are non-inference subdomains of an allowlisted
|
|
62
|
-
* parent: decrypting them captures no prompt/completion content, and relaying
|
|
63
|
-
* their (often large, binary) traffic through the gateway is wasteful and can
|
|
64
|
-
* break the underlying flow. Kept as an explicit deny so the parent suffix
|
|
65
|
-
* stays broad for the real inference subdomains it exists to catch.
|
|
66
|
-
*/
|
|
67
|
-
const NEVER_MITM = new Set([
|
|
68
|
-
// Installer + auto-updater binaries served under the `claude.ai` suffix.
|
|
69
|
-
// Anthropic's own network-config doc lists this as a downloads host, not an
|
|
70
|
-
// API host; the desktop app's chat/completion traffic is on `claude.ai/api/*`.
|
|
71
|
-
'downloads.claude.ai',
|
|
72
|
-
]);
|
|
73
|
-
/**
|
|
74
|
-
* Decide what to do with a CONNECT/SNI host. The DEFAULT is tunnel (never
|
|
75
|
-
* decrypt) — MITM is only ever returned for an explicit allowlist match, so a
|
|
76
|
-
* bug that fails to match errs on the side of NOT decrypting.
|
|
77
|
-
*/
|
|
78
|
-
export const decideHost = (rawHost) => {
|
|
79
|
-
const host = normalizeHost(rawHost);
|
|
80
|
-
if (!host)
|
|
81
|
-
return { mitm: false };
|
|
82
|
-
if (NEVER_MITM.has(host))
|
|
83
|
-
return { mitm: false };
|
|
84
|
-
for (const entry of AI_ALLOWLIST) {
|
|
85
|
-
const matches = entry.suffix
|
|
86
|
-
? host === entry.host || host.endsWith('.' + entry.host)
|
|
87
|
-
: host === entry.host;
|
|
88
|
-
if (matches)
|
|
89
|
-
return { mitm: true, entry };
|
|
90
|
-
}
|
|
91
|
-
return { mitm: false };
|
|
92
|
-
};
|
|
93
|
-
/**
|
|
94
|
-
* The hostnames an operator must add to ANYRAY_CUSTOM_HOST_ALLOWLIST on the
|
|
95
|
-
* gateway. We emit the MATCHED host (`entry.host`) — for a suffix entry that's
|
|
96
|
-
* the PARENT (e.g. `githubcopilot.com`), not the canonical `originHost`
|
|
97
|
-
* (`api.githubcopilot.com`): the proxy forwards the actual CONNECT host, so a
|
|
98
|
-
* per-plan subdomain like `api.business.githubcopilot.com` only clears the
|
|
99
|
-
* gateway's suffix match when the parent is allowlisted.
|
|
100
|
-
*/
|
|
101
|
-
export const gatewayAllowlistHosts = () => {
|
|
102
|
-
const seen = new Set();
|
|
103
|
-
for (const entry of AI_ALLOWLIST)
|
|
104
|
-
seen.add(entry.host);
|
|
105
|
-
return [...seen];
|
|
106
|
-
};
|
|
107
|
-
//# sourceMappingURL=agentAllowlist.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agentAllowlist.js","sourceRoot":"","sources":["../../src/util/agentAllowlist.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAqBH;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAA8B;IACrD,8EAA8E;IAC9E;QACE,IAAI,EAAE,gBAAgB;QACtB,UAAU,EAAE,wBAAwB;QACpC,GAAG,EAAE,YAAY;KAClB;IACD,2FAA2F;IAC3F;QACE,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,qBAAqB;QACjC,GAAG,EAAE,iBAAiB;KACvB;IACD,yCAAyC;IACzC;QACE,IAAI,EAAE,mBAAmB;QACzB,UAAU,EAAE,2BAA2B;QACvC,GAAG,EAAE,eAAe;KACrB;IACD,kDAAkD;IAClD;QACE,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,mBAAmB;QAC/B,GAAG,EAAE,gBAAgB;KACtB;IACD,uEAAuE;IACvE;QACE,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,+BAA+B;QAC3C,GAAG,EAAE,SAAS;KACf;CACO,CAAC;AASX,wEAAwE;AACxE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAU,EAAE,CACpD,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAEpE;;;;;;;GAOG;AACH,MAAM,UAAU,GAAwB,IAAI,GAAG,CAAC;IAC9C,yEAAyE;IACzE,4EAA4E;IAC5E,+EAA+E;IAC/E,qBAAqB;CACtB,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAe,EAAgB,EAAE;IAC1D,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAClC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACjD,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM;YAC1B,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;YACxD,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC;QACxB,IAAI,OAAO;YAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAa,EAAE;IAClD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,YAAY;QAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACnB,CAAC,CAAC"}
|
package/dist/util/agentCa.js
DELETED
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Per-device CA + per-host leaf minting for the device-capture agent.
|
|
3
|
-
*
|
|
4
|
-
* The intercepting proxy can only terminate TLS for an allowlisted AI host if it
|
|
5
|
-
* can present a certificate that host's client will trust. That means a local CA
|
|
6
|
-
* (installed into the OS trust store elsewhere) plus a leaf cert minted per host
|
|
7
|
-
* on demand. This module owns both, driven entirely by the `openssl` CLI so we
|
|
8
|
-
* carry ZERO npm crypto deps — Node built-ins + one well-known binary.
|
|
9
|
-
*
|
|
10
|
-
* On-disk layout (all under `agentDir()` from agentPaths.ts):
|
|
11
|
-
* ca-key.pem the CA private key (chmod 0600)
|
|
12
|
-
* ca-cert.pem the self-signed CA cert (~10y, installed into the trust store)
|
|
13
|
-
* certs/<host>.pem a combined leaf key+cert, cached per host
|
|
14
|
-
* plus an in-memory Map cache so a busy connection burst doesn't re-shell openssl.
|
|
15
|
-
*
|
|
16
|
-
* Privacy: certs are pure crypto material — no request content ever touches this
|
|
17
|
-
* module. Nothing here logs (callers surface results via log.ts).
|
|
18
|
-
*/
|
|
19
|
-
import { spawnSync } from 'node:child_process';
|
|
20
|
-
import { randomBytes } from 'node:crypto';
|
|
21
|
-
import { existsSync } from 'node:fs';
|
|
22
|
-
import { chmod, mkdir, mkdtemp, readFile, rm, writeFile, } from 'node:fs/promises';
|
|
23
|
-
import { join } from 'node:path';
|
|
24
|
-
import { agentDir, caCertPath, caKeyPath } from './agentPaths.js';
|
|
25
|
-
import { normalizeHost } from './agentAllowlist.js';
|
|
26
|
-
/** CA validity (~10 years) and leaf validity (~2 years), in days. */
|
|
27
|
-
const CA_DAYS = '3650';
|
|
28
|
-
const LEAF_DAYS = '730';
|
|
29
|
-
const KEY_BITS = '2048';
|
|
30
|
-
/** A host must match this to be MITM'd — belt to the allowlist's suspenders. */
|
|
31
|
-
const HOST_RE = /^[a-z0-9.-]+$/;
|
|
32
|
-
/** Whether the `openssl` CLI is on PATH and runnable. */
|
|
33
|
-
export const isOpensslAvailable = () => {
|
|
34
|
-
try {
|
|
35
|
-
return spawnSync('openssl', ['version']).status === 0;
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
/**
|
|
42
|
-
* Run openssl with an argument array (never a shell string — no injection).
|
|
43
|
-
* Throws a clear Error carrying openssl's stderr on any non-zero exit so the
|
|
44
|
-
* caller can surface it.
|
|
45
|
-
*/
|
|
46
|
-
const runOpenssl = (args) => {
|
|
47
|
-
const r = spawnSync('openssl', args, { encoding: 'utf8' });
|
|
48
|
-
if (r.error) {
|
|
49
|
-
throw new Error(`openssl (${args[0]}) could not be run: ${r.error.message}. ` +
|
|
50
|
-
'Install the OpenSSL CLI and re-run.');
|
|
51
|
-
}
|
|
52
|
-
if (r.status !== 0) {
|
|
53
|
-
const stderr = (r.stderr || '').trim();
|
|
54
|
-
throw new Error(`openssl ${args[0]} failed: ${stderr || `exit code ${r.status}`}`);
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
/**
|
|
58
|
-
* Ensure the device CA exists, generating it once if missing. Idempotent — when
|
|
59
|
-
* both key and cert are already present it just reads the cert back, never
|
|
60
|
-
* regenerating (so a re-run doesn't invalidate certs the trust store already
|
|
61
|
-
* accepted). The key file is written 0600.
|
|
62
|
-
*/
|
|
63
|
-
export const ensureCa = async () => {
|
|
64
|
-
if (!isOpensslAvailable()) {
|
|
65
|
-
throw new Error('The OpenSSL CLI was not found on PATH — the device agent needs it to ' +
|
|
66
|
-
'mint its local CA. Install openssl and re-run.');
|
|
67
|
-
}
|
|
68
|
-
const keyPath = caKeyPath();
|
|
69
|
-
const certPath = caCertPath();
|
|
70
|
-
await mkdir(agentDir(), { recursive: true });
|
|
71
|
-
if (existsSync(keyPath) && existsSync(certPath)) {
|
|
72
|
-
const certPem = await readFile(certPath, 'utf8');
|
|
73
|
-
return { keyPath, certPath, certPem };
|
|
74
|
-
}
|
|
75
|
-
runOpenssl(['genrsa', '-out', keyPath, KEY_BITS]);
|
|
76
|
-
await chmod(keyPath, 0o600);
|
|
77
|
-
runOpenssl([
|
|
78
|
-
'req',
|
|
79
|
-
'-x509',
|
|
80
|
-
'-new',
|
|
81
|
-
'-nodes',
|
|
82
|
-
'-key',
|
|
83
|
-
keyPath,
|
|
84
|
-
'-sha256',
|
|
85
|
-
'-days',
|
|
86
|
-
CA_DAYS,
|
|
87
|
-
'-out',
|
|
88
|
-
certPath,
|
|
89
|
-
'-subj',
|
|
90
|
-
'/CN=Anyray Device CA',
|
|
91
|
-
'-addext',
|
|
92
|
-
'basicConstraints=critical,CA:true',
|
|
93
|
-
'-addext',
|
|
94
|
-
'keyUsage=critical,keyCertSign,cRLSign',
|
|
95
|
-
]);
|
|
96
|
-
const certPem = await readFile(certPath, 'utf8');
|
|
97
|
-
return { keyPath, certPath, certPem };
|
|
98
|
-
};
|
|
99
|
-
/** In-memory cache keyed by normalized host — avoids re-shelling per connection. */
|
|
100
|
-
const memCache = new Map();
|
|
101
|
-
/** Make a host safe as a single path segment (defense-in-depth over HOST_RE). */
|
|
102
|
-
const sanitizeForFilename = (host) => host.replace(/[^a-z0-9.-]/gi, '_').replace(/\.\.+/g, '_') || 'host';
|
|
103
|
-
/** Split a combined `key + cert` PEM file back into its two blocks. */
|
|
104
|
-
const parseCombined = (pem) => {
|
|
105
|
-
const key = pem.match(/-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/)?.[0];
|
|
106
|
-
const cert = pem.match(/-----BEGIN CERTIFICATE-----[\s\S]*?-----END CERTIFICATE-----/)?.[0];
|
|
107
|
-
if (!key || !cert)
|
|
108
|
-
return null;
|
|
109
|
-
return { key: `${key}\n`, cert: `${cert}\n` };
|
|
110
|
-
};
|
|
111
|
-
/**
|
|
112
|
-
* Mint (or return a cached) leaf certificate for `host`, signed by the device
|
|
113
|
-
* CA. Idempotent and cached in memory + on disk. Rejects any host that isn't a
|
|
114
|
-
* plain DNS name (no path separators, no injection into the openssl args or the
|
|
115
|
-
* cache filename).
|
|
116
|
-
*/
|
|
117
|
-
export const mintLeaf = async (host) => {
|
|
118
|
-
const normalized = normalizeHost(host);
|
|
119
|
-
if (!normalized || !HOST_RE.test(normalized)) {
|
|
120
|
-
throw new Error(`Refusing to mint a leaf for an invalid host: ${JSON.stringify(host)}`);
|
|
121
|
-
}
|
|
122
|
-
const cached = memCache.get(normalized);
|
|
123
|
-
if (cached)
|
|
124
|
-
return cached;
|
|
125
|
-
const ca = await ensureCa();
|
|
126
|
-
const certsDir = join(agentDir(), 'certs');
|
|
127
|
-
await mkdir(certsDir, { recursive: true });
|
|
128
|
-
const cachePath = join(certsDir, `${sanitizeForFilename(normalized)}.pem`);
|
|
129
|
-
if (existsSync(cachePath)) {
|
|
130
|
-
const parsed = parseCombined(await readFile(cachePath, 'utf8'));
|
|
131
|
-
if (parsed) {
|
|
132
|
-
memCache.set(normalized, parsed);
|
|
133
|
-
return parsed;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
const work = await mkdtemp(join(agentDir(), 'mint-'));
|
|
137
|
-
try {
|
|
138
|
-
const keyFile = join(work, 'leaf-key.pem');
|
|
139
|
-
const csrFile = join(work, 'leaf.csr');
|
|
140
|
-
const certFile = join(work, 'leaf-cert.pem');
|
|
141
|
-
const extFile = join(work, 'leaf.ext');
|
|
142
|
-
runOpenssl(['genrsa', '-out', keyFile, KEY_BITS]);
|
|
143
|
-
runOpenssl([
|
|
144
|
-
'req',
|
|
145
|
-
'-new',
|
|
146
|
-
'-key',
|
|
147
|
-
keyFile,
|
|
148
|
-
'-out',
|
|
149
|
-
csrFile,
|
|
150
|
-
'-subj',
|
|
151
|
-
`/CN=${normalized}`,
|
|
152
|
-
]);
|
|
153
|
-
await writeFile(extFile, `subjectAltName=DNS:${normalized}\n` +
|
|
154
|
-
'basicConstraints=critical,CA:FALSE\n' +
|
|
155
|
-
'keyUsage=critical,digitalSignature,keyEncipherment\n' +
|
|
156
|
-
'extendedKeyUsage=serverAuth\n');
|
|
157
|
-
runOpenssl([
|
|
158
|
-
'x509',
|
|
159
|
-
'-req',
|
|
160
|
-
'-in',
|
|
161
|
-
csrFile,
|
|
162
|
-
'-CA',
|
|
163
|
-
ca.certPath,
|
|
164
|
-
'-CAkey',
|
|
165
|
-
ca.keyPath,
|
|
166
|
-
// A random per-leaf serial instead of `-CAcreateserial`: the latter
|
|
167
|
-
// writes/reads a shared `ca-cert.srl`, which two simultaneous first-time
|
|
168
|
-
// mints (a browser hitting chatgpt.com + claude.ai at once) can race,
|
|
169
|
-
// producing a spurious openssl error. `-set_serial` needs no shared file.
|
|
170
|
-
'-set_serial',
|
|
171
|
-
`0x${randomBytes(16).toString('hex')}`,
|
|
172
|
-
'-out',
|
|
173
|
-
certFile,
|
|
174
|
-
'-days',
|
|
175
|
-
LEAF_DAYS,
|
|
176
|
-
'-sha256',
|
|
177
|
-
'-extfile',
|
|
178
|
-
extFile,
|
|
179
|
-
]);
|
|
180
|
-
const key = (await readFile(keyFile, 'utf8')).trim();
|
|
181
|
-
const cert = (await readFile(certFile, 'utf8')).trim();
|
|
182
|
-
const leaf = { key: `${key}\n`, cert: `${cert}\n` };
|
|
183
|
-
await writeFile(cachePath, `${leaf.key}${leaf.cert}`, { mode: 0o600 });
|
|
184
|
-
memCache.set(normalized, leaf);
|
|
185
|
-
return leaf;
|
|
186
|
-
}
|
|
187
|
-
finally {
|
|
188
|
-
try {
|
|
189
|
-
await rm(work, { recursive: true, force: true });
|
|
190
|
-
}
|
|
191
|
-
catch {
|
|
192
|
-
/* best-effort temp cleanup */
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
};
|
|
196
|
-
/**
|
|
197
|
-
* Remove the whole agent directory (CA key/cert + leaf cache) and clear the
|
|
198
|
-
* in-memory cache. Best-effort — never throws (used by teardown / uninstall).
|
|
199
|
-
*/
|
|
200
|
-
export const removeCa = async () => {
|
|
201
|
-
memCache.clear();
|
|
202
|
-
try {
|
|
203
|
-
await rm(agentDir(), { recursive: true, force: true });
|
|
204
|
-
}
|
|
205
|
-
catch {
|
|
206
|
-
/* best-effort teardown */
|
|
207
|
-
}
|
|
208
|
-
};
|
|
209
|
-
//# sourceMappingURL=agentCa.js.map
|
package/dist/util/agentCa.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agentCa.js","sourceRoot":"","sources":["../../src/util/agentCa.ts"],"names":[],"mappings":"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"}
|
package/dist/util/agentPaths.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared constants + paths for the device-capture agent.
|
|
3
|
-
*
|
|
4
|
-
* One place for the agent's on-disk layout, service label, hidden entrypoint
|
|
5
|
-
* flag, default port, and the control headers it injects — so the daemon, the
|
|
6
|
-
* CA store, the trust/proxy wiring, the service supervisor, and the subcommand
|
|
7
|
-
* all agree. No I/O beyond path building.
|
|
8
|
-
*/
|
|
9
|
-
import { homedir } from 'node:os';
|
|
10
|
-
import { join } from 'node:path';
|
|
11
|
-
/** Hidden subcommand the OS service launches (routed in cli.ts). Mirrors the
|
|
12
|
-
* fallback proxy's `__anyray-fallback-proxy` pattern. */
|
|
13
|
-
export const AGENT_PROXY_FLAG = '__anyray-agent-proxy';
|
|
14
|
-
/** launchd/systemd service label. */
|
|
15
|
-
export const AGENT_SERVICE_LABEL = 'ai.anyray.connect.agent';
|
|
16
|
-
/** Default loopback port for the intercepting proxy (distinct from the gateway
|
|
17
|
-
* :8787, the fallback proxy :8785, and CP defaults). */
|
|
18
|
-
export const DEFAULT_AGENT_PORT = 8786;
|
|
19
|
-
/** `~/.anyray/agent` — the agent's private directory (CA key + certs live here). */
|
|
20
|
-
export const agentDir = () => join(homedir(), '.anyray', 'agent');
|
|
21
|
-
export const caKeyPath = () => join(agentDir(), 'ca-key.pem');
|
|
22
|
-
export const caCertPath = () => join(agentDir(), 'ca-cert.pem');
|
|
23
|
-
/** Where the captured prior system-proxy state is stashed for clean revert. */
|
|
24
|
-
export const proxyBackupPath = () => join(agentDir(), 'proxy-backup.json');
|
|
25
|
-
/**
|
|
26
|
-
* Control headers the agent injects when forwarding a decrypted AI request to
|
|
27
|
-
* the gateway's transparent intake. The gateway reads these; they never reach
|
|
28
|
-
* the upstream provider (the intake strips its own `x-anyray-*`).
|
|
29
|
-
*/
|
|
30
|
-
export const AGENT_HEADERS = {
|
|
31
|
-
/** Canonical `https://host` the gateway relays to. */
|
|
32
|
-
ORIGIN_HOST: 'x-anyray-origin-host',
|
|
33
|
-
/** The original request path+query the app sent (so the intake reconstructs the URL). */
|
|
34
|
-
ORIGIN_PATH: 'x-anyray-origin-path',
|
|
35
|
-
/** Content-free app label (chatgpt-desktop / claude-desktop / copilot / browser). */
|
|
36
|
-
APP: 'x-anyray-app',
|
|
37
|
-
};
|
|
38
|
-
//# sourceMappingURL=agentPaths.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agentPaths.js","sourceRoot":"","sources":["../../src/util/agentPaths.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;0DAC0D;AAC1D,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEvD,qCAAqC;AACrC,MAAM,CAAC,MAAM,mBAAmB,GAAG,yBAAyB,CAAC;AAE7D;yDACyD;AACzD,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEvC,oFAAoF;AACpF,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,SAAS,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,YAAY,CAAC,CAAC;AACtE,MAAM,CAAC,MAAM,UAAU,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,CAAC;AACxE,+EAA+E;AAC/E,MAAM,CAAC,MAAM,eAAe,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,mBAAmB,CAAC,CAAC;AAEnF;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,sDAAsD;IACtD,WAAW,EAAE,sBAAsB;IACnC,yFAAyF;IACzF,WAAW,EAAE,sBAAsB;IACnC,qFAAqF;IACrF,GAAG,EAAE,cAAc;CACX,CAAC"}
|
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Install / supervise the device-capture agent daemon as a login service so it's
|
|
3
|
-
* always running (it owns the system HTTPS proxy, so if it's down the machine
|
|
4
|
-
* can't reach the network the way the apps expect). macOS launchd + Linux
|
|
5
|
-
* `systemd --user`; anywhere else we print manual steps rather than write a unit
|
|
6
|
-
* that won't start. Best-effort throughout — connect ships as a Bun binary, so
|
|
7
|
-
* we invoke `process.execPath` directly.
|
|
8
|
-
*
|
|
9
|
-
* A near-copy of `proxyService.ts` but pointed at the agent (its own service
|
|
10
|
-
* label + hidden flag from `agentPaths.ts`). Only Node built-ins. The daemon
|
|
11
|
-
* command mirrors the hidden-mode pattern the Claude Code hook/MCP adapters
|
|
12
|
-
* already use (re-invoke this binary with a flag). Privacy invariant: this
|
|
13
|
-
* module never touches prompt/response content — it only wires the supervisor.
|
|
14
|
-
*/
|
|
15
|
-
import { homedir, platform } from 'node:os';
|
|
16
|
-
import { join } from 'node:path';
|
|
17
|
-
import { mkdir, writeFile, rm } from 'node:fs/promises';
|
|
18
|
-
import { spawnSync } from 'node:child_process';
|
|
19
|
-
import { isEphemeralBinaryPath } from '../tools/claudeCode.js';
|
|
20
|
-
import { AGENT_PROXY_FLAG, AGENT_SERVICE_LABEL } from './agentPaths.js';
|
|
21
|
-
export const launchctlInstallSucceeded = (bootstrapStatus, legacyLoadStatus) => bootstrapStatus === 0 ||
|
|
22
|
-
(bootstrapStatus !== 0 && legacyLoadStatus === 0);
|
|
23
|
-
/** The systemd unit filename (distinct from the fallback proxy's). */
|
|
24
|
-
const SYSTEMD_UNIT_NAME = 'anyray-agent.service';
|
|
25
|
-
/** How the OS service should launch the daemon (the durable binary + flag). */
|
|
26
|
-
const daemonInvocation = () => {
|
|
27
|
-
const exe = process.execPath;
|
|
28
|
-
const runsUnderNode = /[\\/](node|node\.exe)$/i.test(exe);
|
|
29
|
-
const script = process.argv[1];
|
|
30
|
-
const args = runsUnderNode && script ? [script, AGENT_PROXY_FLAG] : [AGENT_PROXY_FLAG];
|
|
31
|
-
return { command: exe, args };
|
|
32
|
-
};
|
|
33
|
-
/** The binary path that must stay durable for the service to keep working. */
|
|
34
|
-
const daemonBinaryPath = () => {
|
|
35
|
-
const exe = process.execPath;
|
|
36
|
-
const runsUnderNode = /[\\/](node|node\.exe)$/i.test(exe);
|
|
37
|
-
return runsUnderNode && process.argv[1] ? process.argv[1] : exe;
|
|
38
|
-
};
|
|
39
|
-
/** GET the agent's health endpoint; null when it isn't answering. */
|
|
40
|
-
export const probeAgentHealth = async (port, timeoutMs = 1500) => {
|
|
41
|
-
const controller = new AbortController();
|
|
42
|
-
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
43
|
-
try {
|
|
44
|
-
const res = await fetch(`http://127.0.0.1:${port}/__anyray/health`, {
|
|
45
|
-
signal: controller.signal,
|
|
46
|
-
});
|
|
47
|
-
if (!res.ok)
|
|
48
|
-
return null;
|
|
49
|
-
return (await res.json());
|
|
50
|
-
}
|
|
51
|
-
catch {
|
|
52
|
-
return null;
|
|
53
|
-
}
|
|
54
|
-
finally {
|
|
55
|
-
clearTimeout(timer);
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
const plistPath = () => join(homedir(), 'Library', 'LaunchAgents', `${AGENT_SERVICE_LABEL}.plist`);
|
|
59
|
-
const systemdPath = () => join(homedir(), '.config', 'systemd', 'user', SYSTEMD_UNIT_NAME);
|
|
60
|
-
const escapeXml = (s) => s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
|
61
|
-
export const buildAgentPlist = () => {
|
|
62
|
-
const { command, args } = daemonInvocation();
|
|
63
|
-
const argXml = [command, ...args]
|
|
64
|
-
.map((a) => ` <string>${escapeXml(a)}</string>`)
|
|
65
|
-
.join('\n');
|
|
66
|
-
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
67
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
68
|
-
<plist version="1.0">
|
|
69
|
-
<dict>
|
|
70
|
-
<key>Label</key><string>${AGENT_SERVICE_LABEL}</string>
|
|
71
|
-
<key>ProgramArguments</key>
|
|
72
|
-
<array>
|
|
73
|
-
${argXml}
|
|
74
|
-
</array>
|
|
75
|
-
<key>RunAtLoad</key><true/>
|
|
76
|
-
<key>KeepAlive</key><true/>
|
|
77
|
-
<key>ProcessType</key><string>Background</string>
|
|
78
|
-
</dict>
|
|
79
|
-
</plist>
|
|
80
|
-
`;
|
|
81
|
-
};
|
|
82
|
-
export const buildAgentSystemdUnit = () => {
|
|
83
|
-
const { command, args } = daemonInvocation();
|
|
84
|
-
const execStart = [command, ...args]
|
|
85
|
-
.map((a) => (/\s/.test(a) ? JSON.stringify(a) : a))
|
|
86
|
-
.join(' ');
|
|
87
|
-
return `[Unit]
|
|
88
|
-
Description=Anyray connect device-capture agent
|
|
89
|
-
After=network-online.target
|
|
90
|
-
|
|
91
|
-
[Service]
|
|
92
|
-
ExecStart=${execStart}
|
|
93
|
-
Restart=always
|
|
94
|
-
RestartSec=2
|
|
95
|
-
|
|
96
|
-
[Install]
|
|
97
|
-
WantedBy=default.target
|
|
98
|
-
`;
|
|
99
|
-
};
|
|
100
|
-
/** Manual instructions when there's no supported supervisor. */
|
|
101
|
-
const manualSteps = () => {
|
|
102
|
-
const { command, args } = daemonInvocation();
|
|
103
|
-
const cmd = [command, ...args]
|
|
104
|
-
.map((a) => (/\s/.test(a) ? JSON.stringify(a) : a))
|
|
105
|
-
.join(' ');
|
|
106
|
-
return [
|
|
107
|
-
'Auto-start is not wired for this OS. Run the capture agent yourself:',
|
|
108
|
-
` ${cmd}`,
|
|
109
|
-
'(keep it running in the background — it owns the system HTTPS proxy).',
|
|
110
|
-
];
|
|
111
|
-
};
|
|
112
|
-
/**
|
|
113
|
-
* Install + start the daemon as a login service. Best-effort: any failure returns
|
|
114
|
-
* ok:false with a message so the caller can warn without aborting the whole apply.
|
|
115
|
-
*/
|
|
116
|
-
export const installAgentService = async () => {
|
|
117
|
-
if (isEphemeralBinaryPath(daemonBinaryPath())) {
|
|
118
|
-
return {
|
|
119
|
-
ok: false,
|
|
120
|
-
messages: [
|
|
121
|
-
`Skipped agent auto-start — anyray-connect is running from a temporary path (${daemonBinaryPath()}).`,
|
|
122
|
-
'Install it durably (the installer persists it under ~/.anyray/bin) and re-run.',
|
|
123
|
-
],
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
const os = platform();
|
|
127
|
-
try {
|
|
128
|
-
if (os === 'darwin') {
|
|
129
|
-
const path = plistPath();
|
|
130
|
-
await mkdir(join(homedir(), 'Library', 'LaunchAgents'), {
|
|
131
|
-
recursive: true,
|
|
132
|
-
});
|
|
133
|
-
await writeFile(path, buildAgentPlist());
|
|
134
|
-
const uid = String(process.getuid?.() ?? '');
|
|
135
|
-
// bootout an old copy (ignore errors), then bootstrap the fresh one.
|
|
136
|
-
spawnSync('launchctl', ['bootout', `gui/${uid}`, path]);
|
|
137
|
-
const r = spawnSync('launchctl', ['bootstrap', `gui/${uid}`, path]);
|
|
138
|
-
let legacyStatus;
|
|
139
|
-
if (r.status !== 0) {
|
|
140
|
-
// Fall back to the legacy load verb on older macOS.
|
|
141
|
-
legacyStatus = spawnSync('launchctl', ['load', '-w', path]).status;
|
|
142
|
-
}
|
|
143
|
-
if (!launchctlInstallSucceeded(r.status, legacyStatus)) {
|
|
144
|
-
return {
|
|
145
|
-
ok: false,
|
|
146
|
-
messages: [
|
|
147
|
-
`Wrote ${path} but launchd could not load it.`,
|
|
148
|
-
...manualSteps(),
|
|
149
|
-
],
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
return { ok: true, messages: [`Installed launchd agent ${path}.`] };
|
|
153
|
-
}
|
|
154
|
-
if (os === 'linux') {
|
|
155
|
-
const path = systemdPath();
|
|
156
|
-
await mkdir(join(homedir(), '.config', 'systemd', 'user'), {
|
|
157
|
-
recursive: true,
|
|
158
|
-
});
|
|
159
|
-
await writeFile(path, buildAgentSystemdUnit());
|
|
160
|
-
spawnSync('systemctl', ['--user', 'daemon-reload']);
|
|
161
|
-
const r = spawnSync('systemctl', [
|
|
162
|
-
'--user',
|
|
163
|
-
'enable',
|
|
164
|
-
'--now',
|
|
165
|
-
SYSTEMD_UNIT_NAME,
|
|
166
|
-
]);
|
|
167
|
-
if (r.status !== 0) {
|
|
168
|
-
return {
|
|
169
|
-
ok: false,
|
|
170
|
-
messages: [
|
|
171
|
-
`Wrote ${path} but \`systemctl --user enable --now\` failed.`,
|
|
172
|
-
...manualSteps(),
|
|
173
|
-
],
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
return { ok: true, messages: [`Installed systemd user unit ${path}.`] };
|
|
177
|
-
}
|
|
178
|
-
return { ok: false, messages: manualSteps() };
|
|
179
|
-
}
|
|
180
|
-
catch (error) {
|
|
181
|
-
return {
|
|
182
|
-
ok: false,
|
|
183
|
-
messages: [
|
|
184
|
-
`Could not install the capture agent service: ${error instanceof Error ? error.message : String(error)}`,
|
|
185
|
-
...manualSteps(),
|
|
186
|
-
],
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
};
|
|
190
|
-
/** Stop + remove the daemon service. Best-effort; safe to call when absent. */
|
|
191
|
-
export const uninstallAgentService = async () => {
|
|
192
|
-
const os = platform();
|
|
193
|
-
const messages = [];
|
|
194
|
-
try {
|
|
195
|
-
if (os === 'darwin') {
|
|
196
|
-
const path = plistPath();
|
|
197
|
-
const uid = String(process.getuid?.() ?? '');
|
|
198
|
-
spawnSync('launchctl', ['bootout', `gui/${uid}`, path]);
|
|
199
|
-
spawnSync('launchctl', ['unload', path]);
|
|
200
|
-
await rm(path, { force: true });
|
|
201
|
-
messages.push('Removed the launchd capture agent.');
|
|
202
|
-
}
|
|
203
|
-
else if (os === 'linux') {
|
|
204
|
-
spawnSync('systemctl', ['--user', 'disable', '--now', SYSTEMD_UNIT_NAME]);
|
|
205
|
-
await rm(systemdPath(), { force: true });
|
|
206
|
-
spawnSync('systemctl', ['--user', 'daemon-reload']);
|
|
207
|
-
messages.push('Removed the systemd capture agent unit.');
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
catch {
|
|
211
|
-
/* best-effort teardown */
|
|
212
|
-
}
|
|
213
|
-
return { ok: true, messages };
|
|
214
|
-
};
|
|
215
|
-
//# sourceMappingURL=agentService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agentService.js","sourceRoot":"","sources":["../../src/util/agentService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAOxE,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,eAA8B,EAC9B,gBAAgC,EACvB,EAAE,CACX,eAAe,KAAK,CAAC;IACrB,CAAC,eAAe,KAAK,CAAC,IAAI,gBAAgB,KAAK,CAAC,CAAC,CAAC;AAEpD,sEAAsE;AACtE,MAAM,iBAAiB,GAAG,sBAAsB,CAAC;AAEjD,+EAA+E;AAC/E,MAAM,gBAAgB,GAAG,GAAwC,EAAE;IACjE,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC7B,MAAM,aAAa,GAAG,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,IAAI,GACR,aAAa,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5E,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF,8EAA8E;AAC9E,MAAM,gBAAgB,GAAG,GAAW,EAAE;IACpC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC7B,MAAM,aAAa,GAAG,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1D,OAAO,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAClE,CAAC,CAAC;AAEF,qEAAqE;AACrE,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,IAAY,EACZ,SAAS,GAAG,IAAI,EACyB,EAAE;IAC3C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,kBAAkB,EAAE;YAClE,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACzB,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA4B,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,GAAW,EAAE,CAC7B,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,mBAAmB,QAAQ,CAAC,CAAC;AAE7E,MAAM,WAAW,GAAG,GAAW,EAAE,CAC/B,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAEnE,MAAM,SAAS,GAAG,CAAC,CAAS,EAAU,EAAE,CACtC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAEvE,MAAM,CAAC,MAAM,eAAe,GAAG,GAAW,EAAE;IAC1C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;SAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;SAClD,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO;;;;4BAImB,mBAAmB;;;EAG7C,MAAM;;;;;;;CAOP,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAW,EAAE;IAChD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC7C,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;SACjC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAClD,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,OAAO;;;;;YAKG,SAAS;;;;;;CAMpB,CAAC;AACF,CAAC,CAAC;AAEF,gEAAgE;AAChE,MAAM,WAAW,GAAG,GAAa,EAAE;IACjC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC7C,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAClD,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,OAAO;QACL,sEAAsE;QACtE,KAAK,GAAG,EAAE;QACV,uEAAuE;KACxE,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,IAA4B,EAAE;IACpE,IAAI,qBAAqB,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC;QAC9C,OAAO;YACL,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE;gBACR,+EAA+E,gBAAgB,EAAE,IAAI;gBACrG,gFAAgF;aACjF;SACF,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtB,IAAI,CAAC;QACH,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;YACzB,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE;gBACtD,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,MAAM,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;YACzC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,qEAAqE;YACrE,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,OAAO,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;YACxD,MAAM,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,OAAO,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;YACpE,IAAI,YAAuC,CAAC;YAC5C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnB,oDAAoD;gBACpD,YAAY,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YACrE,CAAC;YACD,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC;gBACvD,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,QAAQ,EAAE;wBACR,SAAS,IAAI,iCAAiC;wBAC9C,GAAG,WAAW,EAAE;qBACjB;iBACF,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,2BAA2B,IAAI,GAAG,CAAC,EAAE,CAAC;QACtE,CAAC;QACD,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;YAC3B,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE;gBACzD,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YACH,MAAM,SAAS,CAAC,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;YAC/C,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;YACpD,MAAM,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE;gBAC/B,QAAQ;gBACR,QAAQ;gBACR,OAAO;gBACP,iBAAiB;aAClB,CAAC,CAAC;YACH,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnB,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,QAAQ,EAAE;wBACR,SAAS,IAAI,gDAAgD;wBAC7D,GAAG,WAAW,EAAE;qBACjB;iBACF,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,+BAA+B,IAAI,GAAG,CAAC,EAAE,CAAC;QAC1E,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE;gBACR,gDACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE;gBACF,GAAG,WAAW,EAAE;aACjB;SACF,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,IAA4B,EAAE;IACtE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,CAAC;QACH,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,OAAO,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;YACxD,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;YACzC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAChC,QAAQ,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACtD,CAAC;aAAM,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;YAC1B,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC;YAC1E,MAAM,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;YACpD,QAAQ,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,0BAA0B;IAC5B,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC,CAAC"}
|