@intutic/cli 0.1.0 → 0.2.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 (162) hide show
  1. package/dist/cli.js +309 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/benchmark.d.ts +31 -0
  4. package/dist/commands/benchmark.d.ts.map +1 -0
  5. package/dist/commands/benchmark.js +211 -0
  6. package/dist/commands/benchmark.js.map +1 -0
  7. package/dist/commands/connect.d.ts +8 -6
  8. package/dist/commands/connect.d.ts.map +1 -1
  9. package/dist/commands/connect.js +322 -82
  10. package/dist/commands/connect.js.map +1 -1
  11. package/dist/commands/enterprise-install.d.ts +36 -0
  12. package/dist/commands/enterprise-install.d.ts.map +1 -0
  13. package/dist/commands/enterprise-install.js +289 -0
  14. package/dist/commands/enterprise-install.js.map +1 -0
  15. package/dist/commands/eval.d.ts +13 -0
  16. package/dist/commands/eval.d.ts.map +1 -0
  17. package/dist/commands/eval.js +67 -0
  18. package/dist/commands/eval.js.map +1 -0
  19. package/dist/commands/exec.d.ts +34 -0
  20. package/dist/commands/exec.d.ts.map +1 -0
  21. package/dist/commands/exec.js +114 -0
  22. package/dist/commands/exec.js.map +1 -0
  23. package/dist/commands/exec.test.d.ts +2 -0
  24. package/dist/commands/exec.test.d.ts.map +1 -0
  25. package/dist/commands/exec.test.js +29 -0
  26. package/dist/commands/exec.test.js.map +1 -0
  27. package/dist/commands/export.d.ts +21 -0
  28. package/dist/commands/export.d.ts.map +1 -0
  29. package/dist/commands/export.js +116 -0
  30. package/dist/commands/export.js.map +1 -0
  31. package/dist/commands/init.d.ts.map +1 -1
  32. package/dist/commands/init.js +28 -2
  33. package/dist/commands/init.js.map +1 -1
  34. package/dist/commands/install-daemon.d.ts +61 -0
  35. package/dist/commands/install-daemon.d.ts.map +1 -0
  36. package/dist/commands/install-daemon.js +691 -0
  37. package/dist/commands/install-daemon.js.map +1 -0
  38. package/dist/commands/install-daemon.test.d.ts +2 -0
  39. package/dist/commands/install-daemon.test.d.ts.map +1 -0
  40. package/dist/commands/install-daemon.test.js +93 -0
  41. package/dist/commands/install-daemon.test.js.map +1 -0
  42. package/dist/commands/login.js +2 -2
  43. package/dist/commands/login.js.map +1 -1
  44. package/dist/commands/logout.js +1 -1
  45. package/dist/commands/logout.js.map +1 -1
  46. package/dist/commands/mdm.d.ts +23 -0
  47. package/dist/commands/mdm.d.ts.map +1 -0
  48. package/dist/commands/mdm.js +134 -0
  49. package/dist/commands/mdm.js.map +1 -0
  50. package/dist/commands/sop-audit.d.ts +17 -0
  51. package/dist/commands/sop-audit.d.ts.map +1 -0
  52. package/dist/commands/sop-audit.js +136 -0
  53. package/dist/commands/sop-audit.js.map +1 -0
  54. package/dist/commands/status.d.ts.map +1 -1
  55. package/dist/commands/status.js +53 -1
  56. package/dist/commands/status.js.map +1 -1
  57. package/dist/commands/syncContext.d.ts +18 -0
  58. package/dist/commands/syncContext.d.ts.map +1 -0
  59. package/dist/commands/syncContext.js +37 -0
  60. package/dist/commands/syncContext.js.map +1 -0
  61. package/dist/commands/traces.d.ts +13 -0
  62. package/dist/commands/traces.d.ts.map +1 -1
  63. package/dist/commands/traces.js +104 -10
  64. package/dist/commands/traces.js.map +1 -1
  65. package/dist/commands/whoami.js +1 -1
  66. package/dist/commands/whoami.js.map +1 -1
  67. package/dist/config/keychain.d.ts +28 -0
  68. package/dist/config/keychain.d.ts.map +1 -0
  69. package/dist/config/keychain.js +99 -0
  70. package/dist/config/keychain.js.map +1 -0
  71. package/dist/config/store.d.ts +3 -3
  72. package/dist/config/store.d.ts.map +1 -1
  73. package/dist/config/store.js +30 -6
  74. package/dist/config/store.js.map +1 -1
  75. package/dist/harness/aider.d.ts +4 -3
  76. package/dist/harness/aider.d.ts.map +1 -1
  77. package/dist/harness/aider.js +13 -27
  78. package/dist/harness/aider.js.map +1 -1
  79. package/dist/harness/claudeDesktop.d.ts +18 -0
  80. package/dist/harness/claudeDesktop.d.ts.map +1 -0
  81. package/dist/harness/claudeDesktop.js +69 -0
  82. package/dist/harness/claudeDesktop.js.map +1 -0
  83. package/dist/harness/cline.d.ts +13 -0
  84. package/dist/harness/cline.d.ts.map +1 -0
  85. package/dist/harness/cline.js +75 -0
  86. package/dist/harness/cline.js.map +1 -0
  87. package/dist/harness/codex.d.ts +4 -4
  88. package/dist/harness/codex.d.ts.map +1 -1
  89. package/dist/harness/codex.js +33 -21
  90. package/dist/harness/codex.js.map +1 -1
  91. package/dist/harness/continue.d.ts +14 -0
  92. package/dist/harness/continue.d.ts.map +1 -0
  93. package/dist/harness/continue.js +97 -0
  94. package/dist/harness/continue.js.map +1 -0
  95. package/dist/harness/cursor.d.ts +13 -1
  96. package/dist/harness/cursor.d.ts.map +1 -1
  97. package/dist/harness/cursor.js +59 -3
  98. package/dist/harness/cursor.js.map +1 -1
  99. package/dist/harness/detector.d.ts +1 -1
  100. package/dist/harness/detector.d.ts.map +1 -1
  101. package/dist/harness/detector.js +13 -1
  102. package/dist/harness/detector.js.map +1 -1
  103. package/dist/harness/goose.d.ts +13 -0
  104. package/dist/harness/goose.d.ts.map +1 -0
  105. package/dist/harness/goose.js +45 -0
  106. package/dist/harness/goose.js.map +1 -0
  107. package/dist/harness/n8n.d.ts +8 -4
  108. package/dist/harness/n8n.d.ts.map +1 -1
  109. package/dist/harness/n8n.js +108 -13
  110. package/dist/harness/n8n.js.map +1 -1
  111. package/dist/harness/openWebUI.d.ts +13 -0
  112. package/dist/harness/openWebUI.d.ts.map +1 -0
  113. package/dist/harness/openWebUI.js +25 -0
  114. package/dist/harness/openWebUI.js.map +1 -0
  115. package/dist/harness/openhands.d.ts +3 -3
  116. package/dist/harness/openhands.d.ts.map +1 -1
  117. package/dist/harness/openhands.js +13 -9
  118. package/dist/harness/openhands.js.map +1 -1
  119. package/dist/harness/rooCode.d.ts +14 -0
  120. package/dist/harness/rooCode.d.ts.map +1 -0
  121. package/dist/harness/rooCode.js +77 -0
  122. package/dist/harness/rooCode.js.map +1 -0
  123. package/dist/harness/types.d.ts.map +1 -1
  124. package/dist/harness/types.js +6 -0
  125. package/dist/harness/types.js.map +1 -1
  126. package/dist/harness/vscodeSettingsWriter.d.ts +40 -0
  127. package/dist/harness/vscodeSettingsWriter.d.ts.map +1 -0
  128. package/dist/harness/vscodeSettingsWriter.js +116 -0
  129. package/dist/harness/vscodeSettingsWriter.js.map +1 -0
  130. package/dist/harness/windsurf.d.ts +13 -1
  131. package/dist/harness/windsurf.d.ts.map +1 -1
  132. package/dist/harness/windsurf.js +58 -3
  133. package/dist/harness/windsurf.js.map +1 -1
  134. package/dist/lib/api.d.ts +2 -0
  135. package/dist/lib/api.d.ts.map +1 -1
  136. package/dist/lib/api.js +3 -0
  137. package/dist/lib/api.js.map +1 -1
  138. package/dist/lib/envInjector.d.ts +24 -0
  139. package/dist/lib/envInjector.d.ts.map +1 -0
  140. package/dist/lib/envInjector.js +146 -0
  141. package/dist/lib/envInjector.js.map +1 -0
  142. package/dist/lib/envInjector.test.d.ts +2 -0
  143. package/dist/lib/envInjector.test.d.ts.map +1 -0
  144. package/dist/lib/envInjector.test.js +32 -0
  145. package/dist/lib/envInjector.test.js.map +1 -0
  146. package/dist/lib/gitHooks.d.ts +19 -0
  147. package/dist/lib/gitHooks.d.ts.map +1 -0
  148. package/dist/lib/gitHooks.js +58 -0
  149. package/dist/lib/gitHooks.js.map +1 -0
  150. package/dist/lib/onboarding.d.ts +17 -0
  151. package/dist/lib/onboarding.d.ts.map +1 -0
  152. package/dist/lib/onboarding.js +164 -0
  153. package/dist/lib/onboarding.js.map +1 -0
  154. package/dist/lib/process.d.ts +53 -0
  155. package/dist/lib/process.d.ts.map +1 -0
  156. package/dist/lib/process.js +181 -0
  157. package/dist/lib/process.js.map +1 -0
  158. package/dist/lib/process.test.d.ts +2 -0
  159. package/dist/lib/process.test.d.ts.map +1 -0
  160. package/dist/lib/process.test.js +44 -0
  161. package/dist/lib/process.test.js.map +1 -0
  162. package/package.json +39 -17
