@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
package/dist/commands/eval.js
DELETED
|
@@ -1,67 +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
|
-
import { log } from '../lib/logger.js';
|
|
10
|
-
import { loadCredentials } from '../config/store.js';
|
|
11
|
-
import { resolveControlPlaneUrl } from '../config/paths.js';
|
|
12
|
-
import { createApiClient } from '../lib/api.js';
|
|
13
|
-
export async function runEval(opts) {
|
|
14
|
-
const creds = await loadCredentials();
|
|
15
|
-
if (!creds) {
|
|
16
|
-
log.error('Not authenticated. Run `intutic login` first.');
|
|
17
|
-
process.exit(1);
|
|
18
|
-
}
|
|
19
|
-
const controlPlaneUrl = resolveControlPlaneUrl(opts.dev);
|
|
20
|
-
const client = createApiClient(controlPlaneUrl, creds.apiKey);
|
|
21
|
-
try {
|
|
22
|
-
log.info(`Triggering evaluation run for dataset: ${opts.dataset}...`);
|
|
23
|
-
const { runId } = await client.post('/api/v1/evaluator/runs', {
|
|
24
|
-
datasetId: opts.dataset,
|
|
25
|
-
triggeredBy: 'manual',
|
|
26
|
-
});
|
|
27
|
-
log.success(`Run created: ${runId}. Polling status...`);
|
|
28
|
-
// Poll until complete
|
|
29
|
-
let attempts = 0;
|
|
30
|
-
const maxAttempts = 150; // ~5 minutes max
|
|
31
|
-
while (attempts < maxAttempts) {
|
|
32
|
-
const { run } = await client.get(`/api/v1/evaluator/runs/${runId}`);
|
|
33
|
-
if (run.status === 'completed') {
|
|
34
|
-
log.header('Evaluation Run Complete');
|
|
35
|
-
log.field('Run ID', run.runId);
|
|
36
|
-
log.field('Dataset ID', run.datasetId);
|
|
37
|
-
log.field('Status', run.status);
|
|
38
|
-
log.field('Pass Rate', run.passRate ? `${(parseFloat(run.passRate) * 100).toFixed(1)}%` : 'N/A');
|
|
39
|
-
log.field('Average Similarity', run.avgScore ? parseFloat(run.avgScore).toFixed(4) : 'N/A');
|
|
40
|
-
log.field('Weakening Detected', run.weakeningDetected ? 'YES' : 'NO');
|
|
41
|
-
log.field('Deploy Guard', run.deployApproved ? 'APPROVED' : 'BLOCKED');
|
|
42
|
-
if (!run.deployApproved) {
|
|
43
|
-
log.error('Evaluation failed deploy guard check.');
|
|
44
|
-
process.exit(1);
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
log.success('Evaluation passed all checks.');
|
|
48
|
-
process.exit(0);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
else if (run.status === 'failed') {
|
|
52
|
-
log.error(`Evaluation run failed: ${run.errorMessage || 'Unknown error'}`);
|
|
53
|
-
process.exit(1);
|
|
54
|
-
}
|
|
55
|
-
// Still running or pending
|
|
56
|
-
attempts++;
|
|
57
|
-
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
58
|
-
}
|
|
59
|
-
log.error('Evaluation timed out waiting for completion.');
|
|
60
|
-
process.exit(1);
|
|
61
|
-
}
|
|
62
|
-
catch (err) {
|
|
63
|
-
log.error(`Failed to execute evaluation: ${err.message || String(err)}`);
|
|
64
|
-
process.exit(1);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=eval.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eval.js","sourceRoot":"","sources":["../../src/commands/eval.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exec.test.d.ts","sourceRoot":"","sources":["../../src/commands/exec.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { buildProxyEnv } from './exec.js';
|
|
3
|
-
describe('Subprocess Exec Env Builder', () => {
|
|
4
|
-
it('correctly maps proxy URLs in dev mode', () => {
|
|
5
|
-
const apiKey = 'intk_test12345';
|
|
6
|
-
const env = buildProxyEnv(apiKey, true);
|
|
7
|
-
expect(env.OPENAI_API_BASE).toBe('http://localhost:4000/v1');
|
|
8
|
-
expect(env.OPENAI_BASE_URL).toBe('http://localhost:4000/v1');
|
|
9
|
-
expect(env.OPENAI_API_BASE_URL).toBe('http://localhost:4000/v1');
|
|
10
|
-
expect(env.OPENAI_HOST).toBe('http://localhost:4000');
|
|
11
|
-
expect(env.ANTHROPIC_BASE_URL).toBe('http://localhost:4000');
|
|
12
|
-
expect(env.OPENAI_API_KEY).toBe(apiKey);
|
|
13
|
-
expect(env.ANTHROPIC_API_KEY).toBe(apiKey);
|
|
14
|
-
expect(env.INTUTIC_API_KEY).toBe(apiKey);
|
|
15
|
-
});
|
|
16
|
-
it('correctly maps proxy URLs in production mode', () => {
|
|
17
|
-
const apiKey = 'intk_prod98765';
|
|
18
|
-
const env = buildProxyEnv(apiKey, false);
|
|
19
|
-
expect(env.OPENAI_API_BASE).toBe('https://proxy.intutic.ai/v1');
|
|
20
|
-
expect(env.OPENAI_BASE_URL).toBe('https://proxy.intutic.ai/v1');
|
|
21
|
-
expect(env.OPENAI_API_BASE_URL).toBe('https://proxy.intutic.ai/v1');
|
|
22
|
-
expect(env.OPENAI_HOST).toBe('https://proxy.intutic.ai');
|
|
23
|
-
expect(env.ANTHROPIC_BASE_URL).toBe('https://proxy.intutic.ai');
|
|
24
|
-
expect(env.OPENAI_API_KEY).toBe(apiKey);
|
|
25
|
-
expect(env.ANTHROPIC_API_KEY).toBe(apiKey);
|
|
26
|
-
expect(env.INTUTIC_API_KEY).toBe(apiKey);
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
//# sourceMappingURL=exec.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exec.test.js","sourceRoot":"","sources":["../../src/commands/exec.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,MAAM,GAAG,gBAAgB,CAAA;QAC/B,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAEvC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;QAC5D,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;QAC5D,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;QAChE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QACrD,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QAE5D,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACvC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC1C,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,MAAM,GAAG,gBAAgB,CAAA;QAC/B,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAExC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;QAC/D,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;QAC/D,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;QACnE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;QACxD,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;QAE/D,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACvC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC1C,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `intutic export` — Manage warehouse exports from the CLI.
|
|
3
|
-
*
|
|
4
|
-
* E4 — Data Warehouse Export / CLI
|
|
5
|
-
* @module
|
|
6
|
-
*/
|
|
7
|
-
export declare function runExportConfig(opts: {
|
|
8
|
-
provider?: 'gcs' | 's3';
|
|
9
|
-
bucket?: string;
|
|
10
|
-
prefix?: string;
|
|
11
|
-
credentials?: string;
|
|
12
|
-
region?: string;
|
|
13
|
-
format?: 'csv' | 'parquet' | 'ndjson';
|
|
14
|
-
dev?: boolean;
|
|
15
|
-
}): Promise<void>;
|
|
16
|
-
export declare function runExportStatus(opts: {
|
|
17
|
-
triggerTarget?: string;
|
|
18
|
-
format?: 'csv' | 'parquet' | 'ndjson';
|
|
19
|
-
dev?: boolean;
|
|
20
|
-
}): Promise<void>;
|
|
21
|
-
//# sourceMappingURL=export.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,QAAQ,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAA;IACrC,GAAG,CAAC,EAAE,OAAO,CAAA;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDhB;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAA;IACrC,GAAG,CAAC,EAAE,OAAO,CAAA;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDhB"}
|
package/dist/commands/export.js
DELETED
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `intutic export` — Manage warehouse exports from the CLI.
|
|
3
|
-
*
|
|
4
|
-
* E4 — Data Warehouse Export / CLI
|
|
5
|
-
* @module
|
|
6
|
-
*/
|
|
7
|
-
import { log } from '../lib/logger.js';
|
|
8
|
-
import { loadCredentials } from '../config/store.js';
|
|
9
|
-
import { resolveControlPlaneUrl } from '../config/paths.js';
|
|
10
|
-
import { createApiClient } from '../lib/api.js';
|
|
11
|
-
export async function runExportConfig(opts) {
|
|
12
|
-
const creds = await loadCredentials();
|
|
13
|
-
if (!creds) {
|
|
14
|
-
log.error('Not authenticated. Run `intutic login` first.');
|
|
15
|
-
process.exit(1);
|
|
16
|
-
}
|
|
17
|
-
const controlPlaneUrl = resolveControlPlaneUrl(opts.dev);
|
|
18
|
-
const client = createApiClient(controlPlaneUrl, creds.apiKey);
|
|
19
|
-
// If adding a new target
|
|
20
|
-
if (opts.provider && opts.bucket && opts.credentials) {
|
|
21
|
-
try {
|
|
22
|
-
log.info(`Adding new warehouse export target: ${opts.bucket} (${opts.provider})...`);
|
|
23
|
-
const res = await client.post('/api/v1/warehouse/targets', {
|
|
24
|
-
provider: opts.provider,
|
|
25
|
-
bucketName: opts.bucket,
|
|
26
|
-
pathPrefix: opts.prefix,
|
|
27
|
-
credentials: opts.credentials,
|
|
28
|
-
s3Region: opts.region,
|
|
29
|
-
defaultFormat: opts.format,
|
|
30
|
-
});
|
|
31
|
-
log.success(`Export target created successfully. Target ID: ${res.targetId}`);
|
|
32
|
-
process.exit(0);
|
|
33
|
-
}
|
|
34
|
-
catch (err) {
|
|
35
|
-
log.error(`Failed to create export target: ${err.message || String(err)}`);
|
|
36
|
-
process.exit(1);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
// Otherwise, list configured targets
|
|
40
|
-
try {
|
|
41
|
-
const { targets } = await client.get('/api/v1/warehouse/targets');
|
|
42
|
-
log.header('Intutic — Data Warehouse Export Targets');
|
|
43
|
-
if (targets.length === 0) {
|
|
44
|
-
log.info('No export targets configured. Use options to add one: --provider <gcs|s3> --bucket <name> --credentials <creds>');
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
for (const t of targets) {
|
|
48
|
-
log.info(`Target ID: ${t.targetId}`);
|
|
49
|
-
log.field(' Provider', t.provider.toUpperCase());
|
|
50
|
-
log.field(' Bucket Name', t.bucketName);
|
|
51
|
-
log.field(' Path Prefix', t.pathPrefix || '/');
|
|
52
|
-
if (t.s3Region)
|
|
53
|
-
log.field(' S3 Region', t.s3Region);
|
|
54
|
-
log.field(' Default Format', t.defaultFormat);
|
|
55
|
-
log.field(' Active', t.isActive ? 'Yes' : 'No');
|
|
56
|
-
console.log('');
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
process.exit(0);
|
|
60
|
-
}
|
|
61
|
-
catch (err) {
|
|
62
|
-
log.error(`Failed to fetch export targets: ${err.message || String(err)}`);
|
|
63
|
-
process.exit(1);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
export async function runExportStatus(opts) {
|
|
67
|
-
const creds = await loadCredentials();
|
|
68
|
-
if (!creds) {
|
|
69
|
-
log.error('Not authenticated. Run `intutic login` first.');
|
|
70
|
-
process.exit(1);
|
|
71
|
-
}
|
|
72
|
-
const controlPlaneUrl = resolveControlPlaneUrl(opts.dev);
|
|
73
|
-
const client = createApiClient(controlPlaneUrl, creds.apiKey);
|
|
74
|
-
// Trigger export if requested
|
|
75
|
-
if (opts.triggerTarget) {
|
|
76
|
-
try {
|
|
77
|
-
log.info(`Triggering export for target ${opts.triggerTarget}...`);
|
|
78
|
-
const res = await client.post('/api/v1/warehouse/jobs', {
|
|
79
|
-
targetId: opts.triggerTarget,
|
|
80
|
-
format: opts.format,
|
|
81
|
-
});
|
|
82
|
-
log.success(`Export job successfully queued. Job ID: ${res.jobId}`);
|
|
83
|
-
process.exit(0);
|
|
84
|
-
}
|
|
85
|
-
catch (err) {
|
|
86
|
-
log.error(`Failed to trigger export: ${err.message || String(err)}`);
|
|
87
|
-
process.exit(1);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
// Otherwise, list jobs
|
|
91
|
-
try {
|
|
92
|
-
const { jobs } = await client.get('/api/v1/warehouse/jobs');
|
|
93
|
-
log.header('Intutic — Data Warehouse Export Jobs');
|
|
94
|
-
if (jobs.length === 0) {
|
|
95
|
-
log.info('No export jobs found.');
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
for (const j of jobs) {
|
|
99
|
-
log.info(`Job ID: ${j.jobId}`);
|
|
100
|
-
log.field(' Target ID', j.targetId);
|
|
101
|
-
log.field(' Status', j.status.toUpperCase());
|
|
102
|
-
log.field(' Format', j.format);
|
|
103
|
-
log.field(' Records Exported', j.recordsExported !== null ? String(j.recordsExported) : '—');
|
|
104
|
-
log.field(' Bytes Exported', j.bytesExported !== null ? String(j.bytesExported) : '—');
|
|
105
|
-
log.field(' Created At', new Date(j.createdAt).toLocaleString());
|
|
106
|
-
console.log('');
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
process.exit(0);
|
|
110
|
-
}
|
|
111
|
-
catch (err) {
|
|
112
|
-
log.error(`Failed to fetch export jobs: ${err.message || String(err)}`);
|
|
113
|
-
process.exit(1);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
//# sourceMappingURL=export.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"install-daemon.test.d.ts","sourceRoot":"","sources":["../../src/commands/install-daemon.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { buildPlist, buildMcpPlist, buildUnit, buildMcpUnit, getPaths, checkRootPrivileges, ElevationRequiredError } from './install-daemon.js';
|
|
3
|
-
describe('Daemon Installer Configuration Builder', () => {
|
|
4
|
-
const opts = {
|
|
5
|
-
workspaceId: 'ws_test',
|
|
6
|
-
apiKey: 'vk_test',
|
|
7
|
-
binaryPath: '/usr/local/bin/intutic',
|
|
8
|
-
controlPlaneUrl: 'https://api.intutic.ai'
|
|
9
|
-
};
|
|
10
|
-
describe('getPaths', () => {
|
|
11
|
-
it('returns correct user-level paths on macOS', () => {
|
|
12
|
-
const paths = getPaths(false, false, 'darwin');
|
|
13
|
-
expect(paths.targetDir).toContain('Library/LaunchAgents');
|
|
14
|
-
expect(paths.targetPath).toContain('ai.intutic.sync-daemon.plist');
|
|
15
|
-
expect(paths.logPath).toContain('.intutic/logs/sync-daemon.log');
|
|
16
|
-
});
|
|
17
|
-
it('returns correct system-level paths on macOS', () => {
|
|
18
|
-
const paths = getPaths(true, false, 'darwin');
|
|
19
|
-
expect(paths.targetDir).toBe('/Library/LaunchDaemons');
|
|
20
|
-
expect(paths.targetPath).toBe('/Library/LaunchDaemons/ai.intutic.sync-daemon.plist');
|
|
21
|
-
expect(paths.logPath).toBe('/Library/Logs/Intutic/sync-daemon.log');
|
|
22
|
-
});
|
|
23
|
-
it('returns correct user-level paths on Linux', () => {
|
|
24
|
-
const paths = getPaths(false, false, 'linux');
|
|
25
|
-
expect(paths.targetDir).toContain('.config/systemd/user');
|
|
26
|
-
expect(paths.targetPath).toContain('intutic-sync-daemon.service');
|
|
27
|
-
expect(paths.logPath).toContain('.intutic/logs/sync-daemon.log');
|
|
28
|
-
});
|
|
29
|
-
it('returns correct system-level paths on Linux', () => {
|
|
30
|
-
const paths = getPaths(true, false, 'linux');
|
|
31
|
-
expect(paths.targetDir).toBe('/etc/systemd/system');
|
|
32
|
-
expect(paths.targetPath).toBe('/etc/systemd/system/intutic-sync-daemon.service');
|
|
33
|
-
expect(paths.logPath).toBe('/var/log/intutic/sync-daemon.log');
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
describe('buildPlist & buildMcpPlist', () => {
|
|
37
|
-
it('omits RunAtLoad in system mode and sets correct log locations', () => {
|
|
38
|
-
const userPlist = buildPlist(opts, false);
|
|
39
|
-
expect(userPlist).toContain('<key>RunAtLoad</key>');
|
|
40
|
-
expect(userPlist).toContain('.intutic/logs/sync-daemon.log');
|
|
41
|
-
const systemPlist = buildPlist(opts, true);
|
|
42
|
-
expect(systemPlist).not.toContain('<key>RunAtLoad</key>');
|
|
43
|
-
expect(systemPlist).toContain('/Library/Logs/Intutic/sync-daemon.log');
|
|
44
|
-
});
|
|
45
|
-
it('builds valid MCP plist with correct pathing', () => {
|
|
46
|
-
const mcpOpts = {
|
|
47
|
-
workspaceId: opts.workspaceId,
|
|
48
|
-
apiKey: opts.apiKey,
|
|
49
|
-
controlPlaneUrl: opts.controlPlaneUrl
|
|
50
|
-
};
|
|
51
|
-
const userMcp = buildMcpPlist(mcpOpts, false);
|
|
52
|
-
expect(userMcp).toContain('<key>RunAtLoad</key>');
|
|
53
|
-
expect(userMcp).toContain('.intutic/logs/mcp-daemon.log');
|
|
54
|
-
const systemMcp = buildMcpPlist(mcpOpts, true);
|
|
55
|
-
expect(systemMcp).not.toContain('<key>RunAtLoad</key>');
|
|
56
|
-
expect(systemMcp).toContain('/Library/Logs/Intutic/mcp-daemon.log');
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
describe('buildUnit & buildMcpUnit', () => {
|
|
60
|
-
it('sets correct WantedBy target and logs for Linux systemd sync daemon', () => {
|
|
61
|
-
const userUnit = buildUnit(opts, false);
|
|
62
|
-
expect(userUnit).toContain('WantedBy=default.target');
|
|
63
|
-
expect(userUnit).toContain('.intutic/logs/sync-daemon.log');
|
|
64
|
-
const systemUnit = buildUnit(opts, true);
|
|
65
|
-
expect(systemUnit).toContain('WantedBy=multi-user.target');
|
|
66
|
-
expect(systemUnit).toContain('/var/log/intutic/sync-daemon.log');
|
|
67
|
-
});
|
|
68
|
-
it('sets correct WantedBy target and logs for Linux systemd MCP daemon', () => {
|
|
69
|
-
const mcpOpts = {
|
|
70
|
-
workspaceId: opts.workspaceId,
|
|
71
|
-
apiKey: opts.apiKey,
|
|
72
|
-
controlPlaneUrl: opts.controlPlaneUrl
|
|
73
|
-
};
|
|
74
|
-
const userUnit = buildMcpUnit(mcpOpts, false);
|
|
75
|
-
expect(userUnit).toContain('WantedBy=default.target');
|
|
76
|
-
expect(userUnit).toContain('.intutic/logs/mcp-daemon.log');
|
|
77
|
-
const systemUnit = buildMcpUnit(mcpOpts, true);
|
|
78
|
-
expect(systemUnit).toContain('WantedBy=multi-user.target');
|
|
79
|
-
expect(systemUnit).toContain('/var/log/intutic/mcp-daemon.log');
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
describe('checkRootPrivileges', () => {
|
|
83
|
-
it('does not throw when system level flag is false', () => {
|
|
84
|
-
expect(() => checkRootPrivileges(false)).not.toThrow();
|
|
85
|
-
});
|
|
86
|
-
it('throws ElevationRequiredError when system is true and user is not root', () => {
|
|
87
|
-
if (typeof process.getuid === 'function' && process.getuid() !== 0) {
|
|
88
|
-
expect(() => checkRootPrivileges(true)).toThrow(ElevationRequiredError);
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
//# sourceMappingURL=install-daemon.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"install-daemon.test.js","sourceRoot":"","sources":["../../src/commands/install-daemon.test.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/mdm.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `intutic mdm` — MDM device enrollment and status verification.
|
|
3
|
-
*
|
|
4
|
-
* Enrolls local developer machines into the workspace MDM inventory,
|
|
5
|
-
* exposing device status, CA cert installation status, and network policies.
|
|
6
|
-
*
|
|
7
|
-
* LLD #33: MDM device enrollment
|
|
8
|
-
*
|
|
9
|
-
* @module
|
|
10
|
-
*/
|
|
11
|
-
interface EnrollOptions {
|
|
12
|
-
dev?: boolean;
|
|
13
|
-
proxyVersion?: string;
|
|
14
|
-
caInstalled?: boolean;
|
|
15
|
-
dnsConfigured?: boolean;
|
|
16
|
-
firewallConfigured?: boolean;
|
|
17
|
-
}
|
|
18
|
-
export declare function runMdmEnroll(opts: EnrollOptions): Promise<void>;
|
|
19
|
-
export declare function runMdmStatus(opts: {
|
|
20
|
-
dev?: boolean;
|
|
21
|
-
}): Promise<void>;
|
|
22
|
-
export {};
|
|
23
|
-
//# sourceMappingURL=mdm.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mdm.d.ts","sourceRoot":"","sources":["../../src/commands/mdm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,UAAU,aAAa;IACrB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA6ErE;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgEzE"}
|
package/dist/commands/mdm.js
DELETED
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `intutic mdm` — MDM device enrollment and status verification.
|
|
3
|
-
*
|
|
4
|
-
* Enrolls local developer machines into the workspace MDM inventory,
|
|
5
|
-
* exposing device status, CA cert installation status, and network policies.
|
|
6
|
-
*
|
|
7
|
-
* LLD #33: MDM device enrollment
|
|
8
|
-
*
|
|
9
|
-
* @module
|
|
10
|
-
*/
|
|
11
|
-
import os from 'node:os';
|
|
12
|
-
import { log } from '../lib/logger.js';
|
|
13
|
-
import { loadCredentials } from '../config/store.js';
|
|
14
|
-
export async function runMdmEnroll(opts) {
|
|
15
|
-
log.header('Intutic — MDM Device Enrollment');
|
|
16
|
-
const creds = await loadCredentials();
|
|
17
|
-
if (!creds) {
|
|
18
|
-
log.error('Not authenticated. Run `intutic login` first.');
|
|
19
|
-
process.exit(1);
|
|
20
|
-
}
|
|
21
|
-
const baseUrl = creds.controlPlaneUrl ?? 'https://api.intutic.ai';
|
|
22
|
-
const headers = {
|
|
23
|
-
Authorization: `Bearer ${creds.apiKey}`,
|
|
24
|
-
'x-workspace-id': creds.workspaceId ?? '',
|
|
25
|
-
'Content-Type': 'application/json',
|
|
26
|
-
};
|
|
27
|
-
// 1. Fetch user identity to resolve member ID
|
|
28
|
-
let memberId = '';
|
|
29
|
-
let workspaceId = creds.workspaceId ?? '';
|
|
30
|
-
try {
|
|
31
|
-
const meResp = await fetch(`${baseUrl}/api/v1/auth/me`, { headers });
|
|
32
|
-
if (!meResp.ok) {
|
|
33
|
-
log.error(`Authentication check failed: HTTP ${meResp.status}`);
|
|
34
|
-
process.exit(1);
|
|
35
|
-
}
|
|
36
|
-
const me = await meResp.json();
|
|
37
|
-
memberId = me.memberId;
|
|
38
|
-
workspaceId = me.workspaceId;
|
|
39
|
-
}
|
|
40
|
-
catch (err) {
|
|
41
|
-
log.error(`Failed to reach control plane: ${err.message || String(err)}`);
|
|
42
|
-
process.exit(1);
|
|
43
|
-
}
|
|
44
|
-
// 2. Map OS platform to Zod enum
|
|
45
|
-
const nodePlatform = os.platform();
|
|
46
|
-
let platform = 'linux';
|
|
47
|
-
if (nodePlatform === 'darwin') {
|
|
48
|
-
platform = 'darwin';
|
|
49
|
-
}
|
|
50
|
-
else if (nodePlatform === 'win32') {
|
|
51
|
-
platform = 'windows';
|
|
52
|
-
}
|
|
53
|
-
// 3. Construct enrollment payload
|
|
54
|
-
const payload = {
|
|
55
|
-
workspaceId,
|
|
56
|
-
memberId,
|
|
57
|
-
hostname: os.hostname(),
|
|
58
|
-
platform,
|
|
59
|
-
proxyVersion: opts.proxyVersion ?? '1.0.0',
|
|
60
|
-
caInstalled: opts.caInstalled ?? true,
|
|
61
|
-
dnsConfigured: opts.dnsConfigured ?? true,
|
|
62
|
-
firewallConfigured: opts.firewallConfigured ?? true,
|
|
63
|
-
};
|
|
64
|
-
log.info(`Enrolling device "${payload.hostname}" (${payload.platform}) under workspace ${workspaceId}...`);
|
|
65
|
-
try {
|
|
66
|
-
const resp = await fetch(`${baseUrl}/api/v1/network/mdm/enroll`, {
|
|
67
|
-
method: 'POST',
|
|
68
|
-
headers,
|
|
69
|
-
body: JSON.stringify(payload),
|
|
70
|
-
});
|
|
71
|
-
if (!resp.ok) {
|
|
72
|
-
const errText = await resp.text();
|
|
73
|
-
log.error(`Enrollment failed: ${errText}`);
|
|
74
|
-
process.exit(1);
|
|
75
|
-
}
|
|
76
|
-
const result = await resp.json();
|
|
77
|
-
log.success('Device successfully enrolled!');
|
|
78
|
-
log.field('Device ID', result.deviceId);
|
|
79
|
-
log.field('Status', result.isNew ? 'New Device Enrolled' : 'Existing Device Updated');
|
|
80
|
-
}
|
|
81
|
-
catch (err) {
|
|
82
|
-
log.error(`Enrollment request failed: ${err.message || String(err)}`);
|
|
83
|
-
process.exit(1);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
export async function runMdmStatus(opts) {
|
|
87
|
-
log.header('Intutic — MDM Device Status');
|
|
88
|
-
const creds = await loadCredentials();
|
|
89
|
-
if (!creds) {
|
|
90
|
-
log.error('Not authenticated. Run `intutic login` first.');
|
|
91
|
-
process.exit(1);
|
|
92
|
-
}
|
|
93
|
-
const baseUrl = creds.controlPlaneUrl ?? 'https://api.intutic.ai';
|
|
94
|
-
const headers = {
|
|
95
|
-
Authorization: `Bearer ${creds.apiKey}`,
|
|
96
|
-
'x-workspace-id': creds.workspaceId ?? '',
|
|
97
|
-
'Content-Type': 'application/json',
|
|
98
|
-
};
|
|
99
|
-
const hostname = os.hostname();
|
|
100
|
-
log.info(`Checking MDM status for local device: ${hostname}`);
|
|
101
|
-
try {
|
|
102
|
-
const resp = await fetch(`${baseUrl}/api/v1/network/mdm/devices`, { headers });
|
|
103
|
-
if (resp.status === 403) {
|
|
104
|
-
log.warn('Access denied: MDM device listing requires ADMIN or OWNER role.');
|
|
105
|
-
log.info('To verify enrollment, run `intutic mdm enroll`.');
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
if (!resp.ok) {
|
|
109
|
-
log.error(`Failed to fetch MDM devices: HTTP ${resp.status}`);
|
|
110
|
-
process.exit(1);
|
|
111
|
-
}
|
|
112
|
-
const { devices } = await resp.json();
|
|
113
|
-
const localDevice = devices.find(d => d.hostname === hostname && d.status === 'active');
|
|
114
|
-
if (localDevice) {
|
|
115
|
-
log.success('Device is enrolled and active.');
|
|
116
|
-
log.field('Device ID', localDevice.deviceId);
|
|
117
|
-
log.field('Hostname', localDevice.hostname);
|
|
118
|
-
log.field('Platform', localDevice.platform);
|
|
119
|
-
log.field('Proxy Version', localDevice.proxyVersion);
|
|
120
|
-
log.field('CA Certificate', localDevice.caInstalled ? 'Installed' : 'Missing');
|
|
121
|
-
log.field('DNS Configured', localDevice.dnsConfigured ? 'Active' : 'Missing');
|
|
122
|
-
log.field('Firewall Configured', localDevice.firewallConfigured ? 'Active' : 'Missing');
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
log.warn(`No active enrollment found for hostname "${hostname}" in this workspace.`);
|
|
126
|
-
log.info('Run `intutic mdm enroll` to enroll this device.');
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
catch (err) {
|
|
130
|
-
log.error(`Error querying MDM status: ${err.message || String(err)}`);
|
|
131
|
-
process.exit(1);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
//# sourceMappingURL=mdm.js.map
|
package/dist/commands/mdm.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mdm.js","sourceRoot":"","sources":["../../src/commands/mdm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export declare function runPromptTag(promptId: string, tags: string[], opts: {
|
|
2
|
-
dev?: boolean;
|
|
3
|
-
}): Promise<void>;
|
|
4
|
-
export declare function runPromptPin(promptId: string, versionNumberStr: string, channelName: string, opts: {
|
|
5
|
-
dev?: boolean;
|
|
6
|
-
}): Promise<void>;
|
|
7
|
-
export declare function runPromptRollback(promptId: string, opts: {
|
|
8
|
-
toVersion: string;
|
|
9
|
-
dev?: boolean;
|
|
10
|
-
}): Promise<void>;
|
|
11
|
-
//# sourceMappingURL=prompt.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/commands/prompt.ts"],"names":[],"mappings":"AAiBA,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAa3G;AAED,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GACtB,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GACzC,OAAO,CAAC,IAAI,CAAC,CAkBf"}
|
package/dist/commands/prompt.js
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { log } from '../lib/logger.js';
|
|
2
|
-
import { loadCredentials, loadConfig } from '../config/store.js';
|
|
3
|
-
import { resolveControlPlaneUrl } from '../config/paths.js';
|
|
4
|
-
import { createApiClient } from '../lib/api.js';
|
|
5
|
-
async function getClient(dev) {
|
|
6
|
-
const creds = await loadCredentials();
|
|
7
|
-
if (!creds) {
|
|
8
|
-
log.error('Not authenticated. Run `intutic login` first.');
|
|
9
|
-
process.exit(1);
|
|
10
|
-
}
|
|
11
|
-
const config = loadConfig();
|
|
12
|
-
const devMode = dev || config?.devMode || process.env.INTUTIC_DEV === '1';
|
|
13
|
-
const controlPlaneUrl = resolveControlPlaneUrl(devMode);
|
|
14
|
-
return createApiClient(controlPlaneUrl, creds.apiKey);
|
|
15
|
-
}
|
|
16
|
-
export async function runPromptTag(promptId, tags, opts) {
|
|
17
|
-
log.header(`Intutic — Tag Prompt: ${promptId}`);
|
|
18
|
-
const client = await getClient(opts.dev);
|
|
19
|
-
try {
|
|
20
|
-
const res = await client.put(`/api/v1/prompts/${promptId}`, {
|
|
21
|
-
tags,
|
|
22
|
-
});
|
|
23
|
-
log.info(`Successfully updated tags for prompt ${promptId}!`);
|
|
24
|
-
log.field('Tags', (res.prompt?.tags || tags).join(', '));
|
|
25
|
-
}
|
|
26
|
-
catch (err) {
|
|
27
|
-
log.error(`Failed to tag prompt: ${err.message}`);
|
|
28
|
-
process.exit(1);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
export async function runPromptPin(promptId, versionNumberStr, channelName, opts) {
|
|
32
|
-
const versionNumber = parseInt(versionNumberStr, 10);
|
|
33
|
-
if (isNaN(versionNumber) || versionNumber <= 0) {
|
|
34
|
-
log.error('Version number must be a valid positive integer.');
|
|
35
|
-
process.exit(1);
|
|
36
|
-
}
|
|
37
|
-
log.header(`Intutic — Pin Prompt Version: ${promptId} (v${versionNumber} -> ${channelName})`);
|
|
38
|
-
const client = await getClient(opts.dev);
|
|
39
|
-
try {
|
|
40
|
-
await client.post(`/api/v1/prompts/${promptId}/pin`, {
|
|
41
|
-
version_number: versionNumber,
|
|
42
|
-
channel: channelName,
|
|
43
|
-
});
|
|
44
|
-
log.info(`Successfully pinned version ${versionNumber} of prompt ${promptId} to release channel "${channelName}"!`);
|
|
45
|
-
}
|
|
46
|
-
catch (err) {
|
|
47
|
-
log.error(`Failed to pin prompt version: ${err.message}`);
|
|
48
|
-
process.exit(1);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
export async function runPromptRollback(promptId, opts) {
|
|
52
|
-
const versionNumber = parseInt(opts.toVersion, 10);
|
|
53
|
-
if (isNaN(versionNumber) || versionNumber <= 0) {
|
|
54
|
-
log.error('Target rollback version number must be a valid positive integer.');
|
|
55
|
-
process.exit(1);
|
|
56
|
-
}
|
|
57
|
-
log.header(`Intutic — Rollback Prompt: ${promptId} to v${versionNumber}`);
|
|
58
|
-
const client = await getClient(opts.dev);
|
|
59
|
-
try {
|
|
60
|
-
const res = await client.post(`/api/v1/prompts/${promptId}/rollback`, {
|
|
61
|
-
version_number: versionNumber,
|
|
62
|
-
});
|
|
63
|
-
log.info(`Successfully rolled back prompt ${promptId} to version ${versionNumber}!`);
|
|
64
|
-
log.field('Current Version Now', res.prompt.currentVersion.toString());
|
|
65
|
-
}
|
|
66
|
-
catch (err) {
|
|
67
|
-
log.error(`Failed to rollback prompt: ${err.message}`);
|
|
68
|
-
process.exit(1);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=prompt.js.map
|