@intutic/cli 1.4.1 → 1.6.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 (60) hide show
  1. package/dist/cli.js +29 -2
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/connect.d.ts.map +1 -1
  4. package/dist/commands/connect.js +14 -4
  5. package/dist/commands/connect.js.map +1 -1
  6. package/dist/commands/policy.d.ts +56 -0
  7. package/dist/commands/policy.d.ts.map +1 -1
  8. package/dist/commands/policy.js +234 -54
  9. package/dist/commands/policy.js.map +1 -1
  10. package/dist/harness/detector.d.ts +1 -1
  11. package/dist/harness/detector.js +1 -1
  12. package/package.json +14 -15
  13. package/dist/commands/benchmark.d.ts +0 -31
  14. package/dist/commands/benchmark.d.ts.map +0 -1
  15. package/dist/commands/benchmark.js +0 -211
  16. package/dist/commands/benchmark.js.map +0 -1
  17. package/dist/commands/budgetCompatibility.test.d.ts +0 -2
  18. package/dist/commands/budgetCompatibility.test.d.ts.map +0 -1
  19. package/dist/commands/budgetCompatibility.test.js +0 -19
  20. package/dist/commands/budgetCompatibility.test.js.map +0 -1
  21. package/dist/commands/enterprise-install.d.ts +0 -36
  22. package/dist/commands/enterprise-install.d.ts.map +0 -1
  23. package/dist/commands/enterprise-install.js +0 -289
  24. package/dist/commands/enterprise-install.js.map +0 -1
  25. package/dist/commands/eval.d.ts +0 -13
  26. package/dist/commands/eval.d.ts.map +0 -1
  27. package/dist/commands/eval.js +0 -67
  28. package/dist/commands/eval.js.map +0 -1
  29. package/dist/commands/exec.test.d.ts +0 -2
  30. package/dist/commands/exec.test.d.ts.map +0 -1
  31. package/dist/commands/exec.test.js +0 -29
  32. package/dist/commands/exec.test.js.map +0 -1
  33. package/dist/commands/export.d.ts +0 -21
  34. package/dist/commands/export.d.ts.map +0 -1
  35. package/dist/commands/export.js +0 -116
  36. package/dist/commands/export.js.map +0 -1
  37. package/dist/commands/install-daemon.test.d.ts +0 -2
  38. package/dist/commands/install-daemon.test.d.ts.map +0 -1
  39. package/dist/commands/install-daemon.test.js +0 -93
  40. package/dist/commands/install-daemon.test.js.map +0 -1
  41. package/dist/commands/mdm.d.ts +0 -23
  42. package/dist/commands/mdm.d.ts.map +0 -1
  43. package/dist/commands/mdm.js +0 -134
  44. package/dist/commands/mdm.js.map +0 -1
  45. package/dist/commands/prompt.d.ts +0 -11
  46. package/dist/commands/prompt.d.ts.map +0 -1
  47. package/dist/commands/prompt.js +0 -71
  48. package/dist/commands/prompt.js.map +0 -1
  49. package/dist/commands/sop-audit.d.ts +0 -17
  50. package/dist/commands/sop-audit.d.ts.map +0 -1
  51. package/dist/commands/sop-audit.js +0 -136
  52. package/dist/commands/sop-audit.js.map +0 -1
  53. package/dist/lib/envInjector.test.d.ts +0 -2
  54. package/dist/lib/envInjector.test.d.ts.map +0 -1
  55. package/dist/lib/envInjector.test.js +0 -32
  56. package/dist/lib/envInjector.test.js.map +0 -1
  57. package/dist/lib/process.test.d.ts +0 -2
  58. package/dist/lib/process.test.d.ts.map +0 -1
  59. package/dist/lib/process.test.js +0 -44
  60. 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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=budgetCompatibility.test.d.ts.map
