@intutic/cli 0.1.1 → 1.0.4
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 +376 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/benchmark.d.ts +31 -0
- package/dist/commands/benchmark.d.ts.map +1 -0
- package/dist/commands/benchmark.js +211 -0
- package/dist/commands/benchmark.js.map +1 -0
- package/dist/commands/connect.d.ts +8 -6
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +414 -80
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/enterprise-install.d.ts +36 -0
- package/dist/commands/enterprise-install.d.ts.map +1 -0
- package/dist/commands/enterprise-install.js +289 -0
- package/dist/commands/enterprise-install.js.map +1 -0
- package/dist/commands/eval.d.ts +13 -0
- package/dist/commands/eval.d.ts.map +1 -0
- package/dist/commands/eval.js +67 -0
- package/dist/commands/eval.js.map +1 -0
- package/dist/commands/exec.d.ts +34 -0
- package/dist/commands/exec.d.ts.map +1 -0
- package/dist/commands/exec.js +114 -0
- package/dist/commands/exec.js.map +1 -0
- package/dist/commands/exec.test.d.ts +2 -0
- package/dist/commands/exec.test.d.ts.map +1 -0
- package/dist/commands/exec.test.js +29 -0
- package/dist/commands/exec.test.js.map +1 -0
- package/dist/commands/export.d.ts +21 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +116 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +28 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install-daemon.d.ts +61 -0
- package/dist/commands/install-daemon.d.ts.map +1 -0
- package/dist/commands/install-daemon.js +691 -0
- package/dist/commands/install-daemon.js.map +1 -0
- package/dist/commands/install-daemon.test.d.ts +2 -0
- package/dist/commands/install-daemon.test.d.ts.map +1 -0
- package/dist/commands/install-daemon.test.js +93 -0
- package/dist/commands/install-daemon.test.js.map +1 -0
- package/dist/commands/login.js +2 -2
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.js +1 -1
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/mdm.d.ts +23 -0
- package/dist/commands/mdm.d.ts.map +1 -0
- package/dist/commands/mdm.js +134 -0
- package/dist/commands/mdm.js.map +1 -0
- package/dist/commands/skill.d.ts +27 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +289 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/sop-audit.d.ts +17 -0
- package/dist/commands/sop-audit.d.ts.map +1 -0
- package/dist/commands/sop-audit.js +136 -0
- package/dist/commands/sop-audit.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +53 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/syncContext.d.ts +18 -0
- package/dist/commands/syncContext.d.ts.map +1 -0
- package/dist/commands/syncContext.js +37 -0
- package/dist/commands/syncContext.js.map +1 -0
- package/dist/commands/traces.d.ts +13 -0
- package/dist/commands/traces.d.ts.map +1 -1
- package/dist/commands/traces.js +96 -2
- package/dist/commands/traces.js.map +1 -1
- package/dist/commands/whoami.js +1 -1
- package/dist/commands/whoami.js.map +1 -1
- package/dist/config/keychain.d.ts +28 -0
- package/dist/config/keychain.d.ts.map +1 -0
- package/dist/config/keychain.js +99 -0
- package/dist/config/keychain.js.map +1 -0
- package/dist/config/store.d.ts +3 -3
- package/dist/config/store.d.ts.map +1 -1
- package/dist/config/store.js +30 -6
- package/dist/config/store.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 +13 -27
- package/dist/harness/aider.js.map +1 -1
- package/dist/harness/claudeDesktop.d.ts +18 -0
- package/dist/harness/claudeDesktop.d.ts.map +1 -0
- package/dist/harness/claudeDesktop.js +69 -0
- package/dist/harness/claudeDesktop.js.map +1 -0
- package/dist/harness/cline.d.ts +13 -0
- package/dist/harness/cline.d.ts.map +1 -0
- package/dist/harness/cline.js +75 -0
- package/dist/harness/cline.js.map +1 -0
- package/dist/harness/codex.d.ts +4 -4
- package/dist/harness/codex.d.ts.map +1 -1
- package/dist/harness/codex.js +33 -21
- package/dist/harness/codex.js.map +1 -1
- package/dist/harness/continue.d.ts +14 -0
- package/dist/harness/continue.d.ts.map +1 -0
- package/dist/harness/continue.js +97 -0
- package/dist/harness/continue.js.map +1 -0
- package/dist/harness/cursor.d.ts +13 -1
- package/dist/harness/cursor.d.ts.map +1 -1
- package/dist/harness/cursor.js +59 -3
- 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 +13 -1
- package/dist/harness/detector.js.map +1 -1
- package/dist/harness/goose.d.ts +13 -0
- package/dist/harness/goose.d.ts.map +1 -0
- package/dist/harness/goose.js +45 -0
- package/dist/harness/goose.js.map +1 -0
- package/dist/harness/n8n.d.ts +8 -4
- package/dist/harness/n8n.d.ts.map +1 -1
- package/dist/harness/n8n.js +108 -13
- package/dist/harness/n8n.js.map +1 -1
- package/dist/harness/openWebUI.d.ts +13 -0
- package/dist/harness/openWebUI.d.ts.map +1 -0
- package/dist/harness/openWebUI.js +25 -0
- package/dist/harness/openWebUI.js.map +1 -0
- package/dist/harness/openhands.d.ts +3 -3
- package/dist/harness/openhands.d.ts.map +1 -1
- package/dist/harness/openhands.js +13 -9
- package/dist/harness/openhands.js.map +1 -1
- package/dist/harness/rooCode.d.ts +14 -0
- package/dist/harness/rooCode.d.ts.map +1 -0
- package/dist/harness/rooCode.js +77 -0
- package/dist/harness/rooCode.js.map +1 -0
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/harness/types.js +6 -0
- package/dist/harness/types.js.map +1 -1
- package/dist/harness/vscodeSettingsWriter.d.ts +40 -0
- package/dist/harness/vscodeSettingsWriter.d.ts.map +1 -0
- package/dist/harness/vscodeSettingsWriter.js +116 -0
- package/dist/harness/vscodeSettingsWriter.js.map +1 -0
- package/dist/harness/windsurf.d.ts +13 -1
- package/dist/harness/windsurf.d.ts.map +1 -1
- package/dist/harness/windsurf.js +58 -3
- package/dist/harness/windsurf.js.map +1 -1
- package/dist/lib/api.d.ts +2 -0
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +71 -1
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/envInjector.d.ts +24 -0
- package/dist/lib/envInjector.d.ts.map +1 -0
- package/dist/lib/envInjector.js +146 -0
- package/dist/lib/envInjector.js.map +1 -0
- package/dist/lib/envInjector.test.d.ts +2 -0
- package/dist/lib/envInjector.test.d.ts.map +1 -0
- package/dist/lib/envInjector.test.js +32 -0
- package/dist/lib/envInjector.test.js.map +1 -0
- package/dist/lib/gitHooks.d.ts +19 -0
- package/dist/lib/gitHooks.d.ts.map +1 -0
- package/dist/lib/gitHooks.js +58 -0
- package/dist/lib/gitHooks.js.map +1 -0
- package/dist/lib/onboarding.d.ts +17 -0
- package/dist/lib/onboarding.d.ts.map +1 -0
- package/dist/lib/onboarding.js +164 -0
- package/dist/lib/onboarding.js.map +1 -0
- package/dist/lib/process.d.ts +53 -0
- package/dist/lib/process.d.ts.map +1 -0
- package/dist/lib/process.js +181 -0
- package/dist/lib/process.js.map +1 -0
- package/dist/lib/process.test.d.ts +2 -0
- package/dist/lib/process.test.d.ts.map +1 -0
- package/dist/lib/process.test.js +44 -0
- package/dist/lib/process.test.js.map +1 -0
- package/package.json +22 -33
package/dist/commands/connect.js
CHANGED
|
@@ -1,146 +1,474 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `intutic connect` — Start the sync daemon.
|
|
3
3
|
*
|
|
4
|
-
* Runs a
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* 3. Computes SHA-256 hashes of written files
|
|
8
|
-
* 4. Reports hashes + status to control plane
|
|
4
|
+
* Runs a persistent WebSocket client for real-time config updates,
|
|
5
|
+
* a real-time filesystem watcher for configuration drift detection,
|
|
6
|
+
* and a 30-second HTTP polling loop as a secondary fallback.
|
|
9
7
|
*
|
|
8
|
+
* LLD #14 — connect.ts
|
|
10
9
|
* HLD §3.14 — Real-Time State Mirroring
|
|
11
|
-
*
|
|
10
|
+
*
|
|
12
11
|
* @module
|
|
13
12
|
*/
|
|
13
|
+
import * as node_path from 'node:path';
|
|
14
|
+
import * as node_fs from 'node:fs/promises';
|
|
14
15
|
import { log } from '../lib/logger.js';
|
|
15
|
-
import { loadCredentials, loadConfig, saveConfig, loadIntegrity, saveIntegrity } from '../config/store.js';
|
|
16
|
+
import { loadCredentials, loadConfig, saveConfig, loadIntegrity, saveIntegrity, } from '../config/store.js';
|
|
16
17
|
import { resolveControlPlaneUrl } from '../config/paths.js';
|
|
17
18
|
import { createApiClient } from '../lib/api.js';
|
|
19
|
+
import { getActiveAgentProcesses } from '../lib/process.js';
|
|
18
20
|
import { getAdapter } from '../harness/detector.js';
|
|
21
|
+
import { printOnboardingGuide } from '../lib/onboarding.js';
|
|
19
22
|
import { newIso } from '@intutic/id';
|
|
20
23
|
import pc from 'picocolors';
|
|
24
|
+
import { SyncWsClient, startWatcher, updatePreToolUseHooks, injectMcpServer, guardSettingsFile, writeRuntimeEnv, runComplianceProbes, drainHookEvents, } from '@intutic/sync-daemon';
|
|
25
|
+
import { watch } from 'chokidar';
|
|
26
|
+
import * as net from 'node:net';
|
|
27
|
+
import { spawn } from 'node:child_process';
|
|
28
|
+
import { createWriteStream } from 'node:fs';
|
|
21
29
|
const DEFAULT_POLL_INTERVAL = 30_000;
|
|
30
|
+
function isPortInUse(port) {
|
|
31
|
+
return new Promise((resolve) => {
|
|
32
|
+
const server = net.createServer();
|
|
33
|
+
server.once('error', (err) => {
|
|
34
|
+
if (err.code === 'EADDRINUSE') {
|
|
35
|
+
resolve(true);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
resolve(false);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
server.once('listening', () => {
|
|
42
|
+
server.close();
|
|
43
|
+
resolve(false);
|
|
44
|
+
});
|
|
45
|
+
server.listen(port, '127.0.0.1');
|
|
46
|
+
});
|
|
47
|
+
}
|
|
22
48
|
export async function runConnect(opts) {
|
|
23
49
|
// 1. Load credentials + config
|
|
24
|
-
|
|
50
|
+
let creds = await loadCredentials();
|
|
51
|
+
if (opts.workspaceId && opts.apiKey) {
|
|
52
|
+
creds = {
|
|
53
|
+
workspaceId: opts.workspaceId,
|
|
54
|
+
apiKey: opts.apiKey,
|
|
55
|
+
email: 'daemon@intutic.ai',
|
|
56
|
+
controlPlaneUrl: opts.controlPlaneUrl ?? 'https://api.intutic.ai',
|
|
57
|
+
storedAt: newIso(),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
25
60
|
if (!creds) {
|
|
26
61
|
log.error('Not authenticated. Run `intutic login` first.');
|
|
27
62
|
process.exit(1);
|
|
28
63
|
}
|
|
29
|
-
|
|
64
|
+
let config = loadConfig();
|
|
65
|
+
if (!config && opts.workspaceId && opts.apiKey) {
|
|
66
|
+
config = {
|
|
67
|
+
workspaceId: opts.workspaceId,
|
|
68
|
+
harnesses: [],
|
|
69
|
+
configVersion: 0,
|
|
70
|
+
devMode: opts.dev || false,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
30
73
|
if (!config) {
|
|
31
74
|
log.error('Workspace not initialized. Run `intutic init` first.');
|
|
32
75
|
process.exit(1);
|
|
33
76
|
}
|
|
34
|
-
const
|
|
35
|
-
const
|
|
77
|
+
const safeCreds = creds;
|
|
78
|
+
const safeConfig = config;
|
|
79
|
+
const devMode = opts.dev || process.env.INTUTIC_DEV === '1' || safeConfig.devMode;
|
|
80
|
+
const controlPlaneUrl = opts.controlPlaneUrl || resolveControlPlaneUrl(devMode);
|
|
36
81
|
const pollInterval = opts.interval ? parseInt(opts.interval, 10) : DEFAULT_POLL_INTERVAL;
|
|
37
82
|
const connectedSince = newIso();
|
|
38
|
-
const client = createApiClient(controlPlaneUrl,
|
|
83
|
+
const client = createApiClient(controlPlaneUrl, safeCreds.apiKey);
|
|
39
84
|
log.header('Intutic — Sync Daemon');
|
|
40
|
-
log.field('Workspace',
|
|
85
|
+
log.field('Workspace', safeCreds.workspaceId);
|
|
41
86
|
log.field('Control Plane', controlPlaneUrl);
|
|
42
87
|
log.field('Poll Interval', `${pollInterval / 1000}s`);
|
|
43
|
-
log.field('Harnesses',
|
|
44
|
-
|
|
45
|
-
|
|
88
|
+
log.field('Harnesses', safeConfig.harnesses.join(', ') || '(none)');
|
|
89
|
+
// Print onboarding setup instructions for active harnesses
|
|
90
|
+
printOnboardingGuide(safeConfig.harnesses, safeCreds.apiKey, devMode);
|
|
91
|
+
log.info('Starting sync daemon... (Ctrl+C to stop)');
|
|
46
92
|
console.log('');
|
|
47
93
|
// 2. AbortController for clean shutdown
|
|
94
|
+
let proxyProc = null;
|
|
48
95
|
const ac = new AbortController();
|
|
49
96
|
const shutdown = () => {
|
|
50
|
-
log.info('Shutting down...');
|
|
97
|
+
log.info('Shutting down sync daemon...');
|
|
98
|
+
if (proxyProc) {
|
|
99
|
+
log.info('Stopping managed proxy gateway...');
|
|
100
|
+
proxyProc.kill('SIGTERM');
|
|
101
|
+
}
|
|
51
102
|
ac.abort();
|
|
52
103
|
};
|
|
53
104
|
process.on('SIGINT', shutdown);
|
|
54
105
|
process.on('SIGTERM', shutdown);
|
|
55
|
-
//
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
106
|
+
// 2.5. Manage LiteLLM-Rust Proxy Gateway Process
|
|
107
|
+
const proxyPort = parseInt(process.env.PORT || '4000', 10);
|
|
108
|
+
try {
|
|
109
|
+
const inUse = await isPortInUse(proxyPort);
|
|
110
|
+
if (inUse) {
|
|
111
|
+
log.info(`Proxy already running on port ${proxyPort} (assuming external instance).`);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
log.info(`Port ${proxyPort} is free. Spawning managed proxy gateway...`);
|
|
115
|
+
const logDir = node_path.join(safeConfig.workspaceRoot, '.intutic', 'logs');
|
|
116
|
+
await node_fs.mkdir(logDir, { recursive: true });
|
|
117
|
+
const logStream = createWriteStream(node_path.join(logDir, 'proxy-gateway.log'), { flags: 'a' });
|
|
118
|
+
// Determine proxy binary or build command
|
|
119
|
+
let exeCmd = 'cargo';
|
|
120
|
+
let exeArgs = ['run', '--manifest-path', node_path.join(safeConfig.workspaceRoot, 'packages', 'proxy', 'Cargo.toml')];
|
|
121
|
+
if (!devMode) {
|
|
122
|
+
// In production, try to resolve precompiled binary path
|
|
123
|
+
const releasePath = node_path.join(safeConfig.workspaceRoot, 'packages', 'proxy', 'target', 'release', 'intutic-proxy');
|
|
124
|
+
const debugPath = node_path.join(safeConfig.workspaceRoot, 'packages', 'proxy', 'target', 'debug', 'intutic-proxy');
|
|
125
|
+
try {
|
|
126
|
+
await node_fs.access(releasePath);
|
|
127
|
+
exeCmd = releasePath;
|
|
128
|
+
exeArgs = [];
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
try {
|
|
132
|
+
await node_fs.access(debugPath);
|
|
133
|
+
exeCmd = debugPath;
|
|
134
|
+
exeArgs = [];
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
// Fallback to cargo run if target bin not found
|
|
138
|
+
log.dim('Precompiled proxy binary not found, falling back to cargo run...');
|
|
74
139
|
}
|
|
75
140
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
|
|
141
|
+
}
|
|
142
|
+
const proxyEnv = {
|
|
143
|
+
...process.env,
|
|
144
|
+
VALKEY_URL: process.env.VALKEY_URL || 'redis://127.0.0.1:6380',
|
|
145
|
+
ANTHROPIC_API_KEY: process.env.ANTHROPIC_API_KEY || '',
|
|
146
|
+
INTUTIC_CONTROL_PLANE_URL: controlPlaneUrl,
|
|
147
|
+
CONTROL_PLANE_URL: controlPlaneUrl,
|
|
148
|
+
INTUTIC_WORKSPACE_ID: safeCreds.workspaceId,
|
|
149
|
+
INTUTIC_API_KEY: safeCreds.apiKey,
|
|
150
|
+
CONFIG_PATH: node_path.join(safeConfig.workspaceRoot, 'config.yaml'),
|
|
151
|
+
};
|
|
152
|
+
proxyProc = spawn(exeCmd, exeArgs, {
|
|
153
|
+
cwd: safeConfig.workspaceRoot,
|
|
154
|
+
env: proxyEnv,
|
|
155
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
156
|
+
});
|
|
157
|
+
proxyProc.stdout?.pipe(logStream);
|
|
158
|
+
proxyProc.stderr?.pipe(logStream);
|
|
159
|
+
proxyProc.on('error', (err) => {
|
|
160
|
+
log.error(`Managed proxy process failed to start: ${err.message}`);
|
|
161
|
+
});
|
|
162
|
+
proxyProc.on('exit', (code, signal) => {
|
|
163
|
+
log.info(`Managed proxy process exited: code=${code}, signal=${signal}`);
|
|
164
|
+
});
|
|
165
|
+
log.success('Managed proxy gateway process spawned.');
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
catch (err) {
|
|
169
|
+
log.warn(`Failed to set up managed proxy gateway: ${err instanceof Error ? err.message : String(err)}`);
|
|
170
|
+
}
|
|
171
|
+
let localConfigVersion = safeConfig.configVersion;
|
|
172
|
+
let lastCachedConfig = null;
|
|
173
|
+
// 3. Define configuration applier function
|
|
174
|
+
async function applySyncConfig(syncConfig, force = false) {
|
|
175
|
+
let sopsWritten = 0;
|
|
176
|
+
lastCachedConfig = syncConfig;
|
|
177
|
+
if (syncConfig.configVersion > localConfigVersion || force) {
|
|
178
|
+
log.info(`Applying configuration v${syncConfig.configVersion}...`);
|
|
179
|
+
// a. Write configs for all active harnesses
|
|
180
|
+
for (const harnessType of safeConfig.harnesses) {
|
|
88
181
|
const adapter = getAdapter(harnessType);
|
|
89
|
-
if (!adapter
|
|
182
|
+
if (!adapter)
|
|
90
183
|
continue;
|
|
91
|
-
const
|
|
92
|
-
if (!
|
|
184
|
+
const targetSops = syncConfig.sops.filter((sop) => sop.harnessTargets.includes(harnessType));
|
|
185
|
+
if (targetSops.length === 0 && !force)
|
|
93
186
|
continue;
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
canonicalHash: canonical,
|
|
99
|
-
drifted: currentHash !== canonical,
|
|
100
|
-
});
|
|
101
|
-
// Update canonical hash to current
|
|
102
|
-
canonicalHashes[adapter.configFileName] = currentHash;
|
|
187
|
+
const written = await adapter.writeConfig(safeConfig.workspaceRoot, targetSops, syncConfig.proxyUrl);
|
|
188
|
+
if (written) {
|
|
189
|
+
sopsWritten += targetSops.length;
|
|
190
|
+
}
|
|
103
191
|
}
|
|
104
|
-
//
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
192
|
+
// b. Invalidate/update Claude Code hooks and settings
|
|
193
|
+
if (safeConfig.harnesses.includes('claude-code')) {
|
|
194
|
+
try {
|
|
195
|
+
await updatePreToolUseHooks(safeConfig.workspaceRoot, syncConfig.sops, syncConfig.settings);
|
|
196
|
+
}
|
|
197
|
+
catch (err) {
|
|
198
|
+
log.warn(`Failed to update Claude Code hooks: ${err instanceof Error ? err.message : String(err)}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
// c. Inject + proxy-wrap MCP servers across all supported harnesses
|
|
202
|
+
try {
|
|
203
|
+
await injectMcpServer(safeConfig.workspaceRoot, safeCreds.workspaceId);
|
|
204
|
+
}
|
|
205
|
+
catch (err) {
|
|
206
|
+
log.warn(`Failed to inject MCP server configs: ${err instanceof Error ? err.message : String(err)}`);
|
|
207
|
+
}
|
|
208
|
+
localConfigVersion = syncConfig.configVersion;
|
|
209
|
+
saveConfig({ ...safeConfig, configVersion: localConfigVersion });
|
|
210
|
+
}
|
|
211
|
+
// c. Compute file hashes + update integrity store
|
|
212
|
+
const fileHashes = [];
|
|
213
|
+
const canonicalHashes = {};
|
|
214
|
+
// Load current integrity file list
|
|
215
|
+
const integrity = loadIntegrity(safeConfig.workspaceRoot);
|
|
216
|
+
if (integrity) {
|
|
217
|
+
Object.assign(canonicalHashes, integrity.files);
|
|
218
|
+
}
|
|
219
|
+
for (const harnessType of safeConfig.harnesses) {
|
|
220
|
+
const adapter = getAdapter(harnessType);
|
|
221
|
+
if (!adapter || !adapter.configFileName)
|
|
222
|
+
continue;
|
|
223
|
+
const currentHash = await adapter.readCurrentHash(safeConfig.workspaceRoot);
|
|
224
|
+
if (!currentHash)
|
|
225
|
+
continue;
|
|
226
|
+
const canonical = canonicalHashes[adapter.configFileName] ?? currentHash;
|
|
227
|
+
fileHashes.push({
|
|
228
|
+
filePath: adapter.configFileName,
|
|
229
|
+
localHash: currentHash,
|
|
230
|
+
canonicalHash: canonical,
|
|
231
|
+
drifted: currentHash !== canonical,
|
|
109
232
|
});
|
|
110
|
-
//
|
|
111
|
-
|
|
112
|
-
|
|
233
|
+
// Update canonical hash to current
|
|
234
|
+
canonicalHashes[adapter.configFileName] = currentHash;
|
|
235
|
+
}
|
|
236
|
+
// Save integrity store
|
|
237
|
+
saveIntegrity(safeConfig.workspaceRoot, {
|
|
238
|
+
lastSyncAt: newIso(),
|
|
239
|
+
configVersion: localConfigVersion,
|
|
240
|
+
files: canonicalHashes,
|
|
241
|
+
});
|
|
242
|
+
// d. Report hashes to control plane
|
|
243
|
+
let driftCount = 0;
|
|
244
|
+
if (fileHashes.length > 0) {
|
|
245
|
+
try {
|
|
113
246
|
const hashReport = await client.reportHashes({
|
|
114
|
-
workspaceId:
|
|
115
|
-
harnessType:
|
|
247
|
+
workspaceId: safeCreds.workspaceId,
|
|
248
|
+
harnessType: safeConfig.harnesses[0],
|
|
116
249
|
files: fileHashes,
|
|
117
250
|
reportedAt: newIso(),
|
|
118
251
|
});
|
|
119
252
|
driftCount = hashReport.driftCount;
|
|
120
253
|
}
|
|
121
|
-
|
|
254
|
+
catch (err) {
|
|
255
|
+
log.warn(`Failed to report integrity hashes: ${err instanceof Error ? err.message : String(err)}`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
// e. Report status heartbeat
|
|
259
|
+
try {
|
|
260
|
+
const activeProcs = getActiveAgentProcesses().map((p) => p.name);
|
|
122
261
|
await client.reportStatus({
|
|
123
|
-
workspaceId:
|
|
262
|
+
workspaceId: safeCreds.workspaceId,
|
|
124
263
|
configVersion: localConfigVersion,
|
|
125
264
|
connectedSince,
|
|
126
265
|
lastSyncAt: newIso(),
|
|
127
|
-
harnesses:
|
|
266
|
+
harnesses: safeConfig.harnesses.map((h) => ({
|
|
128
267
|
type: h,
|
|
129
268
|
configPath: getAdapter(h)?.configFileName ?? '',
|
|
130
269
|
detected: true,
|
|
131
270
|
lastWriteAt: sopsWritten > 0 ? newIso() : null,
|
|
132
271
|
})),
|
|
272
|
+
activeProcesses: activeProcs,
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
catch (err) {
|
|
276
|
+
log.warn(`Failed to send daemon heartbeat: ${err instanceof Error ? err.message : String(err)}`);
|
|
277
|
+
}
|
|
278
|
+
const driftLabel = driftCount > 0 ? pc.yellow(` — ${driftCount} drift(s) detected`) : '';
|
|
279
|
+
log.dim(`[sync] Config v${localConfigVersion} — ${sopsWritten} SOPs synced${driftLabel}`);
|
|
280
|
+
// Refresh runtime env with resolved settings
|
|
281
|
+
try {
|
|
282
|
+
await writeRuntimeEnv({
|
|
283
|
+
controlPlaneUrl,
|
|
284
|
+
apiKey: safeCreds.apiKey,
|
|
285
|
+
workspaceId: safeCreds.workspaceId,
|
|
286
|
+
mcpProxyFailBehavior: syncConfig.settings?.mcpProxyFailBehavior,
|
|
287
|
+
mcpProxyMode: syncConfig.settings?.mcpProxyMode,
|
|
288
|
+
bypassEnforcementTier: syncConfig.settings?.bypassEnforcementTier,
|
|
133
289
|
});
|
|
134
|
-
// f. Log result
|
|
135
|
-
const driftLabel = driftCount > 0 ? pc.yellow(` — ${driftCount} drift(s)`) : '';
|
|
136
|
-
log.dim(`[sync] Config v${localConfigVersion} — ${sopsWritten} SOPs synced${driftLabel} — next check in ${pollInterval / 1000}s`);
|
|
137
290
|
}
|
|
138
291
|
catch (err) {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
292
|
+
log.warn(`Could not write runtime env file (non-fatal): ${err instanceof Error ? err.message : String(err)}`);
|
|
293
|
+
}
|
|
294
|
+
return sopsWritten;
|
|
295
|
+
}
|
|
296
|
+
// Helper to run compliance probes (Phase 6)
|
|
297
|
+
const runProbes = async () => {
|
|
298
|
+
try {
|
|
299
|
+
const hookEventsLog = node_path.join(safeConfig.workspaceRoot, '.intutic', 'events', 'hook-events.jsonl');
|
|
300
|
+
await node_fs.mkdir(node_path.dirname(hookEventsLog), { recursive: true });
|
|
301
|
+
const probeResults = await runComplianceProbes(safeCreds.workspaceId);
|
|
302
|
+
let hasBypass = false;
|
|
303
|
+
for (const res of probeResults) {
|
|
304
|
+
if (!res.contained && res.incident) {
|
|
305
|
+
const entry = JSON.stringify(res.incident) + '\n';
|
|
306
|
+
await node_fs.appendFile(hookEventsLog, entry, 'utf-8');
|
|
307
|
+
hasBypass = true;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
if (hasBypass) {
|
|
311
|
+
log.warn('[Security] Network containment bypass detected! Incident recorded.');
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
catch (err) {
|
|
315
|
+
log.warn(`Compliance probes failed (non-fatal): ${err instanceof Error ? err.message : String(err)}`);
|
|
316
|
+
}
|
|
317
|
+
};
|
|
318
|
+
// Helper to drain hook events (WS-A)
|
|
319
|
+
const runDrain = async () => {
|
|
320
|
+
try {
|
|
321
|
+
const drained = await drainHookEvents(safeConfig.workspaceRoot, controlPlaneUrl, safeCreds.apiKey);
|
|
322
|
+
if (drained > 0) {
|
|
323
|
+
log.info(`[sync-daemon] Drained ${drained} hook governance events to control plane`);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
catch (err) {
|
|
327
|
+
log.warn(`[sync-daemon] Hook event drain error (non-fatal): ${err instanceof Error ? err.message : String(err)}`);
|
|
328
|
+
}
|
|
329
|
+
};
|
|
330
|
+
// Step 0: Write runtime env file (hook scripts source this for credentials)
|
|
331
|
+
try {
|
|
332
|
+
await writeRuntimeEnv({
|
|
333
|
+
controlPlaneUrl,
|
|
334
|
+
apiKey: safeCreds.apiKey,
|
|
335
|
+
workspaceId: safeCreds.workspaceId,
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
catch (err) {
|
|
339
|
+
log.warn(`Could not write runtime env file (non-fatal): ${err instanceof Error ? err.message : String(err)}`);
|
|
340
|
+
}
|
|
341
|
+
// 4. Start WebSocket client
|
|
342
|
+
const wsClient = new SyncWsClient({
|
|
343
|
+
controlPlaneUrl,
|
|
344
|
+
apiKey: safeCreds.apiKey,
|
|
345
|
+
workspaceId: safeCreds.workspaceId,
|
|
346
|
+
onConfigUpdate: async (syncConfig) => {
|
|
347
|
+
try {
|
|
348
|
+
await applySyncConfig(syncConfig);
|
|
349
|
+
}
|
|
350
|
+
catch (err) {
|
|
351
|
+
log.error(`Failed to apply push configuration: ${err instanceof Error ? err.message : String(err)}`);
|
|
352
|
+
}
|
|
353
|
+
},
|
|
354
|
+
signal: ac.signal,
|
|
355
|
+
});
|
|
356
|
+
wsClient.connect();
|
|
357
|
+
// FSEvents-driven hook event drain
|
|
358
|
+
const hookEventsLog = node_path.join(safeConfig.workspaceRoot, '.intutic', 'events', 'hook-events.jsonl');
|
|
359
|
+
let fsWatcher = null;
|
|
360
|
+
let drainSafetyTimer = null;
|
|
361
|
+
try {
|
|
362
|
+
await node_fs.mkdir(node_path.dirname(hookEventsLog), { recursive: true });
|
|
363
|
+
fsWatcher = watch(hookEventsLog, { ignoreInitial: true, persistent: false });
|
|
364
|
+
fsWatcher.on('change', runDrain);
|
|
365
|
+
fsWatcher.on('add', runDrain);
|
|
366
|
+
}
|
|
367
|
+
catch (err) {
|
|
368
|
+
// chokidar unavailable - rely on fallback
|
|
369
|
+
}
|
|
370
|
+
// 60-second safety-net drain poll
|
|
371
|
+
drainSafetyTimer = setInterval(runDrain, 60_000);
|
|
372
|
+
// Run initial compliance check on startup
|
|
373
|
+
await runProbes();
|
|
374
|
+
// 5. Start Filesystem Watcher
|
|
375
|
+
const watcher = startWatcher(safeConfig.workspaceRoot, safeConfig.harnesses, async (changedPath) => {
|
|
376
|
+
const filename = node_path.basename(changedPath);
|
|
377
|
+
// A. Handle git-context.json
|
|
378
|
+
if (filename === 'git-context.json') {
|
|
379
|
+
try {
|
|
380
|
+
const raw = await node_fs.readFile(changedPath, 'utf-8');
|
|
381
|
+
const data = JSON.parse(raw);
|
|
382
|
+
wsClient.send({
|
|
383
|
+
type: 'context_report',
|
|
384
|
+
git: data.git,
|
|
385
|
+
});
|
|
386
|
+
log.info(`Git context reported to control plane: branch=${data.git?.branch}`);
|
|
387
|
+
}
|
|
388
|
+
catch (err) {
|
|
389
|
+
log.warn(`Failed to sync Git context metadata: ${err instanceof Error ? err.message : String(err)}`);
|
|
390
|
+
}
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
// B. Handle Claude Code settings.json tamper detection (privilege escalation guard)
|
|
394
|
+
if (filename === 'settings.json' || filename === 'settings.local.json') {
|
|
395
|
+
try {
|
|
396
|
+
const sops = lastCachedConfig?.sops ?? [];
|
|
397
|
+
const tampered = await guardSettingsFile(changedPath, safeConfig.workspaceRoot, sops);
|
|
398
|
+
if (tampered) {
|
|
399
|
+
log.warn(`[Security] Governance settings tamper detected and restored: ${changedPath}`);
|
|
400
|
+
wsClient.send({
|
|
401
|
+
type: 'drift_report',
|
|
402
|
+
harnessType: 'claude-code',
|
|
403
|
+
filePath: changedPath,
|
|
404
|
+
localHash: '',
|
|
405
|
+
canonicalHash: '',
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
catch (err) {
|
|
410
|
+
log.error(`Settings guard error: ${err instanceof Error ? err.message : String(err)}`);
|
|
411
|
+
}
|
|
412
|
+
return;
|
|
413
|
+
}
|
|
414
|
+
// B. Handle governed harness file drift detection
|
|
415
|
+
const matchingHarness = safeConfig.harnesses.find((h) => getAdapter(h)?.configFileName === filename);
|
|
416
|
+
if (!matchingHarness)
|
|
417
|
+
return;
|
|
418
|
+
const adapter = getAdapter(matchingHarness);
|
|
419
|
+
if (!adapter)
|
|
420
|
+
return;
|
|
421
|
+
const currentHash = await adapter.readCurrentHash(safeConfig.workspaceRoot);
|
|
422
|
+
const integrity = loadIntegrity(safeConfig.workspaceRoot);
|
|
423
|
+
if (!integrity)
|
|
424
|
+
return;
|
|
425
|
+
const canonical = integrity.files[adapter.configFileName] ?? '';
|
|
426
|
+
if (currentHash !== canonical) {
|
|
427
|
+
log.warn(`Governed config file "${filename}" modification detected! Reverting to approved baseline...`);
|
|
428
|
+
// Backup drifted version first
|
|
429
|
+
try {
|
|
430
|
+
const content = await node_fs.readFile(changedPath, 'utf-8');
|
|
431
|
+
const backupPath = changedPath + '.drift-backup';
|
|
432
|
+
await node_fs.writeFile(backupPath, content, 'utf-8');
|
|
433
|
+
log.dim(`Drifted file backed up to: ${backupPath}`);
|
|
434
|
+
}
|
|
435
|
+
catch {
|
|
436
|
+
// Ignore backup failure
|
|
437
|
+
}
|
|
438
|
+
// Revert from cached config or fetch fresh config
|
|
439
|
+
try {
|
|
440
|
+
let syncConfig = lastCachedConfig;
|
|
441
|
+
if (!syncConfig) {
|
|
442
|
+
syncConfig = await client.fetchConfig(safeCreds.workspaceId);
|
|
443
|
+
}
|
|
444
|
+
await applySyncConfig(syncConfig, true);
|
|
445
|
+
// Report incident via WebSocket/HTTP
|
|
446
|
+
wsClient.send({
|
|
447
|
+
type: 'drift_report',
|
|
448
|
+
harnessType: adapter.type,
|
|
449
|
+
filePath: adapter.configFileName,
|
|
450
|
+
localHash: currentHash || '',
|
|
451
|
+
canonicalHash: canonical,
|
|
452
|
+
});
|
|
453
|
+
}
|
|
454
|
+
catch (err) {
|
|
455
|
+
log.error(`Failed to automatically revert file drift: ${err instanceof Error ? err.message : String(err)}`);
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
});
|
|
459
|
+
// 6. Secondary fallback HTTP poll loop
|
|
460
|
+
while (!ac.signal.aborted) {
|
|
461
|
+
try {
|
|
462
|
+
const syncConfig = await client.fetchConfig(safeCreds.workspaceId);
|
|
463
|
+
await applySyncConfig(syncConfig);
|
|
464
|
+
// Run compliance probes on each iteration
|
|
465
|
+
await runProbes();
|
|
466
|
+
}
|
|
467
|
+
catch (err) {
|
|
468
|
+
log.error(`Sync iteration failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
469
|
+
log.dim(`Retrying in ${pollInterval / 1000}s...`);
|
|
142
470
|
}
|
|
143
|
-
//
|
|
471
|
+
// Sleep until next interval (AbortSignal-aware)
|
|
144
472
|
await new Promise((resolve) => {
|
|
145
473
|
const timer = setTimeout(resolve, pollInterval);
|
|
146
474
|
ac.signal.addEventListener('abort', () => {
|
|
@@ -149,6 +477,12 @@ export async function runConnect(opts) {
|
|
|
149
477
|
}, { once: true });
|
|
150
478
|
});
|
|
151
479
|
}
|
|
480
|
+
// Cleanup watcher, intervals, and WS connection on exit
|
|
481
|
+
watcher.stop();
|
|
482
|
+
fsWatcher?.close();
|
|
483
|
+
if (drainSafetyTimer)
|
|
484
|
+
clearInterval(drainSafetyTimer);
|
|
485
|
+
wsClient.close();
|
|
152
486
|
log.success('Sync daemon stopped.');
|
|
153
487
|
}
|
|
154
488
|
//# sourceMappingURL=connect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC1G,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/C,OAAO,EAAE,UAAU,EAAgB,MAAM,wBAAwB,CAAA;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,MAAM,qBAAqB,GAAG,MAAM,CAAA;AAEpC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAA0C;IACzE,+BAA+B;IAC/B,MAAM,KAAK,GAAG,eAAe,EAAE,CAAA;IAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,GAAG,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAA;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,GAAG,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAA;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAA;IAC7E,MAAM,eAAe,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAA;IACvD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAA;IACxF,MAAM,cAAc,GAAG,MAAM,EAAE,CAAA;IAE/B,MAAM,MAAM,GAAG,eAAe,CAAC,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAE7D,GAAG,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAA;IACnC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CAAA;IACzC,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,eAAe,CAAC,CAAA;IAC3C,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,YAAY,GAAG,IAAI,GAAG,CAAC,CAAA;IACrD,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAA;IAC/D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,GAAG,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;IAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAEf,wCAAwC;IACxC,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAA;IAChC,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAC5B,EAAE,CAAC,KAAK,EAAE,CAAA;IACZ,CAAC,CAAA;IACD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC9B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAE/B,eAAe;IACf,IAAI,kBAAkB,GAAG,MAAM,CAAC,aAAa,CAAA;IAE7C,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,qCAAqC;YACrC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;YAE9D,IAAI,WAAW,GAAG,CAAC,CAAA;YAEnB,wDAAwD;YACxD,IAAI,UAAU,CAAC,aAAa,GAAG,kBAAkB,EAAE,CAAC;gBAClD,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;oBAC3C,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAA;oBACvC,IAAI,CAAC,OAAO;wBAAE,SAAQ;oBAEtB,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CACvC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,WAA0B,CAAC,CACjE,CAAA;oBACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;wBAAE,SAAQ;oBAErC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,WAAW,CACvC,MAAM,CAAC,aAAa,EACpB,UAAU,EACV,UAAU,CAAC,QAAQ,CACpB,CAAA;oBACD,IAAI,OAAO,EAAE,CAAC;wBACZ,WAAW,IAAI,UAAU,CAAC,MAAM,CAAA;oBAClC,CAAC;gBACH,CAAC;gBAED,kBAAkB,GAAG,UAAU,CAAC,aAAa,CAAA;gBAC7C,UAAU,CAAC,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC,CAAA;YAC9D,CAAC;YAED,kDAAkD;YAClD,MAAM,UAAU,GAAkB,EAAE,CAAA;YACpC,MAAM,eAAe,GAA2B,EAAE,CAAA;YAElD,4CAA4C;YAC5C,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;YACrD,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;YACjD,CAAC;YAED,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC3C,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAA;gBACvC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc;oBAAE,SAAQ;gBAEjD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;gBACvE,IAAI,CAAC,WAAW;oBAAE,SAAQ;gBAE1B,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,WAAW,CAAA;gBACxE,UAAU,CAAC,IAAI,CAAC;oBACd,QAAQ,EAAE,OAAO,CAAC,cAAc;oBAChC,SAAS,EAAE,WAAW;oBACtB,aAAa,EAAE,SAAS;oBACxB,OAAO,EAAE,WAAW,KAAK,SAAS;iBACnC,CAAC,CAAA;gBAEF,mCAAmC;gBACnC,eAAe,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,WAAW,CAAA;YACvD,CAAC;YAED,uBAAuB;YACvB,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE;gBAClC,UAAU,EAAE,MAAM,EAAE;gBACpB,aAAa,EAAE,kBAAkB;gBACjC,KAAK,EAAE,eAAe;aACvB,CAAC,CAAA;YAEF,oCAAoC;YACpC,IAAI,UAAU,GAAG,CAAC,CAAA;YAClB,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;oBAC3C,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAgB;oBAC/C,KAAK,EAAE,UAAU;oBACjB,UAAU,EAAE,MAAM,EAAE;iBACrB,CAAC,CAAA;gBACF,UAAU,GAAG,UAAU,CAAC,UAAU,CAAA;YACpC,CAAC;YAED,mBAAmB;YACnB,MAAM,MAAM,CAAC,YAAY,CAAC;gBACxB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,aAAa,EAAE,kBAAkB;gBACjC,cAAc;gBACd,UAAU,EAAE,MAAM,EAAE;gBACpB,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACtC,IAAI,EAAE,CAAgB;oBACtB,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,cAAc,IAAI,EAAE;oBAC/C,QAAQ,EAAE,IAAI;oBACd,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI;iBAC/C,CAAC,CAAC;aACJ,CAAC,CAAA;YAEF,gBAAgB;YAChB,MAAM,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,UAAU,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YAC/E,GAAG,CAAC,GAAG,CACL,kBAAkB,kBAAkB,MAAM,WAAW,eAAe,UAAU,oBAAoB,YAAY,GAAG,IAAI,GAAG,CACzH,CAAA;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,yCAAyC;YACzC,GAAG,CAAC,KAAK,CACP,gBAAgB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACnE,CAAA;YACD,GAAG,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;QACxC,CAAC;QAED,sCAAsC;QACtC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;YAC/C,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBACvC,YAAY,CAAC,KAAK,CAAC,CAAA;gBACnB,OAAO,EAAE,CAAA;YACX,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QACpB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAA;AACrC,CAAC"}
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* enterprise-install.ts — `intutic enterprise-install` CLI command.
|
|
3
|
+
*
|
|
4
|
+
* Requires elevated privileges (sudo on macOS/Linux, admin on Windows).
|
|
5
|
+
* Writes system-level governance hooks that survive user-level tampering:
|
|
6
|
+
*
|
|
7
|
+
* macOS:
|
|
8
|
+
* - /etc/cursor/hooks.json (system Cursor hooks)
|
|
9
|
+
* - System keychain CA trust entry for Intutic proxy CA cert
|
|
10
|
+
* - MDM configuration profile generator
|
|
11
|
+
*
|
|
12
|
+
* Linux:
|
|
13
|
+
* - /etc/cursor/hooks.json
|
|
14
|
+
* - /usr/local/share/ca-certificates/intutic-ca.crt + update-ca-certificates
|
|
15
|
+
*
|
|
16
|
+
* Windows:
|
|
17
|
+
* - certutil -addstore Root intutic-ca.crt
|
|
18
|
+
* - HKLM registry-based Cursor hooks (via PowerShell)
|
|
19
|
+
*
|
|
20
|
+
* Usage: sudo intutic enterprise-install
|
|
21
|
+
*
|
|
22
|
+
* LLD #14 — Phase 3 cross-harness defence
|
|
23
|
+
* @module
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* Main enterprise-install entry point.
|
|
27
|
+
* Called by the `intutic enterprise-install` CLI command.
|
|
28
|
+
*/
|
|
29
|
+
export declare function enterpriseInstall(options: {
|
|
30
|
+
proxyUrl: string;
|
|
31
|
+
workspaceRoot?: string;
|
|
32
|
+
mdmOutputDir?: string;
|
|
33
|
+
firewallOutputDir?: string;
|
|
34
|
+
generateMdmOnly?: boolean;
|
|
35
|
+
}): Promise<void>;
|
|
36
|
+
//# sourceMappingURL=enterprise-install.d.ts.map
|