@@ -9,11 +9,29 @@
9
9
  */
10
10
  import { log } from '../lib/logger.js';
11
11
  import { loadCredentials, loadConfig, loadIntegrity } from '../config/store.js';
12
+ import { getActiveAgentProcesses, isSyncDaemonRunning } from '../lib/process.js';
12
13
  import pc from 'picocolors';
14
+ const HARNESS_TO_PROCESS_NAME = {
15
+ cursor: ['Cursor'],
16
+ 'claude-code': ['Claude Code'],
17
+ antigravity: ['Antigravity'],
18
+ n8n: ['n8n'],
19
+ codex: ['Codex'],
20
+ windsurf: ['Windsurf'],
21
+ aider: ['Aider'],
22
+ openhands: ['OpenHands'],
23
+ openclaw: ['OpenClaw'],
24
+ cline: ['VS Code'],
25
+ 'roo-code': ['VS Code'],
26
+ continue: ['VS Code', 'JetBrains IDE'],
27
+ 'claude-desktop': ['Claude Desktop'],
28
+ goose: ['Goose'],
29
+ 'open-webui': ['OpenWebUI'],
30
+ };
13
31
  export async function runStatus() {
14
32
  log.header('Intutic — Workspace Status');
15
33
  // Auth
16
- const creds = loadCredentials();
34
+ const creds = await loadCredentials();
17
35
  if (creds) {
18
36
  log.field('Email', creds.email);
19
37
  log.field('Workspace', creds.workspaceId);
@@ -47,6 +65,40 @@ export async function runStatus() {
47
65
  else {
48
66
  log.dim(' No sync data yet. Run `intutic connect` to start syncing.');
49
67
  }
68
+ // Active Processes
69
+ const activeProcs = getActiveAgentProcesses();
70
+ const daemonRunning = isSyncDaemonRunning();
71
+ console.log('');
72
+ log.info('Active Running Processes:');
73
+ if (activeProcs.length === 0) {
74
+ log.dim(' (none detected)');
75
+ }
76
+ else {
77
+ for (const p of activeProcs) {
78
+ console.log(` ${pc.yellow('●')} ${pc.bold(p.name)} (PID: ${p.pid}) — ${pc.dim(p.command)}`);
79
+ }
80
+ }
81
+ console.log('');
82
+ log.field('Sync Daemon State', daemonRunning ? pc.green('Running') : pc.red('Stopped'));
83
+ // Warning highlights
84
+ if (!daemonRunning && activeProcs.length > 0) {
85
+ const runningNames = new Set(activeProcs.map(p => p.name));
86
+ const configuredHarnesses = config.harnesses;
87
+ let runningConfiguredHarness = false;
88
+ for (const h of configuredHarnesses) {
89
+ const procNames = HARNESS_TO_PROCESS_NAME[h] || [];
90
+ if (procNames.some(name => runningNames.has(name))) {
91
+ runningConfiguredHarness = true;
92
+ break;
93
+ }
94
+ }
95
+ if (runningConfiguredHarness) {
96
+ console.log('');
97
+ log.warn(pc.yellow(pc.bold('Active agent process(es) detected, but the sync daemon ("intutic connect") is NOT running.')));
98
+ log.dim(' Configuration changes or SOP rules will not be synced to these agents until you start the daemon.');
99
+ log.dim(' Run `intutic connect` to start the sync daemon.');
100
+ }
101
+ }
50
102
  }
51
103
  else {
52
104
  log.warn('Not initialized. Run `intutic init` first.');
@@ -1 +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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * syncContext.ts — CLI command to sync Git context (branch, commit) to daemon.
3
+ *
4
+ * Saves current Git status details locally to `.intutic/git-context.json`
5
+ * which is picked up by the sync daemon and reported to the control plane.
6
+ *
7
+ * LLD #14 — gitHooks.ts & syncContext.ts
8
+ * HLD §3.14 — Real-Time State Mirroring (Git hooks context integration)
9
+ *
10
+ * @module
11
+ */
12
+ export interface SyncContextOpts {
13
+ git?: boolean;
14
+ branch?: string;
15
+ commit?: string;
16
+ }
17
+ export declare function runSyncContext(opts: SyncContextOpts): Promise<void>;
18
+ //# sourceMappingURL=syncContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncContext.d.ts","sourceRoot":"","sources":["../../src/commands/syncContext.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBzE"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * syncContext.ts — CLI command to sync Git context (branch, commit) to daemon.
3
+ *
4
+ * Saves current Git status details locally to `.intutic/git-context.json`
5
+ * which is picked up by the sync daemon and reported to the control plane.
6
+ *
7
+ * LLD #14 — gitHooks.ts & syncContext.ts
8
+ * HLD §3.14 — Real-Time State Mirroring (Git hooks context integration)
9
+ *
10
+ * @module
11
+ */
12
+ import * as node_fs from 'node:fs/promises';
13
+ import * as node_path from 'node:path';
14
+ import { log } from '../lib/logger.js';
15
+ import { newIso } from '@intutic/id';
16
+ export async function runSyncContext(opts) {
17
+ const workspaceRoot = process.cwd();
18
+ const intuticDir = node_path.join(workspaceRoot, '.intutic');
19
+ try {
20
+ await node_fs.mkdir(intuticDir, { recursive: true });
21
+ const contextPath = node_path.join(intuticDir, 'git-context.json');
22
+ const contextData = {
23
+ git: {
24
+ branch: opts.branch || '',
25
+ commit: opts.commit || '',
26
+ },
27
+ updatedAt: newIso(),
28
+ };
29
+ await node_fs.writeFile(contextPath, JSON.stringify(contextData, null, 2) + '\n', 'utf-8');
30
+ log.dim(`Saved Git context to .intutic/git-context.json: branch=${opts.branch}, commit=${opts.commit}`);
31
+ }
32
+ catch (err) {
33
+ log.error(`Failed to write Git context: ${err instanceof Error ? err.message : String(err)}`);
34
+ process.exit(1);
35
+ }
36
+ }
37
+ //# sourceMappingURL=syncContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncContext.js","sourceRoot":"","sources":["../../src/commands/syncContext.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,SAAS,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAQpC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAqB;IACxD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACnC,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;IAE5D,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACpD,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAA;QAElE,MAAM,WAAW,GAAG;YAClB,GAAG,EAAE;gBACH,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;gBACzB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;aAC1B;YACD,SAAS,EAAE,MAAM,EAAE;SACpB,CAAA;QAED,MAAM,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAA;QAC1F,GAAG,CAAC,GAAG,CAAC,0DAA0D,IAAI,CAAC,MAAM,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IACzG,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CAAC,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
@@ -28,5 +28,18 @@ export declare function runTracesList(opts: TraceListCliOpts): Promise<void>;
28
28
  export declare function runTracesInspect(traceId: string, opts: {
29
29
  dev?: boolean;
30
30
  }): Promise<void>;
31
+ interface ForkCliOpts {
32
+ fromStep: string;
33
+ type: 'tool_arg_mutation' | 'sop_config_mutation' | 'model_swap';
34
+ args?: string;
35
+ sopThreshold?: string;
36
+ model?: string;
37
+ label?: string;
38
+ dev?: boolean;
39
+ }
40
+ /**
41
+ * `intutic traces fork <trace_id>` — Fork a completed trace with a mutation.
42
+ */
43
+ export declare function runTracesFork(traceId: string, opts: ForkCliOpts): Promise<void>;
31
44
  export {};
32
45
  //# sourceMappingURL=traces.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"traces.d.ts","sourceRoot":"","sources":["../../src/commands/traces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAWH,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;AAED,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,mBAAmB,GAAG,qBAAqB,GAAG,YAAY,CAAA;IAChE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,IAAI,CAAC,CAsGf"}
@@ -122,7 +122,7 @@ function friendlyDuration(since) {
122
122
  * `intutic traces list` — List execution traces for the authenticated workspace.
123
123
  */
124
124
  export async function runTracesList(opts) {
125
- const creds = loadCredentials();
125
+ const creds = await loadCredentials();
126
126
  if (!creds) {
127
127
  log.error('Not authenticated. Run `intutic login` first.');
128
128
  process.exit(1);
@@ -155,14 +155,14 @@ export async function runTracesList(opts) {
155
155
  const headers = ['Trace ID', 'Timestamp', 'Model', 'Action', 'Score', 'Cost'];
156
156
  const widths = [14, 19, 16, 8, 5, 9];
157
157
  const rows = data.traces.map((t) => [
158
- truncateId(t.trace_id),
158
+ truncateId(t.traceId),
159
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),
160
+ t.requestedModel.length > 16
161
+ ? t.requestedModel.slice(0, 15) + '…'
162
+ : t.requestedModel,
163
+ colorAction(t.enforcementAction),
164
+ colorScore(t.complianceScore),
165
+ formatCost(t.actualCostUsd),
166
166
  ]);
167
167
  renderTable(headers, widths, rows);
168
168
  const sinceLabel = opts.since ?? '24h';
@@ -177,7 +177,7 @@ export async function runTracesList(opts) {
177
177
  * `intutic traces inspect <trace_id>` — Show full detail of a single trace.
178
178
  */
179
179
  export async function runTracesInspect(traceId, opts) {
180
- const creds = loadCredentials();
180
+ const creds = await loadCredentials();
181
181
  if (!creds) {
182
182
  log.error('Not authenticated. Run `intutic login` first.');
183
183
  process.exit(1);
@@ -187,7 +187,7 @@ export async function runTracesInspect(traceId, opts) {
187
187
  try {
188
188
  const data = await client.get(`/api/v1/traces/${encodeURIComponent(traceId)}`);
189
189
  log.header(`Intutic — Trace Detail`);
190
- log.field('Trace ID', String(data.trace_id));
190
+ log.field('Trace ID', String(data.traceId));
191
191
  console.log('');
192
192
  // Syntax-highlighted JSON output
193
193
  const json = JSON.stringify(data, null, 2);
@@ -204,4 +204,98 @@ export async function runTracesInspect(traceId, opts) {
204
204
  process.exit(1);
205
205
  }
206
206
  }
207
+ /**
208
+ * `intutic traces fork <trace_id>` — Fork a completed trace with a mutation.
209
+ */
210
+ export async function runTracesFork(traceId, opts) {
211
+ const creds = await loadCredentials();
212
+ if (!creds) {
213
+ log.error('Not authenticated. Run `intutic login` first.');
214
+ process.exit(1);
215
+ }
216
+ const controlPlaneUrl = resolveControlPlaneUrl(opts.dev);
217
+ const client = createApiClient(controlPlaneUrl, creds.apiKey);
218
+ // Construct mutation config
219
+ let mutation = {};
220
+ if (opts.type === 'tool_arg_mutation') {
221
+ let argOverrides = {};
222
+ try {
223
+ if (opts.args) {
224
+ argOverrides = JSON.parse(opts.args);
225
+ }
226
+ }
227
+ catch {
228
+ log.error('Invalid JSON string passed to --args');
229
+ process.exit(1);
230
+ }
231
+ mutation = {
232
+ stepId: opts.fromStep,
233
+ toolName: '',
234
+ argOverrides,
235
+ };
236
+ }
237
+ else if (opts.type === 'sop_config_mutation') {
238
+ mutation = {
239
+ sopId: '',
240
+ configOverrides: {
241
+ threshold: opts.sopThreshold ? parseFloat(opts.sopThreshold) : 0.5,
242
+ },
243
+ };
244
+ }
245
+ else if (opts.type === 'model_swap') {
246
+ mutation = {
247
+ fromStepId: opts.fromStep,
248
+ newModel: opts.model || 'claude-haiku-3-5',
249
+ };
250
+ }
251
+ try {
252
+ log.info(`Creating trace fork for ${traceId} from step ${opts.fromStep}...`);
253
+ const createRes = await client.post(`/api/v1/traces/${encodeURIComponent(traceId)}/forks`, {
254
+ fromStepId: opts.fromStep,
255
+ forkType: opts.type,
256
+ mutation,
257
+ label: opts.label,
258
+ });
259
+ const forkId = createRes.counterfactualRunId;
260
+ log.success(`Fork successfully queued. Run ID: ${forkId}`);
261
+ // Polling loop
262
+ let status = createRes.status;
263
+ let runDetails = null;
264
+ log.info('Waiting for simulated sandbox replay to complete...');
265
+ while (status === 'queued' || status === 'running') {
266
+ await new Promise((r) => setTimeout(r, 500));
267
+ runDetails = await client.get(`/api/v1/traces/${encodeURIComponent(traceId)}/forks/${encodeURIComponent(forkId)}`);
268
+ status = runDetails.status;
269
+ }
270
+ if (status === 'failed') {
271
+ log.error(`Fork run failed: ${runDetails.errorDetail || 'Unknown error'}`);
272
+ process.exit(1);
273
+ }
274
+ log.success('Fork simulation completed successfully!');
275
+ log.header('Trace Diff Summary');
276
+ log.field('Original Trace ID', traceId);
277
+ log.field('Counterfactual Run ID', forkId);
278
+ log.field('Verdict Changed', runDetails.verdictChanged ? 'YES' : 'NO');
279
+ log.field('Cost Delta USD', `$${(runDetails.costDeltaUsd ?? 0).toFixed(4)}`);
280
+ log.field('Token Delta', String(runDetails.tokenDelta ?? 0));
281
+ if (runDetails.diff) {
282
+ console.log('');
283
+ log.header('Step Diff Details');
284
+ const diffSteps = runDetails.diff.steps || [];
285
+ const headers = ['Step', 'Original Verdict', 'Counterfactual Verdict', 'Diverged'];
286
+ const widths = [6, 18, 22, 9];
287
+ const rows = diffSteps.map((s) => [
288
+ String(s.stepIndex),
289
+ s.original ? String(s.original.verdict) : 'N/A',
290
+ s.counterfactual ? String(s.counterfactual.verdict) : 'N/A',
291
+ s.diverged ? 'YES' : 'NO',
292
+ ]);
293
+ renderTable(headers, widths, rows);
294
+ }
295
+ }
296
+ catch (err) {
297
+ log.error(`Failed to fork trace: ${err instanceof Error ? err.message : String(err)}`);
298
+ process.exit(1);
299
+ }
300
+ }
207
301
  //# sourceMappingURL=traces.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"traces.js","sourceRoot":"","sources":["../../src/commands/traces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"traces.js","sourceRoot":"","sources":["../../src/commands/traces.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ import { loadCredentials } from '../config/store.js';
11
11
  import { resolveControlPlaneUrl } from '../config/paths.js';
12
12
  import { createApiClient } from '../lib/api.js';
13
13
  export async function runWhoami(opts) {
14
- const creds = loadCredentials();
14
+ const creds = await loadCredentials();
15
15
  if (!creds) {
16
16
  log.error('Not authenticated. Run `intutic login` first.');
17
17
  process.exit(1);
@@ -1 +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"}
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,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,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,28 @@
1
+ /**
2
+ * keychain.ts — Secure credential storage using native OS commands.
3
+ *
4
+ * Utilizes:
5
+ * - macOS: `security` command line tool
6
+ * - Linux: `secret-tool` (libsecret-tools package)
7
+ * - Windows: `cmdkey` (Credential Manager CLI) and PowerShell fallback
8
+ *
9
+ * Falls back to local credentials.json if OS keychain utility is unavailable.
10
+ *
11
+ * LLD #14 — keychain.ts
12
+ * HLD §3.14 — OS Keychain Storage
13
+ *
14
+ * @module
15
+ */
16
+ /**
17
+ * Stores token in OS Keychain. Returns true on success, false on failure/fallback.
18
+ */
19
+ export declare function storeToken(workspaceId: string, token: string): Promise<boolean>;
20
+ /**
21
+ * Retrieves token from OS Keychain. Returns null if absent/fallback.
22
+ */
23
+ export declare function retrieveToken(workspaceId: string): Promise<string | null>;
24
+ /**
25
+ * Deletes token from OS Keychain. Returns true on success.
26
+ */
27
+ export declare function deleteToken(workspaceId: string): Promise<boolean>;
28
+ //# sourceMappingURL=keychain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../src/config/keychain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA8BrF;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA6B/E;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA0BvE"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * keychain.ts — Secure credential storage using native OS commands.
3
+ *
4
+ * Utilizes:
5
+ * - macOS: `security` command line tool
6
+ * - Linux: `secret-tool` (libsecret-tools package)
7
+ * - Windows: `cmdkey` (Credential Manager CLI) and PowerShell fallback
8
+ *
9
+ * Falls back to local credentials.json if OS keychain utility is unavailable.
10
+ *
11
+ * LLD #14 — keychain.ts
12
+ * HLD §3.14 — OS Keychain Storage
13
+ *
14
+ * @module
15
+ */
16
+ import { execSync } from 'node:child_process';
17
+ import { log } from '../lib/logger.js';
18
+ const SERVICE_NAME = 'intutic';
19
+ const ACCOUNT_NAME = 'token';
20
+ /**
21
+ * Stores token in OS Keychain. Returns true on success, false on failure/fallback.
22
+ */
23
+ export async function storeToken(workspaceId, token) {
24
+ const target = `${SERVICE_NAME}:workspace:${workspaceId}`;
25
+ try {
26
+ if (process.platform === 'darwin') {
27
+ // macOS keychain
28
+ execSync(`security add-generic-password -a "${ACCOUNT_NAME}" -s "${target}" -w "${token}" -U`, { stdio: 'ignore' });
29
+ return true;
30
+ }
31
+ else if (process.platform === 'linux') {
32
+ // Linux libsecret (secret-tool)
33
+ // Pass token via stdin to avoid exposing it in process tree
34
+ execSync(`secret-tool store --label="Intutic Workspace ${workspaceId}" workspace "${workspaceId}" service "${SERVICE_NAME}"`, { input: token, stdio: 'pipe' });
35
+ return true;
36
+ }
37
+ else if (process.platform === 'win32') {
38
+ // Windows cmdkey (Credential Manager)
39
+ execSync(`cmdkey /generic:"${target}" /user:"${ACCOUNT_NAME}" /pass:"${token}"`, { stdio: 'ignore' });
40
+ return true;
41
+ }
42
+ }
43
+ catch (err) {
44
+ log.dim(`OS Keychain save failed (falling back to credentials.json): ${err instanceof Error ? err.message : String(err)}`);
45
+ }
46
+ return false;
47
+ }
48
+ /**
49
+ * Retrieves token from OS Keychain. Returns null if absent/fallback.
50
+ */
51
+ export async function retrieveToken(workspaceId) {
52
+ const target = `${SERVICE_NAME}:workspace:${workspaceId}`;
53
+ try {
54
+ if (process.platform === 'darwin') {
55
+ const output = execSync(`security find-generic-password -a "${ACCOUNT_NAME}" -s "${target}" -w`, { encoding: 'utf-8', stdio: 'pipe' });
56
+ return output.trim();
57
+ }
58
+ else if (process.platform === 'linux') {
59
+ const output = execSync(`secret-tool lookup workspace "${workspaceId}" service "${SERVICE_NAME}"`, { encoding: 'utf-8', stdio: 'pipe' });
60
+ return output.trim();
61
+ }
62
+ else if (process.platform === 'win32') {
63
+ // Windows Credential Manager lookup via PowerShell
64
+ // We retrieve the credential password cleanly using the PasswordVault API in PowerShell
65
+ const psCommand = `[void][Windows.Security.Credentials.PasswordVault,Windows.Security.Credentials,ContentType=WindowsRuntime]; $v = New-Object Windows.Security.Credentials.PasswordVault; try { $c = $v.Retrieve("${target}", "${ACCOUNT_NAME}"); $c.RetrievePassword(); $c.Password } catch { exit 1 }`;
66
+ const output = execSync(`powershell -Command "${psCommand}"`, { encoding: 'utf-8', stdio: 'pipe' });
67
+ return output.trim();
68
+ }
69
+ }
70
+ catch {
71
+ // Normal case: key doesn't exist, or tool unavailable. Fallback handles it.
72
+ }
73
+ return null;
74
+ }
75
+ /**
76
+ * Deletes token from OS Keychain. Returns true on success.
77
+ */
78
+ export async function deleteToken(workspaceId) {
79
+ const target = `${SERVICE_NAME}:workspace:${workspaceId}`;
80
+ try {
81
+ if (process.platform === 'darwin') {
82
+ execSync(`security delete-generic-password -a "${ACCOUNT_NAME}" -s "${target}"`, { stdio: 'ignore' });
83
+ return true;
84
+ }
85
+ else if (process.platform === 'linux') {
86
+ execSync(`secret-tool clear workspace "${workspaceId}" service "${SERVICE_NAME}"`, { stdio: 'ignore' });
87
+ return true;
88
+ }
89
+ else if (process.platform === 'win32') {
90
+ execSync(`cmdkey /delete:"${target}"`, { stdio: 'ignore' });
91
+ return true;
92
+ }
93
+ }
94
+ catch {
95
+ // Key might not exist or tool unavailable
96
+ }
97
+ return false;
98
+ }
99
+ //# sourceMappingURL=keychain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../src/config/keychain.ts"],"names":[],"mappings":"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"}
@@ -9,11 +9,11 @@
9
9
  */
10
10
  import type { IntuticCredentials, IntuticConfig, IntegrityStore } from '@intutic/shared-types';
11
11
  /** Load stored credentials. Returns null if not found. */
12
- export declare function loadCredentials(): IntuticCredentials | null;
12
+ export declare function loadCredentials(): Promise<IntuticCredentials | null>;
13
13
  /** Save credentials with restricted permissions (0o600). */
14
- export declare function saveCredentials(creds: IntuticCredentials): void;
14
+ export declare function saveCredentials(creds: IntuticCredentials): Promise<void>;
15
15
  /** Delete credentials file. */
16
- export declare function clearCredentials(): void;
16
+ export declare function clearCredentials(): Promise<void>;
17
17
  /** Load workspace config. Returns null if not found. */
18
18
  export declare function loadConfig(): IntuticConfig | null;
19
19
  /** Save workspace config. */
@@ -1 +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"}
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;AA6B9F,0DAA0D;AAC1D,wBAAsB,eAAe,IAAI,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAW1E;AAED,4DAA4D;AAC5D,wBAAsB,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAO9E;AAED,+BAA+B;AAC/B,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CActD;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"}
@@ -9,7 +9,8 @@
9
9
  */
10
10
  import { readFileSync, writeFileSync, unlinkSync, mkdirSync } from 'node:fs';
11
11
  import { dirname } from 'node:path';
12
- import { getCredentialsPath, getConfigPath, getIntegrityPath, } from './paths.js';
12
+ import { getCredentialsPath, getConfigPath, getIntegrityPath } from './paths.js';
13
+ import { storeToken, retrieveToken, deleteToken } from './keychain.js';
13
14
  // ─── Helpers ─────────────────────────────────────────────────────────
14
15
  function ensureDir(filePath) {
15
16
  mkdirSync(dirname(filePath), { recursive: true });
@@ -32,15 +33,38 @@ function writeJsonFile(filePath, data, mode) {
32
33
  }
33
34
  // ─── Credentials ─────────────────────────────────────────────────────
34
35
  /** Load stored credentials. Returns null if not found. */
35
- export function loadCredentials() {
36
- return readJsonFile(getCredentialsPath());
36
+ export async function loadCredentials() {
37
+ const creds = readJsonFile(getCredentialsPath());
38
+ if (!creds)
39
+ return null;
40
+ if (creds.apiKey === 'keychain') {
41
+ const token = await retrieveToken(creds.workspaceId);
42
+ if (token) {
43
+ creds.apiKey = token;
44
+ }
45
+ }
46
+ return creds;
37
47
  }
38
48
  /** Save credentials with restricted permissions (0o600). */
39
- export function saveCredentials(creds) {
40
- writeJsonFile(getCredentialsPath(), creds, 0o600);
49
+ export async function saveCredentials(creds) {
50
+ const savedToKeychain = await storeToken(creds.workspaceId, creds.apiKey);
51
+ const credsToSave = { ...creds };
52
+ if (savedToKeychain) {
53
+ credsToSave.apiKey = 'keychain';
54
+ }
55
+ writeJsonFile(getCredentialsPath(), credsToSave, 0o600);
41
56
  }
42
57
  /** Delete credentials file. */
43
- export function clearCredentials() {
58
+ export async function clearCredentials() {
59
+ try {
60
+ const creds = readJsonFile(getCredentialsPath());
61
+ if (creds) {
62
+ await deleteToken(creds.workspaceId);
63
+ }
64
+ }
65
+ catch {
66
+ // Ignore keychain deletion failures
67
+ }
44
68
  try {
45
69
  unlinkSync(getCredentialsPath());
46
70
  }
@@ -1 +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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/config/store.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  /**
2
- * Aider adapter .aider.conf.yml
2
+ * aider.ts — Aider adapter (full implementation with safe YAML merge).
3
3
  *
4
- * Writes SOP content into the extra-instructions field of the
5
- * Aider YAML config file.
4
+ * Writes SOP content into .aider.conf.yml using the aiderConfigMerger
5
+ * which safely merges proxy keys and strips dangerous auto-exec keys
6
+ * (test-cmd, lint-cmd) that Aider auto-executes on startup.
6
7
  *
7
8
  * HLD §3.14 — Harness Onboarding Matrix
8
9
  * @module