@intutic/cli 0.1.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 (98) hide show
  1. package/README.md +107 -0
  2. package/dist/cli.d.ts +14 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +92 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/connect.d.ts +18 -0
  7. package/dist/commands/connect.d.ts.map +1 -0
  8. package/dist/commands/connect.js +154 -0
  9. package/dist/commands/connect.js.map +1 -0
  10. package/dist/commands/init.d.ts +13 -0
  11. package/dist/commands/init.d.ts.map +1 -0
  12. package/dist/commands/init.js +84 -0
  13. package/dist/commands/init.js.map +1 -0
  14. package/dist/commands/login.d.ts +14 -0
  15. package/dist/commands/login.d.ts.map +1 -0
  16. package/dist/commands/login.js +121 -0
  17. package/dist/commands/login.js.map +1 -0
  18. package/dist/commands/logout.d.ts +8 -0
  19. package/dist/commands/logout.d.ts.map +1 -0
  20. package/dist/commands/logout.js +13 -0
  21. package/dist/commands/logout.js.map +1 -0
  22. package/dist/commands/status.d.ts +11 -0
  23. package/dist/commands/status.d.ts.map +1 -0
  24. package/dist/commands/status.js +55 -0
  25. package/dist/commands/status.js.map +1 -0
  26. package/dist/commands/traces.d.ts +32 -0
  27. package/dist/commands/traces.d.ts.map +1 -0
  28. package/dist/commands/traces.js +207 -0
  29. package/dist/commands/traces.js.map +1 -0
  30. package/dist/commands/whoami.d.ts +12 -0
  31. package/dist/commands/whoami.d.ts.map +1 -0
  32. package/dist/commands/whoami.js +34 -0
  33. package/dist/commands/whoami.js.map +1 -0
  34. package/dist/config/paths.d.ts +30 -0
  35. package/dist/config/paths.d.ts.map +1 -0
  36. package/dist/config/paths.js +53 -0
  37. package/dist/config/paths.js.map +1 -0
  38. package/dist/config/store.d.ts +25 -0
  39. package/dist/config/store.d.ts.map +1 -0
  40. package/dist/config/store.js +69 -0
  41. package/dist/config/store.js.map +1 -0
  42. package/dist/harness/aider.d.ts +12 -0
  43. package/dist/harness/aider.d.ts.map +1 -0
  44. package/dist/harness/aider.js +62 -0
  45. package/dist/harness/aider.js.map +1 -0
  46. package/dist/harness/antigravity.d.ts +12 -0
  47. package/dist/harness/antigravity.d.ts.map +1 -0
  48. package/dist/harness/antigravity.js +69 -0
  49. package/dist/harness/antigravity.js.map +1 -0
  50. package/dist/harness/base.d.ts +20 -0
  51. package/dist/harness/base.d.ts.map +1 -0
  52. package/dist/harness/base.js +73 -0
  53. package/dist/harness/base.js.map +1 -0
  54. package/dist/harness/claudeCode.d.ts +2 -0
  55. package/dist/harness/claudeCode.d.ts.map +1 -0
  56. package/dist/harness/claudeCode.js +9 -0
  57. package/dist/harness/claudeCode.js.map +1 -0
  58. package/dist/harness/codex.d.ts +13 -0
  59. package/dist/harness/codex.d.ts.map +1 -0
  60. package/dist/harness/codex.js +74 -0
  61. package/dist/harness/codex.js.map +1 -0
  62. package/dist/harness/cursor.d.ts +2 -0
  63. package/dist/harness/cursor.d.ts.map +1 -0
  64. package/dist/harness/cursor.js +9 -0
  65. package/dist/harness/cursor.js.map +1 -0
  66. package/dist/harness/detector.d.ts +29 -0
  67. package/dist/harness/detector.d.ts.map +1 -0
  68. package/dist/harness/detector.js +61 -0
  69. package/dist/harness/detector.js.map +1 -0
  70. package/dist/harness/n8n.d.ts +13 -0
  71. package/dist/harness/n8n.d.ts.map +1 -0
  72. package/dist/harness/n8n.js +30 -0
  73. package/dist/harness/n8n.js.map +1 -0
  74. package/dist/harness/openhands.d.ts +12 -0
  75. package/dist/harness/openhands.d.ts.map +1 -0
  76. package/dist/harness/openhands.js +63 -0
  77. package/dist/harness/openhands.js.map +1 -0
  78. package/dist/harness/types.d.ts +30 -0
  79. package/dist/harness/types.d.ts.map +1 -0
  80. package/dist/harness/types.js +25 -0
  81. package/dist/harness/types.js.map +1 -0
  82. package/dist/harness/windsurf.d.ts +2 -0
  83. package/dist/harness/windsurf.d.ts.map +1 -0
  84. package/dist/harness/windsurf.js +9 -0
  85. package/dist/harness/windsurf.js.map +1 -0
  86. package/dist/lib/api.d.ts +44 -0
  87. package/dist/lib/api.d.ts.map +1 -0
  88. package/dist/lib/api.js +55 -0
  89. package/dist/lib/api.js.map +1 -0
  90. package/dist/lib/hash.d.ts +11 -0
  91. package/dist/lib/hash.d.ts.map +1 -0
  92. package/dist/lib/hash.js +18 -0
  93. package/dist/lib/hash.js.map +1 -0
  94. package/dist/lib/logger.d.ts +18 -0
  95. package/dist/lib/logger.d.ts.map +1 -0
  96. package/dist/lib/logger.js +33 -0
  97. package/dist/lib/logger.js.map +1 -0
  98. package/package.json +31 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * `intutic logout` — Clear stored credentials.
