@intutic/cli 0.1.1 → 1.0.4
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 +376 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/benchmark.d.ts +31 -0
- package/dist/commands/benchmark.d.ts.map +1 -0
- package/dist/commands/benchmark.js +211 -0
- package/dist/commands/benchmark.js.map +1 -0
- package/dist/commands/connect.d.ts +8 -6
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +414 -80
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/enterprise-install.d.ts +36 -0
- package/dist/commands/enterprise-install.d.ts.map +1 -0
- package/dist/commands/enterprise-install.js +289 -0
- package/dist/commands/enterprise-install.js.map +1 -0
- package/dist/commands/eval.d.ts +13 -0
- package/dist/commands/eval.d.ts.map +1 -0
- package/dist/commands/eval.js +67 -0
- package/dist/commands/eval.js.map +1 -0
- package/dist/commands/exec.d.ts +34 -0
- package/dist/commands/exec.d.ts.map +1 -0
- package/dist/commands/exec.js +114 -0
- package/dist/commands/exec.js.map +1 -0
- package/dist/commands/exec.test.d.ts +2 -0
- package/dist/commands/exec.test.d.ts.map +1 -0
- package/dist/commands/exec.test.js +29 -0
- package/dist/commands/exec.test.js.map +1 -0
- package/dist/commands/export.d.ts +21 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +116 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +28 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install-daemon.d.ts +61 -0
- package/dist/commands/install-daemon.d.ts.map +1 -0
- package/dist/commands/install-daemon.js +691 -0
- package/dist/commands/install-daemon.js.map +1 -0
- package/dist/commands/install-daemon.test.d.ts +2 -0
- package/dist/commands/install-daemon.test.d.ts.map +1 -0
- package/dist/commands/install-daemon.test.js +93 -0
- package/dist/commands/install-daemon.test.js.map +1 -0
- package/dist/commands/login.js +2 -2
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.js +1 -1
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/mdm.d.ts +23 -0
- package/dist/commands/mdm.d.ts.map +1 -0
- package/dist/commands/mdm.js +134 -0
- package/dist/commands/mdm.js.map +1 -0
- package/dist/commands/skill.d.ts +27 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +289 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/sop-audit.d.ts +17 -0
- package/dist/commands/sop-audit.d.ts.map +1 -0
- package/dist/commands/sop-audit.js +136 -0
- package/dist/commands/sop-audit.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +53 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/syncContext.d.ts +18 -0
- package/dist/commands/syncContext.d.ts.map +1 -0
- package/dist/commands/syncContext.js +37 -0
- package/dist/commands/syncContext.js.map +1 -0
- package/dist/commands/traces.d.ts +13 -0
- package/dist/commands/traces.d.ts.map +1 -1
- package/dist/commands/traces.js +96 -2
- package/dist/commands/traces.js.map +1 -1
- package/dist/commands/whoami.js +1 -1
- package/dist/commands/whoami.js.map +1 -1
- package/dist/config/keychain.d.ts +28 -0
- package/dist/config/keychain.d.ts.map +1 -0
- package/dist/config/keychain.js +99 -0
- package/dist/config/keychain.js.map +1 -0
- package/dist/config/store.d.ts +3 -3
- package/dist/config/store.d.ts.map +1 -1
- package/dist/config/store.js +30 -6
- package/dist/config/store.js.map +1 -1
- package/dist/harness/aider.d.ts +4 -3
- package/dist/harness/aider.d.ts.map +1 -1
- package/dist/harness/aider.js +13 -27
- package/dist/harness/aider.js.map +1 -1
- package/dist/harness/claudeDesktop.d.ts +18 -0
- package/dist/harness/claudeDesktop.d.ts.map +1 -0
- package/dist/harness/claudeDesktop.js +69 -0
- package/dist/harness/claudeDesktop.js.map +1 -0
- package/dist/harness/cline.d.ts +13 -0
- package/dist/harness/cline.d.ts.map +1 -0
- package/dist/harness/cline.js +75 -0
- package/dist/harness/cline.js.map +1 -0
- package/dist/harness/codex.d.ts +4 -4
- package/dist/harness/codex.d.ts.map +1 -1
- package/dist/harness/codex.js +33 -21
- package/dist/harness/codex.js.map +1 -1
- package/dist/harness/continue.d.ts +14 -0
- package/dist/harness/continue.d.ts.map +1 -0
- package/dist/harness/continue.js +97 -0
- package/dist/harness/continue.js.map +1 -0
- package/dist/harness/cursor.d.ts +13 -1
- package/dist/harness/cursor.d.ts.map +1 -1
- package/dist/harness/cursor.js +59 -3
- package/dist/harness/cursor.js.map +1 -1
- package/dist/harness/detector.d.ts +1 -1
- package/dist/harness/detector.d.ts.map +1 -1
- package/dist/harness/detector.js +13 -1
- package/dist/harness/detector.js.map +1 -1
- package/dist/harness/goose.d.ts +13 -0
- package/dist/harness/goose.d.ts.map +1 -0
- package/dist/harness/goose.js +45 -0
- package/dist/harness/goose.js.map +1 -0
- package/dist/harness/n8n.d.ts +8 -4
- package/dist/harness/n8n.d.ts.map +1 -1
- package/dist/harness/n8n.js +108 -13
- package/dist/harness/n8n.js.map +1 -1
- package/dist/harness/openWebUI.d.ts +13 -0
- package/dist/harness/openWebUI.d.ts.map +1 -0
- package/dist/harness/openWebUI.js +25 -0
- package/dist/harness/openWebUI.js.map +1 -0
- package/dist/harness/openhands.d.ts +3 -3
- package/dist/harness/openhands.d.ts.map +1 -1
- package/dist/harness/openhands.js +13 -9
- package/dist/harness/openhands.js.map +1 -1
- package/dist/harness/rooCode.d.ts +14 -0
- package/dist/harness/rooCode.d.ts.map +1 -0
- package/dist/harness/rooCode.js +77 -0
- package/dist/harness/rooCode.js.map +1 -0
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/harness/types.js +6 -0
- package/dist/harness/types.js.map +1 -1
- package/dist/harness/vscodeSettingsWriter.d.ts +40 -0
- package/dist/harness/vscodeSettingsWriter.d.ts.map +1 -0
- package/dist/harness/vscodeSettingsWriter.js +116 -0
- package/dist/harness/vscodeSettingsWriter.js.map +1 -0
- package/dist/harness/windsurf.d.ts +13 -1
- package/dist/harness/windsurf.d.ts.map +1 -1
- package/dist/harness/windsurf.js +58 -3
- package/dist/harness/windsurf.js.map +1 -1
- package/dist/lib/api.d.ts +2 -0
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +71 -1
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/envInjector.d.ts +24 -0
- package/dist/lib/envInjector.d.ts.map +1 -0
- package/dist/lib/envInjector.js +146 -0
- package/dist/lib/envInjector.js.map +1 -0
- package/dist/lib/envInjector.test.d.ts +2 -0
- package/dist/lib/envInjector.test.d.ts.map +1 -0
- package/dist/lib/envInjector.test.js +32 -0
- package/dist/lib/envInjector.test.js.map +1 -0
- package/dist/lib/gitHooks.d.ts +19 -0
- package/dist/lib/gitHooks.d.ts.map +1 -0
- package/dist/lib/gitHooks.js +58 -0
- package/dist/lib/gitHooks.js.map +1 -0
- package/dist/lib/onboarding.d.ts +17 -0
- package/dist/lib/onboarding.d.ts.map +1 -0
- package/dist/lib/onboarding.js +164 -0
- package/dist/lib/onboarding.js.map +1 -0
- package/dist/lib/process.d.ts +53 -0
- package/dist/lib/process.d.ts.map +1 -0
- package/dist/lib/process.js +181 -0
- package/dist/lib/process.js.map +1 -0
- package/dist/lib/process.test.d.ts +2 -0
- package/dist/lib/process.test.d.ts.map +1 -0
- package/dist/lib/process.test.js +44 -0
- package/dist/lib/process.test.js.map +1 -0
- package/package.json +22 -33
|
@@ -0,0 +1,116 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAG/C,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAQrC;IACC,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAA;IACrC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,GAAG,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAA;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,eAAe,GAAG,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACxD,MAAM,MAAM,GAAG,eAAe,CAAC,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAE7D,yBAAyB;IACzB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrD,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,uCAAuC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,MAAM,CAAC,CAAA;YACpF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAuB,2BAA2B,EAAE;gBAC/E,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,UAAU,EAAE,IAAI,CAAC,MAAM;gBACvB,UAAU,EAAE,IAAI,CAAC,MAAM;gBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,QAAQ,EAAE,IAAI,CAAC,MAAM;gBACrB,aAAa,EAAE,IAAI,CAAC,MAAM;aAC3B,CAAC,CAAA;YACF,GAAG,CAAC,OAAO,CAAC,kDAAkD,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,GAAG,CAAC,KAAK,CAAC,mCAAmC,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAiC,2BAA2B,CAAC,CAAA;QACjG,GAAG,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAA;QACrD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,IAAI,CAAC,iHAAiH,CAAC,CAAA;QAC7H,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;gBACpC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;gBACjD,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,UAAU,CAAC,CAAA;gBACxC,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,CAAA;gBAC/C,IAAI,CAAC,CAAC,QAAQ;oBAAE,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAA;gBACpD,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,aAAa,CAAC,CAAA;gBAC9C,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;gBAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACjB,CAAC;QACH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,GAAG,CAAC,KAAK,CAAC,mCAAmC,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAIrC;IACC,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAA;IACrC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,GAAG,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAA;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,eAAe,GAAG,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACxD,MAAM,MAAM,GAAG,eAAe,CAAC,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAE7D,8BAA8B;IAC9B,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,gCAAgC,IAAI,CAAC,aAAa,KAAK,CAAC,CAAA;YACjE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAoB,wBAAwB,EAAE;gBACzE,QAAQ,EAAE,IAAI,CAAC,aAAa;gBAC5B,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAA;YACF,GAAG,CAAC,OAAO,CAAC,2CAA2C,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA;YACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,GAAG,CAAC,KAAK,CAAC,6BAA6B,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAA2B,wBAAwB,CAAC,CAAA;QACrF,GAAG,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAA;QAClD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QACnC,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;gBAC9B,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAA;gBACpC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;gBAC7C,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;gBAC/B,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;gBAC7F,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;gBACvF,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,CAAC,CAAA;gBACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACjB,CAAC;QACH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,GAAG,CAAC,KAAK,CAAC,gCAAgC,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA4BH,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmFpE"}
|
package/dist/commands/init.js
CHANGED
|
@@ -12,6 +12,7 @@ import { join, resolve, dirname } from 'node:path';
|
|
|
12
12
|
import { log } from '../lib/logger.js';
|
|
13
13
|
import { loadCredentials, saveConfig } from '../config/store.js';
|
|
14
14
|
import { detectHarnesses } from '../harness/detector.js';
|
|
15
|
+
import { printOnboardingGuide } from '../lib/onboarding.js';
|
|
15
16
|
import pc from 'picocolors';
|
|
16
17
|
/**
|
|
17
18
|
* Walk up from cwd looking for .git/ or package.json to find workspace root.
|
|
@@ -60,7 +61,7 @@ export async function runInit(opts) {
|
|
|
60
61
|
log.success(`Detected ${detected.length} harness${detected.length > 1 ? 'es' : ''}`);
|
|
61
62
|
}
|
|
62
63
|
// 3. Check credentials
|
|
63
|
-
const creds = loadCredentials();
|
|
64
|
+
const creds = await loadCredentials();
|
|
64
65
|
if (!creds) {
|
|
65
66
|
log.warn('Not authenticated. Run `intutic login` to connect to the control plane.');
|
|
66
67
|
}
|
|
@@ -75,10 +76,35 @@ export async function runInit(opts) {
|
|
|
75
76
|
configVersion: 0,
|
|
76
77
|
devMode,
|
|
77
78
|
});
|
|
79
|
+
// 5. Prompt for Git hook onboarding
|
|
80
|
+
const readline = await import('node:readline');
|
|
81
|
+
const rl = readline.createInterface({
|
|
82
|
+
input: process.stdin,
|
|
83
|
+
output: process.stdout,
|
|
84
|
+
});
|
|
85
|
+
const wantHooks = await new Promise((resolve) => {
|
|
86
|
+
rl.question('Would you like to install Git sync hooks (post-commit, post-checkout)? [Y/n]: ', (answer) => {
|
|
87
|
+
rl.close();
|
|
88
|
+
const normalized = answer.trim().toLowerCase();
|
|
89
|
+
if (normalized === '' || normalized === 'y' || normalized === 'yes') {
|
|
90
|
+
resolve(true);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
resolve(false);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
if (wantHooks) {
|
|
98
|
+
const { installGitHooks } = await import('../lib/gitHooks.js');
|
|
99
|
+
await installGitHooks(workspaceRoot);
|
|
100
|
+
}
|
|
78
101
|
log.success('Workspace initialized.');
|
|
79
102
|
if (devMode) {
|
|
80
103
|
log.dim('Dev mode: using local control plane (http://localhost:3001)');
|
|
81
104
|
}
|
|
82
|
-
|
|
105
|
+
// Print onboarding setup instructions for detected harnesses
|
|
106
|
+
const detectedHarnessTypes = detected.map((h) => h.type);
|
|
107
|
+
const apiKey = creds?.apiKey;
|
|
108
|
+
printOnboardingGuide(detectedHarnessTypes, apiKey, devMode);
|
|
83
109
|
}
|
|
84
110
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAY,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* install-daemon.ts — System-level sync-daemon & mcp-daemon persistence installer.
|
|
3
|
+
*
|
|
4
|
+
* Registers the Intutic sync-daemon or mcp-daemon as system-level services so they
|
|
5
|
+
* auto-start on login/boot and restart automatically on any exit.
|
|
6
|
+
*
|
|
7
|
+
* Platform support:
|
|
8
|
+
* - macOS : LaunchAgent/LaunchDaemon (LaunchDaemon requires root/system flag)
|
|
9
|
+
* - Linux : systemd user/system service (system service requires root/system flag)
|
|
10
|
+
*
|
|
11
|
+
* WS-5 — Q3 Layer 4 (LaunchAgent / systemd persistence) & WS-5MCP
|
|
12
|
+
*
|
|
13
|
+
* @module
|
|
14
|
+
*/
|
|
15
|
+
export declare class ElevationRequiredError extends Error {
|
|
16
|
+
constructor(targetPath: string);
|
|
17
|
+
}
|
|
18
|
+
export interface InstallDaemonOptions {
|
|
19
|
+
workspaceId: string;
|
|
20
|
+
apiKey: string;
|
|
21
|
+
/** Override the intutic CLI binary path (defaults to process.execPath) */
|
|
22
|
+
binaryPath?: string;
|
|
23
|
+
/** Control plane URL (defaults to https://api.intutic.ai) */
|
|
24
|
+
controlPlaneUrl?: string;
|
|
25
|
+
/** If true, just print what would be done without writing files */
|
|
26
|
+
dryRun?: boolean;
|
|
27
|
+
/** Install as a system-level service (LaunchDaemon on macOS, systemd system unit on Linux) */
|
|
28
|
+
system?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface UninstallDaemonOptions {
|
|
31
|
+
/** If true, just print what would be done without writing files */
|
|
32
|
+
dryRun?: boolean;
|
|
33
|
+
/** Uninstall the system-level service */
|
|
34
|
+
system?: boolean;
|
|
35
|
+
}
|
|
36
|
+
export declare function checkRootPrivileges(system: boolean, targetPath?: string): void;
|
|
37
|
+
export interface ResolvedPaths {
|
|
38
|
+
label: string;
|
|
39
|
+
unitName?: string;
|
|
40
|
+
targetDir: string;
|
|
41
|
+
targetPath: string;
|
|
42
|
+
logsDir: string;
|
|
43
|
+
logPath: string;
|
|
44
|
+
errPath: string;
|
|
45
|
+
}
|
|
46
|
+
export declare function getPaths(system: boolean, isMcp: boolean, platform?: string): ResolvedPaths;
|
|
47
|
+
export declare function buildPlist(opts: Required<Pick<InstallDaemonOptions, 'workspaceId' | 'apiKey' | 'binaryPath' | 'controlPlaneUrl'>>, system?: boolean): string;
|
|
48
|
+
export declare function buildMcpPlist(opts: Required<Pick<InstallDaemonOptions, 'workspaceId' | 'apiKey' | 'controlPlaneUrl'>>, system?: boolean): string;
|
|
49
|
+
export declare function buildUnit(opts: Required<Pick<InstallDaemonOptions, 'workspaceId' | 'apiKey' | 'binaryPath' | 'controlPlaneUrl'>>, system?: boolean): string;
|
|
50
|
+
export declare function buildMcpUnit(opts: Required<Pick<InstallDaemonOptions, 'workspaceId' | 'apiKey' | 'controlPlaneUrl'>>, system?: boolean): string;
|
|
51
|
+
export declare function installDaemon(opts: InstallDaemonOptions): Promise<void>;
|
|
52
|
+
export declare function uninstallDaemon(opts?: UninstallDaemonOptions): Promise<void>;
|
|
53
|
+
export declare function daemonStatus(): Promise<void>;
|
|
54
|
+
export declare function daemonStop(): Promise<void>;
|
|
55
|
+
export declare function daemonStart(): Promise<void>;
|
|
56
|
+
export declare function installMcpDaemon(opts: InstallDaemonOptions): Promise<void>;
|
|
57
|
+
export declare function uninstallMcpDaemon(opts?: UninstallDaemonOptions): Promise<void>;
|
|
58
|
+
export declare function mcpDaemonStatus(): Promise<void>;
|
|
59
|
+
export declare function mcpDaemonStop(): Promise<void>;
|
|
60
|
+
export declare function mcpDaemonStart(): Promise<void>;
|
|
61
|
+
//# sourceMappingURL=install-daemon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-daemon.d.ts","sourceRoot":"","sources":["../../src/commands/install-daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAaH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,UAAU,EAAE,MAAM;CAI/B;AAID,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,6DAA6D;IAC7D,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mEAAmE;IACnE,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,8FAA8F;IAC9F,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,mEAAmE;IACnE,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,yCAAyC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAID,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,SAAoD,GAAG,IAAI,CAIzH;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,GAAE,MAAyB,GAAG,aAAa,CA8B5G;AAID,wBAAgB,UAAU,CACxB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,aAAa,GAAG,QAAQ,GAAG,YAAY,GAAG,iBAAiB,CAAC,CAAC,EACvG,MAAM,UAAQ,GACb,MAAM,CA0DR;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,aAAa,GAAG,QAAQ,GAAG,iBAAiB,CAAC,CAAC,EACxF,MAAM,UAAQ,GACb,MAAM,CAqDR;AAsCD,wBAAgB,SAAS,CACvB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,aAAa,GAAG,QAAQ,GAAG,YAAY,GAAG,iBAAiB,CAAC,CAAC,EACvG,MAAM,UAAQ,GACb,MAAM,CAsCR;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,aAAa,GAAG,QAAQ,GAAG,iBAAiB,CAAC,CAAC,EACxF,MAAM,UAAQ,GACb,MAAM,CAsCR;AAoCD,wBAAsB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB7E;AAED,wBAAsB,eAAe,CAAC,IAAI,GAAE,sBAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCtF;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAmClD;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAmChD;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAkCjD;AAID,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDhF;AAED,wBAAsB,kBAAkB,CAAC,IAAI,GAAE,sBAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BzF;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAmCrD;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAmCnD;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAkCpD"}
|