@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.
Files changed (225) hide show
  1. package/dist/cli.js +131 -130
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/attenuate.d.ts.map +1 -1
  4. package/dist/commands/attenuate.js +4 -2
  5. package/dist/commands/attenuate.js.map +1 -1
  6. package/dist/commands/budget.d.ts.map +1 -1
  7. package/dist/commands/budget.js +2 -2
  8. package/dist/commands/budget.js.map +1 -1
  9. package/dist/commands/connect.d.ts.map +1 -1
  10. package/dist/commands/connect.js +138 -49
  11. package/dist/commands/connect.js.map +1 -1
  12. package/dist/commands/disconnect.d.ts +25 -0
  13. package/dist/commands/disconnect.d.ts.map +1 -0
  14. package/dist/commands/disconnect.js +252 -0
  15. package/dist/commands/disconnect.js.map +1 -0
  16. package/dist/commands/doctor.d.ts +19 -1
  17. package/dist/commands/doctor.d.ts.map +1 -1
  18. package/dist/commands/doctor.js +33 -41
  19. package/dist/commands/doctor.js.map +1 -1
  20. package/dist/commands/enforce.d.ts +10 -0
  21. package/dist/commands/enforce.d.ts.map +1 -1
  22. package/dist/commands/enforce.js +36 -0
  23. package/dist/commands/enforce.js.map +1 -1
  24. package/dist/commands/env.d.ts +1 -1
  25. package/dist/commands/env.d.ts.map +1 -1
  26. package/dist/commands/env.js +2 -7
  27. package/dist/commands/env.js.map +1 -1
  28. package/dist/commands/exec.d.ts +7 -8
  29. package/dist/commands/exec.d.ts.map +1 -1
  30. package/dist/commands/exec.js +59 -60
  31. package/dist/commands/exec.js.map +1 -1
  32. package/dist/commands/gateway.d.ts +2 -0
  33. package/dist/commands/gateway.d.ts.map +1 -1
  34. package/dist/commands/gateway.js +16 -3
  35. package/dist/commands/gateway.js.map +1 -1
  36. package/dist/commands/guardrails.d.ts.map +1 -1
  37. package/dist/commands/guardrails.js +18 -1
  38. package/dist/commands/guardrails.js.map +1 -1
  39. package/dist/commands/init.d.ts +5 -2
  40. package/dist/commands/init.d.ts.map +1 -1
  41. package/dist/commands/init.js +38 -22
  42. package/dist/commands/init.js.map +1 -1
  43. package/dist/commands/install-daemon.d.ts +1 -1
  44. package/dist/commands/install-daemon.d.ts.map +1 -1
  45. package/dist/commands/install-daemon.js +5 -3
  46. package/dist/commands/install-daemon.js.map +1 -1
  47. package/dist/commands/integrity.d.ts +31 -2
  48. package/dist/commands/integrity.d.ts.map +1 -1
  49. package/dist/commands/integrity.js +116 -3
  50. package/dist/commands/integrity.js.map +1 -1
  51. package/dist/commands/judge.d.ts +8 -4
  52. package/dist/commands/judge.d.ts.map +1 -1
  53. package/dist/commands/judge.js +41 -21
  54. package/dist/commands/judge.js.map +1 -1
  55. package/dist/commands/login.d.ts +1 -0
  56. package/dist/commands/login.d.ts.map +1 -1
  57. package/dist/commands/login.js +16 -1
  58. package/dist/commands/login.js.map +1 -1
  59. package/dist/commands/predict-cost.d.ts +1 -2
  60. package/dist/commands/predict-cost.d.ts.map +1 -1
  61. package/dist/commands/predict-cost.js +1 -4
  62. package/dist/commands/predict-cost.js.map +1 -1
  63. package/dist/commands/setup.d.ts +1 -2
  64. package/dist/commands/setup.d.ts.map +1 -1
  65. package/dist/commands/setup.js +11 -68
  66. package/dist/commands/setup.js.map +1 -1
  67. package/dist/commands/skill.d.ts +1 -0
  68. package/dist/commands/skill.d.ts.map +1 -1
  69. package/dist/commands/skill.js +17 -3
  70. package/dist/commands/skill.js.map +1 -1
  71. package/dist/commands/start.d.ts.map +1 -1
  72. package/dist/commands/start.js +5 -1
  73. package/dist/commands/start.js.map +1 -1
  74. package/dist/commands/syncContext.d.ts.map +1 -1
  75. package/dist/commands/syncContext.js +15 -5
  76. package/dist/commands/syncContext.js.map +1 -1
  77. package/dist/config/paths.d.ts +25 -3
  78. package/dist/config/paths.d.ts.map +1 -1
  79. package/dist/config/paths.js +47 -7
  80. package/dist/config/paths.js.map +1 -1
  81. package/dist/harness/agentFramework.d.ts +25 -0
  82. package/dist/harness/agentFramework.d.ts.map +1 -0
  83. package/dist/harness/agentFramework.js +37 -0
  84. package/dist/harness/agentFramework.js.map +1 -0
  85. package/dist/harness/agentcore.d.ts +6 -3
  86. package/dist/harness/agentcore.d.ts.map +1 -1
  87. package/dist/harness/agentcore.js +7 -4
  88. package/dist/harness/agentcore.js.map +1 -1
  89. package/dist/harness/agenticOrchestrator.d.ts +3 -5
  90. package/dist/harness/agenticOrchestrator.d.ts.map +1 -1
  91. package/dist/harness/agenticOrchestrator.js +3 -5
  92. package/dist/harness/agenticOrchestrator.js.map +1 -1
  93. package/dist/harness/aiSdkHarness.d.ts +1 -1
  94. package/dist/harness/aiSdkHarness.js +1 -1
  95. package/dist/harness/aiSdkWorkflow.d.ts +1 -1
  96. package/dist/harness/aiSdkWorkflow.d.ts.map +1 -1
  97. package/dist/harness/aiSdkWorkflow.js +5 -3
  98. package/dist/harness/aiSdkWorkflow.js.map +1 -1
  99. package/dist/harness/aider.d.ts +4 -3
  100. package/dist/harness/aider.d.ts.map +1 -1
  101. package/dist/harness/aider.js +7 -6
  102. package/dist/harness/aider.js.map +1 -1
  103. package/dist/harness/antigravity.d.ts +4 -2
  104. package/dist/harness/antigravity.d.ts.map +1 -1
  105. package/dist/harness/antigravity.js +15 -12
  106. package/dist/harness/antigravity.js.map +1 -1
  107. package/dist/harness/base.d.ts +5 -1
  108. package/dist/harness/base.d.ts.map +1 -1
  109. package/dist/harness/base.js +9 -8
  110. package/dist/harness/base.js.map +1 -1
  111. package/dist/harness/cline.d.ts +10 -4
  112. package/dist/harness/cline.d.ts.map +1 -1
  113. package/dist/harness/cline.js +40 -32
  114. package/dist/harness/cline.js.map +1 -1
  115. package/dist/harness/codex.d.ts +10 -4
  116. package/dist/harness/codex.d.ts.map +1 -1
  117. package/dist/harness/codex.js +30 -32
  118. package/dist/harness/codex.js.map +1 -1
  119. package/dist/harness/continue.d.ts +8 -5
  120. package/dist/harness/continue.d.ts.map +1 -1
  121. package/dist/harness/continue.js +27 -63
  122. package/dist/harness/continue.js.map +1 -1
  123. package/dist/harness/cursor.d.ts.map +1 -1
  124. package/dist/harness/cursor.js +2 -6
  125. package/dist/harness/cursor.js.map +1 -1
  126. package/dist/harness/detector.d.ts +1 -1
  127. package/dist/harness/detector.d.ts.map +1 -1
  128. package/dist/harness/detector.js +3 -1
  129. package/dist/harness/detector.js.map +1 -1
  130. package/dist/harness/dsh.d.ts +2 -2
  131. package/dist/harness/dsh.js +3 -3
  132. package/dist/harness/dsh.js.map +1 -1
  133. package/dist/harness/eve.d.ts +1 -1
  134. package/dist/harness/eve.js +1 -1
  135. package/dist/harness/githubCopilot.d.ts +4 -2
  136. package/dist/harness/githubCopilot.d.ts.map +1 -1
  137. package/dist/harness/githubCopilot.js +13 -8
  138. package/dist/harness/githubCopilot.js.map +1 -1
  139. package/dist/harness/grok.d.ts.map +1 -1
  140. package/dist/harness/grok.js +4 -6
  141. package/dist/harness/grok.js.map +1 -1
  142. package/dist/harness/jsSdkGatedAdapter.d.ts.map +1 -1
  143. package/dist/harness/jsSdkGatedAdapter.js +8 -9
  144. package/dist/harness/jsSdkGatedAdapter.js.map +1 -1
  145. package/dist/harness/langgraph.d.ts.map +1 -1
  146. package/dist/harness/langgraph.js +8 -10
  147. package/dist/harness/langgraph.js.map +1 -1
  148. package/dist/harness/muse.d.ts.map +1 -1
  149. package/dist/harness/muse.js +4 -6
  150. package/dist/harness/muse.js.map +1 -1
  151. package/dist/harness/n8n.d.ts +12 -2
  152. package/dist/harness/n8n.d.ts.map +1 -1
  153. package/dist/harness/n8n.js +66 -3
  154. package/dist/harness/n8n.js.map +1 -1
  155. package/dist/harness/openWebUI.d.ts +7 -2
  156. package/dist/harness/openWebUI.d.ts.map +1 -1
  157. package/dist/harness/openWebUI.js +15 -4
  158. package/dist/harness/openWebUI.js.map +1 -1
  159. package/dist/harness/openaiAgents.d.ts.map +1 -1
  160. package/dist/harness/openaiAgents.js +4 -1
  161. package/dist/harness/openaiAgents.js.map +1 -1
  162. package/dist/harness/opencode.d.ts +3 -2
  163. package/dist/harness/opencode.d.ts.map +1 -1
  164. package/dist/harness/opencode.js +7 -8
  165. package/dist/harness/opencode.js.map +1 -1
  166. package/dist/harness/openhands.d.ts +3 -2
  167. package/dist/harness/openhands.d.ts.map +1 -1
  168. package/dist/harness/openhands.js +40 -27
  169. package/dist/harness/openhands.js.map +1 -1
  170. package/dist/harness/rooCode.d.ts +6 -5
  171. package/dist/harness/rooCode.d.ts.map +1 -1
  172. package/dist/harness/rooCode.js +13 -18
  173. package/dist/harness/rooCode.js.map +1 -1
  174. package/dist/harness/sdkGatedAdapter.d.ts.map +1 -1
  175. package/dist/harness/sdkGatedAdapter.js +8 -9
  176. package/dist/harness/sdkGatedAdapter.js.map +1 -1
  177. package/dist/harness/trueforge.js +2 -2
  178. package/dist/harness/trueforge.js.map +1 -1
  179. package/dist/harness/types.d.ts.map +1 -1
  180. package/dist/harness/types.js +4 -1
  181. package/dist/harness/types.js.map +1 -1
  182. package/dist/harness/windsurf.d.ts +4 -2
  183. package/dist/harness/windsurf.d.ts.map +1 -1
  184. package/dist/harness/windsurf.js +14 -11
  185. package/dist/harness/windsurf.js.map +1 -1
  186. package/dist/harness/xirp.d.ts +5 -7
  187. package/dist/harness/xirp.d.ts.map +1 -1
  188. package/dist/harness/xirp.js +5 -7
  189. package/dist/harness/xirp.js.map +1 -1
  190. package/dist/lib/envInjector.d.ts +16 -6
  191. package/dist/lib/envInjector.d.ts.map +1 -1
  192. package/dist/lib/envInjector.js +99 -88
  193. package/dist/lib/envInjector.js.map +1 -1
  194. package/dist/lib/localProxy.d.ts +19 -0
  195. package/dist/lib/localProxy.d.ts.map +1 -0
  196. package/dist/lib/localProxy.js +33 -0
  197. package/dist/lib/localProxy.js.map +1 -0
  198. package/dist/lib/onboarding.d.ts +1 -1
  199. package/dist/lib/onboarding.d.ts.map +1 -1
  200. package/dist/lib/onboarding.js +21 -27
  201. package/dist/lib/onboarding.js.map +1 -1
  202. package/dist/lib/otelPropagation.d.ts +1 -1
  203. package/dist/lib/otelPropagation.js +1 -1
  204. package/dist/lib/policySnapshot.d.ts +2 -1
  205. package/dist/lib/policySnapshot.d.ts.map +1 -1
  206. package/dist/lib/policySnapshot.js +11 -4
  207. package/dist/lib/policySnapshot.js.map +1 -1
  208. package/dist/lib/sandbox/image.d.ts +27 -0
  209. package/dist/lib/sandbox/image.d.ts.map +1 -0
  210. package/dist/lib/sandbox/image.js +54 -0
  211. package/dist/lib/sandbox/image.js.map +1 -0
  212. package/dist/lib/sandbox/oci.d.ts +1 -0
  213. package/dist/lib/sandbox/oci.d.ts.map +1 -1
  214. package/dist/lib/sandbox/oci.js +4 -0
  215. package/dist/lib/sandbox/oci.js.map +1 -1
  216. package/dist/lib/sandbox/types.d.ts +5 -0
  217. package/dist/lib/sandbox/types.d.ts.map +1 -1
  218. package/package.json +6 -5
  219. package/resources/sandbox/Dockerfile +30 -0
  220. package/resources/sandbox/entrypoint.sh +108 -0
  221. package/resources/sandbox/firecracker-launch.sh +120 -0
  222. package/dist/harness/vscodeSettingsWriter.d.ts +0 -40
  223. package/dist/harness/vscodeSettingsWriter.d.ts.map +0 -1
  224. package/dist/harness/vscodeSettingsWriter.js +0 -116
  225. 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;AAcH,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;AAqeD;;;;;;;;;;;;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"}
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"}
@@ -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 at localhost:4000.
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(PROXY_HEALTH_URL, {
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 ${PROXY_HEALTH_URL} (HTTP ${res.status})`,
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 can reach the API.
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
- const url = `${creds.controlPlaneUrl}/api/v1/health`;
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 ${creds.controlPlaneUrl}`,
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 ${creds.controlPlaneUrl} (HTTP ${res.status})`,
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 ${creds.controlPlaneUrl}.`,
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
- * First tries the proxy /health endpoint and looks for a `valkey` field.
347
- * If the proxy is unreachable or doesn't report Valkey status, falls back
348
- * to a direct TCP probe on port 6379.
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: 6379 }, () => {
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: 'Reachable at 127.0.0.1:6379 (direct TCP probe)',
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: 'Not reachable on port 6379',
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":"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"}
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;AAWH,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,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,CAuD3F"}
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"}
@@ -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