@@ -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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAA;AAE3E,MAAM,GAAG,GAAG,YAAY,CAAC,oBAAoB,CAAC,CAAA;AAC9C,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAEzC,mDAAmD;AACnD,SAAS,UAAU;IACjB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,wDAAwD;QACxD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAA;IACjF,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAA;AACjC,CAAC;AAED,kDAAkD;AAClD,SAAS,qBAAqB;IAC5B,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,gDAAgD,CAAA;IACzD,CAAC;IACD,OAAO,wBAAwB,CAAA;AACjC,CAAC;AAED,8CAA8C;AAC9C,KAAK,UAAU,YAAY,CAAC,UAAkB;IAC5C,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzB,KAAK,QAAQ;YACX,MAAM,aAAa,CAAC,UAAU,EAAE;gBAC9B,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW;gBAC3C,IAAI,EAAE,oCAAoC;gBAC1C,UAAU;aACX,CAAC,CAAA;YACF,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,wCAAwC,CAAC,CAAA;YACjG,MAAK;QAEP,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,QAAQ,GAAG,iDAAiD,CAAA;YAClE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;YACnD,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAC3C,MAAM,aAAa,CAAC,wBAAwB,CAAC,CAAA;YAC7C,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,0CAA0C,CAAC,CAAA;YAClG,MAAK;QACP,CAAC;QAED,KAAK,OAAO;YACV,MAAM,aAAa,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;YAClE,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,qCAAqC,CAAC,CAAA;YAC7F,MAAK;QAEP;YACE,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,6CAA6C,CAAC,CAAA;IACxH,CAAC;AACH,CAAC;AAED,4DAA4D;AAC5D,KAAK,UAAU,sBAAsB,CAAC,QAAgB,EAAE,aAAqB;IAC3E,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAA;IAC1C,MAAM,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACtF,wDAAwD;IACxD,MAAM,gBAAgB,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA;IACzD,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,6BAA6B,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,mCAAmC,CAAC,CAAA;AAC5G,CAAC;AAED,mDAAmD;AACnD,KAAK,UAAU,mBAAmB,CAAC,QAAgB,EAAE,SAAiB;IACpE,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAE3C,uEAAuE;IACvE,MAAM,cAAc,GAAG;QACrB,QAAQ,EAAE,wEAAwE;QAClF,UAAU,EAAE,MAAM,EAAE;QACpB,WAAW,EAAE,qBAAqB,EAAE;QACpC,OAAO,EAAE;YACP,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE;gBACL,oBAAoB,EAAE;oBACpB,OAAO,EAAE,2CAA2C;oBACpD,UAAU,EAAE,IAAI;iBACjB;gBACD,kBAAkB,EAAE;oBAClB,OAAO,EAAE,2CAA2C;oBACpD,UAAU,EAAE,IAAI;iBACjB;gBACD,cAAc,EAAE;oBACd,OAAO,EAAE,2CAA2C;oBACpD,UAAU,EAAE,IAAI;iBACjB;aACF;SACF;QACD,UAAU,EAAE;YACV,IAAI,EAAE,qDAAqD;YAC3D,MAAM,EAAE,oDAAoD;YAC5D,IAAI,EAAE,oDAAoD;SAC3D;KACF,CAAA;IACD,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,4BAA4B,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;IAEhH,uCAAuC;IACvC,MAAM,gBAAgB,GAAG;QACvB,QAAQ,EAAE,iEAAiE;QAC3E,UAAU,EAAE,MAAM,EAAE;QACpB,WAAW,EAAE,GAAG,OAAO,EAAE,kCAAkC;QAC3D,IAAI,EAAE,uEAAuE;QAC7E,OAAO,EAAE;YACP,YAAY,EAAE,uBAAuB;YACrC,qBAAqB,EAAE,KAAK;YAC5B,eAAe,EAAE,uBAAuB;SACzC;KACF,CAAA;IACD,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,8BAA8B,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;IAEpH,uDAAuD;IACvD,MAAM,YAAY,GAAG;;;;kBAIL,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAiDjB,CAAA;IACP,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,iCAAiC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;IAE1F,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,yBAAyB,EAAE,SAAS,EAAE,EAAE,oCAAoC,CAAC,CAAA;AAClG,CAAC;AAED,yEAAyE;AACzE,KAAK,UAAU,yBAAyB,CAAC,SAAiB;IACxD,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAE3C,2BAA2B;IAC3B,MAAM,MAAM,GAAG;;2BAEU,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;;;;;;;;;;;;CAYpD,CAAA;IACC,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IAE5D,kCAAkC;IAClC,MAAM,aAAa,GAAG;;uCAEe,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BvE,CAAA;IACC,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;IAE1E,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,8BAA8B,EAAE,SAAS,EAAE,EAAE,0CAA0C,CAAC,CAAA;AAC7G,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAMvC;IACC,MAAM,EACJ,QAAQ,EACR,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,EAC7B,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,EACtE,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,EAChF,eAAe,GAAG,KAAK,GACxB,GAAG,OAAO,CAAA;IAEX,oEAAoE;IACpE,MAAM,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;IACjD,MAAM,yBAAyB,CAAC,iBAAiB,CAAC,CAAA;IAElD,IAAI,eAAe,EAAE,CAAC;QACpB,GAAG,CAAC,IAAI,CAAC,kGAAkG,CAAC,CAAA;QAC5G,OAAM;IACR,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;QAClB,GAAG,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAA;QAC9E,OAAO,CAAC,KAAK,CAAC,4GAA4G,CAAC,CAAA;QAC3H,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,kCAAkC;IAClC,MAAM,sBAAsB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;IAErD,yCAAyC;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;IACxD,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAA;QAC1B,MAAM,YAAY,CAAC,UAAU,CAAC,CAAA;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,IAAI,CACN,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,UAAU,EAAE,EAC/C,6FAA6F,CAC9F,CAAA;IACH,CAAC;IAED,GAAG,CAAC,IAAI,CACN,EAAE,MAAM,EAAE,6BAA6B,EAAE,QAAQ,EAAE,EACnD,6GAA6G,CAC9G,CAAA;IACD,OAAO,CAAC,GAAG,CAAC;;;6BAGe,qBAAqB,EAAE;;4BAExB,YAAY;6BACX,iBAAiB;;;;;sEAKwB,iBAAiB;;CAEtF,CAAC,CAAA;AACF,CAAC"}
@@ -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"}