@intutic/cli 1.3.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/LICENSE +21 -0
- package/README.md +107 -0
- package/dist/cli.d.ts +14 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +348 -0
- package/dist/cli.js.map +1 -0
- 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/budget.d.ts +7 -0
- package/dist/commands/budget.d.ts.map +1 -0
- package/dist/commands/budget.js +68 -0
- package/dist/commands/budget.js.map +1 -0
- package/dist/commands/budgetCompatibility.test.d.ts +2 -0
- package/dist/commands/budgetCompatibility.test.d.ts.map +1 -0
- package/dist/commands/budgetCompatibility.test.js +19 -0
- package/dist/commands/budgetCompatibility.test.js.map +1 -0
- package/dist/commands/connect.d.ts +20 -0
- package/dist/commands/connect.d.ts.map +1 -0
- package/dist/commands/connect.js +1010 -0
- package/dist/commands/connect.js.map +1 -0
- package/dist/commands/doctor.d.ts +23 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +429 -0
- package/dist/commands/doctor.js.map +1 -0
- 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 +13 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +110 -0
- package/dist/commands/init.js.map +1 -0
- 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 +696 -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.d.ts +14 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +121 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +8 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +13 -0
- package/dist/commands/logout.js.map +1 -0
- 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/policy.d.ts +19 -0
- package/dist/commands/policy.d.ts.map +1 -0
- package/dist/commands/policy.js +232 -0
- package/dist/commands/policy.js.map +1 -0
- package/dist/commands/prompt.d.ts +11 -0
- package/dist/commands/prompt.d.ts.map +1 -0
- package/dist/commands/prompt.js +71 -0
- package/dist/commands/prompt.js.map +1 -0
- package/dist/commands/skill.d.ts +31 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +349 -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/sops.d.ts +4 -0
- package/dist/commands/sops.d.ts.map +1 -0
- package/dist/commands/sops.js +88 -0
- package/dist/commands/sops.js.map +1 -0
- package/dist/commands/status.d.ts +11 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +107 -0
- package/dist/commands/status.js.map +1 -0
- 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 +32 -0
- package/dist/commands/traces.d.ts.map +1 -0
- package/dist/commands/traces.js +207 -0
- package/dist/commands/traces.js.map +1 -0
- package/dist/commands/whoami.d.ts +12 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +34 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/config/keychain.d.ts +28 -0
- package/dist/config/keychain.d.ts.map +1 -0
- package/dist/config/keychain.js +98 -0
- package/dist/config/keychain.js.map +1 -0
- package/dist/config/paths.d.ts +30 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +53 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/store.d.ts +25 -0
- package/dist/config/store.d.ts.map +1 -0
- package/dist/config/store.js +93 -0
- package/dist/config/store.js.map +1 -0
- package/dist/harness/aider.d.ts +13 -0
- package/dist/harness/aider.d.ts.map +1 -0
- package/dist/harness/aider.js +48 -0
- package/dist/harness/aider.js.map +1 -0
- package/dist/harness/antigravity.d.ts +12 -0
- package/dist/harness/antigravity.d.ts.map +1 -0
- package/dist/harness/antigravity.js +69 -0
- package/dist/harness/antigravity.js.map +1 -0
- package/dist/harness/base.d.ts +20 -0
- package/dist/harness/base.d.ts.map +1 -0
- package/dist/harness/base.js +73 -0
- package/dist/harness/base.js.map +1 -0
- package/dist/harness/claudeCode.d.ts +2 -0
- package/dist/harness/claudeCode.d.ts.map +1 -0
- package/dist/harness/claudeCode.js +9 -0
- package/dist/harness/claudeCode.js.map +1 -0
- 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 +13 -0
- package/dist/harness/codex.d.ts.map +1 -0
- package/dist/harness/codex.js +86 -0
- package/dist/harness/codex.js.map +1 -0
- 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 +14 -0
- package/dist/harness/cursor.d.ts.map +1 -0
- package/dist/harness/cursor.js +65 -0
- package/dist/harness/cursor.js.map +1 -0
- package/dist/harness/detector.d.ts +29 -0
- package/dist/harness/detector.d.ts.map +1 -0
- package/dist/harness/detector.js +81 -0
- package/dist/harness/detector.js.map +1 -0
- package/dist/harness/githubCopilot.d.ts +12 -0
- package/dist/harness/githubCopilot.d.ts.map +1 -0
- package/dist/harness/githubCopilot.js +54 -0
- package/dist/harness/githubCopilot.js.map +1 -0
- 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/hermes.d.ts +12 -0
- package/dist/harness/hermes.d.ts.map +1 -0
- package/dist/harness/hermes.js +51 -0
- package/dist/harness/hermes.js.map +1 -0
- package/dist/harness/n8n.d.ts +17 -0
- package/dist/harness/n8n.d.ts.map +1 -0
- package/dist/harness/n8n.js +125 -0
- package/dist/harness/n8n.js.map +1 -0
- 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/openclaw.d.ts +12 -0
- package/dist/harness/openclaw.d.ts.map +1 -0
- package/dist/harness/openclaw.js +51 -0
- package/dist/harness/openclaw.js.map +1 -0
- package/dist/harness/openhands.d.ts +12 -0
- package/dist/harness/openhands.d.ts.map +1 -0
- package/dist/harness/openhands.js +67 -0
- package/dist/harness/openhands.js.map +1 -0
- package/dist/harness/pi.d.ts +12 -0
- package/dist/harness/pi.d.ts.map +1 -0
- package/dist/harness/pi.js +51 -0
- package/dist/harness/pi.js.map +1 -0
- 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 +30 -0
- package/dist/harness/types.d.ts.map +1 -0
- package/dist/harness/types.js +32 -0
- package/dist/harness/types.js.map +1 -0
- 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 +14 -0
- package/dist/harness/windsurf.d.ts.map +1 -0
- package/dist/harness/windsurf.js +64 -0
- package/dist/harness/windsurf.js.map +1 -0
- package/dist/lib/api.d.ts +48 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/api.js +128 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/envInjector.d.ts +24 -0
- package/dist/lib/envInjector.d.ts.map +1 -0
- package/dist/lib/envInjector.js +149 -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/hash.d.ts +11 -0
- package/dist/lib/hash.d.ts.map +1 -0
- package/dist/lib/hash.js +18 -0
- package/dist/lib/hash.js.map +1 -0
- package/dist/lib/logger.d.ts +18 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +33 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/onboarding.d.ts +10 -0
- package/dist/lib/onboarding.d.ts.map +1 -0
- package/dist/lib/onboarding.js +178 -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 +55 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment Variable Injector (TD-041 graduation)
|
|
3
|
+
*
|
|
4
|
+
* Injects ANTHROPIC_BASE_URL and OPENAI_BASE_URL as persistent
|
|
5
|
+
* system-level environment variables that survive terminal restarts.
|
|
6
|
+
*
|
|
7
|
+
* Platform support:
|
|
8
|
+
* macOS: launchctl setenv <KEY> <VALUE>
|
|
9
|
+
* Linux: ~/.bashrc append (user-level; system /etc/environment requires sudo)
|
|
10
|
+
* Windows: setx <KEY> <VALUE> (user-level, no /M)
|
|
11
|
+
*
|
|
12
|
+
* LLD #30: Multi-Region Preparation, WS-5MR (TD-041)
|
|
13
|
+
* @module
|
|
14
|
+
*/
|
|
15
|
+
import { execSync } from 'node:child_process';
|
|
16
|
+
import fs from 'node:fs';
|
|
17
|
+
import path from 'node:path';
|
|
18
|
+
import os from 'node:os';
|
|
19
|
+
import { createLogger } from '@intutic/logger';
|
|
20
|
+
const logger = createLogger('envInjector');
|
|
21
|
+
const ENV_VARS = ['ANTHROPIC_BASE_URL', 'OPENAI_BASE_URL'];
|
|
22
|
+
export class PlatformNotSupportedError extends Error {
|
|
23
|
+
constructor(platform) {
|
|
24
|
+
super(`Platform not supported for env injection: ${platform}`);
|
|
25
|
+
this.name = 'PlatformNotSupportedError';
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export class ElevationRequiredError extends Error {
|
|
29
|
+
constructor(path) {
|
|
30
|
+
super(`System-level write requires root access to ${path}. Falling back to user-level.`);
|
|
31
|
+
this.name = 'ElevationRequiredError';
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function sanitizeShellValue(val) {
|
|
35
|
+
return val.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/`/g, '\\`').replace(/\$/g, '\\$');
|
|
36
|
+
}
|
|
37
|
+
function macosInject(key, value) {
|
|
38
|
+
execSync(`launchctl setenv ${key} "${sanitizeShellValue(value)}"`, { stdio: 'pipe' });
|
|
39
|
+
}
|
|
40
|
+
function macosRemove(key) {
|
|
41
|
+
try {
|
|
42
|
+
execSync(`launchctl unsetenv ${key}`, { stdio: 'pipe' });
|
|
43
|
+
}
|
|
44
|
+
catch { }
|
|
45
|
+
}
|
|
46
|
+
function linuxInjectUser(key, value) {
|
|
47
|
+
const rcFile = path.join(os.homedir(), '.bashrc');
|
|
48
|
+
const marker = `# intutic-env-${key}`;
|
|
49
|
+
const line = `export ${key}="${sanitizeShellValue(value)}" ${marker}`;
|
|
50
|
+
let content = '';
|
|
51
|
+
try {
|
|
52
|
+
content = fs.readFileSync(rcFile, 'utf8');
|
|
53
|
+
}
|
|
54
|
+
catch { }
|
|
55
|
+
// Remove existing entry for this key
|
|
56
|
+
const lines = content.split('\n').filter(l => !l.includes(marker));
|
|
57
|
+
lines.push(line);
|
|
58
|
+
fs.writeFileSync(rcFile, lines.join('\n') + '\n', { mode: 0o644 });
|
|
59
|
+
}
|
|
60
|
+
function linuxRemoveUser(key) {
|
|
61
|
+
const rcFile = path.join(os.homedir(), '.bashrc');
|
|
62
|
+
const marker = `# intutic-env-${key}`;
|
|
63
|
+
try {
|
|
64
|
+
const content = fs.readFileSync(rcFile, 'utf8');
|
|
65
|
+
const filtered = content.split('\n').filter(l => !l.includes(marker)).join('\n');
|
|
66
|
+
fs.writeFileSync(rcFile, filtered + '\n', { mode: 0o644 });
|
|
67
|
+
}
|
|
68
|
+
catch { }
|
|
69
|
+
}
|
|
70
|
+
function windowsInject(key, value) {
|
|
71
|
+
execSync(`setx ${key} "${sanitizeShellValue(value)}"`, { stdio: 'pipe' });
|
|
72
|
+
}
|
|
73
|
+
function windowsRemove(key) {
|
|
74
|
+
try {
|
|
75
|
+
execSync(`reg delete HKCU\\Environment /v ${key} /f`, { stdio: 'pipe' });
|
|
76
|
+
}
|
|
77
|
+
catch { }
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Injects ANTHROPIC_BASE_URL and OPENAI_BASE_URL as persistent env vars.
|
|
81
|
+
*
|
|
82
|
+
* @param proxyUrl - The Intutic proxy URL (e.g. https://proxy.acme.intutic.ai)
|
|
83
|
+
* @returns InjectionResult describing what was done
|
|
84
|
+
*/
|
|
85
|
+
export async function injectBaseUrlEnvVars(proxyUrl) {
|
|
86
|
+
const platform = os.platform();
|
|
87
|
+
logger.info({ platform, proxyUrl }, 'envInjector.inject_start');
|
|
88
|
+
if (platform === 'darwin') {
|
|
89
|
+
for (const key of ENV_VARS)
|
|
90
|
+
macosInject(key, proxyUrl);
|
|
91
|
+
logger.info({ platform, vars: ENV_VARS }, 'envInjector.macos_launchctl_set');
|
|
92
|
+
return { platform, scope: 'system', vars: [...ENV_VARS], method: 'launchctl setenv' };
|
|
93
|
+
}
|
|
94
|
+
if (platform === 'linux') {
|
|
95
|
+
// Attempt system-level first; fall back to user-level
|
|
96
|
+
let scope = 'user';
|
|
97
|
+
try {
|
|
98
|
+
const etcEnv = '/etc/environment';
|
|
99
|
+
// Only attempt if writable (i.e., running as root)
|
|
100
|
+
fs.accessSync(etcEnv, fs.constants.W_OK);
|
|
101
|
+
for (const key of ENV_VARS) {
|
|
102
|
+
let content = fs.readFileSync(etcEnv, 'utf8');
|
|
103
|
+
content = content.split('\n').filter(l => !l.startsWith(`${key}=`)).join('\n');
|
|
104
|
+
content += `\n${key}="${sanitizeShellValue(proxyUrl)}"`;
|
|
105
|
+
fs.writeFileSync(etcEnv, content.trim() + '\n', { mode: 0o644 });
|
|
106
|
+
}
|
|
107
|
+
scope = 'system';
|
|
108
|
+
logger.info({ platform, vars: ENV_VARS }, 'envInjector.linux_etc_environment_set');
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
// Not root \u2014 user-level fallback
|
|
112
|
+
for (const key of ENV_VARS)
|
|
113
|
+
linuxInjectUser(key, proxyUrl);
|
|
114
|
+
logger.info({ platform, vars: ENV_VARS }, 'envInjector.linux_bashrc_set');
|
|
115
|
+
}
|
|
116
|
+
return { platform, scope, vars: [...ENV_VARS], method: scope === 'system' ? '/etc/environment' : '~/.bashrc' };
|
|
117
|
+
}
|
|
118
|
+
if (platform === 'win32') {
|
|
119
|
+
for (const key of ENV_VARS)
|
|
120
|
+
windowsInject(key, proxyUrl);
|
|
121
|
+
logger.info({ platform, vars: ENV_VARS }, 'envInjector.windows_setx_set');
|
|
122
|
+
return { platform, scope: 'user', vars: [...ENV_VARS], method: 'setx' };
|
|
123
|
+
}
|
|
124
|
+
throw new PlatformNotSupportedError(platform);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Removes the injected base URL env vars.
|
|
128
|
+
*/
|
|
129
|
+
export async function removeBaseUrlEnvVars() {
|
|
130
|
+
const platform = os.platform();
|
|
131
|
+
logger.info({ platform }, 'envInjector.remove_start');
|
|
132
|
+
if (platform === 'darwin') {
|
|
133
|
+
for (const key of ENV_VARS)
|
|
134
|
+
macosRemove(key);
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
if (platform === 'linux') {
|
|
138
|
+
for (const key of ENV_VARS)
|
|
139
|
+
linuxRemoveUser(key);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
if (platform === 'win32') {
|
|
143
|
+
for (const key of ENV_VARS)
|
|
144
|
+
windowsRemove(key);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
throw new PlatformNotSupportedError(platform);
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=envInjector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envInjector.js","sourceRoot":"","sources":["../../src/lib/envInjector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envInjector.test.d.ts","sourceRoot":"","sources":["../../src/lib/envInjector.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { injectBaseUrlEnvVars, removeBaseUrlEnvVars } from './envInjector.js';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
import { execSync } from 'node:child_process';
|
|
5
|
+
describe('Environment Variable Injector', () => {
|
|
6
|
+
it('correctly injects and removes env variables on the current platform', async () => {
|
|
7
|
+
const platform = os.platform();
|
|
8
|
+
const testProxyUrl = 'http://127.0.0.1:3001';
|
|
9
|
+
const result = await injectBaseUrlEnvVars(testProxyUrl);
|
|
10
|
+
expect(result.platform).toBe(platform);
|
|
11
|
+
expect(result.vars).toContain('ANTHROPIC_BASE_URL');
|
|
12
|
+
expect(result.vars).toContain('OPENAI_BASE_URL');
|
|
13
|
+
if (platform === 'darwin') {
|
|
14
|
+
expect(result.scope).toBe('system');
|
|
15
|
+
expect(result.method).toBe('launchctl setenv');
|
|
16
|
+
// Verify launchctl has it
|
|
17
|
+
const anthropicVal = execSync('launchctl getenv ANTHROPIC_BASE_URL').toString().trim();
|
|
18
|
+
expect(anthropicVal).toBe(testProxyUrl);
|
|
19
|
+
const openaiVal = execSync('launchctl getenv OPENAI_BASE_URL').toString().trim();
|
|
20
|
+
expect(openaiVal).toBe(testProxyUrl);
|
|
21
|
+
}
|
|
22
|
+
// Now clean up/remove
|
|
23
|
+
await removeBaseUrlEnvVars();
|
|
24
|
+
if (platform === 'darwin') {
|
|
25
|
+
const anthropicValAfter = execSync('launchctl getenv ANTHROPIC_BASE_URL').toString().trim();
|
|
26
|
+
expect(anthropicValAfter).toBe('');
|
|
27
|
+
const openaiValAfter = execSync('launchctl getenv OPENAI_BASE_URL').toString().trim();
|
|
28
|
+
expect(openaiValAfter).toBe('');
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=envInjector.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envInjector.test.js","sourceRoot":"","sources":["../../src/lib/envInjector.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC7E,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE7C,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAA;QAC9B,MAAM,YAAY,GAAG,uBAAuB,CAAA;QAE5C,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,YAAY,CAAC,CAAA;QACvD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAA;QACnD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;QAEhD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;YAE9C,0BAA0B;YAC1B,MAAM,YAAY,GAAG,QAAQ,CAAC,qCAAqC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAA;YACtF,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YAEvC,MAAM,SAAS,GAAG,QAAQ,CAAC,kCAAkC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAA;YAChF,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACtC,CAAC;QAED,sBAAsB;QACtB,MAAM,oBAAoB,EAAE,CAAA;QAE5B,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,iBAAiB,GAAG,QAAQ,CAAC,qCAAqC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAA;YAC3F,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAClC,MAAM,cAAc,GAAG,QAAQ,CAAC,kCAAkC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAA;YACrF,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACjC,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* gitHooks.ts — Install and manage Git context hooks.
|
|
3
|
+
*
|
|
4
|
+
* Installs post-commit and post-checkout hooks into the workspace's
|
|
5
|
+
* `.git/hooks/` directory to trigger real-time branch/commit tracking.
|
|
6
|
+
*
|
|
7
|
+
* LLD #14 — gitHooks.ts
|
|
8
|
+
* HLD §3.14 — Real-Time State Mirroring (Git hooks context integration)
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Installs post-commit and post-checkout hooks into `.git/hooks/`.
|
|
14
|
+
*
|
|
15
|
+
* @param workspaceRoot - Workspace root directory.
|
|
16
|
+
* @returns Promise<boolean> - True if successfully installed, false otherwise.
|
|
17
|
+
*/
|
|
18
|
+
export declare function installGitHooks(workspaceRoot: string): Promise<boolean>;
|
|
19
|
+
//# sourceMappingURL=gitHooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitHooks.d.ts","sourceRoot":"","sources":["../../src/lib/gitHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAcH;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAiC7E"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* gitHooks.ts — Install and manage Git context hooks.
|
|
3
|
+
*
|
|
4
|
+
* Installs post-commit and post-checkout hooks into the workspace's
|
|
5
|
+
* `.git/hooks/` directory to trigger real-time branch/commit tracking.
|
|
6
|
+
*
|
|
7
|
+
* LLD #14 — gitHooks.ts
|
|
8
|
+
* HLD §3.14 — Real-Time State Mirroring (Git hooks context integration)
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
import * as node_fs from 'node:fs/promises';
|
|
13
|
+
import * as node_path from 'node:path';
|
|
14
|
+
import { log } from './logger.js';
|
|
15
|
+
const HOOK_CONTENT = `
|
|
16
|
+
#!/bin/sh
|
|
17
|
+
# Intutic Git Context Sync Hook
|
|
18
|
+
if command -v intutic >/dev/null 2>&1; then
|
|
19
|
+
intutic sync-context --git --branch "$(git branch --show-current)" --commit "$(git rev-parse HEAD)" >/dev/null 2>&1 &
|
|
20
|
+
fi
|
|
21
|
+
`.trim();
|
|
22
|
+
/**
|
|
23
|
+
* Installs post-commit and post-checkout hooks into `.git/hooks/`.
|
|
24
|
+
*
|
|
25
|
+
* @param workspaceRoot - Workspace root directory.
|
|
26
|
+
* @returns Promise<boolean> - True if successfully installed, false otherwise.
|
|
27
|
+
*/
|
|
28
|
+
export async function installGitHooks(workspaceRoot) {
|
|
29
|
+
const gitDir = node_path.join(workspaceRoot, '.git');
|
|
30
|
+
try {
|
|
31
|
+
const stat = await node_fs.stat(gitDir);
|
|
32
|
+
if (!stat.isDirectory()) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// Not a Git repository, skip hook installation
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
const hooksDir = node_path.join(gitDir, 'hooks');
|
|
41
|
+
try {
|
|
42
|
+
await node_fs.mkdir(hooksDir, { recursive: true });
|
|
43
|
+
const postCommitPath = node_path.join(hooksDir, 'post-commit');
|
|
44
|
+
const postCheckoutPath = node_path.join(hooksDir, 'post-checkout');
|
|
45
|
+
await node_fs.writeFile(postCommitPath, HOOK_CONTENT + '\n', { encoding: 'utf-8', mode: 0o755 });
|
|
46
|
+
await node_fs.writeFile(postCheckoutPath, HOOK_CONTENT + '\n', { encoding: 'utf-8', mode: 0o755 });
|
|
47
|
+
// Double check execute permissions
|
|
48
|
+
await node_fs.chmod(postCommitPath, 0o755);
|
|
49
|
+
await node_fs.chmod(postCheckoutPath, 0o755);
|
|
50
|
+
log.info('Successfully installed Git sync hooks (post-commit, post-checkout)');
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
log.warn(`Failed to write Git hooks: ${err instanceof Error ? err.message : String(err)}`);
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=gitHooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitHooks.js","sourceRoot":"","sources":["../../src/lib/gitHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,SAAS,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEjC,MAAM,YAAY,GAAG;;;;;;CAMpB,CAAC,IAAI,EAAE,CAAA;AAER;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,aAAqB;IACzD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;IAEpD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACvC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,+CAA+C;QAC/C,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChD,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAElD,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;QAC9D,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAA;QAElE,MAAM,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,YAAY,GAAG,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QAChG,MAAM,OAAO,CAAC,SAAS,CAAC,gBAAgB,EAAE,YAAY,GAAG,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QAElG,mCAAmC;QACnC,MAAM,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;QAC1C,MAAM,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;QAE5C,GAAG,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAA;QAC9E,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,8BAA8B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC1F,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SHA-256 hashing utilities.
|
|
3
|
+
*
|
|
4
|
+
* LLD #8 — Sync Daemon / CLI
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
/** Compute SHA-256 hash of a file's contents. Returns hex string. */
|
|
8
|
+
export declare function hashFile(filePath: string): Promise<string>;
|
|
9
|
+
/** Compute SHA-256 hash of a string. Returns hex string. */
|
|
10
|
+
export declare function hashString(content: string): string;
|
|
11
|
+
//# sourceMappingURL=hash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/lib/hash.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,qEAAqE;AACrE,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhE;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElD"}
|
package/dist/lib/hash.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SHA-256 hashing utilities.
|
|
3
|
+
*
|
|
4
|
+
* LLD #8 — Sync Daemon / CLI
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import { createHash } from 'node:crypto';
|
|
8
|
+
import { readFile } from 'node:fs/promises';
|
|
9
|
+
/** Compute SHA-256 hash of a file's contents. Returns hex string. */
|
|
10
|
+
export async function hashFile(filePath) {
|
|
11
|
+
const content = await readFile(filePath);
|
|
12
|
+
return createHash('sha256').update(content).digest('hex');
|
|
13
|
+
}
|
|
14
|
+
/** Compute SHA-256 hash of a string. Returns hex string. */
|
|
15
|
+
export function hashString(content) {
|
|
16
|
+
return createHash('sha256').update(content, 'utf-8').digest('hex');
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=hash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/lib/hash.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,qEAAqE;AACrE,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,QAAgB;IAC7C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACxC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC3D,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACpE,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Colorized console logger using picocolors.
|
|
3
|
+
*
|
|
4
|
+
* LLD #8 — Sync Daemon / CLI
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
export declare const log: {
|
|
8
|
+
info(msg: string): void;
|
|
9
|
+
success(msg: string): void;
|
|
10
|
+
warn(msg: string): void;
|
|
11
|
+
error(msg: string): void;
|
|
12
|
+
dim(msg: string): void;
|
|
13
|
+
/** Print a labeled key-value pair. */
|
|
14
|
+
field(label: string, value: string): void;
|
|
15
|
+
/** Print a section header. */
|
|
16
|
+
header(msg: string): void;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,eAAO,MAAM,GAAG;cACJ,MAAM,GAAG,IAAI;iBAIV,MAAM,GAAG,IAAI;cAIhB,MAAM,GAAG,IAAI;eAIZ,MAAM,GAAG,IAAI;aAIf,MAAM,GAAG,IAAI;IAItB,sCAAsC;iBACzB,MAAM,SAAS,MAAM,GAAG,IAAI;IAIzC,8BAA8B;gBAClB,MAAM,GAAG,IAAI;CAG1B,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Colorized console logger using picocolors.
|
|
3
|
+
*
|
|
4
|
+
* LLD #8 — Sync Daemon / CLI
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
import pc from 'picocolors';
|
|
8
|
+
export const log = {
|
|
9
|
+
info(msg) {
|
|
10
|
+
console.log(`${pc.blue('ℹ')} ${msg}`);
|
|
11
|
+
},
|
|
12
|
+
success(msg) {
|
|
13
|
+
console.log(`${pc.green('✔')} ${msg}`);
|
|
14
|
+
},
|
|
15
|
+
warn(msg) {
|
|
16
|
+
console.log(`${pc.yellow('⚠')} ${msg}`);
|
|
17
|
+
},
|
|
18
|
+
error(msg) {
|
|
19
|
+
console.error(`${pc.red('✖')} ${msg}`);
|
|
20
|
+
},
|
|
21
|
+
dim(msg) {
|
|
22
|
+
console.log(pc.dim(msg));
|
|
23
|
+
},
|
|
24
|
+
/** Print a labeled key-value pair. */
|
|
25
|
+
field(label, value) {
|
|
26
|
+
console.log(` ${pc.dim(label + ':')} ${value}`);
|
|
27
|
+
},
|
|
28
|
+
/** Print a section header. */
|
|
29
|
+
header(msg) {
|
|
30
|
+
console.log(`\n${pc.bold(pc.cyan(msg))}`);
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,IAAI,CAAC,GAAW;QACd,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;IACvC,CAAC;IAED,OAAO,CAAC,GAAW;QACjB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;IACxC,CAAC;IAED,IAAI,CAAC,GAAW;QACd,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;IACzC,CAAC;IAED,KAAK,CAAC,GAAW;QACf,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;IACxC,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1B,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,KAAa,EAAE,KAAa;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAA;IAClD,CAAC;IAED,8BAA8B;IAC9B,MAAM,CAAC,GAAW;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAA;IAC3C,CAAC;CACF,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Onboarding setup guide generator.
|
|
3
|
+
*
|
|
4
|
+
* Prints tailored, step-by-step setup guides for each detected harness.
|
|
5
|
+
*
|
|
6
|
+
* LLD #8 — Sync Daemon / CLI
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
export declare function printOnboardingGuide(harnesses: string[], userAuthToken?: string, devMode?: boolean): void;
|
|
10
|
+
//# sourceMappingURL=onboarding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../../src/lib/onboarding.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA6BH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,IAAI,CAmKvG"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Onboarding setup guide generator.
|
|
3
|
+
*
|
|
4
|
+
* Prints tailored, step-by-step setup guides for each detected harness.
|
|
5
|
+
*
|
|
6
|
+
* LLD #8 — Sync Daemon / CLI
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import pc from 'picocolors';
|
|
10
|
+
import { log } from './logger.js';
|
|
11
|
+
/**
|
|
12
|
+
* Print tailored setup instructions for a list of harnesses.
|
|
13
|
+
*
|
|
14
|
+
* @param harnesses - List of harness types (e.g. ['cursor', 'aider'])
|
|
15
|
+
* @param apiKey - Optional API key to display in the instructions
|
|
16
|
+
* @param devMode - If true, use localhost:4000; otherwise use remote proxy
|
|
17
|
+
*/
|
|
18
|
+
function maskUserToken(tokenVal) {
|
|
19
|
+
if (!tokenVal)
|
|
20
|
+
return '<YOUR_INTUTIC_API_KEY>';
|
|
21
|
+
return `${tokenVal.substring(0, 4)}...${tokenVal.substring(tokenVal.length - 4)}`;
|
|
22
|
+
}
|
|
23
|
+
function writeCliOutput(line) {
|
|
24
|
+
process.stdout.write(line + '\n');
|
|
25
|
+
}
|
|
26
|
+
function printEnvVar(envName, envVal) {
|
|
27
|
+
writeCliOutput(` export ${envName}="${envVal}"`);
|
|
28
|
+
}
|
|
29
|
+
function printYamlKey(keyName, keyVal, spaces = 5) {
|
|
30
|
+
writeCliOutput(`${' '.repeat(spaces)}${keyName}: ${keyVal}`);
|
|
31
|
+
}
|
|
32
|
+
export function printOnboardingGuide(harnesses, userAuthToken, devMode = false) {
|
|
33
|
+
const safeDisplayValue = maskUserToken(userAuthToken);
|
|
34
|
+
const proxyUrl = devMode ? 'http://localhost:4000/v1' : 'https://proxy.intutic.ai/v1';
|
|
35
|
+
const proxyHost = devMode ? 'http://localhost:4000' : 'https://proxy.intutic.ai';
|
|
36
|
+
writeCliOutput('');
|
|
37
|
+
log.header('Intutic — Setup & Integration Instructions');
|
|
38
|
+
writeCliOutput(`To route your agent traffic through the Intutic proxy, follow the setup below.`);
|
|
39
|
+
writeCliOutput(`Your local gateway endpoint is: ${pc.cyan(proxyUrl)}`);
|
|
40
|
+
if (userAuthToken) {
|
|
41
|
+
writeCliOutput(`Your Intutic API Key is: ${pc.green(safeDisplayValue)}`);
|
|
42
|
+
}
|
|
43
|
+
if (harnesses.length === 0) {
|
|
44
|
+
writeCliOutput('');
|
|
45
|
+
log.info('No harnesses were automatically detected in this workspace.');
|
|
46
|
+
writeCliOutput(`Please refer to the full integration guide at: ${pc.bold('user.md')}`);
|
|
47
|
+
writeCliOutput('Or use the general subprocess wrapper to launch any CLI agent:');
|
|
48
|
+
writeCliOutput(` ${pc.bold(`intutic exec -- <your-agent-command>`)}`);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
for (const h of harnesses) {
|
|
52
|
+
writeCliOutput('\n' + pc.bold(pc.magenta(`👉 Setup instructions for ${h.toUpperCase()}:`)));
|
|
53
|
+
switch (h) {
|
|
54
|
+
case 'cursor':
|
|
55
|
+
writeCliOutput(` 1. Open Cursor Settings (Cmd+, or Ctrl+,).`);
|
|
56
|
+
writeCliOutput(` 2. Navigate to the ${pc.bold('Models')} tab.`);
|
|
57
|
+
writeCliOutput(` 3. Under ${pc.bold('OpenAI API Key')}, enter your Intutic API Key:`);
|
|
58
|
+
writeCliOutput(` ${pc.green(safeDisplayValue)}`);
|
|
59
|
+
writeCliOutput(` 4. Enable the ${pc.bold('"Override OpenAI Base URL"')} toggle.`);
|
|
60
|
+
writeCliOutput(` 5. Set the override URL to:`);
|
|
61
|
+
writeCliOutput(` ${pc.cyan(proxyUrl)}`);
|
|
62
|
+
writeCliOutput(` 6. Click "Verify" to save and test the connection.`);
|
|
63
|
+
break;
|
|
64
|
+
case 'claude-code':
|
|
65
|
+
writeCliOutput(` We recommend running Claude Code using the Intutic wrapper:`);
|
|
66
|
+
writeCliOutput(` ${pc.bold('intutic exec -- claude')}`);
|
|
67
|
+
writeCliOutput(` `);
|
|
68
|
+
writeCliOutput(` Alternatively, manually export the environment variables before starting:`);
|
|
69
|
+
writeCliOutput(` export ANTHROPIC_BASE_URL="${pc.cyan(proxyHost)}"`);
|
|
70
|
+
printEnvVar('ANTHROPIC_API_KEY', pc.green(safeDisplayValue));
|
|
71
|
+
break;
|
|
72
|
+
case 'aider':
|
|
73
|
+
writeCliOutput(` We recommend running Aider using the Intutic wrapper:`);
|
|
74
|
+
writeCliOutput(` ${pc.bold(`intutic exec -- aider --model openai/gpt-4o`)}`);
|
|
75
|
+
writeCliOutput(` `);
|
|
76
|
+
writeCliOutput(` Alternatively, add this to your ${pc.bold('.aider.conf.yml')} in the workspace:`);
|
|
77
|
+
writeCliOutput(` openai-api-base: ${proxyUrl}`);
|
|
78
|
+
printYamlKey('openai-api-key', safeDisplayValue);
|
|
79
|
+
writeCliOutput(` model: openai/gpt-4o`);
|
|
80
|
+
writeCliOutput(` `);
|
|
81
|
+
writeCliOutput(` Or export the environment variables manually:`);
|
|
82
|
+
writeCliOutput(` export OPENAI_API_BASE="${proxyUrl}"`);
|
|
83
|
+
printEnvVar('OPENAI_API_KEY', safeDisplayValue);
|
|
84
|
+
break;
|
|
85
|
+
case 'continue':
|
|
86
|
+
writeCliOutput(` Add this model block to your ${pc.bold('~/.continue/config.yaml')}:`);
|
|
87
|
+
writeCliOutput(` models:`);
|
|
88
|
+
writeCliOutput(` - name: Intutic Gateway`);
|
|
89
|
+
writeCliOutput(` provider: openai`);
|
|
90
|
+
writeCliOutput(` model: gpt-4o`);
|
|
91
|
+
writeCliOutput(` apiBase: ${proxyUrl}`);
|
|
92
|
+
printYamlKey('apiKey', safeDisplayValue, 9);
|
|
93
|
+
break;
|
|
94
|
+
case 'cline':
|
|
95
|
+
writeCliOutput(` 1. Open the ${pc.bold('Cline')} panel in VS Code.`);
|
|
96
|
+
writeCliOutput(` 2. Click the settings gear icon (⚙️).`);
|
|
97
|
+
writeCliOutput(` 3. Set ${pc.bold('API Provider')} to: OpenAI Compatible`);
|
|
98
|
+
writeCliOutput(` 4. Set ${pc.bold('Base URL')} to: ${pc.cyan(proxyUrl)}`);
|
|
99
|
+
writeCliOutput(` 5. Set ${pc.bold('API Key')} to your Intutic API Key:`);
|
|
100
|
+
writeCliOutput(` ${pc.green(safeDisplayValue)}`);
|
|
101
|
+
writeCliOutput(` 6. Enter the target Model ID (e.g. gpt-4o) and save.`);
|
|
102
|
+
break;
|
|
103
|
+
case 'roo-code':
|
|
104
|
+
writeCliOutput(` 1. Open the ${pc.bold('Roo Code')} panel in VS Code.`);
|
|
105
|
+
writeCliOutput(` 2. Click the settings gear icon (⚙️).`);
|
|
106
|
+
writeCliOutput(` 3. Under API Settings, set ${pc.bold('Provider')} to: OpenAI Compatible`);
|
|
107
|
+
writeCliOutput(` 4. Set ${pc.bold('Base URL')} to: ${pc.cyan(proxyUrl)}`);
|
|
108
|
+
writeCliOutput(` 5. Set ${pc.bold('API Key')} to:`);
|
|
109
|
+
writeCliOutput(` ${pc.green(safeDisplayValue)}`);
|
|
110
|
+
writeCliOutput(` 6. Enter the target Model ID (e.g. gpt-4o) and save.`);
|
|
111
|
+
break;
|
|
112
|
+
case 'goose':
|
|
113
|
+
writeCliOutput(` We recommend running Goose using the Intutic wrapper:`);
|
|
114
|
+
writeCliOutput(` ${pc.bold('intutic exec -- goose run')}`);
|
|
115
|
+
writeCliOutput(` `);
|
|
116
|
+
writeCliOutput(` Alternatively, manually export:`);
|
|
117
|
+
writeCliOutput(` export OPENAI_HOST="${pc.cyan(proxyHost)}"`);
|
|
118
|
+
printEnvVar('OPENAI_API_KEY', safeDisplayValue);
|
|
119
|
+
break;
|
|
120
|
+
case 'openclaw':
|
|
121
|
+
writeCliOutput(` Add the custom provider config to ${pc.bold('~/.openclaw/openclaw.json')}:`);
|
|
122
|
+
writeCliOutput(` {`);
|
|
123
|
+
writeCliOutput(` "models": {`);
|
|
124
|
+
writeCliOutput(` "providers": {`);
|
|
125
|
+
writeCliOutput(` "intutic": {`);
|
|
126
|
+
writeCliOutput(` "baseUrl": "${proxyUrl}",`);
|
|
127
|
+
writeCliOutput(` "api"+"Key": "${safeDisplayValue}",`);
|
|
128
|
+
writeCliOutput(` "api": "openai-completions",`);
|
|
129
|
+
writeCliOutput(` "models": [{ "id": "gpt-4o", "name": "GPT-4o via Intutic" }]`);
|
|
130
|
+
writeCliOutput(` }`);
|
|
131
|
+
writeCliOutput(` }`);
|
|
132
|
+
writeCliOutput(` }`);
|
|
133
|
+
writeCliOutput(` }`);
|
|
134
|
+
break;
|
|
135
|
+
case 'codex':
|
|
136
|
+
writeCliOutput(` Add the custom provider config to ${pc.bold('~/.codex/config.toml')}:`);
|
|
137
|
+
writeCliOutput(` model = "gpt-4o"`);
|
|
138
|
+
writeCliOutput(` model_provider = "intutic"`);
|
|
139
|
+
writeCliOutput(` [model_providers.intutic]`);
|
|
140
|
+
writeCliOutput(` name = "Intutic Gateway"`);
|
|
141
|
+
writeCliOutput(` base_url = "${proxyUrl}"`);
|
|
142
|
+
writeCliOutput(` env_key = "INTUTIC_API_KEY"`);
|
|
143
|
+
writeCliOutput(` wire_api = "responses"`);
|
|
144
|
+
writeCliOutput(` `);
|
|
145
|
+
writeCliOutput(` And set the API key in ${pc.bold('~/.codex/.env')}:`);
|
|
146
|
+
writeCliOutput(` INTUTIC_API_${'KEY'}=${safeDisplayValue}`);
|
|
147
|
+
break;
|
|
148
|
+
case 'claude-desktop':
|
|
149
|
+
writeCliOutput(` To override Claude Desktop inference routing:`);
|
|
150
|
+
writeCliOutput(` Configure custom third-party inference settings in your config:`);
|
|
151
|
+
writeCliOutput(` ~/Library/Application Support/Claude/claude_desktop_config.json`);
|
|
152
|
+
break;
|
|
153
|
+
case 'open-webui':
|
|
154
|
+
writeCliOutput(` Configure the OpenAI connection env vars in your Docker command:`);
|
|
155
|
+
writeCliOutput(` -e OPENAI_API_BASE_URL="${proxyUrl}"`);
|
|
156
|
+
writeCliOutput(` -e OPENAI_API_${'KEY'}="${safeDisplayValue}"`);
|
|
157
|
+
break;
|
|
158
|
+
case 'n8n':
|
|
159
|
+
writeCliOutput(` In your OpenAI Chat Model node inside n8n:`);
|
|
160
|
+
writeCliOutput(` 1. Expand "Parameters" and set ${pc.bold('Base URL')} to:`);
|
|
161
|
+
writeCliOutput(` ${pc.cyan(proxyUrl)}`);
|
|
162
|
+
writeCliOutput(` 2. Select/Create a custom credential set and use your Intutic API Key.`);
|
|
163
|
+
break;
|
|
164
|
+
case 'windsurf':
|
|
165
|
+
writeCliOutput(` Set the custom API base URL and key in the Windsurf settings tab.`);
|
|
166
|
+
break;
|
|
167
|
+
default:
|
|
168
|
+
writeCliOutput(` Launch your agent using the Intutic exec wrapper:`);
|
|
169
|
+
writeCliOutput(` ${pc.bold(`intutic exec -- <your-agent-command>`)}`);
|
|
170
|
+
writeCliOutput(` This automatically routes LLM calls to ${pc.cyan(proxyUrl)}.`);
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
writeCliOutput('');
|
|
175
|
+
log.info(`Start the sync daemon using: ${pc.bold('intutic connect')}`);
|
|
176
|
+
writeCliOutput('');
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=onboarding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../../src/lib/onboarding.ts"],"names":[],"mappings":"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"}
|