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.
Files changed (38) hide show
  1. package/README.md +7 -56
  2. package/dist/cli.js +117 -23
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/doctor.js +31 -0
  5. package/dist/commands/doctor.js.map +1 -1
  6. package/dist/tools/claudeCode.js +43 -14
  7. package/dist/tools/claudeCode.js.map +1 -1
  8. package/dist/tools/codex.js +12 -4
  9. package/dist/tools/codex.js.map +1 -1
  10. package/dist/tools/copilotChat.js +8 -6
  11. package/dist/tools/copilotChat.js.map +1 -1
  12. package/dist/tools/manual.js +26 -5
  13. package/dist/tools/manual.js.map +1 -1
  14. package/dist/tools/opencode.js +7 -5
  15. package/dist/tools/opencode.js.map +1 -1
  16. package/dist/tools/shellEnv.js +43 -1
  17. package/dist/tools/shellEnv.js.map +1 -1
  18. package/dist/util/jsonFile.js +43 -5
  19. package/dist/util/jsonFile.js.map +1 -1
  20. package/dist/util/persist.js +61 -0
  21. package/dist/util/persist.js.map +1 -1
  22. package/dist/util/profile.js +8 -0
  23. package/dist/util/profile.js.map +1 -1
  24. package/package.json +1 -1
  25. package/dist/commands/agent.js +0 -347
  26. package/dist/commands/agent.js.map +0 -1
  27. package/dist/commands/agentProxy.js +0 -670
  28. package/dist/commands/agentProxy.js.map +0 -1
  29. package/dist/util/agentAllowlist.js +0 -107
  30. package/dist/util/agentAllowlist.js.map +0 -1
  31. package/dist/util/agentCa.js +0 -209
  32. package/dist/util/agentCa.js.map +0 -1
  33. package/dist/util/agentPaths.js +0 -38
  34. package/dist/util/agentPaths.js.map +0 -1
  35. package/dist/util/agentService.js +0 -215
  36. package/dist/util/agentService.js.map +0 -1
  37. package/dist/util/agentTrust.js +0 -517
  38. 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"}
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"agentCa.js","sourceRoot":"","sources":["../../src/util/agentCa.ts"],"names":[],"mappings":"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"}
@@ -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, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
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":"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"}