@intutic/cli 1.3.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 (243) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +107 -0
  3. package/dist/cli.d.ts +14 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +348 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/benchmark.d.ts +31 -0
  8. package/dist/commands/benchmark.d.ts.map +1 -0
  9. package/dist/commands/benchmark.js +211 -0
  10. package/dist/commands/benchmark.js.map +1 -0
  11. package/dist/commands/budget.d.ts +7 -0
  12. package/dist/commands/budget.d.ts.map +1 -0
  13. package/dist/commands/budget.js +68 -0
  14. package/dist/commands/budget.js.map +1 -0
  15. package/dist/commands/budgetCompatibility.test.d.ts +2 -0
  16. package/dist/commands/budgetCompatibility.test.d.ts.map +1 -0
  17. package/dist/commands/budgetCompatibility.test.js +19 -0
  18. package/dist/commands/budgetCompatibility.test.js.map +1 -0
  19. package/dist/commands/connect.d.ts +20 -0
  20. package/dist/commands/connect.d.ts.map +1 -0
  21. package/dist/commands/connect.js +1010 -0
  22. package/dist/commands/connect.js.map +1 -0
  23. package/dist/commands/doctor.d.ts +23 -0
  24. package/dist/commands/doctor.d.ts.map +1 -0
  25. package/dist/commands/doctor.js +429 -0
  26. package/dist/commands/doctor.js.map +1 -0
  27. package/dist/commands/enterprise-install.d.ts +36 -0
  28. package/dist/commands/enterprise-install.d.ts.map +1 -0
  29. package/dist/commands/enterprise-install.js +289 -0
  30. package/dist/commands/enterprise-install.js.map +1 -0
  31. package/dist/commands/eval.d.ts +13 -0
  32. package/dist/commands/eval.d.ts.map +1 -0
  33. package/dist/commands/eval.js +67 -0
  34. package/dist/commands/eval.js.map +1 -0
  35. package/dist/commands/exec.d.ts +34 -0
  36. package/dist/commands/exec.d.ts.map +1 -0
  37. package/dist/commands/exec.js +114 -0
  38. package/dist/commands/exec.js.map +1 -0
  39. package/dist/commands/exec.test.d.ts +2 -0
  40. package/dist/commands/exec.test.d.ts.map +1 -0
  41. package/dist/commands/exec.test.js +29 -0
  42. package/dist/commands/exec.test.js.map +1 -0
  43. package/dist/commands/export.d.ts +21 -0
  44. package/dist/commands/export.d.ts.map +1 -0
  45. package/dist/commands/export.js +116 -0
  46. package/dist/commands/export.js.map +1 -0
  47. package/dist/commands/init.d.ts +13 -0
  48. package/dist/commands/init.d.ts.map +1 -0
  49. package/dist/commands/init.js +110 -0
  50. package/dist/commands/init.js.map +1 -0
  51. package/dist/commands/install-daemon.d.ts +61 -0
  52. package/dist/commands/install-daemon.d.ts.map +1 -0
  53. package/dist/commands/install-daemon.js +696 -0
  54. package/dist/commands/install-daemon.js.map +1 -0
  55. package/dist/commands/install-daemon.test.d.ts +2 -0
  56. package/dist/commands/install-daemon.test.d.ts.map +1 -0
  57. package/dist/commands/install-daemon.test.js +93 -0
  58. package/dist/commands/install-daemon.test.js.map +1 -0
  59. package/dist/commands/login.d.ts +14 -0
  60. package/dist/commands/login.d.ts.map +1 -0
  61. package/dist/commands/login.js +121 -0
  62. package/dist/commands/login.js.map +1 -0
  63. package/dist/commands/logout.d.ts +8 -0
  64. package/dist/commands/logout.d.ts.map +1 -0
  65. package/dist/commands/logout.js +13 -0
  66. package/dist/commands/logout.js.map +1 -0
  67. package/dist/commands/mdm.d.ts +23 -0
  68. package/dist/commands/mdm.d.ts.map +1 -0
  69. package/dist/commands/mdm.js +134 -0
  70. package/dist/commands/mdm.js.map +1 -0
  71. package/dist/commands/policy.d.ts +19 -0
  72. package/dist/commands/policy.d.ts.map +1 -0
  73. package/dist/commands/policy.js +232 -0
  74. package/dist/commands/policy.js.map +1 -0
  75. package/dist/commands/prompt.d.ts +11 -0
  76. package/dist/commands/prompt.d.ts.map +1 -0
  77. package/dist/commands/prompt.js +71 -0
  78. package/dist/commands/prompt.js.map +1 -0
  79. package/dist/commands/skill.d.ts +31 -0
  80. package/dist/commands/skill.d.ts.map +1 -0
  81. package/dist/commands/skill.js +349 -0
  82. package/dist/commands/skill.js.map +1 -0
  83. package/dist/commands/sop-audit.d.ts +17 -0
  84. package/dist/commands/sop-audit.d.ts.map +1 -0
  85. package/dist/commands/sop-audit.js +136 -0
  86. package/dist/commands/sop-audit.js.map +1 -0
  87. package/dist/commands/sops.d.ts +4 -0
  88. package/dist/commands/sops.d.ts.map +1 -0
  89. package/dist/commands/sops.js +88 -0
  90. package/dist/commands/sops.js.map +1 -0
  91. package/dist/commands/status.d.ts +11 -0
  92. package/dist/commands/status.d.ts.map +1 -0
  93. package/dist/commands/status.js +107 -0
  94. package/dist/commands/status.js.map +1 -0
  95. package/dist/commands/syncContext.d.ts +18 -0
  96. package/dist/commands/syncContext.d.ts.map +1 -0
  97. package/dist/commands/syncContext.js +37 -0
  98. package/dist/commands/syncContext.js.map +1 -0
  99. package/dist/commands/traces.d.ts +32 -0
  100. package/dist/commands/traces.d.ts.map +1 -0
  101. package/dist/commands/traces.js +207 -0
  102. package/dist/commands/traces.js.map +1 -0
  103. package/dist/commands/whoami.d.ts +12 -0
  104. package/dist/commands/whoami.d.ts.map +1 -0
  105. package/dist/commands/whoami.js +34 -0
  106. package/dist/commands/whoami.js.map +1 -0
  107. package/dist/config/keychain.d.ts +28 -0
  108. package/dist/config/keychain.d.ts.map +1 -0
  109. package/dist/config/keychain.js +98 -0
  110. package/dist/config/keychain.js.map +1 -0
  111. package/dist/config/paths.d.ts +30 -0
  112. package/dist/config/paths.d.ts.map +1 -0
  113. package/dist/config/paths.js +53 -0
  114. package/dist/config/paths.js.map +1 -0
  115. package/dist/config/store.d.ts +25 -0
  116. package/dist/config/store.d.ts.map +1 -0
  117. package/dist/config/store.js +93 -0
  118. package/dist/config/store.js.map +1 -0
  119. package/dist/harness/aider.d.ts +13 -0
  120. package/dist/harness/aider.d.ts.map +1 -0
  121. package/dist/harness/aider.js +48 -0
  122. package/dist/harness/aider.js.map +1 -0
  123. package/dist/harness/antigravity.d.ts +12 -0
  124. package/dist/harness/antigravity.d.ts.map +1 -0
  125. package/dist/harness/antigravity.js +69 -0
  126. package/dist/harness/antigravity.js.map +1 -0
  127. package/dist/harness/base.d.ts +20 -0
  128. package/dist/harness/base.d.ts.map +1 -0
  129. package/dist/harness/base.js +73 -0
  130. package/dist/harness/base.js.map +1 -0
  131. package/dist/harness/claudeCode.d.ts +2 -0
  132. package/dist/harness/claudeCode.d.ts.map +1 -0
  133. package/dist/harness/claudeCode.js +9 -0
  134. package/dist/harness/claudeCode.js.map +1 -0
  135. package/dist/harness/claudeDesktop.d.ts +18 -0
  136. package/dist/harness/claudeDesktop.d.ts.map +1 -0
  137. package/dist/harness/claudeDesktop.js +69 -0
  138. package/dist/harness/claudeDesktop.js.map +1 -0
  139. package/dist/harness/cline.d.ts +13 -0
  140. package/dist/harness/cline.d.ts.map +1 -0
  141. package/dist/harness/cline.js +75 -0
  142. package/dist/harness/cline.js.map +1 -0
  143. package/dist/harness/codex.d.ts +13 -0
  144. package/dist/harness/codex.d.ts.map +1 -0
  145. package/dist/harness/codex.js +86 -0
  146. package/dist/harness/codex.js.map +1 -0
  147. package/dist/harness/continue.d.ts +14 -0
  148. package/dist/harness/continue.d.ts.map +1 -0
  149. package/dist/harness/continue.js +97 -0
  150. package/dist/harness/continue.js.map +1 -0
  151. package/dist/harness/cursor.d.ts +14 -0
  152. package/dist/harness/cursor.d.ts.map +1 -0
  153. package/dist/harness/cursor.js +65 -0
  154. package/dist/harness/cursor.js.map +1 -0
  155. package/dist/harness/detector.d.ts +29 -0
  156. package/dist/harness/detector.d.ts.map +1 -0
  157. package/dist/harness/detector.js +81 -0
  158. package/dist/harness/detector.js.map +1 -0
  159. package/dist/harness/githubCopilot.d.ts +12 -0
  160. package/dist/harness/githubCopilot.d.ts.map +1 -0
  161. package/dist/harness/githubCopilot.js +54 -0
  162. package/dist/harness/githubCopilot.js.map +1 -0
  163. package/dist/harness/goose.d.ts +13 -0
  164. package/dist/harness/goose.d.ts.map +1 -0
  165. package/dist/harness/goose.js +45 -0
  166. package/dist/harness/goose.js.map +1 -0
  167. package/dist/harness/hermes.d.ts +12 -0
  168. package/dist/harness/hermes.d.ts.map +1 -0
  169. package/dist/harness/hermes.js +51 -0
  170. package/dist/harness/hermes.js.map +1 -0
  171. package/dist/harness/n8n.d.ts +17 -0
  172. package/dist/harness/n8n.d.ts.map +1 -0
  173. package/dist/harness/n8n.js +125 -0
  174. package/dist/harness/n8n.js.map +1 -0
  175. package/dist/harness/openWebUI.d.ts +13 -0
  176. package/dist/harness/openWebUI.d.ts.map +1 -0
  177. package/dist/harness/openWebUI.js +25 -0
  178. package/dist/harness/openWebUI.js.map +1 -0
  179. package/dist/harness/openclaw.d.ts +12 -0
  180. package/dist/harness/openclaw.d.ts.map +1 -0
  181. package/dist/harness/openclaw.js +51 -0
  182. package/dist/harness/openclaw.js.map +1 -0
  183. package/dist/harness/openhands.d.ts +12 -0
  184. package/dist/harness/openhands.d.ts.map +1 -0
  185. package/dist/harness/openhands.js +67 -0
  186. package/dist/harness/openhands.js.map +1 -0
  187. package/dist/harness/pi.d.ts +12 -0
  188. package/dist/harness/pi.d.ts.map +1 -0
  189. package/dist/harness/pi.js +51 -0
  190. package/dist/harness/pi.js.map +1 -0
  191. package/dist/harness/rooCode.d.ts +14 -0
  192. package/dist/harness/rooCode.d.ts.map +1 -0
  193. package/dist/harness/rooCode.js +77 -0
  194. package/dist/harness/rooCode.js.map +1 -0
  195. package/dist/harness/types.d.ts +30 -0
  196. package/dist/harness/types.d.ts.map +1 -0
  197. package/dist/harness/types.js +32 -0
  198. package/dist/harness/types.js.map +1 -0
  199. package/dist/harness/vscodeSettingsWriter.d.ts +40 -0
  200. package/dist/harness/vscodeSettingsWriter.d.ts.map +1 -0
  201. package/dist/harness/vscodeSettingsWriter.js +116 -0
  202. package/dist/harness/vscodeSettingsWriter.js.map +1 -0
  203. package/dist/harness/windsurf.d.ts +14 -0
  204. package/dist/harness/windsurf.d.ts.map +1 -0
  205. package/dist/harness/windsurf.js +64 -0
  206. package/dist/harness/windsurf.js.map +1 -0
  207. package/dist/lib/api.d.ts +48 -0
  208. package/dist/lib/api.d.ts.map +1 -0
  209. package/dist/lib/api.js +128 -0
  210. package/dist/lib/api.js.map +1 -0
  211. package/dist/lib/envInjector.d.ts +24 -0
  212. package/dist/lib/envInjector.d.ts.map +1 -0
  213. package/dist/lib/envInjector.js +149 -0
  214. package/dist/lib/envInjector.js.map +1 -0
  215. package/dist/lib/envInjector.test.d.ts +2 -0
  216. package/dist/lib/envInjector.test.d.ts.map +1 -0
  217. package/dist/lib/envInjector.test.js +32 -0
  218. package/dist/lib/envInjector.test.js.map +1 -0
  219. package/dist/lib/gitHooks.d.ts +19 -0
  220. package/dist/lib/gitHooks.d.ts.map +1 -0
  221. package/dist/lib/gitHooks.js +58 -0
  222. package/dist/lib/gitHooks.js.map +1 -0
  223. package/dist/lib/hash.d.ts +11 -0
  224. package/dist/lib/hash.d.ts.map +1 -0
  225. package/dist/lib/hash.js +18 -0
  226. package/dist/lib/hash.js.map +1 -0
  227. package/dist/lib/logger.d.ts +18 -0
  228. package/dist/lib/logger.d.ts.map +1 -0
  229. package/dist/lib/logger.js +33 -0
  230. package/dist/lib/logger.js.map +1 -0
  231. package/dist/lib/onboarding.d.ts +10 -0
  232. package/dist/lib/onboarding.d.ts.map +1 -0
  233. package/dist/lib/onboarding.js +178 -0
  234. package/dist/lib/onboarding.js.map +1 -0
  235. package/dist/lib/process.d.ts +53 -0
  236. package/dist/lib/process.d.ts.map +1 -0
  237. package/dist/lib/process.js +181 -0
  238. package/dist/lib/process.js.map +1 -0
  239. package/dist/lib/process.test.d.ts +2 -0
  240. package/dist/lib/process.test.d.ts.map +1 -0
  241. package/dist/lib/process.test.js +44 -0
  242. package/dist/lib/process.test.js.map +1 -0
  243. package/package.json +55 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Intutic
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPORTED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,107 @@
1
+ # @intutic/cli
2
+
3
+ > AI governance control plane for developer workspaces.
4
+
5
+ Intutic intercepts agent-to-LLM traffic, enforces SOPs, detects anomalies, and tracks costs — all without changing how your team codes.
6
+
7
+ ## Quick Start
8
+
9
+ ```bash
10
+ # Install globally
11
+ npm install -g @intutic/cli
12
+
13
+ # Or run directly
14
+ npx @intutic/cli init
15
+ ```
16
+
17
+ **5 minutes to your first governance verdict:**
18
+
19
+ ```bash
20
+ intutic login # Authenticate with control plane
21
+ intutic init # Detect harnesses, configure proxy
22
+ intutic connect # Start sync daemon (background)
23
+ intutic traces list # See governance verdicts
24
+ ```
25
+
26
+ ## Commands
27
+
28
+ | Command | Description |
29
+ |---------|-------------|
30
+ | `intutic init` | Initialize workspace — detect harnesses, configure sync |
31
+ | `intutic login` | Authenticate with control plane (`--api-key`, `--dev`) |
32
+ | `intutic logout` | Clear stored credentials |
33
+ | `intutic status` | Show workspace status — auth, harnesses, sync state |
34
+ | `intutic whoami` | Show current authenticated identity |
35
+ | `intutic connect` | Start sync daemon — bidirectional config sync (`--interval`) |
36
+ | `intutic traces list` | List execution traces (`--limit`, `--since`, `--action`, `--model`, `--json`) |
37
+ | `intutic traces inspect <id>` | Show full detail of a single trace |
38
+
39
+ ## Supported Harnesses
40
+
41
+ Intutic auto-detects and configures these AI coding harnesses:
42
+
43
+ | Harness | Detection | Config Method |
44
+ |---------|-----------|---------------|
45
+ | **Claude Code** | `~/.claude/` directory | `CLAUDE.md` + `settings.json` |
46
+ | **Cursor** | `~/.cursor/` directory | `.cursorrules` file |
47
+ | **Aider** | `~/.aider/` directory | `.aider.conf.yml` |
48
+ | **Antigravity** | `~/.gemini/` directory | Environment variables |
49
+ | **Codex** | `~/.codex/` directory | `codex.json` config |
50
+ | **n8n** | Running n8n instance | Workflow JSON file |
51
+ | **OpenClaw** | `~/.openclaw/` directory | `config.yaml` |
52
+ | **Hermes** | `~/.hermes/` directory | `config.toml` |
53
+
54
+ ## Trace Inspection
55
+
56
+ View governance verdicts directly from the terminal:
57
+
58
+ ```bash
59
+ # List recent traces (last 24h)
60
+ intutic traces list
61
+
62
+ # Filter by enforcement action
63
+ intutic traces list --action KILL
64
+
65
+ # Filter by model and time window
66
+ intutic traces list --model claude-4 --since 7d
67
+
68
+ # JSON output for scripting
69
+ intutic traces list --json | jq '.traces[] | select(.enforcementAction == "HIJACK")'
70
+
71
+ # Inspect a specific trace
72
+ intutic traces inspect tr_abc123
73
+ ```
74
+
75
+ ## Configuration
76
+
77
+ Credentials are stored at `~/.intutic/credentials.json` (mode `0600`).
78
+
79
+ ### Environment Variables
80
+
81
+ | Variable | Description |
82
+ |----------|-------------|
83
+ | `INTUTIC_API_URL` | Control plane URL (default: `https://api.intutic.ai`) |
84
+ | `INTUTIC_API_KEY` | API key for non-interactive auth (`vk_*` prefix) |
85
+
86
+ ### Development Mode
87
+
88
+ Use `--dev` flag to point at local control plane (`http://localhost:3001`):
89
+
90
+ ```bash
91
+ intutic login --dev
92
+ intutic connect --dev
93
+ intutic traces list --dev
94
+ ```
95
+
96
+ ## Documentation
97
+
98
+ Full documentation: [docs.intutic.ai](https://docs.intutic.ai)
99
+
100
+ - [Getting Started](https://docs.intutic.ai/guide/getting-started)
101
+ - [Integration Guides](https://docs.intutic.ai/integrations/)
102
+ - [CLI Reference](https://docs.intutic.ai/reference/cli)
103
+ - [API Reference](https://docs.intutic.ai/reference/api)
104
+
105
+ ## License
106
+
107
+ MIT — see [LICENSE](../../LICENSE) for details.
package/dist/cli.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Intutic CLI — Entry point
4
+ *
5
+ * AI governance control plane for developer workspaces.
6
+ * Provides harness detection, config sync, and workspace management.
7
+ *
8
+ * LLD #8 — Sync Daemon / CLI
9
+ * HLD §3.14 — Real-Time State Mirroring
10
+ *
11
+ * @module
12
+ */
13
+ export {};
14
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG"}
package/dist/cli.js ADDED
@@ -0,0 +1,348 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Intutic CLI — Entry point
4
+ *
5
+ * AI governance control plane for developer workspaces.
6
+ * Provides harness detection, config sync, and workspace management.
7
+ *
8
+ * LLD #8 — Sync Daemon / CLI
9
+ * HLD §3.14 — Real-Time State Mirroring
10
+ *
11
+ * @module
12
+ */
13
+ import { Command } from 'commander';
14
+ const program = new Command();
15
+ program
16
+ .name('intutic')
17
+ .description('Intutic CLI — AI governance control plane for developer workspaces')
18
+ .version('1.0.5');
19
+ program
20
+ .command('init')
21
+ .description('Initialize workspace — detect harnesses, configure sync')
22
+ .option('--dev', 'Use local control plane (http://localhost:3001)')
23
+ .action(async (opts) => {
24
+ const { runInit } = await import('./commands/init.js');
25
+ await runInit(opts);
26
+ });
27
+ program
28
+ .command('login')
29
+ .description('Authenticate with the Intutic control plane')
30
+ .option('--api-key <key>', 'Authenticate with an API key (vk_*)')
31
+ .option('--dev', 'Use local control plane (http://localhost:3001)')
32
+ .action(async (opts) => {
33
+ const { runLogin } = await import('./commands/login.js');
34
+ await runLogin(opts);
35
+ });
36
+ program
37
+ .command('logout')
38
+ .description('Clear stored credentials')
39
+ .action(async () => {
40
+ const { runLogout } = await import('./commands/logout.js');
41
+ await runLogout();
42
+ });
43
+ program
44
+ .command('status')
45
+ .description('Show workspace status — auth, harnesses, sync state')
46
+ .action(async () => {
47
+ const { runStatus } = await import('./commands/status.js');
48
+ await runStatus();
49
+ });
50
+ program
51
+ .command('doctor')
52
+ .description('Diagnose workspace health — proxy, auth, daemon, configs, logs')
53
+ .action(async () => {
54
+ const { runDoctor } = await import('./commands/doctor.js');
55
+ await runDoctor();
56
+ });
57
+ program
58
+ .command('budget')
59
+ .description('Check remaining daily/monthly budget and list active loops')
60
+ .option('--dev', 'Use local control plane (http://localhost:3001)')
61
+ .action(async (opts) => {
62
+ const { runBudget } = await import('./commands/budget.js');
63
+ await runBudget(opts);
64
+ });
65
+ const sopsCmd = program
66
+ .command('sops')
67
+ .description('Manage local and global SOP rules');
68
+ sopsCmd
69
+ .command('push <name>')
70
+ .description('Push a local offline SOP folder to the central workspace')
71
+ .option('--dev', 'Use local control plane (http://localhost:3001)')
72
+ .action(async (name, opts) => {
73
+ const { runSopsPush } = await import('./commands/sops.js');
74
+ await runSopsPush(name, opts);
75
+ });
76
+ const policyCmd = program
77
+ .command('policy')
78
+ .description('Manage compliance and safety policies');
79
+ policyCmd
80
+ .command('enable <policyId>')
81
+ .description('Enable a compliance policy')
82
+ .option('--dev', 'Use local control plane (http://localhost:3001)')
83
+ .action(async (policyId, opts) => {
84
+ const { runPolicyEnable } = await import('./commands/policy.js');
85
+ await runPolicyEnable(policyId, opts);
86
+ });
87
+ policyCmd
88
+ .command('disable <policyId>')
89
+ .description('Disable a compliance policy')
90
+ .option('--dev', 'Use local control plane (http://localhost:3001)')
91
+ .action(async (policyId, opts) => {
92
+ const { runPolicyDisable } = await import('./commands/policy.js');
93
+ await runPolicyDisable(policyId, opts);
94
+ });
95
+ policyCmd
96
+ .command('rollback <policyId>')
97
+ .description('Rollback a compliance policy to a specific version')
98
+ .requiredOption('--version <version>', 'Target version (e.g. 2)')
99
+ .option('--dev', 'Use local control plane (http://localhost:3001)')
100
+ .action(async (policyId, opts) => {
101
+ const { runPolicyRollback } = await import('./commands/policy.js');
102
+ await runPolicyRollback(policyId, opts);
103
+ });
104
+ policyCmd
105
+ .command('export')
106
+ .description('Export compliance policies to stdout')
107
+ .option('--all', 'Export all policies')
108
+ .option('--dev', 'Use local control plane (http://localhost:3001)')
109
+ .action(async (opts) => {
110
+ const { runPolicyExport } = await import('./commands/policy.js');
111
+ await runPolicyExport(opts);
112
+ });
113
+ policyCmd
114
+ .command('test')
115
+ .description('Run dry-run WASM policy evaluation locally')
116
+ .requiredOption('--wasm <path>', 'Path to compiled WASM rule binary')
117
+ .requiredOption('--mock <path>', 'Path to mock JSON context file')
118
+ .action(async (opts) => {
119
+ const { runPolicyTest } = await import('./commands/policy.js');
120
+ await runPolicyTest(opts);
121
+ });
122
+ program
123
+ .command('whoami')
124
+ .description('Show current authenticated identity')
125
+ .option('--dev', 'Use local control plane (http://localhost:3001)')
126
+ .action(async (opts) => {
127
+ const { runWhoami } = await import('./commands/whoami.js');
128
+ await runWhoami(opts);
129
+ });
130
+ program
131
+ .command('connect')
132
+ .description('Start sync daemon — bidirectional config sync with control plane')
133
+ .option('--dev', 'Use local control plane (http://localhost:3001)')
134
+ .option('--interval <ms>', 'Poll interval in milliseconds', '30000')
135
+ .option('--workspace-id <id>', 'Workspace ID override')
136
+ .option('--api-key <key>', 'Workspace API key override')
137
+ .option('--control-plane-url <url>', 'Control plane URL override')
138
+ .action(async (opts) => {
139
+ const { runConnect } = await import('./commands/connect.js');
140
+ await runConnect(opts);
141
+ });
142
+ program
143
+ .command('sync-context')
144
+ .description('Sync Git context metadata to the local daemon')
145
+ .option('--git', 'Sync Git branch and commit information')
146
+ .option('--branch <name>', 'Current Git branch name')
147
+ .option('--commit <hash>', 'Current Git commit SHA')
148
+ .action(async (opts) => {
149
+ const { runSyncContext } = await import('./commands/syncContext.js');
150
+ await runSyncContext(opts);
151
+ });
152
+ program
153
+ .command('exec')
154
+ .description('Execute a command wrapped with Intutic proxy environment variables')
155
+ .argument('[command...]', 'Command and arguments to execute (e.g. -- claude)')
156
+ .action(async (commandAndArgs) => {
157
+ const { runExec } = await import('./commands/exec.js');
158
+ await runExec(commandAndArgs);
159
+ });
160
+ const traces = program
161
+ .command('traces')
162
+ .alias('trace')
163
+ .description('Query execution traces — list, filter, and inspect');
164
+ traces
165
+ .command('list')
166
+ .description('List execution traces for the workspace')
167
+ .option('--limit <n>', 'Number of traces to show (default: 20, max: 100)')
168
+ .option('--since <duration>', 'Time window, e.g. "24h", "7d", "30m" (default: "24h")')
169
+ .option('--action <type>', 'Filter by enforcement action (BYPASS|ENHANCE|HIJACK|KILL)')
170
+ .option('--model <name>', 'Filter by model name')
171
+ .option('--json', 'Output as JSON instead of table')
172
+ .option('--dev', 'Use local control plane (http://localhost:3001)')
173
+ .action(async (opts) => {
174
+ const { runTracesList } = await import('./commands/traces.js');
175
+ await runTracesList(opts);
176
+ });
177
+ traces
178
+ .command('inspect <trace_id>')
179
+ .description('Show full detail of a single trace')
180
+ .option('--dev', 'Use local control plane (http://localhost:3001)')
181
+ .action(async (traceId, opts) => {
182
+ const { runTracesInspect } = await import('./commands/traces.js');
183
+ await runTracesInspect(traceId, opts);
184
+ });
185
+ // ── Daemon persistence (WS-5 — Q3 Layer 4) ─────────────────────────────────
186
+ const daemon = program
187
+ .command('daemon')
188
+ .description('Manage the Intutic sync-daemon system service (LaunchAgent / systemd)');
189
+ daemon
190
+ .command('install')
191
+ .alias('install-daemon') // top-level alias for discoverability
192
+ .description('Install sync-daemon as a system service (auto-starts on login, restarts on any exit).\n' +
193
+ ' macOS: ~/Library/LaunchAgents/ai.intutic.sync-daemon.plist (KeepAlive: true)\n' +
194
+ ' Linux: ~/.config/systemd/user/intutic-sync-daemon.service (Restart=always)\n' +
195
+ '\n' +
196
+ ' NOTE: To stop the daemon you MUST use \'intutic daemon uninstall\' or \'launchctl unload\'.\n' +
197
+ ' \'intutic disconnect\' alone will NOT stop a daemon-installed service. (TD-154)')
198
+ .requiredOption('--workspace-id <id>', 'Workspace ID (e.g. ws_xxxx)')
199
+ .requiredOption('--api-key <key>', 'Workspace API key (e.g. vk_xxxx)')
200
+ .option('--control-plane-url <url>', 'Control plane URL', 'https://api.intutic.ai')
201
+ .option('--binary-path <path>', 'Path to intutic CLI binary (defaults to current process)')
202
+ .option('--dry-run', 'Print what would be done without writing files')
203
+ .option('--system', 'Install as a system-level service (LaunchDaemon on macOS, systemd system unit on Linux)')
204
+ .action(async (opts) => {
205
+ const { installDaemon } = await import('./commands/install-daemon.js');
206
+ await installDaemon({
207
+ workspaceId: opts.workspaceId,
208
+ apiKey: opts.apiKey,
209
+ controlPlaneUrl: opts.controlPlaneUrl,
210
+ binaryPath: opts.binaryPath,
211
+ dryRun: opts.dryRun,
212
+ system: opts.system,
213
+ });
214
+ });
215
+ daemon
216
+ .command('uninstall')
217
+ .alias('uninstall-daemon')
218
+ .description('Remove the sync-daemon system service and stop it permanently.')
219
+ .option('--dry-run', 'Print what would be done without writing files')
220
+ .option('--system', 'Uninstall the system-level service')
221
+ .action(async (opts) => {
222
+ const { uninstallDaemon } = await import('./commands/install-daemon.js');
223
+ await uninstallDaemon({ dryRun: opts.dryRun, system: opts.system });
224
+ });
225
+ daemon
226
+ .command('status')
227
+ .description('Show sync-daemon system service status.')
228
+ .action(async () => {
229
+ const { daemonStatus } = await import('./commands/install-daemon.js');
230
+ await daemonStatus();
231
+ });
232
+ daemon
233
+ .command('stop')
234
+ .description('Stop and unload the sync-daemon system service.')
235
+ .action(async () => {
236
+ const { daemonStop } = await import('./commands/install-daemon.js');
237
+ await daemonStop();
238
+ });
239
+ daemon
240
+ .command('start')
241
+ .description('Start and load the sync-daemon system service.')
242
+ .action(async () => {
243
+ const { daemonStart } = await import('./commands/install-daemon.js');
244
+ await daemonStart();
245
+ });
246
+ // Top-level shortcuts (for discoverability)
247
+ program
248
+ .command('install-daemon', { hidden: false })
249
+ .description('Shortcut for \'intutic daemon install\' — install sync-daemon as system service')
250
+ .requiredOption('--workspace-id <id>', 'Workspace ID')
251
+ .requiredOption('--api-key <key>', 'Workspace API key')
252
+ .option('--control-plane-url <url>', 'Control plane URL', 'https://api.intutic.ai')
253
+ .option('--binary-path <path>', 'Path to intutic CLI binary')
254
+ .option('--dry-run', 'Print what would be done without writing files')
255
+ .option('--system', 'Install as a system-level service')
256
+ .action(async (opts) => {
257
+ const { installDaemon } = await import('./commands/install-daemon.js');
258
+ await installDaemon({
259
+ workspaceId: opts.workspaceId,
260
+ apiKey: opts.apiKey,
261
+ controlPlaneUrl: opts.controlPlaneUrl,
262
+ binaryPath: opts.binaryPath,
263
+ dryRun: opts.dryRun,
264
+ system: opts.system,
265
+ });
266
+ });
267
+ program
268
+ .command('uninstall-daemon', { hidden: false })
269
+ .description('Shortcut for \'intutic daemon uninstall\'')
270
+ .option('--dry-run', 'Print what would be done without writing files')
271
+ .option('--system', 'Uninstall the system-level service')
272
+ .action(async (opts) => {
273
+ const { uninstallDaemon } = await import('./commands/install-daemon.js');
274
+ await uninstallDaemon({ dryRun: opts.dryRun, system: opts.system });
275
+ });
276
+ // ── Skill commands ─────────────────────────────────────────────────────────
277
+ const skillCmd = program
278
+ .command('skill')
279
+ .description('Manage and audit agent skills and instructions');
280
+ skillCmd
281
+ .command('list')
282
+ .description('Discover and list local workspace rule/skill files')
283
+ .action(async () => {
284
+ const { runSkillList } = await import('./commands/skill.js');
285
+ await runSkillList();
286
+ });
287
+ skillCmd
288
+ .command('audit')
289
+ .description('Audit local rules/skills for security leakage or unsafe command patterns')
290
+ .action(async () => {
291
+ const { runSkillAudit } = await import('./commands/skill.js');
292
+ await runSkillAudit();
293
+ });
294
+ // ── Loop commands ──────────────────────────────────────────────────────────
295
+ const loopCmd = program
296
+ .command('loop')
297
+ .description('Manage and execute recursive agent loops with budget limits');
298
+ loopCmd
299
+ .command('start')
300
+ .description('Register and start an active loop execution session')
301
+ .requiredOption('--name <name>', 'Name of the loop execution')
302
+ .option('--budget <limit>', 'Maximum token spend budget in USD (e.g. 5.00)')
303
+ .option('--sops <sops>', 'Comma-separated local SOP folder names or option indices')
304
+ .option('--auto-judge', 'Enable automatic E2E judging for the loop')
305
+ .option('--dev', 'Use local control plane (http://localhost:3001)')
306
+ .action(async (opts) => {
307
+ const { runLoopStart } = await import('./commands/skill.js');
308
+ await runLoopStart(opts);
309
+ });
310
+ loopCmd
311
+ .command('complete <loopRunId>')
312
+ .description('Mark a running loop as successfully completed')
313
+ .option('--dev', 'Use local control plane (http://localhost:3001)')
314
+ .action(async (loopRunId, opts) => {
315
+ const { runLoopComplete } = await import('./commands/skill.js');
316
+ await runLoopComplete(loopRunId, opts);
317
+ });
318
+ loopCmd
319
+ .command('kill <loopRunId>')
320
+ .description('Kill an active loop and prevent subsequent API requests')
321
+ .option('--dev', 'Use local control plane (http://localhost:3001)')
322
+ .action(async (loopRunId, opts) => {
323
+ const { runLoopKill } = await import('./commands/skill.js');
324
+ await runLoopKill(loopRunId, opts);
325
+ });
326
+ loopCmd
327
+ .command('list')
328
+ .description('List loop runs and cost accounting details for the workspace')
329
+ .option('--dev', 'Use local control plane (http://localhost:3001)')
330
+ .action(async (opts) => {
331
+ const { runLoopList } = await import('./commands/skill.js');
332
+ await runLoopList(opts);
333
+ });
334
+ loopCmd
335
+ .command('exec')
336
+ .description('Execute an agent command wrapped with loop budget boundaries')
337
+ .option('--name <name>', 'Name of the loop execution')
338
+ .option('--budget <limit>', 'Maximum token spend budget in USD (e.g. 5.00)')
339
+ .option('--sops <sops>', 'Comma-separated local SOP folder names or option indices')
340
+ .option('--auto-judge', 'Enable automatic E2E judging for the loop')
341
+ .option('--dev', 'Use local control plane (http://localhost:3001)')
342
+ .argument('<command...>', 'Agent execution command (e.g. -- claude-code)')
343
+ .action(async (commandAndArgs, opts) => {
344
+ const { runLoopExec } = await import('./commands/skill.js');
345
+ await runLoopExec(commandAndArgs, opts);
346
+ });
347
+ program.parse();
348
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * `intutic benchmark` — Run, compare, and manage PromptGrade benchmarks.
3
+ *
4
+ * Subcommands:
5
+ * - `intutic benchmark run --suite <id> [--harness <type>] [--dev]`
6
+ * - `intutic benchmark compare <runIdA> <runIdB> [--dev]`
7
+ * - `intutic benchmark suites [--dev]`
8
+ * - `intutic benchmark export <runId> [--format csv|json] [--dev]`
9
+ *
10
+ * WS-4E Advanced
11
+ */
12
+ interface BenchmarkRunCliOpts {
13
+ suite: string;
14
+ harness?: string;
15
+ dev?: boolean;
16
+ }
17
+ interface BenchmarkSuitesCliOpts {
18
+ dev?: boolean;
19
+ }
20
+ interface BenchmarkExportCliOpts {
21
+ format?: 'csv' | 'json';
22
+ dev?: boolean;
23
+ }
24
+ export declare function runBenchmark(opts: BenchmarkRunCliOpts): Promise<void>;
25
+ export declare function compareBenchmarks(runIdA: string, runIdB: string, opts: {
26
+ dev?: boolean;
27
+ }): Promise<void>;
28
+ export declare function listSuites(opts: BenchmarkSuitesCliOpts): Promise<void>;
29
+ export declare function exportBenchmark(runId: string, opts: BenchmarkExportCliOpts): Promise<void>;
30
+ export {};
31
+ //# sourceMappingURL=benchmark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../src/commands/benchmark.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAED,UAAU,sBAAsB;IAC9B,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAED,UAAU,sBAAsB;IAC9B,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IACvB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAqCD,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsF3E;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqC9G;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B5E;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BhG"}