@intutic/cli 2.0.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +131 -130
- package/dist/cli.js.map +1 -1
- package/dist/commands/attenuate.d.ts.map +1 -1
- package/dist/commands/attenuate.js +4 -2
- package/dist/commands/attenuate.js.map +1 -1
- package/dist/commands/budget.d.ts.map +1 -1
- package/dist/commands/budget.js +2 -2
- package/dist/commands/budget.js.map +1 -1
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +138 -49
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/disconnect.d.ts +25 -0
- package/dist/commands/disconnect.d.ts.map +1 -0
- package/dist/commands/disconnect.js +252 -0
- package/dist/commands/disconnect.js.map +1 -0
- package/dist/commands/doctor.d.ts +19 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +33 -41
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/enforce.d.ts +10 -0
- package/dist/commands/enforce.d.ts.map +1 -1
- package/dist/commands/enforce.js +36 -0
- package/dist/commands/enforce.js.map +1 -1
- package/dist/commands/env.d.ts +1 -1
- package/dist/commands/env.d.ts.map +1 -1
- package/dist/commands/env.js +2 -7
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/exec.d.ts +7 -8
- package/dist/commands/exec.d.ts.map +1 -1
- package/dist/commands/exec.js +59 -60
- package/dist/commands/exec.js.map +1 -1
- package/dist/commands/gateway.d.ts +2 -0
- package/dist/commands/gateway.d.ts.map +1 -1
- package/dist/commands/gateway.js +16 -3
- package/dist/commands/gateway.js.map +1 -1
- package/dist/commands/guardrails.d.ts.map +1 -1
- package/dist/commands/guardrails.js +18 -1
- package/dist/commands/guardrails.js.map +1 -1
- package/dist/commands/init.d.ts +5 -2
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +38 -22
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install-daemon.d.ts +1 -1
- package/dist/commands/install-daemon.d.ts.map +1 -1
- package/dist/commands/install-daemon.js +5 -3
- package/dist/commands/install-daemon.js.map +1 -1
- package/dist/commands/integrity.d.ts +31 -2
- package/dist/commands/integrity.d.ts.map +1 -1
- package/dist/commands/integrity.js +116 -3
- package/dist/commands/integrity.js.map +1 -1
- package/dist/commands/judge.d.ts +8 -4
- package/dist/commands/judge.d.ts.map +1 -1
- package/dist/commands/judge.js +41 -21
- package/dist/commands/judge.js.map +1 -1
- package/dist/commands/login.d.ts +1 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +16 -1
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/predict-cost.d.ts +1 -2
- package/dist/commands/predict-cost.d.ts.map +1 -1
- package/dist/commands/predict-cost.js +1 -4
- package/dist/commands/predict-cost.js.map +1 -1
- package/dist/commands/setup.d.ts +1 -2
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +11 -68
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/skill.d.ts +1 -0
- package/dist/commands/skill.d.ts.map +1 -1
- package/dist/commands/skill.js +17 -3
- package/dist/commands/skill.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +5 -1
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/syncContext.d.ts.map +1 -1
- package/dist/commands/syncContext.js +15 -5
- package/dist/commands/syncContext.js.map +1 -1
- package/dist/config/paths.d.ts +25 -3
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +47 -7
- package/dist/config/paths.js.map +1 -1
- package/dist/harness/agentFramework.d.ts +25 -0
- package/dist/harness/agentFramework.d.ts.map +1 -0
- package/dist/harness/agentFramework.js +37 -0
- package/dist/harness/agentFramework.js.map +1 -0
- package/dist/harness/agentcore.d.ts +6 -3
- package/dist/harness/agentcore.d.ts.map +1 -1
- package/dist/harness/agentcore.js +7 -4
- package/dist/harness/agentcore.js.map +1 -1
- package/dist/harness/agenticOrchestrator.d.ts +3 -5
- package/dist/harness/agenticOrchestrator.d.ts.map +1 -1
- package/dist/harness/agenticOrchestrator.js +3 -5
- package/dist/harness/agenticOrchestrator.js.map +1 -1
- package/dist/harness/aiSdkHarness.d.ts +1 -1
- package/dist/harness/aiSdkHarness.js +1 -1
- package/dist/harness/aiSdkWorkflow.d.ts +1 -1
- package/dist/harness/aiSdkWorkflow.d.ts.map +1 -1
- package/dist/harness/aiSdkWorkflow.js +5 -3
- package/dist/harness/aiSdkWorkflow.js.map +1 -1
- package/dist/harness/aider.d.ts +4 -3
- package/dist/harness/aider.d.ts.map +1 -1
- package/dist/harness/aider.js +7 -6
- package/dist/harness/aider.js.map +1 -1
- package/dist/harness/antigravity.d.ts +4 -2
- package/dist/harness/antigravity.d.ts.map +1 -1
- package/dist/harness/antigravity.js +15 -12
- package/dist/harness/antigravity.js.map +1 -1
- package/dist/harness/base.d.ts +5 -1
- package/dist/harness/base.d.ts.map +1 -1
- package/dist/harness/base.js +9 -8
- package/dist/harness/base.js.map +1 -1
- package/dist/harness/cline.d.ts +10 -4
- package/dist/harness/cline.d.ts.map +1 -1
- package/dist/harness/cline.js +40 -32
- package/dist/harness/cline.js.map +1 -1
- package/dist/harness/codex.d.ts +10 -4
- package/dist/harness/codex.d.ts.map +1 -1
- package/dist/harness/codex.js +30 -32
- package/dist/harness/codex.js.map +1 -1
- package/dist/harness/continue.d.ts +8 -5
- package/dist/harness/continue.d.ts.map +1 -1
- package/dist/harness/continue.js +27 -63
- package/dist/harness/continue.js.map +1 -1
- package/dist/harness/cursor.d.ts.map +1 -1
- package/dist/harness/cursor.js +2 -6
- package/dist/harness/cursor.js.map +1 -1
- package/dist/harness/detector.d.ts +1 -1
- package/dist/harness/detector.d.ts.map +1 -1
- package/dist/harness/detector.js +3 -1
- package/dist/harness/detector.js.map +1 -1
- package/dist/harness/dsh.d.ts +2 -2
- package/dist/harness/dsh.js +3 -3
- package/dist/harness/dsh.js.map +1 -1
- package/dist/harness/eve.d.ts +1 -1
- package/dist/harness/eve.js +1 -1
- package/dist/harness/githubCopilot.d.ts +4 -2
- package/dist/harness/githubCopilot.d.ts.map +1 -1
- package/dist/harness/githubCopilot.js +13 -8
- package/dist/harness/githubCopilot.js.map +1 -1
- package/dist/harness/grok.d.ts.map +1 -1
- package/dist/harness/grok.js +4 -6
- package/dist/harness/grok.js.map +1 -1
- package/dist/harness/jsSdkGatedAdapter.d.ts.map +1 -1
- package/dist/harness/jsSdkGatedAdapter.js +8 -9
- package/dist/harness/jsSdkGatedAdapter.js.map +1 -1
- package/dist/harness/langgraph.d.ts.map +1 -1
- package/dist/harness/langgraph.js +8 -10
- package/dist/harness/langgraph.js.map +1 -1
- package/dist/harness/muse.d.ts.map +1 -1
- package/dist/harness/muse.js +4 -6
- package/dist/harness/muse.js.map +1 -1
- package/dist/harness/n8n.d.ts +12 -2
- package/dist/harness/n8n.d.ts.map +1 -1
- package/dist/harness/n8n.js +66 -3
- package/dist/harness/n8n.js.map +1 -1
- package/dist/harness/openWebUI.d.ts +7 -2
- package/dist/harness/openWebUI.d.ts.map +1 -1
- package/dist/harness/openWebUI.js +15 -4
- package/dist/harness/openWebUI.js.map +1 -1
- package/dist/harness/openaiAgents.d.ts.map +1 -1
- package/dist/harness/openaiAgents.js +4 -1
- package/dist/harness/openaiAgents.js.map +1 -1
- package/dist/harness/opencode.d.ts +3 -2
- package/dist/harness/opencode.d.ts.map +1 -1
- package/dist/harness/opencode.js +7 -8
- package/dist/harness/opencode.js.map +1 -1
- package/dist/harness/openhands.d.ts +3 -2
- package/dist/harness/openhands.d.ts.map +1 -1
- package/dist/harness/openhands.js +40 -27
- package/dist/harness/openhands.js.map +1 -1
- package/dist/harness/rooCode.d.ts +6 -5
- package/dist/harness/rooCode.d.ts.map +1 -1
- package/dist/harness/rooCode.js +13 -18
- package/dist/harness/rooCode.js.map +1 -1
- package/dist/harness/sdkGatedAdapter.d.ts.map +1 -1
- package/dist/harness/sdkGatedAdapter.js +8 -9
- package/dist/harness/sdkGatedAdapter.js.map +1 -1
- package/dist/harness/trueforge.js +2 -2
- package/dist/harness/trueforge.js.map +1 -1
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/harness/types.js +4 -1
- package/dist/harness/types.js.map +1 -1
- package/dist/harness/windsurf.d.ts +4 -2
- package/dist/harness/windsurf.d.ts.map +1 -1
- package/dist/harness/windsurf.js +14 -11
- package/dist/harness/windsurf.js.map +1 -1
- package/dist/harness/xirp.d.ts +5 -7
- package/dist/harness/xirp.d.ts.map +1 -1
- package/dist/harness/xirp.js +5 -7
- package/dist/harness/xirp.js.map +1 -1
- package/dist/lib/envInjector.d.ts +16 -6
- package/dist/lib/envInjector.d.ts.map +1 -1
- package/dist/lib/envInjector.js +99 -88
- package/dist/lib/envInjector.js.map +1 -1
- package/dist/lib/localProxy.d.ts +19 -0
- package/dist/lib/localProxy.d.ts.map +1 -0
- package/dist/lib/localProxy.js +33 -0
- package/dist/lib/localProxy.js.map +1 -0
- package/dist/lib/onboarding.d.ts +1 -1
- package/dist/lib/onboarding.d.ts.map +1 -1
- package/dist/lib/onboarding.js +21 -27
- package/dist/lib/onboarding.js.map +1 -1
- package/dist/lib/otelPropagation.d.ts +1 -1
- package/dist/lib/otelPropagation.js +1 -1
- package/dist/lib/policySnapshot.d.ts +2 -1
- package/dist/lib/policySnapshot.d.ts.map +1 -1
- package/dist/lib/policySnapshot.js +11 -4
- package/dist/lib/policySnapshot.js.map +1 -1
- package/dist/lib/sandbox/image.d.ts +27 -0
- package/dist/lib/sandbox/image.d.ts.map +1 -0
- package/dist/lib/sandbox/image.js +54 -0
- package/dist/lib/sandbox/image.js.map +1 -0
- package/dist/lib/sandbox/oci.d.ts +1 -0
- package/dist/lib/sandbox/oci.d.ts.map +1 -1
- package/dist/lib/sandbox/oci.js +4 -0
- package/dist/lib/sandbox/oci.js.map +1 -1
- package/dist/lib/sandbox/types.d.ts +5 -0
- package/dist/lib/sandbox/types.d.ts.map +1 -1
- package/package.json +6 -5
- package/resources/sandbox/Dockerfile +30 -0
- package/resources/sandbox/entrypoint.sh +108 -0
- package/resources/sandbox/firecracker-launch.sh +120 -0
- package/dist/harness/vscodeSettingsWriter.d.ts +0 -40
- package/dist/harness/vscodeSettingsWriter.d.ts.map +0 -1
- package/dist/harness/vscodeSettingsWriter.js +0 -116
- package/dist/harness/vscodeSettingsWriter.js.map +0 -1
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `intutic disconnect` — undo what `intutic connect` set up on this machine.
|
|
3
|
+
*
|
|
4
|
+
* Every harness config connect wrote is put back (see
|
|
5
|
+
* `@intutic/sync-daemon`'s `planDisconnect` for the files), and on a full
|
|
6
|
+
* disconnect the machine-level pieces go too: the background services, the
|
|
7
|
+
* Intutic CA connect trusted in the login keychain, the Valkey container it
|
|
8
|
+
* started, the gate caches and, unless `--keep-login`, the stored
|
|
9
|
+
* credentials.
|
|
10
|
+
*
|
|
11
|
+
* Everything is planned before anything changes, so `--dry-run` prints
|
|
12
|
+
* exactly what a real run does. Running connect would write it all straight
|
|
13
|
+
* back, so a real run stops the services first and refuses while another
|
|
14
|
+
* `intutic connect` is still running.
|
|
15
|
+
*
|
|
16
|
+
* @module
|
|
17
|
+
*/
|
|
18
|
+
import * as node_fs from 'node:fs/promises';
|
|
19
|
+
import * as node_path from 'node:path';
|
|
20
|
+
import * as node_os from 'node:os';
|
|
21
|
+
import { X509Certificate } from 'node:crypto';
|
|
22
|
+
import { execFileSync } from 'node:child_process';
|
|
23
|
+
import { DisconnectPlan, planDisconnect, HARNESS_REVERSERS } from '@intutic/sync-daemon';
|
|
24
|
+
import { HarnessType } from '@intutic/shared-types';
|
|
25
|
+
import { log } from '../lib/logger.js';
|
|
26
|
+
import { clearCredentials, loadConfig, saveConfig } from '../config/store.js';
|
|
27
|
+
import { getCredentialsPath, getIntuticDir } from '../config/paths.js';
|
|
28
|
+
import { getServicePaths, uninstallDaemon, uninstallMcpDaemon, uninstallProxyService } from './install-daemon.js';
|
|
29
|
+
import { planN8nDisconnect } from '../harness/n8n.js';
|
|
30
|
+
const SERVICE_UNINSTALL = {
|
|
31
|
+
sync: () => uninstallDaemon(),
|
|
32
|
+
mcp: () => uninstallMcpDaemon(),
|
|
33
|
+
proxy: () => uninstallProxyService(),
|
|
34
|
+
};
|
|
35
|
+
/** The workspaces to clean: the one `intutic init` recorded, and the current one if connect wrote into it. */
|
|
36
|
+
async function workspaceRoots(config) {
|
|
37
|
+
const roots = new Set();
|
|
38
|
+
if (config?.workspaceRoot)
|
|
39
|
+
roots.add(config.workspaceRoot);
|
|
40
|
+
try {
|
|
41
|
+
const top = execFileSync('git', ['rev-parse', '--show-toplevel'], { encoding: 'utf-8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();
|
|
42
|
+
await node_fs.access(node_path.join(top, '.intutic'));
|
|
43
|
+
roots.add(top);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// Not in a repository, or not one connect wrote into.
|
|
47
|
+
}
|
|
48
|
+
return [...roots];
|
|
49
|
+
}
|
|
50
|
+
/** Services `intutic daemon install` set up for this user; a system-level one needs root and is only reported. */
|
|
51
|
+
async function planServices(plan) {
|
|
52
|
+
for (const target of Object.keys(SERVICE_UNINSTALL)) {
|
|
53
|
+
const user = getServicePaths(false, target);
|
|
54
|
+
try {
|
|
55
|
+
await node_fs.access(user.targetPath);
|
|
56
|
+
plan.change(user.targetPath, `stop and remove the ${user.label} service`, SERVICE_UNINSTALL[target]);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// Not installed for this user.
|
|
60
|
+
}
|
|
61
|
+
const system = getServicePaths(true, target);
|
|
62
|
+
try {
|
|
63
|
+
await node_fs.access(system.targetPath);
|
|
64
|
+
plan.note(system.targetPath, `a system-wide service; remove it with \`sudo intutic daemon uninstall --system${target === 'sync' ? '' : ` --${target}`}\``);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// Not installed system-wide.
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The Intutic CA connect trusts in the macOS login keychain when the proxy's
|
|
73
|
+
* certificate is not trusted yet. The administrator's machine-wide install
|
|
74
|
+
* trusts it in the System keychain instead, so a copy in the login keychain
|
|
75
|
+
* is connect's.
|
|
76
|
+
*/
|
|
77
|
+
async function planCaTrust(plan) {
|
|
78
|
+
const certPath = node_path.join(getIntuticDir(), 'ca.crt');
|
|
79
|
+
let sha1;
|
|
80
|
+
try {
|
|
81
|
+
sha1 = new X509Certificate(await node_fs.readFile(certPath)).fingerprint.replace(/:/g, '');
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (process.platform === 'darwin') {
|
|
87
|
+
const keychain = node_path.join(node_os.homedir(), 'Library', 'Keychains', 'login.keychain-db');
|
|
88
|
+
let listed;
|
|
89
|
+
try {
|
|
90
|
+
listed = execFileSync('security', ['find-certificate', '-a', '-Z', keychain], { encoding: 'utf-8', stdio: ['ignore', 'pipe', 'ignore'] });
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if (!listed.toUpperCase().includes(sha1.toUpperCase()))
|
|
96
|
+
return;
|
|
97
|
+
plan.change(keychain, 'remove the Intutic CA certificate connect trusted', async () => {
|
|
98
|
+
try {
|
|
99
|
+
execFileSync('security', ['remove-trusted-cert', '-d', certPath], { stdio: 'ignore' });
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
// No admin trust setting left for it: the certificate removal below is what matters.
|
|
103
|
+
}
|
|
104
|
+
execFileSync('security', ['delete-certificate', '-Z', sha1, keychain], { stdio: 'ignore' });
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
else if (process.platform === 'win32') {
|
|
108
|
+
plan.note('Root certificate store', `connect may have added the Intutic CA (thumbprint ${sha1}); unless an administrator's machine-wide install put it there, remove it with \`certutil -delstore Root ${sha1}\``);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/** The Valkey container connect starts when nothing answers on 6379. */
|
|
112
|
+
function planValkeyContainer(plan) {
|
|
113
|
+
let name;
|
|
114
|
+
try {
|
|
115
|
+
name = execFileSync('docker', ['ps', '-a', '--filter', 'name=^/intutic-valkey$', '--format', '{{.Names}}'], {
|
|
116
|
+
encoding: 'utf-8',
|
|
117
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
118
|
+
timeout: 10_000,
|
|
119
|
+
}).trim();
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
if (name !== 'intutic-valkey')
|
|
125
|
+
return;
|
|
126
|
+
plan.change('docker container intutic-valkey', 'stop and remove the Valkey container connect started', async () => {
|
|
127
|
+
execFileSync('docker', ['rm', '-f', 'intutic-valkey'], { stdio: 'ignore' });
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
/** `~/.intutic/config.json`: a later connect must rewrite everything, and must leave a disconnected harness alone. */
|
|
131
|
+
function planConfig(plan, config, harness) {
|
|
132
|
+
if (!config)
|
|
133
|
+
return;
|
|
134
|
+
const file = node_path.join(getIntuticDir(), 'config.json');
|
|
135
|
+
if (harness === undefined) {
|
|
136
|
+
if (config.configVersion === 0 && config.disconnectedHarnesses === undefined)
|
|
137
|
+
return;
|
|
138
|
+
plan.change(file, 'reset the synced config version, so `intutic connect` writes everything again', async () => {
|
|
139
|
+
saveConfig({ ...config, configVersion: 0, disconnectedHarnesses: undefined });
|
|
140
|
+
});
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
const id = harness;
|
|
144
|
+
if (!config.harnesses.includes(id) && config.disconnectedHarnesses?.includes(id))
|
|
145
|
+
return;
|
|
146
|
+
plan.change(file, `stop connect managing ${harness} (\`intutic init\` adds it back)`, async () => {
|
|
147
|
+
saveConfig({
|
|
148
|
+
...config,
|
|
149
|
+
harnesses: config.harnesses.filter((h) => h !== id),
|
|
150
|
+
disconnectedHarnesses: [...new Set([...(config.disconnectedHarnesses ?? []), id])],
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
/** PIDs of `intutic connect` processes other than this one. */
|
|
155
|
+
function runningConnects() {
|
|
156
|
+
if (process.platform === 'win32')
|
|
157
|
+
return [];
|
|
158
|
+
let out;
|
|
159
|
+
try {
|
|
160
|
+
out = execFileSync('ps', ['-axo', 'pid=,command='], { encoding: 'utf-8', stdio: ['ignore', 'pipe', 'ignore'] });
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
return [];
|
|
164
|
+
}
|
|
165
|
+
return out
|
|
166
|
+
.split('\n')
|
|
167
|
+
.map((line) => /^\s*(\d+)\s+(.*)$/.exec(line))
|
|
168
|
+
.filter((m) => m !== null)
|
|
169
|
+
.filter(([, pid, command]) => Number(pid) !== process.pid && /(?:^|[\\/\s])intutic(?:\.js|\.cjs|\.mjs)?\s+connect\b|cli\.js\s+connect\b/.test(command))
|
|
170
|
+
.map(([, pid]) => Number(pid));
|
|
171
|
+
}
|
|
172
|
+
function show(p) {
|
|
173
|
+
const home = node_os.homedir();
|
|
174
|
+
return p === home || p.startsWith(home + node_path.sep) ? `~${p.slice(home.length)}` : p;
|
|
175
|
+
}
|
|
176
|
+
function printPlan(plans, dryRun) {
|
|
177
|
+
const changes = plans.flatMap((p) => p.visible());
|
|
178
|
+
const notes = plans.flatMap((p) => p.notes);
|
|
179
|
+
if (changes.length === 0) {
|
|
180
|
+
log.info('Nothing to undo: no Intutic changes were found.');
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
log.header(dryRun ? 'intutic disconnect would:' : 'intutic disconnect will:');
|
|
184
|
+
for (const c of changes)
|
|
185
|
+
console.log(` ${c.describe}: ${show(c.path)}`);
|
|
186
|
+
}
|
|
187
|
+
if (notes.length > 0) {
|
|
188
|
+
log.header('Left as they are:');
|
|
189
|
+
for (const n of notes)
|
|
190
|
+
console.log(` ${show(n.path)}: ${n.message}`);
|
|
191
|
+
}
|
|
192
|
+
return changes.length;
|
|
193
|
+
}
|
|
194
|
+
export async function runDisconnect(opts) {
|
|
195
|
+
// Every harness id is accepted; one connect writes nothing for has nothing to undo.
|
|
196
|
+
const known = [...new Set([...Object.values(HarnessType), ...Object.keys(HARNESS_REVERSERS)])];
|
|
197
|
+
if (opts.harness !== undefined && !known.includes(opts.harness)) {
|
|
198
|
+
log.error(`Unknown harness "${opts.harness}". Known harnesses: ${known.sort().join(', ')}`);
|
|
199
|
+
process.exitCode = 1;
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
const full = opts.harness === undefined;
|
|
203
|
+
const config = loadConfig();
|
|
204
|
+
// Services first: while one runs, connect would write the files straight back.
|
|
205
|
+
const services = new DisconnectPlan();
|
|
206
|
+
if (full)
|
|
207
|
+
await planServices(services);
|
|
208
|
+
const files = await planDisconnect({
|
|
209
|
+
workspaceRoots: await workspaceRoots(config),
|
|
210
|
+
harnesses: full ? undefined : [opts.harness],
|
|
211
|
+
remaining: full ? [] : (config?.harnesses ?? []).filter((h) => h !== opts.harness),
|
|
212
|
+
});
|
|
213
|
+
if (config?.harnesses.includes('n8n') && (full || opts.harness === 'n8n'))
|
|
214
|
+
await planN8nDisconnect(files);
|
|
215
|
+
const machine = new DisconnectPlan();
|
|
216
|
+
if (full) {
|
|
217
|
+
await planCaTrust(machine);
|
|
218
|
+
planValkeyContainer(machine);
|
|
219
|
+
}
|
|
220
|
+
planConfig(machine, config, opts.harness);
|
|
221
|
+
if (full && !opts.keepLogin) {
|
|
222
|
+
try {
|
|
223
|
+
await node_fs.access(getCredentialsPath());
|
|
224
|
+
machine.change(getCredentialsPath(), 'log out (remove the stored credentials and keychain entry)', clearCredentials);
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
// Not logged in.
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
const count = printPlan([services, files, machine], Boolean(opts.dryRun));
|
|
231
|
+
const others = runningConnects();
|
|
232
|
+
if (opts.dryRun) {
|
|
233
|
+
if (others.length > 0)
|
|
234
|
+
log.warn(`intutic connect is running (pid ${others.join(', ')}); stop it before a real run, or it writes everything back.`);
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
if (count === 0)
|
|
238
|
+
return;
|
|
239
|
+
await services.apply();
|
|
240
|
+
const still = runningConnects();
|
|
241
|
+
if (still.length > 0) {
|
|
242
|
+
log.error(`intutic connect is still running (pid ${still.join(', ')}) and would write everything back. Stop it, then run intutic disconnect again.`);
|
|
243
|
+
process.exitCode = 1;
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
await files.apply();
|
|
247
|
+
await machine.apply();
|
|
248
|
+
log.success(full
|
|
249
|
+
? 'Disconnected. Run `intutic init` and `intutic connect` to connect again.'
|
|
250
|
+
: `Disconnected ${opts.harness}. Run \`intutic init\` to manage it again.`);
|
|
251
|
+
}
|
|
252
|
+
//# sourceMappingURL=disconnect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disconnect.js","sourceRoot":"","sources":["../../src/commands/disconnect.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* a one-line remediation.
|
|
7
7
|
*
|
|
8
8
|
* Checks (in order):
|
|
9
|
-
* 1. Proxy reachable (http://127.0.0.1:4000/health)
|
|
9
|
+
* 1. Proxy reachable (http://127.0.0.1:4000/health, or the INTUTIC_PROXY_URL port)
|
|
10
10
|
* 2. Control plane auth (via stored credentials)
|
|
11
11
|
* 3. Sync daemon running (PID file or process grep)
|
|
12
12
|
* 4. Harness config files intact (SHA-256 hash check)
|
|
@@ -28,6 +28,24 @@ export interface CheckResult {
|
|
|
28
28
|
detail: string;
|
|
29
29
|
remediation?: string;
|
|
30
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Check 2: Control plane auth — verifies the stored credentials are accepted.
|
|
33
|
+
*
|
|
34
|
+
* Asks `/api/v1/auth/me`, the route `intutic login` validates a key against.
|
|
35
|
+
* This used to request `/api/v1/health`, which the control plane does not
|
|
36
|
+
* serve: a valid key came back 404 and was reported as "Reachable (HTTP 404)",
|
|
37
|
+
* so the check never said "Authenticated" for a working login.
|
|
38
|
+
*/
|
|
39
|
+
export declare function checkControlPlane(): Promise<CheckResult>;
|
|
40
|
+
/**
|
|
41
|
+
* Check 6: Valkey connectivity, by a direct TCP probe.
|
|
42
|
+
*
|
|
43
|
+
* Only the probe. This check used to ask the proxy's /health first and look
|
|
44
|
+
* for a `valkey` field, but /health reports status, service and version and
|
|
45
|
+
* nothing about Valkey, so that branch could never pass and cost a second
|
|
46
|
+
* request on every run.
|
|
47
|
+
*/
|
|
48
|
+
export declare function checkValkey(port?: number): Promise<CheckResult>;
|
|
31
49
|
/**
|
|
32
50
|
* Turns a snapshot's state into the line doctor prints.
|
|
33
51
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAqBH,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAA;AAKjC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAwDD;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC,CA4D9D;AAqND;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,IAAI,SAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CA8BnE;AA8FD;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,GAAG,WAAW,CAqD9E;AAiBD;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC,CAiB9D;AAID,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CA6C/C"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* a one-line remediation.
|
|
7
7
|
*
|
|
8
8
|
* Checks (in order):
|
|
9
|
-
* 1. Proxy reachable (http://127.0.0.1:4000/health)
|
|
9
|
+
* 1. Proxy reachable (http://127.0.0.1:4000/health, or the INTUTIC_PROXY_URL port)
|
|
10
10
|
* 2. Control plane auth (via stored credentials)
|
|
11
11
|
* 3. Sync daemon running (PID file or process grep)
|
|
12
12
|
* 4. Harness config files intact (SHA-256 hash check)
|
|
@@ -32,10 +32,15 @@ import { loadCredentials, loadConfig, loadIntegrity } from '../config/store.js';
|
|
|
32
32
|
import { isSyncDaemonRunning } from '../lib/process.js';
|
|
33
33
|
import { caTrustCommandFor } from '../lib/caTrust.js';
|
|
34
34
|
import { getPaths } from './install-daemon.js';
|
|
35
|
+
import { resolveControlPlaneUrl } from '../config/paths.js';
|
|
36
|
+
import { localProxyProbeBase } from '../lib/localProxy.js';
|
|
37
|
+
/** The local proxy's health endpoint, on the port every command uses. */
|
|
38
|
+
function proxyHealthUrl() {
|
|
39
|
+
return `${localProxyProbeBase()}/health`;
|
|
40
|
+
}
|
|
35
41
|
import { readPolicySnapshot, SNAPSHOT_STALE_AFTER_DAYS, } from '../lib/policySnapshot.js';
|
|
36
42
|
import { ciscoScannerOnPath, ciscoScannerVersion } from '../lib/ciscoScanner.js';
|
|
37
43
|
// ─── Constants ───────────────────────────────────────────────────────
|
|
38
|
-
const PROXY_HEALTH_URL = 'http://127.0.0.1:4000/health';
|
|
39
44
|
const PROXY_TIMEOUT_MS = 3_000;
|
|
40
45
|
const CONTROL_PLANE_TIMEOUT_MS = 5_000;
|
|
41
46
|
/**
|
|
@@ -49,13 +54,13 @@ const CA_CERT_PATH = join(homedir(), '.intutic', 'ca.crt');
|
|
|
49
54
|
const VALKEY_PROBE_TIMEOUT_MS = 2_000;
|
|
50
55
|
// ─── Individual Checks ──────────────────────────────────────────────
|
|
51
56
|
/**
|
|
52
|
-
* Check 1: Proxy reachable
|
|
57
|
+
* Check 1: Proxy reachable on its local port.
|
|
53
58
|
*/
|
|
54
59
|
async function checkProxy() {
|
|
55
60
|
try {
|
|
56
61
|
const controller = new AbortController();
|
|
57
62
|
const timeout = setTimeout(() => controller.abort(), PROXY_TIMEOUT_MS);
|
|
58
|
-
const res = await fetch(
|
|
63
|
+
const res = await fetch(proxyHealthUrl(), {
|
|
59
64
|
signal: controller.signal,
|
|
60
65
|
});
|
|
61
66
|
clearTimeout(timeout);
|
|
@@ -63,7 +68,7 @@ async function checkProxy() {
|
|
|
63
68
|
return {
|
|
64
69
|
name: 'Proxy',
|
|
65
70
|
passed: true,
|
|
66
|
-
detail: `Reachable at ${
|
|
71
|
+
detail: `Reachable at ${proxyHealthUrl()} (HTTP ${res.status})`,
|
|
67
72
|
};
|
|
68
73
|
}
|
|
69
74
|
return {
|
|
@@ -84,9 +89,14 @@ async function checkProxy() {
|
|
|
84
89
|
}
|
|
85
90
|
}
|
|
86
91
|
/**
|
|
87
|
-
* Check 2: Control plane auth — verifies stored credentials
|
|
92
|
+
* Check 2: Control plane auth — verifies the stored credentials are accepted.
|
|
93
|
+
*
|
|
94
|
+
* Asks `/api/v1/auth/me`, the route `intutic login` validates a key against.
|
|
95
|
+
* This used to request `/api/v1/health`, which the control plane does not
|
|
96
|
+
* serve: a valid key came back 404 and was reported as "Reachable (HTTP 404)",
|
|
97
|
+
* so the check never said "Authenticated" for a working login.
|
|
88
98
|
*/
|
|
89
|
-
async function checkControlPlane() {
|
|
99
|
+
export async function checkControlPlane() {
|
|
90
100
|
const creds = await loadCredentials();
|
|
91
101
|
if (!creds) {
|
|
92
102
|
return {
|
|
@@ -96,7 +106,10 @@ async function checkControlPlane() {
|
|
|
96
106
|
remediation: 'Run `intutic login` to authenticate.',
|
|
97
107
|
};
|
|
98
108
|
}
|
|
99
|
-
|
|
109
|
+
// The same control plane every other command would use for these
|
|
110
|
+
// credentials, so this checks what they will actually hit.
|
|
111
|
+
const controlPlaneUrl = resolveControlPlaneUrl();
|
|
112
|
+
const url = `${controlPlaneUrl}/api/v1/auth/me`;
|
|
100
113
|
try {
|
|
101
114
|
const controller = new AbortController();
|
|
102
115
|
const timeout = setTimeout(() => controller.abort(), CONTROL_PLANE_TIMEOUT_MS);
|
|
@@ -111,7 +124,7 @@ async function checkControlPlane() {
|
|
|
111
124
|
return {
|
|
112
125
|
name: 'Control Plane Auth',
|
|
113
126
|
passed: true,
|
|
114
|
-
detail: `Authenticated at ${
|
|
127
|
+
detail: `Authenticated at ${controlPlaneUrl}`,
|
|
115
128
|
};
|
|
116
129
|
}
|
|
117
130
|
if (res.status === 401 || res.status === 403) {
|
|
@@ -125,7 +138,7 @@ async function checkControlPlane() {
|
|
|
125
138
|
return {
|
|
126
139
|
name: 'Control Plane Auth',
|
|
127
140
|
passed: true,
|
|
128
|
-
detail: `Reachable at ${
|
|
141
|
+
detail: `Reachable at ${controlPlaneUrl} (HTTP ${res.status})`,
|
|
129
142
|
};
|
|
130
143
|
}
|
|
131
144
|
catch (err) {
|
|
@@ -134,7 +147,7 @@ async function checkControlPlane() {
|
|
|
134
147
|
name: 'Control Plane Auth',
|
|
135
148
|
passed: false,
|
|
136
149
|
detail: `Unreachable — ${message}`,
|
|
137
|
-
remediation: `Check network connectivity to ${
|
|
150
|
+
remediation: `Check network connectivity to ${controlPlaneUrl}.`,
|
|
138
151
|
};
|
|
139
152
|
}
|
|
140
153
|
}
|
|
@@ -341,39 +354,18 @@ function checkDaemonLog() {
|
|
|
341
354
|
};
|
|
342
355
|
}
|
|
343
356
|
/**
|
|
344
|
-
* Check 6: Valkey connectivity.
|
|
357
|
+
* Check 6: Valkey connectivity, by a direct TCP probe.
|
|
345
358
|
*
|
|
346
|
-
*
|
|
347
|
-
*
|
|
348
|
-
*
|
|
359
|
+
* Only the probe. This check used to ask the proxy's /health first and look
|
|
360
|
+
* for a `valkey` field, but /health reports status, service and version and
|
|
361
|
+
* nothing about Valkey, so that branch could never pass and cost a second
|
|
362
|
+
* request on every run.
|
|
349
363
|
*/
|
|
350
|
-
async function checkValkey() {
|
|
351
|
-
// Attempt 1: Read valkey status from proxy /health response
|
|
352
|
-
try {
|
|
353
|
-
const controller = new AbortController();
|
|
354
|
-
const timeout = setTimeout(() => controller.abort(), VALKEY_PROBE_TIMEOUT_MS);
|
|
355
|
-
const res = await fetch(PROXY_HEALTH_URL, { signal: controller.signal });
|
|
356
|
-
clearTimeout(timeout);
|
|
357
|
-
if (res.ok) {
|
|
358
|
-
const body = await res.json().catch(() => ({}));
|
|
359
|
-
if (body.valkey === 'ok') {
|
|
360
|
-
return {
|
|
361
|
-
name: 'Valkey',
|
|
362
|
-
passed: true,
|
|
363
|
-
detail: 'Connected (reported by proxy /health)',
|
|
364
|
-
};
|
|
365
|
-
}
|
|
366
|
-
// Proxy responded but doesn't report valkey status — fall through
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
catch {
|
|
370
|
-
// Proxy unreachable — fall through to direct probe
|
|
371
|
-
}
|
|
372
|
-
// Attempt 2: Direct TCP probe on port 6379
|
|
364
|
+
export async function checkValkey(port = 6379) {
|
|
373
365
|
try {
|
|
374
366
|
const { createConnection } = await import('node:net');
|
|
375
367
|
const connected = await new Promise((resolve) => {
|
|
376
|
-
const socket = createConnection({ host: '127.0.0.1', port
|
|
368
|
+
const socket = createConnection({ host: '127.0.0.1', port }, () => {
|
|
377
369
|
socket.end();
|
|
378
370
|
resolve(true);
|
|
379
371
|
});
|
|
@@ -385,7 +377,7 @@ async function checkValkey() {
|
|
|
385
377
|
return {
|
|
386
378
|
name: 'Valkey',
|
|
387
379
|
passed: true,
|
|
388
|
-
detail:
|
|
380
|
+
detail: `Reachable at 127.0.0.1:${port} (direct TCP probe)`,
|
|
389
381
|
};
|
|
390
382
|
}
|
|
391
383
|
}
|
|
@@ -395,7 +387,7 @@ async function checkValkey() {
|
|
|
395
387
|
return {
|
|
396
388
|
name: 'Valkey',
|
|
397
389
|
passed: false,
|
|
398
|
-
detail:
|
|
390
|
+
detail: `Not reachable on port ${port}`,
|
|
399
391
|
remediation: 'Start Valkey: `docker compose up -d valkey` or install locally.',
|
|
400
392
|
};
|
|
401
393
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACzE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EACL,kBAAkB,EAClB,yBAAyB,GAE1B,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAWhF,wEAAwE;AAExE,MAAM,gBAAgB,GAAG,8BAA8B,CAAA;AACvD,MAAM,gBAAgB,GAAG,KAAK,CAAA;AAC9B,MAAM,wBAAwB,GAAG,KAAK,CAAA;AACtC;;;;GAIG;AACH,MAAM,sBAAsB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,YAAY,CAAC,CAAA;AACxE,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,YAAY,CAAC,CAAA;AACjE,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;AAC1D,MAAM,uBAAuB,GAAG,KAAK,CAAA;AAErC,uEAAuE;AAEvE;;GAEG;AACH,KAAK,UAAU,UAAU;IACvB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,gBAAgB,CAAC,CAAA;QAEtE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE;YACxC,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAA;QACF,YAAY,CAAC,OAAO,CAAC,CAAA;QAErB,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACX,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,gBAAgB,gBAAgB,UAAU,GAAG,CAAC,MAAM,GAAG;aAChE,CAAA;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,uBAAuB,GAAG,CAAC,MAAM,EAAE;YAC3C,WAAW,EAAE,6DAA6D;SAC3E,CAAA;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAA;QACpE,OAAO;YACL,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,mBAAmB,OAAO,EAAE;YACpC,WAAW,EAAE,sFAAsF;SACpG,CAAA;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB;IAC9B,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAA;IAErC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,sBAAsB;YAC9B,WAAW,EAAE,sCAAsC;SACpD,CAAA;IACH,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,eAAe,gBAAgB,CAAA;IAEpD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,wBAAwB,CAAC,CAAA;QAE9E,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,KAAK,CAAC,MAAM,EAAE;aAC1C;YACD,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAA;QACF,YAAY,CAAC,OAAO,CAAC,CAAA;QAErB,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACX,OAAO;gBACL,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,oBAAoB,KAAK,CAAC,eAAe,EAAE;aACpD,CAAA;QACH,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC7C,OAAO;gBACL,IAAI,EAAE,oBAAoB;gBAC1B,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,qBAAqB,GAAG,CAAC,MAAM,GAAG;gBAC1C,WAAW,EAAE,iEAAiE;aAC/E,CAAA;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,gBAAgB,KAAK,CAAC,eAAe,UAAU,GAAG,CAAC,MAAM,GAAG;SACrE,CAAA;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAA;QACpE,OAAO;YACL,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,iBAAiB,OAAO,EAAE;YAClC,WAAW,EAAE,iCAAiC,KAAK,CAAC,eAAe,GAAG;SACvE,CAAA;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,eAAe;IACtB,uBAAuB;IACvB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;QACzD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA,CAAC,oCAAoC;gBACjE,OAAO;oBACL,IAAI,EAAE,aAAa;oBACnB,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,gBAAgB,GAAG,GAAG;iBAC/B,CAAA;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,kDAAkD;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kDAAkD;IACpD,CAAC;IAED,kCAAkC;IAClC,IAAI,mBAAmB,EAAE,EAAE,CAAC;QAC1B,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,qCAAqC;SAC9C,CAAA;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,aAAa;QACrB,WAAW,EAAE,qFAAqF;KACnG,CAAA;AACH,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB;IAC1B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,2BAA2B;YACnC,WAAW,EAAE,iDAAiD;SAC/D,CAAA;IACH,CAAC;IAED,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;IACrD,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChF,OAAO;YACL,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,oDAAoD;YAC5D,WAAW,EAAE,oEAAoE;SAClF,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,MAAM,OAAO,GAAa,EAAE,CAAA;IAE5B,KAAK,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACvE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;YACvF,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YAC/C,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAErE,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACxB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAA;IACtD,MAAM,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAE5D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO;YACL,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,GAAG,UAAU,qCAAqC;SAC3D,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,UAAU,CAAC,CAAA;IAChE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,UAAU,CAAC,CAAA;IAEhE,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,GAAG,OAAO,IAAI,UAAU,aAAa,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAChE,WAAW,EAAE,8EAA8E;KAC5F,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB;IAC1B,OAAO;QACL,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO;QAC9B,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO;QAC7B,sBAAsB;KACvB,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,oBAAoB,CAAC,QAAgB;IAC5C,IAAI,MAAe,CAAA;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAE9D,MAAM,IAAI,GAAI,MAA6B,CAAC,IAAI,CAAA;IAChD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IAErE,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAA;IAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAA;IAExC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,MAAM,CAAC,CAAA;IAC7D,IAAI,OAAO,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAC5B,IAAI,OAAO,GAAG,CAAC;QAAE,OAAO,qBAAqB,CAAA;IAC7C,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,cAAc,OAAO,OAAO,CAAA;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAA;IACtC,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,cAAc,KAAK,OAAO,CAAA;IACjD,OAAO,cAAc,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,OAAO,CAAA;AACpD,CAAC;AAED;;GAEG;AACH,SAAS,cAAc;IACrB,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAA;IAExC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;QAC5C,IAAI,CAAC;YACH,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;YACrC,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,gCAAgC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC/D,WAAW,EAAE,8EAA8E;SAC5F,CAAA;IACH,CAAC;IAED,IAAI,OAAe,CAAA;IACnB,IAAI,CAAC;QACH,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,SAAS,OAAO,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YACtG,WAAW,EAAE,uCAAuC,OAAO,EAAE;SAC9D,CAAA;IACH,CAAC;IAED,4EAA4E;IAC5E,6DAA6D;IAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC1E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,YAAY,OAAO,wCAAwC;YACnE,WAAW,EAAE,sGAAsG;SACpH,CAAA;IACH,CAAC;IAED,MAAM,GAAG,GAAG,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IACzD,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAEpC,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,eAAe,OAAO,KAAK,KAAK,CAAC,MAAM,SAAS,MAAM,GAAG;KAClE,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,WAAW;IACxB,4DAA4D;IAC5D,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,uBAAuB,CAAC,CAAA;QAE7E,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;QACxE,YAAY,CAAC,OAAO,CAAC,CAAA;QAErB,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAC/C,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;gBACzB,OAAO;oBACL,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,uCAAuC;iBAChD,CAAA;YACH,CAAC;YACD,kEAAkE;QACpE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,mDAAmD;IACrD,CAAC;IAED,2CAA2C;IAC3C,IAAI,CAAC;QACH,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAA;QACrD,MAAM,SAAS,GAAG,MAAM,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;YACvD,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE;gBACtE,MAAM,CAAC,GAAG,EAAE,CAAA;gBACZ,OAAO,CAAC,IAAI,CAAC,CAAA;YACf,CAAC,CAAC,CAAA;YACF,MAAM,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAA;YAC1C,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;YAChE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;QAEF,IAAI,SAAS,EAAE,CAAC;YACd,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,gDAAgD;aACzD,CAAA;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;IAED,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,4BAA4B;QACpC,WAAW,EAAE,iEAAiE;KAC/E,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,EAAU;IACxC,MAAM,IAAI,GAAG,iBAAiB,CAAC,EAAqB,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAA;IAC7E,IAAI,CAAC,IAAI;QAAE,OAAO,4EAA4E,EAAE,GAAG,CAAA;IACnG,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACtE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACtF,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,cAAc;IACrB,uCAAuC;IACvC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,+BAA+B,YAAY,EAAE;YACrD,WAAW,EAAE,sFAAsF;SACpG,CAAA;IACH,CAAC;IAED,yCAAyC;IACzC,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;IACrB,IAAI,CAAC;QACH,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YACpB,+CAA+C;YAC/C,QAAQ,CAAC,4BAA4B,YAAY,eAAe,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YACpF,OAAO;gBACL,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,iDAAiD;aAC1D,CAAA;QACH,CAAC;aAAM,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;YAC1B,iDAAiD;YACjD,MAAM,UAAU,GAAG;gBACjB,kCAAkC;gBAClC,kCAAkC;gBAClC,2CAA2C;aAC5C,CAAA;YACD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACtC,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAAA;oBAChE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;gBACzB,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO;oBACL,IAAI,EAAE,YAAY;oBAClB,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,uDAAuD;iBAChE,CAAA;YACH,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,iDAAiD;gBACzD,WAAW,EAAE,sBAAsB,CAAC,EAAE,CAAC;aACxC,CAAA;QACH,CAAC;aAAM,CAAC;YACN,mEAAmE;YACnE,OAAO;gBACL,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,qBAAqB,YAAY,mCAAmC,EAAE,GAAG;aAClF,CAAA;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,6CAA6C;YACrD,WAAW,EAAE,sBAAsB,CAAC,EAAE,CAAC;SACxC,CAAA;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAA0B;IAC/D,MAAM,IAAI,GAAG,iBAAiB,CAAA;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,kCAAkC,CAAC,CAAC,CAAC,EAAE,CAAA;IAErG,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,KAAK,IAAI;YACP,OAAO;gBACL,IAAI;gBACJ,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,oBAAoB,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,QAAQ,OAAO,EAAE;aAC3F,CAAA;QAEH,KAAK,OAAO;YACV,OAAO;gBACL,IAAI;gBACJ,MAAM,EAAE,KAAK;gBACb,MAAM,EACJ,GAAG,IAAI,CAAC,OAAO,iCAAiC,IAAI,CAAC,SAAS,cAAc;oBAC5E,oCAAoC,yBAAyB,QAAQ,OAAO,EAAE;gBAChF,WAAW,EACT,wGAAwG;aAC3G,CAAA;QAEH,KAAK,SAAS;YACZ,OAAO;gBACL,IAAI;gBACJ,MAAM,EAAE,KAAK;gBACb,MAAM,EACJ,cAAc,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,aAAa,IAAI,CAAC,IAAI,KAAK;oBAC5F,oFAAoF;gBACtF,WAAW,EACT,mGAAmG;aACtG,CAAA;QAEH,KAAK,OAAO;YACV,OAAO;gBACL,IAAI;gBACJ,MAAM,EAAE,KAAK;gBACb,uEAAuE;gBACvE,2DAA2D;gBAC3D,MAAM,EAAE,cAAc,IAAI,CAAC,IAAI,+DAA+D,OAAO,EAAE;gBACvG,WAAW,EACT,kGAAkG;aACrG,CAAA;QAEH,KAAK,QAAQ;YACX,OAAO;gBACL,IAAI;gBACJ,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,kBAAkB,IAAI,CAAC,IAAI,iEAAiE;gBACpG,WAAW,EAAE,sFAAsF;aACpG,CAAA;IACL,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,mBAAmB;IAChC,4EAA4E;IAC5E,+EAA+E;IAC/E,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAA;IACrC,OAAO,sBAAsB,CAAC,kBAAkB,CAAC,EAAE,mBAAmB,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;AAChG,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,OAAO,GAAG,MAAM,kBAAkB,EAAE,CAAA;IAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,sCAAsC;YAC9C,WAAW,EAAE,qCAAqC;SACnD,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,mBAAmB,EAAE,CAAA;IAC3C,OAAO;QACL,IAAI,EAAE,qBAAqB;QAC3B,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC,CAAC,yCAAyC;KACvF,CAAA;AACH,CAAC;AAED,wEAAwE;AAExE,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,GAAG,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAA;IACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAEf,MAAM,OAAO,GAAkB,EAAE,CAAA;IAEjC,kDAAkD;IAClD,OAAO,CAAC,IAAI,CAAC,MAAM,UAAU,EAAE,CAAC,CAAA;IAChC,OAAO,CAAC,IAAI,CAAC,MAAM,iBAAiB,EAAE,CAAC,CAAA;IACvC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAA;IAC/B,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAA;IACnC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAA;IAC9B,OAAO,CAAC,IAAI,CAAC,MAAM,WAAW,EAAE,CAAC,CAAA;IACjC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAA;IAC9B,OAAO,CAAC,IAAI,CAAC,MAAM,mBAAmB,EAAE,CAAC,CAAA;IACzC,OAAO,CAAC,IAAI,CAAC,MAAM,iBAAiB,EAAE,CAAC,CAAA;IAEvC,gBAAgB;IAChB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAA;IACnD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAA;IAEpD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;YAC5E,qEAAqE;YACrE,sEAAsE;YACtE,sEAAsE;YACtE,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;YACjE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;YAC1E,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;YACjE,CAAC;QACH,CAAC;IACH,CAAC;IAED,UAAU;IACV,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,GAAG,CAAC,OAAO,CAAC,OAAO,MAAM,wCAAwC,CAAC,CAAA;IACpE,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,YAAY,MAAM,mCAAmC,CAAC,CAAA;IAC1E,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,16 @@ export interface EnforceOptions {
|
|
|
26
26
|
}
|
|
27
27
|
/** Translate parsed options into the binary's `enforce` flags. */
|
|
28
28
|
export declare function enforceFlagArgs(opts: EnforceOptions): string[];
|
|
29
|
+
/**
|
|
30
|
+
* The `--allow` entries that are not an IP address or CIDR block.
|
|
31
|
+
*
|
|
32
|
+
* The proxy binary writes each entry verbatim into the firewall ruleset, so a
|
|
33
|
+
* hostname (the docs once showed `registry.internal.corp`) either fails the
|
|
34
|
+
* apply or is resolved once at load time and silently goes stale when the
|
|
35
|
+
* host's address changes. Rejecting it here names the bad entry before
|
|
36
|
+
* anything touches the firewall.
|
|
37
|
+
*/
|
|
38
|
+
export declare function invalidAllowEntries(allow: string): string[];
|
|
29
39
|
declare const VALID_ACTIONS: readonly ["generate", "apply", "remove", "status", "report"];
|
|
30
40
|
type EnforceAction = (typeof VALID_ACTIONS)[number];
|
|
31
41
|
export declare function runEnforce(action: EnforceAction, opts: EnforceOptions): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enforce.d.ts","sourceRoot":"","sources":["../../src/commands/enforce.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"enforce.d.ts","sourceRoot":"","sources":["../../src/commands/enforce.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAYH,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kFAAkF;IAClF,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,EAAE,CAQ9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAc3D;AAED,QAAA,MAAM,aAAa,8DAA+D,CAAA;AAClF,KAAK,aAAa,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAA;AAoEnD,wBAAsB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAgE3F"}
|
package/dist/commands/enforce.js
CHANGED
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
* @module
|
|
18
18
|
*/
|
|
19
19
|
import { spawn } from 'node:child_process';
|
|
20
|
+
import { isIP } from 'node:net';
|
|
20
21
|
import { log } from '../lib/logger.js';
|
|
21
22
|
import { resolveProxyBinary } from '../lib/proxyBinary.js';
|
|
22
23
|
import { writeEnforcementState } from '../lib/enforcementState.js';
|
|
@@ -38,6 +39,33 @@ export function enforceFlagArgs(opts) {
|
|
|
38
39
|
args.push('--platform', opts.platform);
|
|
39
40
|
return args;
|
|
40
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* The `--allow` entries that are not an IP address or CIDR block.
|
|
44
|
+
*
|
|
45
|
+
* The proxy binary writes each entry verbatim into the firewall ruleset, so a
|
|
46
|
+
* hostname (the docs once showed `registry.internal.corp`) either fails the
|
|
47
|
+
* apply or is resolved once at load time and silently goes stale when the
|
|
48
|
+
* host's address changes. Rejecting it here names the bad entry before
|
|
49
|
+
* anything touches the firewall.
|
|
50
|
+
*/
|
|
51
|
+
export function invalidAllowEntries(allow) {
|
|
52
|
+
return allow
|
|
53
|
+
.split(',')
|
|
54
|
+
.map((entry) => entry.trim())
|
|
55
|
+
// Empty entries (a trailing comma) are dropped by the binary too.
|
|
56
|
+
.filter((entry) => entry !== '')
|
|
57
|
+
.filter((entry) => {
|
|
58
|
+
const [address = '', prefix, ...rest] = entry.split('/');
|
|
59
|
+
const family = isIP(address);
|
|
60
|
+
if (family === 0 || rest.length > 0)
|
|
61
|
+
return true;
|
|
62
|
+
if (prefix === undefined)
|
|
63
|
+
return false;
|
|
64
|
+
if (!/^\d{1,3}$/.test(prefix))
|
|
65
|
+
return true;
|
|
66
|
+
return Number(prefix) > (family === 4 ? 32 : 128);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
41
69
|
const VALID_ACTIONS = ['generate', 'apply', 'remove', 'status', 'report'];
|
|
42
70
|
/**
|
|
43
71
|
* Re-queries `enforce status` with captured stdout — `status` always prints
|
|
@@ -108,6 +136,14 @@ export async function runEnforce(action, opts) {
|
|
|
108
136
|
log.error(`Unknown enforce action '${action}'. Use: ${VALID_ACTIONS.join(' | ')}`);
|
|
109
137
|
process.exit(1);
|
|
110
138
|
}
|
|
139
|
+
if (opts.allow) {
|
|
140
|
+
const invalid = invalidAllowEntries(opts.allow);
|
|
141
|
+
if (invalid.length > 0) {
|
|
142
|
+
log.error(`--allow takes IP addresses or CIDR blocks; not valid: ${invalid.map((e) => `'${e}'`).join(', ')}`);
|
|
143
|
+
log.info('Resolve a hostname to its address range first, e.g. --allow 10.20.0.0/16');
|
|
144
|
+
process.exit(1);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
111
147
|
const flags = enforceFlagArgs(opts);
|
|
112
148
|
// apply/remove are privileged. Warn before spawning so a permission failure
|
|
113
149
|
// reads as expected rather than a mystery — but still attempt, because the
|