3
+ *
4
+ * LLD #8 — Sync Daemon / CLI
5
+ * @module
6
+ */
7
+ export declare function runLogout(): Promise<void>;
8
+ //# sourceMappingURL=logout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAG/C"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * `intutic logout` — Clear stored credentials.
3
+ *
4
+ * LLD #8 — Sync Daemon / CLI
5
+ * @module
6
+ */
7
+ import { log } from '../lib/logger.js';
8
+ import { clearCredentials } from '../config/store.js';
9
+ export async function runLogout() {
10
+ clearCredentials();
11
+ log.success('Credentials cleared. You are logged out.');
12
+ }
13
+ //# sourceMappingURL=logout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,gBAAgB,EAAE,CAAA;IAClB,GAAG,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAA;AACzD,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * `intutic status` — Show workspace status.
3
+ *
4
+ * Displays auth state, detected harnesses, last sync time,
5
+ * and config version.
6
+ *
7
+ * LLD #8 — Sync Daemon / CLI
8
+ * @module
9
+ */
10
+ export declare function runStatus(): Promise<void>;
11
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAyC/C"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * `intutic status` — Show workspace status.
3
+ *
4
+ * Displays auth state, detected harnesses, last sync time,
5
+ * and config version.
6
+ *
7
+ * LLD #8 — Sync Daemon / CLI
8
+ * @module
9
+ */
10
+ import { log } from '../lib/logger.js';
11
+ import { loadCredentials, loadConfig, loadIntegrity } from '../config/store.js';
12
+ import pc from 'picocolors';
13
+ export async function runStatus() {
14
+ log.header('Intutic — Workspace Status');
15
+ // Auth
16
+ const creds = loadCredentials();
17
+ if (creds) {
18
+ log.field('Email', creds.email);
19
+ log.field('Workspace', creds.workspaceId);
20
+ log.field('Control Plane', creds.controlPlaneUrl);
21
+ }
22
+ else {
23
+ log.warn('Not authenticated. Run `intutic login` first.');
24
+ }
25
+ // Config
26
+ const config = loadConfig();
27
+ if (config) {
28
+ log.field('Workspace Root', config.workspaceRoot);
29
+ log.field('Dev Mode', config.devMode ? 'yes' : 'no');
30
+ log.field('Config Version', String(config.configVersion));
31
+ console.log('');
32
+ log.info('Detected harnesses:');
33
+ if (config.harnesses.length === 0) {
34
+ log.dim(' (none)');
35
+ }
36
+ else {
37
+ for (const h of config.harnesses) {
38
+ console.log(` ${pc.green('✔')} ${h}`);
39
+ }
40
+ }
41
+ // Integrity
42
+ const integrity = loadIntegrity(config.workspaceRoot);
43
+ if (integrity) {
44
+ log.field('Last Sync', integrity.lastSyncAt);
45
+ log.field('Tracked Files', String(Object.keys(integrity.files).length));
46
+ }
47
+ else {
48
+ log.dim(' No sync data yet. Run `intutic connect` to start syncing.');
49
+ }
50
+ }
51
+ else {
52
+ log.warn('Not initialized. Run `intutic init` first.');
53
+ }
54
+ }
55
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC/E,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,GAAG,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAA;IAExC,OAAO;IACP,MAAM,KAAK,GAAG,eAAe,EAAE,CAAA;IAC/B,IAAI,KAAK,EAAE,CAAC;QACV,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;QAC/B,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CAAA;QACzC,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,eAAe,CAAC,CAAA;IACnD,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAA;IAC3D,CAAC;IAED,SAAS;IACT,MAAM,MAAM,GAAG,UAAU,EAAE,CAAA;IAC3B,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,aAAa,CAAC,CAAA;QACjD,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACpD,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;QAEzD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACf,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;QAC/B,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QACrB,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACxC,CAAC;QACH,CAAC;QAED,YAAY;QACZ,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QACrD,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,UAAU,CAAC,CAAA;YAC5C,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;QACzE,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAA;QACxE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAA;IACxD,CAAC;AACH,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * `intutic traces` — List and inspect execution traces.
3
+ *
4
+ * Subcommands:
5
+ * - `intutic traces list [--limit N] [--since 24h] [--action TYPE] [--model NAME] [--json]`
6
+ * - `intutic traces inspect <trace_id>`
7
+ *
8
+ * LLD #9 — PLG Self-Serve (Appendix: CLI Traces Commands)
9
+ * TD-059
10
+ *
11
+ * @module
12
+ */
13
+ interface TraceListCliOpts {
14
+ limit?: string;
15
+ since?: string;
16
+ action?: string;
17
+ model?: string;
18
+ json?: boolean;
19
+ dev?: boolean;
20
+ }
21
+ /**
22
+ * `intutic traces list` — List execution traces for the authenticated workspace.
23
+ */
24
+ export declare function runTracesList(opts: TraceListCliOpts): Promise<void>;
25
+ /**
26
+ * `intutic traces inspect <trace_id>` — Show full detail of a single trace.
27
+ */
28
+ export declare function runTracesInspect(traceId: string, opts: {
29
+ dev?: boolean;
30
+ }): Promise<void>;
31
+ export {};
32
+ //# sourceMappingURL=traces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traces.d.ts","sourceRoot":"","sources":["../../src/commands/traces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA4BH,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AA2HD;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgEzE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GACtB,OAAO,CAAC,IAAI,CAAC,CAmCf"}
@@ -0,0 +1,207 @@
1
+ /**
2
+ * `intutic traces` — List and inspect execution traces.
3
+ *
4
+ * Subcommands:
5
+ * - `intutic traces list [--limit N] [--since 24h] [--action TYPE] [--model NAME] [--json]`
6
+ * - `intutic traces inspect <trace_id>`
7
+ *
8
+ * LLD #9 — PLG Self-Serve (Appendix: CLI Traces Commands)
9
+ * TD-059
10
+ *
11
+ * @module
12
+ */
13
+ import { log } from '../lib/logger.js';
14
+ import { loadCredentials } from '../config/store.js';
15
+ import { resolveControlPlaneUrl } from '../config/paths.js';
16
+ import { createApiClient } from '../lib/api.js';
17
+ import pc from 'picocolors';
18
+ // ─── Duration Parser ────────────────────────────────────────────────
19
+ /**
20
+ * Parses a human-friendly duration string (e.g. "24h", "7d", "30m")
21
+ * into an ISO timestamp for the `since` query parameter.
22
+ */
23
+ function parseSince(since) {
24
+ const match = since.match(/^(\d+)(m|h|d)$/i);
25
+ if (!match) {
26
+ // Treat as raw ISO timestamp if not a duration
27
+ return since;
28
+ }
29
+ const value = parseInt(match[1], 10);
30
+ const unit = match[2].toLowerCase();
31
+ const now = Date.now();
32
+ let ms;
33
+ switch (unit) {
34
+ case 'm':
35
+ ms = value * 60 * 1000;
36
+ break;
37
+ case 'h':
38
+ ms = value * 60 * 60 * 1000;
39
+ break;
40
+ case 'd':
41
+ ms = value * 24 * 60 * 60 * 1000;
42
+ break;
43
+ default:
44
+ ms = 24 * 60 * 60 * 1000;
45
+ }
46
+ return new Date(now - ms).toISOString();
47
+ }
48
+ // ─── Formatting Helpers ─────────────────────────────────────────────
49
+ /** Truncate a trace ID for table display (e.g. "tr_abc123..." → 14 chars). */
50
+ function truncateId(id) {
51
+ if (id.length <= 14)
52
+ return id;
53
+ return id.slice(0, 11) + '...';
54
+ }
55
+ /** Format ISO timestamp for compact table display. */
56
+ function formatTimestamp(iso) {
57
+ const d = new Date(iso);
58
+ const pad = (n) => String(n).padStart(2, '0');
59
+ return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;
60
+ }
61
+ /** Color enforcement action based on severity. */
62
+ function colorAction(action) {
63
+ switch (action) {
64
+ case 'BYPASS':
65
+ return pc.green(action);
66
+ case 'ENHANCE':
67
+ return pc.cyan(action);
68
+ case 'HIJACK':
69
+ return pc.yellow(action);
70
+ case 'KILL':
71
+ return pc.red(action);
72
+ default:
73
+ return action;
74
+ }
75
+ }
76
+ /** Color compliance score (green ≥0.8, yellow ≥0.5, red <0.5). */
77
+ function colorScore(score) {
78
+ const s = score.toFixed(2);
79
+ if (score >= 0.8)
80
+ return pc.green(s);
81
+ if (score >= 0.5)
82
+ return pc.yellow(s);
83
+ return pc.red(s);
84
+ }
85
+ /** Format cost as USD with dollar sign. */
86
+ function formatCost(usd) {
87
+ return `$${usd.toFixed(4)}`;
88
+ }
89
+ /** Pad a string to a fixed width (right-pad with spaces). */
90
+ function pad(str, width) {
91
+ if (str.length >= width)
92
+ return str.slice(0, width);
93
+ return str + ' '.repeat(width - str.length);
94
+ }
95
+ /** Render a simple table with borders. */
96
+ function renderTable(headers, widths, rows) {
97
+ const top = '┌' + widths.map((w) => '─'.repeat(w + 2)).join('┬') + '┐';
98
+ const mid = '├' + widths.map((w) => '─'.repeat(w + 2)).join('┼') + '┤';
99
+ const bot = '└' + widths.map((w) => '─'.repeat(w + 2)).join('┴') + '┘';
100
+ const fmtRow = (cells) => '│ ' + cells.map((c, i) => pad(c, widths[i])).join(' │ ') + ' │';
101
+ console.log(top);
102
+ console.log(fmtRow(headers));
103
+ console.log(mid);
104
+ for (const row of rows) {
105
+ console.log(fmtRow(row));
106
+ }
107
+ console.log(bot);
108
+ }
109
+ // ─── Friendly duration label (for footer) ───────────────────────────
110
+ function friendlyDuration(since) {
111
+ const match = since.match(/^(\d+)(m|h|d)$/i);
112
+ if (!match)
113
+ return since;
114
+ const val = match[1];
115
+ const unit = match[2].toLowerCase();
116
+ const labels = { m: 'minute', h: 'hour', d: 'day' };
117
+ const label = labels[unit] ?? unit;
118
+ return `${val} ${label}${Number(val) !== 1 ? 's' : ''}`;
119
+ }
120
+ // ─── Commands ───────────────────────────────────────────────────────
121
+ /**
122
+ * `intutic traces list` — List execution traces for the authenticated workspace.
123
+ */
124
+ export async function runTracesList(opts) {
125
+ const creds = loadCredentials();
126
+ if (!creds) {
127
+ log.error('Not authenticated. Run `intutic login` first.');
128
+ process.exit(1);
129
+ }
130
+ const controlPlaneUrl = resolveControlPlaneUrl(opts.dev);
131
+ const client = createApiClient(controlPlaneUrl, creds.apiKey);
132
+ // Build query params
133
+ const params = new URLSearchParams();
134
+ if (opts.limit)
135
+ params.set('limit', opts.limit);
136
+ if (opts.since)
137
+ params.set('since', parseSince(opts.since));
138
+ if (opts.action)
139
+ params.set('enforcement', opts.action);
140
+ if (opts.model)
141
+ params.set('model', opts.model);
142
+ try {
143
+ const data = await client.get(`/api/v1/traces?${params.toString()}`);
144
+ // ── JSON output mode ──
145
+ if (opts.json) {
146
+ console.log(JSON.stringify(data, null, 2));
147
+ return;
148
+ }
149
+ // ── Table output mode ──
150
+ log.header('Intutic — Execution Traces');
151
+ if (data.traces.length === 0) {
152
+ log.dim(' No traces found matching your filters.');
153
+ return;
154
+ }
155
+ const headers = ['Trace ID', 'Timestamp', 'Model', 'Action', 'Score', 'Cost'];
156
+ const widths = [14, 19, 16, 8, 5, 9];
157
+ const rows = data.traces.map((t) => [
158
+ truncateId(t.trace_id),
159
+ formatTimestamp(t.timestamp),
160
+ t.requested_model.length > 16
161
+ ? t.requested_model.slice(0, 15) + '…'
162
+ : t.requested_model,
163
+ colorAction(t.enforcement_action),
164
+ colorScore(t.compliance_score),
165
+ formatCost(t.actual_cost_usd),
166
+ ]);
167
+ renderTable(headers, widths, rows);
168
+ const sinceLabel = opts.since ?? '24h';
169
+ console.log(pc.dim(`Showing ${data.traces.length} of ${data.total} traces (last ${friendlyDuration(sinceLabel)})`));
170
+ }
171
+ catch (err) {
172
+ log.error(`Failed to list traces: ${err instanceof Error ? err.message : String(err)}`);
173
+ process.exit(1);
174
+ }
175
+ }
176
+ /**
177
+ * `intutic traces inspect <trace_id>` — Show full detail of a single trace.
178
+ */
179
+ export async function runTracesInspect(traceId, opts) {
180
+ const creds = loadCredentials();
181
+ if (!creds) {
182
+ log.error('Not authenticated. Run `intutic login` first.');
183
+ process.exit(1);
184
+ }
185
+ const controlPlaneUrl = resolveControlPlaneUrl(opts.dev);
186
+ const client = createApiClient(controlPlaneUrl, creds.apiKey);
187
+ try {
188
+ const data = await client.get(`/api/v1/traces/${encodeURIComponent(traceId)}`);
189
+ log.header(`Intutic — Trace Detail`);
190
+ log.field('Trace ID', String(data.trace_id));
191
+ console.log('');
192
+ // Syntax-highlighted JSON output
193
+ const json = JSON.stringify(data, null, 2);
194
+ const highlighted = json
195
+ .replace(/"([^"]+)":/g, (_, key) => `${pc.cyan(`"${key}"`)}:`)
196
+ .replace(/: "([^"]+)"/g, (_, val) => `: ${pc.green(`"${val}"`)}`)
197
+ .replace(/: (\d+\.?\d*)/g, (_, num) => `: ${pc.yellow(num)}`)
198
+ .replace(/: (true|false)/g, (_, b) => `: ${pc.magenta(b)}`)
199
+ .replace(/: (null)/g, (_, n) => `: ${pc.dim(n)}`);
200
+ console.log(highlighted);
201
+ }
202
+ catch (err) {
203
+ log.error(`Failed to inspect trace: ${err instanceof Error ? err.message : String(err)}`);
204
+ process.exit(1);
205
+ }
206
+ }
207
+ //# sourceMappingURL=traces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traces.js","sourceRoot":"","sources":["../../src/commands/traces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * `intutic whoami` — Show current authenticated identity.
3
+ *
4
+ * Calls GET /api/v1/auth/me to fetch fresh identity info.
5
+ *
6
+ * LLD #8 — Sync Daemon / CLI
7
+ * @module
8
+ */
9
+ export declare function runWhoami(opts: {
10
+ dev?: boolean;
11
+ }): Promise<void>;
12
+ //# sourceMappingURL=whoami.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,wBAAsB,SAAS,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBtE"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * `intutic whoami` — Show current authenticated identity.
3
+ *
4
+ * Calls GET /api/v1/auth/me to fetch fresh identity info.
5
+ *
6
+ * LLD #8 — Sync Daemon / 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 runWhoami(opts) {
14
+ const creds = 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
+ const me = await client.getMe();
23
+ log.header('Intutic — Identity');
24
+ log.field('Email', me.email);
25
+ log.field('Member ID', me.memberId);
26
+ log.field('Workspace', me.workspaceId);
27
+ log.field('Role', me.role);
28
+ }
29
+ catch (err) {
30
+ log.error(`Failed to fetch identity: ${err instanceof Error ? err.message : String(err)}`);
31
+ process.exit(1);
32
+ }
33
+ }
34
+ //# sourceMappingURL=whoami.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;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;AAE/C,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAuB;IACrD,MAAM,KAAK,GAAG,eAAe,EAAE,CAAA;IAC/B,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,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAC/B,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;QAChC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;QAC5B,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAA;QACnC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,CAAA;QACtC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CAAC,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC1F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Cross-platform path resolution for Intutic CLI config.
3
+ *
4
+ * - macOS/Linux: ~/.intutic/
5
+ * - Windows: %APPDATA%\intutic\
6
+ *
7
+ * LLD #8 — Sync Daemon / CLI
8
+ * @module
9
+ */
10
+ /**
11
+ * Returns the Intutic config directory path.
12
+ * - macOS/Linux: ~/.intutic/
13
+ * - Windows: %APPDATA%\intutic\
14
+ */
15
+ export declare function getIntuticDir(): string;
16
+ /** Path to credentials file (~/.intutic/credentials.json). */
17
+ export declare function getCredentialsPath(): string;
18
+ /** Path to workspace config file (~/.intutic/config.json). */
19
+ export declare function getConfigPath(): string;
20
+ /**
21
+ * Path to local integrity store (per-workspace).
22
+ * Located at <workspaceRoot>/.intutic/integrity.json
23
+ */
24
+ export declare function getIntegrityPath(workspaceRoot: string): string;
25
+ /**
26
+ * Resolve the control plane URL.
27
+ * If --dev flag or INTUTIC_DEV=1 env var, use localhost:3001.
28
+ */
29
+ export declare function resolveControlPlaneUrl(devMode?: boolean): string;
30
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAStC;AAED,8DAA8D;AAC9D,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,8DAA8D;AAC9D,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAKhE"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Cross-platform path resolution for Intutic CLI config.
3
+ *
4
+ * - macOS/Linux: ~/.intutic/
5
+ * - Windows: %APPDATA%\intutic\
6
+ *
7
+ * LLD #8 — Sync Daemon / CLI
8
+ * @module
9
+ */
10
+ import { join } from 'node:path';
11
+ import { homedir } from 'node:os';
12
+ /**
13
+ * Returns the Intutic config directory path.
14
+ * - macOS/Linux: ~/.intutic/
15
+ * - Windows: %APPDATA%\intutic\
16
+ */
17
+ export function getIntuticDir() {
18
+ if (process.platform === 'win32') {
19
+ const appData = process.env.APPDATA;
20
+ if (appData)
21
+ return join(appData, 'intutic');
22
+ // Fallback for Windows if APPDATA is not set
23
+ return join(homedir(), 'AppData', 'Roaming', 'intutic');
24
+ }
25
+ // macOS and Linux
26
+ return join(homedir(), '.intutic');
27
+ }
28
+ /** Path to credentials file (~/.intutic/credentials.json). */
29
+ export function getCredentialsPath() {
30
+ return join(getIntuticDir(), 'credentials.json');
31
+ }
32
+ /** Path to workspace config file (~/.intutic/config.json). */
33
+ export function getConfigPath() {
34
+ return join(getIntuticDir(), 'config.json');
35
+ }
36
+ /**
37
+ * Path to local integrity store (per-workspace).
38
+ * Located at <workspaceRoot>/.intutic/integrity.json
39
+ */
40
+ export function getIntegrityPath(workspaceRoot) {
41
+ return join(workspaceRoot, '.intutic', 'integrity.json');
42
+ }
43
+ /**
44
+ * Resolve the control plane URL.
45
+ * If --dev flag or INTUTIC_DEV=1 env var, use localhost:3001.
46
+ */
47
+ export function resolveControlPlaneUrl(devMode) {
48
+ const isDev = devMode || process.env.INTUTIC_DEV === '1';
49
+ return isDev
50
+ ? 'http://localhost:3001'
51
+ : 'https://api.intutic.ai';
52
+ }
53
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEjC;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAA;QACnC,IAAI,OAAO;YAAE,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAC5C,6CAA6C;QAC7C,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;IACzD,CAAC;IACD,kBAAkB;IAClB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAA;AACpC,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,kBAAkB,CAAC,CAAA;AAClD,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,aAAa,CAAC,CAAA;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,aAAqB;IACpD,OAAO,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAA;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAiB;IACtD,MAAM,KAAK,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,GAAG,CAAA;IACxD,OAAO,KAAK;QACV,CAAC,CAAC,uBAAuB;QACzB,CAAC,CAAC,wBAAwB,CAAA;AAC9B,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Credential and config store — reads/writes ~/.intutic/ files.
3
+ *
4
+ * Credentials are stored with mode 0o600 (owner-only read/write).
5
+ * Parent directories are created automatically.
6
+ *
7
+ * LLD #8 — Sync Daemon / CLI
8
+ * @module
9
+ */
10
+ import type { IntuticCredentials, IntuticConfig, IntegrityStore } from '@intutic/shared-types';
11
+ /** Load stored credentials. Returns null if not found. */
12
+ export declare function loadCredentials(): IntuticCredentials | null;
13
+ /** Save credentials with restricted permissions (0o600). */
14
+ export declare function saveCredentials(creds: IntuticCredentials): void;
15
+ /** Delete credentials file. */
16
+ export declare function clearCredentials(): void;
17
+ /** Load workspace config. Returns null if not found. */
18
+ export declare function loadConfig(): IntuticConfig | null;
19
+ /** Save workspace config. */
20
+ export declare function saveConfig(config: IntuticConfig): void;
21
+ /** Load per-workspace integrity store. Returns null if not found. */
22
+ export declare function loadIntegrity(workspaceRoot: string): IntegrityStore | null;
23
+ /** Save per-workspace integrity store. */
24
+ export declare function saveIntegrity(workspaceRoot: string, store: IntegrityStore): void;
25
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/config/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAgC9F,0DAA0D;AAC1D,wBAAgB,eAAe,IAAI,kBAAkB,GAAG,IAAI,CAE3D;AAED,4DAA4D;AAC5D,wBAAgB,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAE/D;AAED,+BAA+B;AAC/B,wBAAgB,gBAAgB,IAAI,IAAI,CAMvC;AAID,wDAAwD;AACxD,wBAAgB,UAAU,IAAI,aAAa,GAAG,IAAI,CAEjD;AAED,6BAA6B;AAC7B,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAEtD;AAID,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAE1E;AAED,0CAA0C;AAC1C,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAEhF"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Credential and config store — reads/writes ~/.intutic/ files.
3
+ *
4
+ * Credentials are stored with mode 0o600 (owner-only read/write).
5
+ * Parent directories are created automatically.
6
+ *
7
+ * LLD #8 — Sync Daemon / CLI
8
+ * @module
9
+ */
10
+ import { readFileSync, writeFileSync, unlinkSync, mkdirSync } from 'node:fs';
11
+ import { dirname } from 'node:path';
12
+ import { getCredentialsPath, getConfigPath, getIntegrityPath, } from './paths.js';
13
+ // ─── Helpers ─────────────────────────────────────────────────────────
14
+ function ensureDir(filePath) {
15
+ mkdirSync(dirname(filePath), { recursive: true });
16
+ }
17
+ function readJsonFile(filePath) {
18
+ try {
19
+ const content = readFileSync(filePath, 'utf-8');
20
+ return JSON.parse(content);
21
+ }
22
+ catch {
23
+ return null;
24
+ }
25
+ }
26
+ function writeJsonFile(filePath, data, mode) {
27
+ ensureDir(filePath);
28
+ writeFileSync(filePath, JSON.stringify(data, null, 2) + '\n', {
29
+ encoding: 'utf-8',
30
+ mode: mode ?? 0o644,
31
+ });
32
+ }
33
+ // ─── Credentials ─────────────────────────────────────────────────────
34
+ /** Load stored credentials. Returns null if not found. */
35
+ export function loadCredentials() {
36
+ return readJsonFile(getCredentialsPath());
37
+ }
38
+ /** Save credentials with restricted permissions (0o600). */
39
+ export function saveCredentials(creds) {
40
+ writeJsonFile(getCredentialsPath(), creds, 0o600);
41
+ }
42
+ /** Delete credentials file. */
43
+ export function clearCredentials() {
44
+ try {
45
+ unlinkSync(getCredentialsPath());
46
+ }
47
+ catch {
48
+ // File may not exist — safe to ignore
49
+ }
50
+ }
51
+ // ─── Workspace Config ────────────────────────────────────────────────
52
+ /** Load workspace config. Returns null if not found. */
53
+ export function loadConfig() {
54
+ return readJsonFile(getConfigPath());
55
+ }
56
+ /** Save workspace config. */
57
+ export function saveConfig(config) {
58
+ writeJsonFile(getConfigPath(), config);
59
+ }
60
+ // ─── Integrity Store ─────────────────────────────────────────────────
61
+ /** Load per-workspace integrity store. Returns null if not found. */
62
+ export function loadIntegrity(workspaceRoot) {
63
+ return readJsonFile(getIntegrityPath(workspaceRoot));
64
+ }
65
+ /** Save per-workspace integrity store. */
66
+ export function saveIntegrity(workspaceRoot, store) {
67
+ writeJsonFile(getIntegrityPath(workspaceRoot), store);
68
+ }
69
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/config/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAa,MAAM,SAAS,CAAA;AACvF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,gBAAgB,GACjB,MAAM,YAAY,CAAA;AAEnB,wEAAwE;AAExE,SAAS,SAAS,CAAC,QAAgB;IACjC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACnD,CAAC;AAED,SAAS,YAAY,CAAI,QAAgB;IACvC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAA;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB,EAAE,IAAa,EAAE,IAAa;IACnE,SAAS,CAAC,QAAQ,CAAC,CAAA;IACnB,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;QAC5D,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,IAAI,IAAI,KAAK;KACpB,CAAC,CAAA;AACJ,CAAC;AAED,wEAAwE;AAExE,0DAA0D;AAC1D,MAAM,UAAU,eAAe;IAC7B,OAAO,YAAY,CAAqB,kBAAkB,EAAE,CAAC,CAAA;AAC/D,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,eAAe,CAAC,KAAyB;IACvD,aAAa,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;AACnD,CAAC;AAED,+BAA+B;AAC/B,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC;QACH,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAA;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,sCAAsC;IACxC,CAAC;AACH,CAAC;AAED,wEAAwE;AAExE,wDAAwD;AACxD,MAAM,UAAU,UAAU;IACxB,OAAO,YAAY,CAAgB,aAAa,EAAE,CAAC,CAAA;AACrD,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,UAAU,CAAC,MAAqB;IAC9C,aAAa,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,CAAA;AACxC,CAAC;AAED,wEAAwE;AAExE,qEAAqE;AACrE,MAAM,UAAU,aAAa,CAAC,aAAqB;IACjD,OAAO,YAAY,CAAiB,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAA;AACtE,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,aAAa,CAAC,aAAqB,EAAE,KAAqB;IACxE,aAAa,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,CAAA;AACvD,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Aider adapter — .aider.conf.yml
3
+ *
4
+ * Writes SOP content into the extra-instructions field of the
5
+ * Aider YAML config file.
6
+ *
7
+ * HLD §3.14 — Harness Onboarding Matrix
8
+ * @module
9
+ */
10
+ import type { IHarnessAdapter } from './types.js';
11
+ export declare const aiderAdapter: IHarnessAdapter;
12
+ //# sourceMappingURL=aider.d.ts.map