@intutic/cli 1.5.0 → 1.6.1
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 +29 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +14 -4
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/policy.d.ts +56 -0
- package/dist/commands/policy.d.ts.map +1 -1
- package/dist/commands/policy.js +234 -54
- package/dist/commands/policy.js.map +1 -1
- package/dist/harness/detector.d.ts +1 -1
- package/dist/harness/detector.js +1 -1
- package/package.json +14 -15
- package/dist/commands/benchmark.d.ts +0 -31
- package/dist/commands/benchmark.d.ts.map +0 -1
- package/dist/commands/benchmark.js +0 -211
- package/dist/commands/benchmark.js.map +0 -1
- package/dist/commands/budgetCompatibility.test.d.ts +0 -2
- package/dist/commands/budgetCompatibility.test.d.ts.map +0 -1
- package/dist/commands/budgetCompatibility.test.js +0 -19
- package/dist/commands/budgetCompatibility.test.js.map +0 -1
- package/dist/commands/enterprise-install.d.ts +0 -36
- package/dist/commands/enterprise-install.d.ts.map +0 -1
- package/dist/commands/enterprise-install.js +0 -289
- package/dist/commands/enterprise-install.js.map +0 -1
- package/dist/commands/eval.d.ts +0 -13
- package/dist/commands/eval.d.ts.map +0 -1
- package/dist/commands/eval.js +0 -67
- package/dist/commands/eval.js.map +0 -1
- package/dist/commands/exec.test.d.ts +0 -2
- package/dist/commands/exec.test.d.ts.map +0 -1
- package/dist/commands/exec.test.js +0 -29
- package/dist/commands/exec.test.js.map +0 -1
- package/dist/commands/export.d.ts +0 -21
- package/dist/commands/export.d.ts.map +0 -1
- package/dist/commands/export.js +0 -116
- package/dist/commands/export.js.map +0 -1
- package/dist/commands/install-daemon.test.d.ts +0 -2
- package/dist/commands/install-daemon.test.d.ts.map +0 -1
- package/dist/commands/install-daemon.test.js +0 -93
- package/dist/commands/install-daemon.test.js.map +0 -1
- package/dist/commands/mdm.d.ts +0 -23
- package/dist/commands/mdm.d.ts.map +0 -1
- package/dist/commands/mdm.js +0 -134
- package/dist/commands/mdm.js.map +0 -1
- package/dist/commands/prompt.d.ts +0 -11
- package/dist/commands/prompt.d.ts.map +0 -1
- package/dist/commands/prompt.js +0 -71
- package/dist/commands/prompt.js.map +0 -1
- package/dist/commands/sop-audit.d.ts +0 -17
- package/dist/commands/sop-audit.d.ts.map +0 -1
- package/dist/commands/sop-audit.js +0 -136
- package/dist/commands/sop-audit.js.map +0 -1
- package/dist/lib/envInjector.test.d.ts +0 -2
- package/dist/lib/envInjector.test.d.ts.map +0 -1
- package/dist/lib/envInjector.test.js +0 -32
- package/dist/lib/envInjector.test.js.map +0 -1
- package/dist/lib/process.test.d.ts +0 -2
- package/dist/lib/process.test.d.ts.map +0 -1
- package/dist/lib/process.test.js +0 -44
- package/dist/lib/process.test.js.map +0 -1
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `intutic benchmark` — Run, compare, and manage PromptGrade benchmarks.
|
|
3
|
-
*
|
|
4
|
-
* Subcommands:
|
|
5
|
-
* - `intutic benchmark run --suite <id> [--harness <type>] [--dev]`
|
|
6
|
-
* - `intutic benchmark compare <runIdA> <runIdB> [--dev]`
|
|
7
|
-
* - `intutic benchmark suites [--dev]`
|
|
8
|
-
* - `intutic benchmark export <runId> [--format csv|json] [--dev]`
|
|
9
|
-
*
|
|
10
|
-
* WS-4E Advanced
|
|
11
|
-
*/
|
|
12
|
-
import { log } from '../lib/logger.js';
|
|
13
|
-
import { loadCredentials } from '../config/store.js';
|
|
14
|
-
import { resolveControlPlaneUrl } from '../config/paths.js';
|
|
15
|
-
import { createApiClient } from '../lib/api.js';
|
|
16
|
-
import pc from 'picocolors';
|
|
17
|
-
function pad(str, width) {
|
|
18
|
-
if (str.length >= width)
|
|
19
|
-
return str.slice(0, width);
|
|
20
|
-
return str + ' '.repeat(width - str.length);
|
|
21
|
-
}
|
|
22
|
-
function renderTable(headers, widths, rows) {
|
|
23
|
-
// Draw header line
|
|
24
|
-
const headerLine = headers.map((h, i) => pad(pc.bold(h), widths[i])).join(' │ ');
|
|
25
|
-
console.log(headerLine);
|
|
26
|
-
console.log(widths.map((w) => '─'.repeat(w)).join('─┼─'));
|
|
27
|
-
// Draw rows
|
|
28
|
-
for (const row of rows) {
|
|
29
|
-
const rowLine = row.map((val, i) => pad(val, widths[i])).join(' │ ');
|
|
30
|
-
console.log(rowLine);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
function colorOutcome(outcome, expected) {
|
|
34
|
-
if (outcome === expected) {
|
|
35
|
-
return pc.green(outcome);
|
|
36
|
-
}
|
|
37
|
-
return pc.red(`${outcome} (expected ${expected})`);
|
|
38
|
-
}
|
|
39
|
-
function getGradeColor(score) {
|
|
40
|
-
const num = parseFloat(score);
|
|
41
|
-
if (num >= 0.90)
|
|
42
|
-
return pc.bold(pc.green('A+'));
|
|
43
|
-
if (num >= 0.80)
|
|
44
|
-
return pc.bold(pc.green('A'));
|
|
45
|
-
if (num >= 0.70)
|
|
46
|
-
return pc.bold(pc.yellow('B'));
|
|
47
|
-
if (num >= 0.60)
|
|
48
|
-
return pc.bold(pc.yellow('C'));
|
|
49
|
-
if (num >= 0.50)
|
|
50
|
-
return pc.bold(pc.red('D'));
|
|
51
|
-
return pc.bold(pc.red('F'));
|
|
52
|
-
}
|
|
53
|
-
export async function runBenchmark(opts) {
|
|
54
|
-
const creds = await loadCredentials();
|
|
55
|
-
if (!creds) {
|
|
56
|
-
log.error('Not authenticated. Run `intutic login` first.');
|
|
57
|
-
process.exit(1);
|
|
58
|
-
}
|
|
59
|
-
const controlPlaneUrl = resolveControlPlaneUrl(opts.dev);
|
|
60
|
-
const client = createApiClient(controlPlaneUrl, creds.apiKey);
|
|
61
|
-
log.header(`Starting PromptGrade Run`);
|
|
62
|
-
log.info(`Suite ID: ${pc.bold(opts.suite)}`);
|
|
63
|
-
log.info(`Harness: ${pc.bold(opts.harness || 'generic')}`);
|
|
64
|
-
try {
|
|
65
|
-
// 1. Trigger the benchmark run
|
|
66
|
-
const result = await client.post('/api/v1/benchmarks/runs', {
|
|
67
|
-
workspaceId: creds.workspaceId,
|
|
68
|
-
suiteId: opts.suite,
|
|
69
|
-
triggeredBy: creds.email || 'cli',
|
|
70
|
-
harnessType: opts.harness || 'generic',
|
|
71
|
-
});
|
|
72
|
-
const runId = result.runId;
|
|
73
|
-
log.success(`Run created: ${pc.bold(runId)}. Executing tasks...`);
|
|
74
|
-
// 2. Poll for progress
|
|
75
|
-
let completed = false;
|
|
76
|
-
let attempts = 0;
|
|
77
|
-
const maxAttempts = 120; // 2 minutes max
|
|
78
|
-
while (!completed && attempts < maxAttempts) {
|
|
79
|
-
await new Promise((resolve) => setTimeout(resolve, 1500));
|
|
80
|
-
attempts++;
|
|
81
|
-
const { run } = await client.get(`/api/v1/benchmarks/runs/${runId}`);
|
|
82
|
-
if (run.status === 'completed' || run.status === 'failed') {
|
|
83
|
-
completed = true;
|
|
84
|
-
if (run.status === 'failed') {
|
|
85
|
-
log.error('Benchmark run failed.');
|
|
86
|
-
process.exit(1);
|
|
87
|
-
}
|
|
88
|
-
// Fetch task results
|
|
89
|
-
const { results } = await client.get(`/api/v1/benchmarks/runs/${runId}/tasks`);
|
|
90
|
-
log.header('Benchmark Tasks Completion Summary');
|
|
91
|
-
const headers = ['Task ID', 'Expected', 'Actual', 'Passed', 'Godel Score', 'Tokens', 'Cost'];
|
|
92
|
-
const widths = [24, 10, 10, 8, 12, 10, 10];
|
|
93
|
-
const rows = results.map((r) => [
|
|
94
|
-
r.taskId,
|
|
95
|
-
r.actualOutcome === 'BLOCK' ? 'BLOCK' : 'ALLOW', // dummy expected since task title not stored here
|
|
96
|
-
r.actualOutcome || 'ALLOW',
|
|
97
|
-
r.passed ? pc.green('✓') : pc.red('✗'),
|
|
98
|
-
parseFloat(r.godelScore || '0').toFixed(2),
|
|
99
|
-
String(r.tokensUsed || 0),
|
|
100
|
-
`$${parseFloat(r.costUsd || '0').toFixed(4)}`
|
|
101
|
-
]);
|
|
102
|
-
renderTable(headers, widths, rows);
|
|
103
|
-
log.header('Overall Evaluation Results');
|
|
104
|
-
log.field('Composite Score', `${run.compositeScore || '0.0000'} (${getGradeColor(run.compositeScore || '0')})`);
|
|
105
|
-
log.field('Tasks Total', String(run.tasksTotal));
|
|
106
|
-
log.field('Tasks Passed', pc.green(String(run.tasksPassed)));
|
|
107
|
-
log.field('Tasks Failed', run.tasksFailed > 0 ? pc.red(String(run.tasksFailed)) : pc.green('0'));
|
|
108
|
-
log.field('Violations Blocked', pc.green(String(run.violationsCaught)));
|
|
109
|
-
log.field('Violations Missed', run.violationsMissed > 0 ? pc.red(String(run.violationsMissed)) : pc.green('0'));
|
|
110
|
-
log.field('Total Token Cost', `$${parseFloat(run.totalCostUsd).toFixed(4)}`);
|
|
111
|
-
log.field('Total Tokens', String(run.totalTokens));
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
process.stdout.write(pc.dim('.'));
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
if (!completed) {
|
|
118
|
-
log.warn('Benchmark run execution timed out on the CLI. Check the dashboard for status.');
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
catch (err) {
|
|
122
|
-
log.error(`Failed to execute benchmark run: ${err instanceof Error ? err.message : String(err)}`);
|
|
123
|
-
process.exit(1);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
export async function compareBenchmarks(runIdA, runIdB, opts) {
|
|
127
|
-
const creds = await loadCredentials();
|
|
128
|
-
if (!creds) {
|
|
129
|
-
log.error('Not authenticated. Run `intutic login` first.');
|
|
130
|
-
process.exit(1);
|
|
131
|
-
}
|
|
132
|
-
const controlPlaneUrl = resolveControlPlaneUrl(opts.dev);
|
|
133
|
-
const client = createApiClient(controlPlaneUrl, creds.apiKey);
|
|
134
|
-
log.header(`Comparing Run ${runIdA} vs Run ${runIdB}`);
|
|
135
|
-
try {
|
|
136
|
-
const report = await client.get(`/api/v1/benchmarks/compare/${runIdA}/${runIdB}`);
|
|
137
|
-
log.info(`Score Delta: ${report.scoreDelta >= 0 ? pc.green(`+${report.scoreDelta.toFixed(4)}`) : pc.red(report.scoreDelta.toFixed(4))}`);
|
|
138
|
-
log.field('Run A Composite Score', `${report.runA.compositeScore || '0.0000'} (${getGradeColor(report.runA.compositeScore || '0')})`);
|
|
139
|
-
log.field('Run B Composite Score', `${report.runB.compositeScore || '0.0000'} (${getGradeColor(report.runB.compositeScore || '0')})`);
|
|
140
|
-
log.header('Task Comparison Detail');
|
|
141
|
-
const headers = ['Task Title', 'Expected', 'Outcome A', 'Outcome B', 'Cost Delta', 'Tokens Delta'];
|
|
142
|
-
const widths = [30, 10, 24, 24, 12, 14];
|
|
143
|
-
const rows = report.taskComparisons.map((c) => [
|
|
144
|
-
c.title,
|
|
145
|
-
c.expectedOutcome,
|
|
146
|
-
colorOutcome(c.outcomeA, c.expectedOutcome),
|
|
147
|
-
colorOutcome(c.outcomeB, c.expectedOutcome),
|
|
148
|
-
c.costDelta === 0 ? '$0.0000' : (c.costDelta > 0 ? pc.red(`+$${c.costDelta.toFixed(4)}`) : pc.green(`-$${Math.abs(c.costDelta).toFixed(4)}`)),
|
|
149
|
-
c.tokenDelta === 0 ? '0' : (c.tokenDelta > 0 ? pc.red(`+${c.tokenDelta}`) : pc.green(`${c.tokenDelta}`))
|
|
150
|
-
]);
|
|
151
|
-
renderTable(headers, widths, rows);
|
|
152
|
-
}
|
|
153
|
-
catch (err) {
|
|
154
|
-
log.error(`Failed to compare benchmarks: ${err instanceof Error ? err.message : String(err)}`);
|
|
155
|
-
process.exit(1);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
export async function listSuites(opts) {
|
|
159
|
-
const creds = await loadCredentials();
|
|
160
|
-
if (!creds) {
|
|
161
|
-
log.error('Not authenticated. Run `intutic login` first.');
|
|
162
|
-
process.exit(1);
|
|
163
|
-
}
|
|
164
|
-
const controlPlaneUrl = resolveControlPlaneUrl(opts.dev);
|
|
165
|
-
const client = createApiClient(controlPlaneUrl, creds.apiKey);
|
|
166
|
-
log.header('PromptGrade Benchmark Suites');
|
|
167
|
-
try {
|
|
168
|
-
const { suites } = await client.get(`/api/v1/benchmarks/suites?workspaceId=${creds.workspaceId}`);
|
|
169
|
-
const headers = ['Suite ID', 'Name', 'Tasks', 'Type'];
|
|
170
|
-
const widths = [32, 30, 8, 12];
|
|
171
|
-
const rows = suites.map((s) => [
|
|
172
|
-
s.suiteId,
|
|
173
|
-
s.name,
|
|
174
|
-
String(s.taskCount),
|
|
175
|
-
s.isBuiltin ? pc.cyan('Built-in') : pc.yellow('Custom')
|
|
176
|
-
]);
|
|
177
|
-
renderTable(headers, widths, rows);
|
|
178
|
-
}
|
|
179
|
-
catch (err) {
|
|
180
|
-
log.error(`Failed to list suites: ${err instanceof Error ? err.message : String(err)}`);
|
|
181
|
-
process.exit(1);
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
export async function exportBenchmark(runId, opts) {
|
|
185
|
-
const creds = await loadCredentials();
|
|
186
|
-
if (!creds) {
|
|
187
|
-
log.error('Not authenticated. Run `intutic login` first.');
|
|
188
|
-
process.exit(1);
|
|
189
|
-
}
|
|
190
|
-
const controlPlaneUrl = resolveControlPlaneUrl(opts.dev);
|
|
191
|
-
const client = createApiClient(controlPlaneUrl, creds.apiKey);
|
|
192
|
-
try {
|
|
193
|
-
const { run } = await client.get(`/api/v1/benchmarks/runs/${runId}`);
|
|
194
|
-
const { results } = await client.get(`/api/v1/benchmarks/runs/${runId}/tasks`);
|
|
195
|
-
if (opts.format === 'json') {
|
|
196
|
-
console.log(JSON.stringify({ run, results }, null, 2));
|
|
197
|
-
}
|
|
198
|
-
else {
|
|
199
|
-
// CSV format
|
|
200
|
-
console.log('Result ID,Task ID,Expected Outcome,Actual Outcome,Passed,Godel Score,Tokens Used,Cost USD,Latency MS,Error Detail');
|
|
201
|
-
for (const r of results) {
|
|
202
|
-
console.log(`"${r.resultId}","${r.taskId}","BLOCK","${r.actualOutcome || ''}","${r.passed ? 'true' : 'false'}","${r.godelScore || ''}","${r.tokensUsed || 0}","${r.costUsd || ''}","${r.latencyMs || 0}","${r.errorDetail || ''}"`);
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
catch (err) {
|
|
207
|
-
log.error(`Failed to export benchmark: ${err instanceof Error ? err.message : String(err)}`);
|
|
208
|
-
process.exit(1);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
//# sourceMappingURL=benchmark.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../../src/commands/benchmark.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"budgetCompatibility.test.d.ts","sourceRoot":"","sources":["../../src/commands/budgetCompatibility.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
describe('CLI Budget Parser Compatibility', () => {
|
|
3
|
-
it('correctly resolves local budget using camelCase key', () => {
|
|
4
|
-
const config = { maxDailyBudgetUsd: 15.50 };
|
|
5
|
-
const maxDailyBudget = config?.maxDailyBudgetUsd ?? config?.max_daily_budget_usd ?? 10.0;
|
|
6
|
-
expect(maxDailyBudget).toBe(15.50);
|
|
7
|
-
});
|
|
8
|
-
it('correctly resolves local budget using snake_case alias key', () => {
|
|
9
|
-
const config = { max_daily_budget_usd: 22.75 };
|
|
10
|
-
const maxDailyBudget = config?.maxDailyBudgetUsd ?? config?.max_daily_budget_usd ?? 10.0;
|
|
11
|
-
expect(maxDailyBudget).toBe(22.75);
|
|
12
|
-
});
|
|
13
|
-
it('correctly defaults when neither key is present', () => {
|
|
14
|
-
const config = {};
|
|
15
|
-
const maxDailyBudget = config?.maxDailyBudgetUsd ?? config?.max_daily_budget_usd ?? 10.0;
|
|
16
|
-
expect(maxDailyBudget).toBe(10.0);
|
|
17
|
-
});
|
|
18
|
-
});
|
|
19
|
-
//# sourceMappingURL=budgetCompatibility.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"budgetCompatibility.test.js","sourceRoot":"","sources":["../../src/commands/budgetCompatibility.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE7C,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,MAAM,GAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAA;QAChD,MAAM,cAAc,GAAG,MAAM,EAAE,iBAAiB,IAAI,MAAM,EAAE,oBAAoB,IAAI,IAAI,CAAA;QACxF,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,MAAM,GAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAA;QACnD,MAAM,cAAc,GAAG,MAAM,EAAE,iBAAiB,IAAI,MAAM,EAAE,oBAAoB,IAAI,IAAI,CAAA;QACxF,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,MAAM,GAAQ,EAAE,CAAA;QACtB,MAAM,cAAc,GAAG,MAAM,EAAE,iBAAiB,IAAI,MAAM,EAAE,oBAAoB,IAAI,IAAI,CAAA;QACxF,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1,36 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"enterprise-install.d.ts","sourceRoot":"","sources":["../../src/commands/enterprise-install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AA+OH;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAC/C,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDhB"}
|
|
@@ -1,289 +0,0 @@
|
|
|
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
|
-
import { writeFile, mkdir, readFile } from 'node:fs/promises';
|
|
26
|
-
import { execFile } from 'node:child_process';
|
|
27
|
-
import { promisify } from 'node:util';
|
|
28
|
-
import { join } from 'node:path';
|
|
29
|
-
import { homedir } from 'node:os';
|
|
30
|
-
import { newIso } from '@intutic/id';
|
|
31
|
-
import { createLogger } from '@intutic/logger';
|
|
32
|
-
import { writeCursorHooks } from '@intutic/sync-daemon/harness/cursorHooks';
|
|
33
|
-
const log = createLogger('enterprise-install');
|
|
34
|
-
const execFileAsync = promisify(execFile);
|
|
35
|
-
/** Check if running with root/admin privileges. */
|
|
36
|
-
function isElevated() {
|
|
37
|
-
if (process.platform === 'win32') {
|
|
38
|
-
// On Windows, check if we have admin rights (heuristic)
|
|
39
|
-
return process.env.USERNAME === 'Administrator' || process.env.IS_ADMIN === '1';
|
|
40
|
-
}
|
|
41
|
-
return process.getuid?.() === 0;
|
|
42
|
-
}
|
|
43
|
-
/** Platform-specific system Cursor hooks path. */
|
|
44
|
-
function systemCursorHooksPath() {
|
|
45
|
-
if (process.platform === 'darwin') {
|
|
46
|
-
return '/Library/Application Support/Cursor/hooks.json';
|
|
47
|
-
}
|
|
48
|
-
return '/etc/cursor/hooks.json';
|
|
49
|
-
}
|
|
50
|
-
/** Platform-specific CA injection command. */
|
|
51
|
-
async function injectCaCert(caCertPath) {
|
|
52
|
-
switch (process.platform) {
|
|
53
|
-
case 'darwin':
|
|
54
|
-
await execFileAsync('security', [
|
|
55
|
-
'add-trusted-cert', '-d', '-r', 'trustRoot',
|
|
56
|
-
'-k', '/Library/Keychains/System.keychain',
|
|
57
|
-
caCertPath,
|
|
58
|
-
]);
|
|
59
|
-
log.info({ action: 'ca_injected', platform: 'darwin' }, 'CA cert added to macOS System Keychain');
|
|
60
|
-
break;
|
|
61
|
-
case 'linux': {
|
|
62
|
-
const destCert = '/usr/local/share/ca-certificates/intutic-ca.crt';
|
|
63
|
-
const content = await readFile(caCertPath, 'utf-8');
|
|
64
|
-
await writeFile(destCert, content, 'utf-8');
|
|
65
|
-
await execFileAsync('update-ca-certificates');
|
|
66
|
-
log.info({ action: 'ca_injected', platform: 'linux' }, 'CA cert added via update-ca-certificates');
|
|
67
|
-
break;
|
|
68
|
-
}
|
|
69
|
-
case 'win32':
|
|
70
|
-
await execFileAsync('certutil', ['-addstore', 'Root', caCertPath]);
|
|
71
|
-
log.info({ action: 'ca_injected', platform: 'win32' }, 'CA cert added to Windows Root store');
|
|
72
|
-
break;
|
|
73
|
-
default:
|
|
74
|
-
log.warn({ action: 'ca_inject_skipped', platform: process.platform }, 'CA injection not supported on this platform');
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
/** Write system-level Cursor hooks.json (requires root). */
|
|
78
|
-
async function writeSystemCursorHooks(proxyUrl, workspaceRoot) {
|
|
79
|
-
const systemPath = systemCursorHooksPath();
|
|
80
|
-
await mkdir(systemPath.substring(0, systemPath.lastIndexOf('/')), { recursive: true });
|
|
81
|
-
// Delegate to cursorHooks.ts with writeSystemLevel=true
|
|
82
|
-
await writeCursorHooks(workspaceRoot, proxyUrl, '', true);
|
|
83
|
-
log.info({ action: 'system_cursor_hooks_written', path: systemPath }, 'System-level Cursor hooks written');
|
|
84
|
-
}
|
|
85
|
-
/** Generate MDM deployment manifest for Cursor. */
|
|
86
|
-
async function generateMdmManifest(proxyUrl, outputDir) {
|
|
87
|
-
await mkdir(outputDir, { recursive: true });
|
|
88
|
-
// Cursor hooks MDM manifest (JSON — deployable via Jamf, Intune, Chef)
|
|
89
|
-
const cursorManifest = {
|
|
90
|
-
_comment: 'Intutic Governance — Cursor system-level hooks.json for MDM deployment',
|
|
91
|
-
_generated: newIso(),
|
|
92
|
-
target_path: systemCursorHooksPath(),
|
|
93
|
-
content: {
|
|
94
|
-
failClosed: true,
|
|
95
|
-
hooks: {
|
|
96
|
-
beforeShellExecution: {
|
|
97
|
-
command: 'node /opt/intutic/hooks/pre-tool-check.js',
|
|
98
|
-
failClosed: true,
|
|
99
|
-
},
|
|
100
|
-
beforeMCPExecution: {
|
|
101
|
-
command: 'node /opt/intutic/hooks/pre-tool-check.js',
|
|
102
|
-
failClosed: true,
|
|
103
|
-
},
|
|
104
|
-
beforeFileEdit: {
|
|
105
|
-
command: 'node /opt/intutic/hooks/pre-tool-check.js',
|
|
106
|
-
failClosed: true,
|
|
107
|
-
},
|
|
108
|
-
},
|
|
109
|
-
},
|
|
110
|
-
deployment: {
|
|
111
|
-
jamf: 'Deploy as Extension Attribute with file target_path',
|
|
112
|
-
intune: 'Custom Configuration Profile > Files > target_path',
|
|
113
|
-
chef: 'cookbook: intutic-governance, recipe: cursor_hooks',
|
|
114
|
-
},
|
|
115
|
-
};
|
|
116
|
-
await writeFile(join(outputDir, 'cursor-hooks-manifest.json'), JSON.stringify(cursorManifest, null, 2), 'utf-8');
|
|
117
|
-
// Windsurf proxy settings MDM manifest
|
|
118
|
-
const windsurfManifest = {
|
|
119
|
-
_comment: 'Intutic Governance — Windsurf proxy settings for MDM deployment',
|
|
120
|
-
_generated: newIso(),
|
|
121
|
-
target_path: `${homedir()}/.codeium/windsurf/settings.json`,
|
|
122
|
-
note: 'User-level path — deploy per user via login script or MDM user config',
|
|
123
|
-
content: {
|
|
124
|
-
'http.proxy': 'http://127.0.0.1:8877',
|
|
125
|
-
'http.proxyStrictSSL': false,
|
|
126
|
-
'codeium.proxy': 'http://127.0.0.1:8877',
|
|
127
|
-
},
|
|
128
|
-
};
|
|
129
|
-
await writeFile(join(outputDir, 'windsurf-proxy-manifest.json'), JSON.stringify(windsurfManifest, null, 2), 'utf-8');
|
|
130
|
-
// macOS MDM configuration profile for CA trust + proxy
|
|
131
|
-
const mobileconfig = `<?xml version="1.0" encoding="UTF-8"?>
|
|
132
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
133
|
-
<!-- Intutic Governance Proxy MDM Configuration Profile -->
|
|
134
|
-
<!-- Deploy via Jamf, Apple Business Manager, or profiles install -->
|
|
135
|
-
<!-- Generated: ${newIso()} -->
|
|
136
|
-
<plist version="1.0">
|
|
137
|
-
<dict>
|
|
138
|
-
<key>PayloadContent</key>
|
|
139
|
-
<array>
|
|
140
|
-
<dict>
|
|
141
|
-
<!-- CA Trust payload -->
|
|
142
|
-
<key>PayloadType</key>
|
|
143
|
-
<string>com.apple.security.root</string>
|
|
144
|
-
<key>PayloadIdentifier</key>
|
|
145
|
-
<string>ai.intutic.governance.ca</string>
|
|
146
|
-
<key>PayloadDisplayName</key>
|
|
147
|
-
<string>Intutic Governance Proxy CA</string>
|
|
148
|
-
<key>PayloadDescription</key>
|
|
149
|
-
<string>Trusts the Intutic local CA for AI traffic governance</string>
|
|
150
|
-
<key>PayloadVersion</key>
|
|
151
|
-
<integer>1</integer>
|
|
152
|
-
<key>PayloadUUID</key>
|
|
153
|
-
<string>4E89D13A-B6C2-4F1D-9E2A-7F3C5A8B2E6D</string>
|
|
154
|
-
</dict>
|
|
155
|
-
<dict>
|
|
156
|
-
<!-- System-wide HTTP proxy for Windsurf Cascade AI traffic -->
|
|
157
|
-
<key>PayloadType</key>
|
|
158
|
-
<string>com.apple.proxy.http</string>
|
|
159
|
-
<key>PayloadIdentifier</key>
|
|
160
|
-
<string>ai.intutic.governance.proxy</string>
|
|
161
|
-
<key>PayloadDisplayName</key>
|
|
162
|
-
<string>Intutic AI Governance Proxy</string>
|
|
163
|
-
<key>Enabled</key>
|
|
164
|
-
<true/>
|
|
165
|
-
<key>Server</key>
|
|
166
|
-
<string>127.0.0.1</string>
|
|
167
|
-
<key>Port</key>
|
|
168
|
-
<integer>8877</integer>
|
|
169
|
-
<key>ProxyType</key>
|
|
170
|
-
<string>HTTP</string>
|
|
171
|
-
</dict>
|
|
172
|
-
</array>
|
|
173
|
-
<key>PayloadDisplayName</key>
|
|
174
|
-
<string>Intutic AI Governance Proxy Configuration</string>
|
|
175
|
-
<key>PayloadIdentifier</key>
|
|
176
|
-
<string>ai.intutic.governance</string>
|
|
177
|
-
<key>PayloadType</key>
|
|
178
|
-
<string>Configuration</string>
|
|
179
|
-
<key>PayloadVersion</key>
|
|
180
|
-
<integer>1</integer>
|
|
181
|
-
<key>PayloadUUID</key>
|
|
182
|
-
<string>8A1C3F5E-D2B4-4A6C-8E0F-1D3B5A7C9E2F</string>
|
|
183
|
-
</dict>
|
|
184
|
-
</plist>`;
|
|
185
|
-
await writeFile(join(outputDir, 'intutic-governance.mobileconfig'), mobileconfig, 'utf-8');
|
|
186
|
-
log.info({ action: 'mdm_manifests_generated', outputDir }, 'MDM deployment manifests generated');
|
|
187
|
-
}
|
|
188
|
-
/** Generate pf (macOS) and iptables (Linux) firewall rules templates. */
|
|
189
|
-
async function generateFirewallTemplates(outputDir) {
|
|
190
|
-
await mkdir(outputDir, { recursive: true });
|
|
191
|
-
// pf.conf template (macOS)
|
|
192
|
-
const pfConf = `# Intutic PF Firewall redirection rules for macOS
|
|
193
|
-
# Redirects direct outbound traffic to AI providers to the local Intutic proxy (port 4000).
|
|
194
|
-
# To load: sudo pfctl -f ${join(outputDir, 'pf.conf')}
|
|
195
|
-
|
|
196
|
-
# AI Provider hostnames
|
|
197
|
-
ai_hosts = "{ api.anthropic.com, api.openai.com, api2.cursor.sh, openrouter.ai, api.mistral.ai, api.cohere.com, api.together.xyz, generativelanguage.googleapis.com }"
|
|
198
|
-
|
|
199
|
-
# Redirection rule: redirect outbound HTTPS traffic to these hosts to localhost:4000
|
|
200
|
-
# To avoid loop, do not redirect traffic originating from the local proxy process itself (exclude user running the proxy)
|
|
201
|
-
# Update 'intutic' to the user/UID running the proxy if needed.
|
|
202
|
-
# rdr pass on lo0 proto tcp from any to $ai_hosts port 443 -> 127.0.0.1 port 4000 user intutic
|
|
203
|
-
rdr pass on lo0 proto tcp from any to $ai_hosts port 443 -> 127.0.0.1 port 4000
|
|
204
|
-
rdr pass on en0 proto tcp from any to $ai_hosts port 443 -> 127.0.0.1 port 4000
|
|
205
|
-
rdr pass on en1 proto tcp from any to $ai_hosts port 443 -> 127.0.0.1 port 4000
|
|
206
|
-
`;
|
|
207
|
-
await writeFile(join(outputDir, 'pf.conf'), pfConf, 'utf-8');
|
|
208
|
-
// iptables.rules template (Linux)
|
|
209
|
-
const iptablesRules = `# Intutic iptables redirection rules for Linux
|
|
210
|
-
# Redirects direct outbound HTTPS traffic to AI providers to the local Intutic proxy (port 4000).
|
|
211
|
-
# Load with: sudo iptables-restore < ${join(outputDir, 'iptables.rules')}
|
|
212
|
-
|
|
213
|
-
*nat
|
|
214
|
-
:PREROUTING ACCEPT [0:0]
|
|
215
|
-
:INPUT ACCEPT [0:0]
|
|
216
|
-
:OUTPUT ACCEPT [0:0]
|
|
217
|
-
:POSTROUTING ACCEPT [0:0]
|
|
218
|
-
|
|
219
|
-
# Create INTUTIC chain
|
|
220
|
-
-N INTUTIC
|
|
221
|
-
|
|
222
|
-
# Redirect to local proxy port 4000
|
|
223
|
-
-A INTUTIC -p tcp --dport 443 -j REDIRECT --to-ports 4000
|
|
224
|
-
|
|
225
|
-
# Intercept AI providers in OUTPUT chain (for local client processes)
|
|
226
|
-
# Skip traffic originating from the proxy itself to prevent routing loop.
|
|
227
|
-
# Assuming the proxy runs under a group 'intutic' or user 'intutic'.
|
|
228
|
-
# Replace 'intutic' with the username/group running the proxy.
|
|
229
|
-
-A OUTPUT -p tcp -m owner --uid-owner intutic -j ACCEPT
|
|
230
|
-
-A OUTPUT -d api.anthropic.com -p tcp --dport 443 -j INTUTIC
|
|
231
|
-
-A OUTPUT -d api.openai.com -p tcp --dport 443 -j INTUTIC
|
|
232
|
-
-A OUTPUT -d api2.cursor.sh -p tcp --dport 443 -j INTUTIC
|
|
233
|
-
-A OUTPUT -d openrouter.ai -p tcp --dport 443 -j INTUTIC
|
|
234
|
-
-A OUTPUT -d api.mistral.ai -p tcp --dport 443 -j INTUTIC
|
|
235
|
-
-A OUTPUT -d api.cohere.com -p tcp --dport 443 -j INTUTIC
|
|
236
|
-
-A OUTPUT -d api.together.xyz -p tcp --dport 443 -j INTUTIC
|
|
237
|
-
-A OUTPUT -d generativelanguage.googleapis.com -p tcp --dport 443 -j INTUTIC
|
|
238
|
-
|
|
239
|
-
COMMIT
|
|
240
|
-
`;
|
|
241
|
-
await writeFile(join(outputDir, 'iptables.rules'), iptablesRules, 'utf-8');
|
|
242
|
-
log.info({ action: 'firewall_templates_generated', outputDir }, 'Firewall redirection templates generated');
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* Main enterprise-install entry point.
|
|
246
|
-
* Called by the `intutic enterprise-install` CLI command.
|
|
247
|
-
*/
|
|
248
|
-
export async function enterpriseInstall(options) {
|
|
249
|
-
const { proxyUrl, workspaceRoot = process.cwd(), mdmOutputDir = join(process.cwd(), 'tools', 'cli', 'resources', 'mdm'), firewallOutputDir = join(process.cwd(), 'tools', 'cli', 'resources', 'firewall'), generateMdmOnly = false, } = options;
|
|
250
|
-
// Always generate MDM and firewall manifests (no privileges needed)
|
|
251
|
-
await generateMdmManifest(proxyUrl, mdmOutputDir);
|
|
252
|
-
await generateFirewallTemplates(firewallOutputDir);
|
|
253
|
-
if (generateMdmOnly) {
|
|
254
|
-
log.info('MDM and firewall templates generated. Use --generate-mdm-only to skip privilege-requiring steps.');
|
|
255
|
-
return;
|
|
256
|
-
}
|
|
257
|
-
if (!isElevated()) {
|
|
258
|
-
log.error('enterprise-install requires root/admin privileges. Run with sudo.');
|
|
259
|
-
console.error('\n❌ Error: intutic enterprise-install requires root privileges.\n Run: sudo intutic enterprise-install\n');
|
|
260
|
-
process.exit(1);
|
|
261
|
-
}
|
|
262
|
-
// Write system-level Cursor hooks
|
|
263
|
-
await writeSystemCursorHooks(proxyUrl, workspaceRoot);
|
|
264
|
-
// Inject CA cert into system trust store
|
|
265
|
-
const caCertPath = join(homedir(), '.intutic', 'ca.crt');
|
|
266
|
-
try {
|
|
267
|
-
await readFile(caCertPath);
|
|
268
|
-
await injectCaCert(caCertPath);
|
|
269
|
-
}
|
|
270
|
-
catch {
|
|
271
|
-
log.warn({ action: 'ca_cert_missing', path: caCertPath }, 'CA cert not found — run `intutic init` first to generate it, then re-run enterprise-install');
|
|
272
|
-
}
|
|
273
|
-
log.info({ action: 'enterprise_install_complete', proxyUrl }, 'Enterprise install complete. Deploy MDM manifests and firewall rules from the generated output directories.');
|
|
274
|
-
console.log(`
|
|
275
|
-
✅ Intutic Enterprise Install Complete
|
|
276
|
-
|
|
277
|
-
System-level Cursor hooks: ${systemCursorHooksPath()}
|
|
278
|
-
CA cert injected into system trust store
|
|
279
|
-
MDM manifests written to: ${mdmOutputDir}
|
|
280
|
-
Firewall rules written to: ${firewallOutputDir}
|
|
281
|
-
|
|
282
|
-
Next steps:
|
|
283
|
-
1. Deploy intutic-governance.mobileconfig via Jamf/Apple Business Manager
|
|
284
|
-
2. Deploy cursor-hooks-manifest.json via your MDM solution
|
|
285
|
-
3. Load firewall redirection rules (e.g. pfctl or iptables) from: ${firewallOutputDir}
|
|
286
|
-
4. Start the Intutic proxy: intutic proxy start
|
|
287
|
-
`);
|
|
288
|
-
}
|
|
289
|
-
//# sourceMappingURL=enterprise-install.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"enterprise-install.js","sourceRoot":"","sources":["../../src/commands/enterprise-install.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/eval.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `intutic eval` — Run evaluator sandbox evaluations from CLI.
|
|
3
|
-
*
|
|
4
|
-
* Calls POST /api/v1/evaluator/runs to trigger and poll results.
|
|
5
|
-
*
|
|
6
|
-
* E6 — Evaluator Sandbox / CLI
|
|
7
|
-
* @module
|
|
8
|
-
*/
|
|
9
|
-
export declare function runEval(opts: {
|
|
10
|
-
dataset: string;
|
|
11
|
-
dev?: boolean;
|
|
12
|
-
}): Promise<void>;
|
|
13
|
-
//# sourceMappingURL=eval.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/commands/eval.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DrF"}
|