@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.
- package/dist/cli.js +309 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/benchmark.d.ts +31 -0
- package/dist/commands/benchmark.d.ts.map +1 -0
- package/dist/commands/benchmark.js +211 -0
- package/dist/commands/benchmark.js.map +1 -0
- package/dist/commands/connect.d.ts +8 -6
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +322 -82
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/enterprise-install.d.ts +36 -0
- package/dist/commands/enterprise-install.d.ts.map +1 -0
- package/dist/commands/enterprise-install.js +289 -0
- package/dist/commands/enterprise-install.js.map +1 -0
- package/dist/commands/eval.d.ts +13 -0
- package/dist/commands/eval.d.ts.map +1 -0
- package/dist/commands/eval.js +67 -0
- package/dist/commands/eval.js.map +1 -0
- package/dist/commands/exec.d.ts +34 -0
- package/dist/commands/exec.d.ts.map +1 -0
- package/dist/commands/exec.js +114 -0
- package/dist/commands/exec.js.map +1 -0
- package/dist/commands/exec.test.d.ts +2 -0
- package/dist/commands/exec.test.d.ts.map +1 -0
- package/dist/commands/exec.test.js +29 -0
- package/dist/commands/exec.test.js.map +1 -0
- package/dist/commands/export.d.ts +21 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +116 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +28 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install-daemon.d.ts +61 -0
- package/dist/commands/install-daemon.d.ts.map +1 -0
- package/dist/commands/install-daemon.js +691 -0
- package/dist/commands/install-daemon.js.map +1 -0
- package/dist/commands/install-daemon.test.d.ts +2 -0
- package/dist/commands/install-daemon.test.d.ts.map +1 -0
- package/dist/commands/install-daemon.test.js +93 -0
- package/dist/commands/install-daemon.test.js.map +1 -0
- package/dist/commands/login.js +2 -2
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.js +1 -1
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/mdm.d.ts +23 -0
- package/dist/commands/mdm.d.ts.map +1 -0
- package/dist/commands/mdm.js +134 -0
- package/dist/commands/mdm.js.map +1 -0
- package/dist/commands/sop-audit.d.ts +17 -0
- package/dist/commands/sop-audit.d.ts.map +1 -0
- package/dist/commands/sop-audit.js +136 -0
- package/dist/commands/sop-audit.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +53 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/syncContext.d.ts +18 -0
- package/dist/commands/syncContext.d.ts.map +1 -0
- package/dist/commands/syncContext.js +37 -0
- package/dist/commands/syncContext.js.map +1 -0
- package/dist/commands/traces.d.ts +13 -0
- package/dist/commands/traces.d.ts.map +1 -1
- package/dist/commands/traces.js +104 -10
- package/dist/commands/traces.js.map +1 -1
- package/dist/commands/whoami.js +1 -1
- package/dist/commands/whoami.js.map +1 -1
- package/dist/config/keychain.d.ts +28 -0
- package/dist/config/keychain.d.ts.map +1 -0
- package/dist/config/keychain.js +99 -0
- package/dist/config/keychain.js.map +1 -0
- package/dist/config/store.d.ts +3 -3
- package/dist/config/store.d.ts.map +1 -1
- package/dist/config/store.js +30 -6
- package/dist/config/store.js.map +1 -1
- package/dist/harness/aider.d.ts +4 -3
- package/dist/harness/aider.d.ts.map +1 -1
- package/dist/harness/aider.js +13 -27
- package/dist/harness/aider.js.map +1 -1
- package/dist/harness/claudeDesktop.d.ts +18 -0
- package/dist/harness/claudeDesktop.d.ts.map +1 -0
- package/dist/harness/claudeDesktop.js +69 -0
- package/dist/harness/claudeDesktop.js.map +1 -0
- package/dist/harness/cline.d.ts +13 -0
- package/dist/harness/cline.d.ts.map +1 -0
- package/dist/harness/cline.js +75 -0
- package/dist/harness/cline.js.map +1 -0
- package/dist/harness/codex.d.ts +4 -4
- package/dist/harness/codex.d.ts.map +1 -1
- package/dist/harness/codex.js +33 -21
- package/dist/harness/codex.js.map +1 -1
- package/dist/harness/continue.d.ts +14 -0
- package/dist/harness/continue.d.ts.map +1 -0
- package/dist/harness/continue.js +97 -0
- package/dist/harness/continue.js.map +1 -0
- package/dist/harness/cursor.d.ts +13 -1
- package/dist/harness/cursor.d.ts.map +1 -1
- package/dist/harness/cursor.js +59 -3
- package/dist/harness/cursor.js.map +1 -1
- package/dist/harness/detector.d.ts +1 -1
- package/dist/harness/detector.d.ts.map +1 -1
- package/dist/harness/detector.js +13 -1
- package/dist/harness/detector.js.map +1 -1
- package/dist/harness/goose.d.ts +13 -0
- package/dist/harness/goose.d.ts.map +1 -0
- package/dist/harness/goose.js +45 -0
- package/dist/harness/goose.js.map +1 -0
- package/dist/harness/n8n.d.ts +8 -4
- package/dist/harness/n8n.d.ts.map +1 -1
- package/dist/harness/n8n.js +108 -13
- package/dist/harness/n8n.js.map +1 -1
- package/dist/harness/openWebUI.d.ts +13 -0
- package/dist/harness/openWebUI.d.ts.map +1 -0
- package/dist/harness/openWebUI.js +25 -0
- package/dist/harness/openWebUI.js.map +1 -0
- package/dist/harness/openhands.d.ts +3 -3
- package/dist/harness/openhands.d.ts.map +1 -1
- package/dist/harness/openhands.js +13 -9
- package/dist/harness/openhands.js.map +1 -1
- package/dist/harness/rooCode.d.ts +14 -0
- package/dist/harness/rooCode.d.ts.map +1 -0
- package/dist/harness/rooCode.js +77 -0
- package/dist/harness/rooCode.js.map +1 -0
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/harness/types.js +6 -0
- package/dist/harness/types.js.map +1 -1
- package/dist/harness/vscodeSettingsWriter.d.ts +40 -0
- package/dist/harness/vscodeSettingsWriter.d.ts.map +1 -0
- package/dist/harness/vscodeSettingsWriter.js +116 -0
- package/dist/harness/vscodeSettingsWriter.js.map +1 -0
- package/dist/harness/windsurf.d.ts +13 -1
- package/dist/harness/windsurf.d.ts.map +1 -1
- package/dist/harness/windsurf.js +58 -3
- package/dist/harness/windsurf.js.map +1 -1
- package/dist/lib/api.d.ts +2 -0
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +3 -0
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/envInjector.d.ts +24 -0
- package/dist/lib/envInjector.d.ts.map +1 -0
- package/dist/lib/envInjector.js +146 -0
- package/dist/lib/envInjector.js.map +1 -0
- package/dist/lib/envInjector.test.d.ts +2 -0
- package/dist/lib/envInjector.test.d.ts.map +1 -0
- package/dist/lib/envInjector.test.js +32 -0
- package/dist/lib/envInjector.test.js.map +1 -0
- package/dist/lib/gitHooks.d.ts +19 -0
- package/dist/lib/gitHooks.d.ts.map +1 -0
- package/dist/lib/gitHooks.js +58 -0
- package/dist/lib/gitHooks.js.map +1 -0
- package/dist/lib/onboarding.d.ts +17 -0
- package/dist/lib/onboarding.d.ts.map +1 -0
- package/dist/lib/onboarding.js +164 -0
- package/dist/lib/onboarding.js.map +1 -0
- package/dist/lib/process.d.ts +53 -0
- package/dist/lib/process.d.ts.map +1 -0
- package/dist/lib/process.js +181 -0
- package/dist/lib/process.js.map +1 -0
- package/dist/lib/process.test.d.ts +2 -0
- package/dist/lib/process.test.d.ts.map +1 -0
- package/dist/lib/process.test.js +44 -0
- package/dist/lib/process.test.js.map +1 -0
- package/package.json +39 -17
package/dist/cli.js
CHANGED
|
@@ -60,12 +60,56 @@ program
|
|
|
60
60
|
.description('Start sync daemon — bidirectional config sync with control plane')
|
|
61
61
|
.option('--dev', 'Use local control plane (http://localhost:3001)')
|
|
62
62
|
.option('--interval <ms>', 'Poll interval in milliseconds', '30000')
|
|
63
|
+
.option('--workspace-id <id>', 'Workspace ID override')
|
|
64
|
+
.option('--api-key <key>', 'Workspace API key override')
|
|
65
|
+
.option('--control-plane-url <url>', 'Control plane URL override')
|
|
63
66
|
.action(async (opts) => {
|
|
64
67
|
const { runConnect } = await import('./commands/connect.js');
|
|
65
68
|
await runConnect(opts);
|
|
66
69
|
});
|
|
70
|
+
program
|
|
71
|
+
.command('sync-context')
|
|
72
|
+
.description('Sync Git context metadata to the local daemon')
|
|
73
|
+
.option('--git', 'Sync Git branch and commit information')
|
|
74
|
+
.option('--branch <name>', 'Current Git branch name')
|
|
75
|
+
.option('--commit <hash>', 'Current Git commit SHA')
|
|
76
|
+
.action(async (opts) => {
|
|
77
|
+
const { runSyncContext } = await import('./commands/syncContext.js');
|
|
78
|
+
await runSyncContext(opts);
|
|
79
|
+
});
|
|
80
|
+
program
|
|
81
|
+
.command('exec')
|
|
82
|
+
.description('Execute a command wrapped with Intutic proxy environment variables')
|
|
83
|
+
.argument('[command...]', 'Command and arguments to execute (e.g. -- claude)')
|
|
84
|
+
.action(async (commandAndArgs) => {
|
|
85
|
+
const { runExec } = await import('./commands/exec.js');
|
|
86
|
+
await runExec(commandAndArgs);
|
|
87
|
+
});
|
|
88
|
+
program
|
|
89
|
+
.command('enterprise-install')
|
|
90
|
+
.description('Install system-level hooks and inject CA certificate (requires root)')
|
|
91
|
+
.option('--proxy-url <url>', 'Proxy URL override', 'https://proxy.intutic.ai/v1')
|
|
92
|
+
.option('--generate-mdm-only', 'Generate MDM manifests only (no privilege required)')
|
|
93
|
+
.action(async (opts) => {
|
|
94
|
+
const { enterpriseInstall } = await import('./commands/enterprise-install.js');
|
|
95
|
+
await enterpriseInstall({
|
|
96
|
+
proxyUrl: opts.proxyUrl,
|
|
97
|
+
generateMdmOnly: opts.generateMdmOnly
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
const sop = program
|
|
101
|
+
.command('sop')
|
|
102
|
+
.description('SOP management and audit commands');
|
|
103
|
+
sop
|
|
104
|
+
.command('audit')
|
|
105
|
+
.description('Audit SOP health — dependency graph, status, and drift report')
|
|
106
|
+
.action(async () => {
|
|
107
|
+
const { runSopAudit } = await import('./commands/sop-audit.js');
|
|
108
|
+
await runSopAudit();
|
|
109
|
+
});
|
|
67
110
|
const traces = program
|
|
68
111
|
.command('traces')
|
|
112
|
+
.alias('trace')
|
|
69
113
|
.description('Query execution traces — list, filter, and inspect');
|
|
70
114
|
traces
|
|
71
115
|
.command('list')
|
|
@@ -88,5 +132,270 @@ traces
|
|
|
88
132
|
const { runTracesInspect } = await import('./commands/traces.js');
|
|
89
133
|
await runTracesInspect(traceId, opts);
|
|
90
134
|
});
|
|
135
|
+
traces
|
|
136
|
+
.command('fork <trace_id>')
|
|
137
|
+
.description('Fork a completed trace with a mutation')
|
|
138
|
+
.requiredOption('--from-step <id>', 'Step ID to fork from')
|
|
139
|
+
.requiredOption('--type <type>', 'Fork mutation type (tool_arg_mutation | sop_config_mutation | model_swap)')
|
|
140
|
+
.option('--args <json>', 'JSON string of tool arg overrides')
|
|
141
|
+
.option('--sop-threshold <val>', 'Override SOP threshold (float)')
|
|
142
|
+
.option('--model <name>', 'Model name for model swap')
|
|
143
|
+
.option('--label <text>', 'Label for this fork')
|
|
144
|
+
.option('--dev', 'Use local control plane (http://localhost:3001)')
|
|
145
|
+
.action(async (traceId, opts) => {
|
|
146
|
+
const { runTracesFork } = await import('./commands/traces.js');
|
|
147
|
+
await runTracesFork(traceId, opts);
|
|
148
|
+
});
|
|
149
|
+
// ── Daemon persistence (WS-5 — Q3 Layer 4) ─────────────────────────────────
|
|
150
|
+
const daemon = program
|
|
151
|
+
.command('daemon')
|
|
152
|
+
.description('Manage the Intutic sync-daemon system service (LaunchAgent / systemd)');
|
|
153
|
+
daemon
|
|
154
|
+
.command('install')
|
|
155
|
+
.alias('install-daemon') // top-level alias for discoverability
|
|
156
|
+
.description('Install sync-daemon as a system service (auto-starts on login, restarts on any exit).\n' +
|
|
157
|
+
' macOS: ~/Library/LaunchAgents/ai.intutic.sync-daemon.plist (KeepAlive: true)\n' +
|
|
158
|
+
' Linux: ~/.config/systemd/user/intutic-sync-daemon.service (Restart=always)\n' +
|
|
159
|
+
'\n' +
|
|
160
|
+
' NOTE: To stop the daemon you MUST use \'intutic daemon uninstall\' or \'launchctl unload\'.\n' +
|
|
161
|
+
' \'intutic disconnect\' alone will NOT stop a daemon-installed service. (TD-154)')
|
|
162
|
+
.requiredOption('--workspace-id <id>', 'Workspace ID (e.g. ws_xxxx)')
|
|
163
|
+
.requiredOption('--api-key <key>', 'Workspace API key (e.g. vk_xxxx)')
|
|
164
|
+
.option('--control-plane-url <url>', 'Control plane URL', 'https://api.intutic.ai')
|
|
165
|
+
.option('--binary-path <path>', 'Path to intutic CLI binary (defaults to current process)')
|
|
166
|
+
.option('--dry-run', 'Print what would be done without writing files')
|
|
167
|
+
.option('--system', 'Install as a system-level service (LaunchDaemon on macOS, systemd system unit on Linux)')
|
|
168
|
+
.action(async (opts) => {
|
|
169
|
+
const { installDaemon } = await import('./commands/install-daemon.js');
|
|
170
|
+
await installDaemon({
|
|
171
|
+
workspaceId: opts.workspaceId,
|
|
172
|
+
apiKey: opts.apiKey,
|
|
173
|
+
controlPlaneUrl: opts.controlPlaneUrl,
|
|
174
|
+
binaryPath: opts.binaryPath,
|
|
175
|
+
dryRun: opts.dryRun,
|
|
176
|
+
system: opts.system,
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
daemon
|
|
180
|
+
.command('uninstall')
|
|
181
|
+
.alias('uninstall-daemon')
|
|
182
|
+
.description('Remove the sync-daemon system service and stop it permanently.')
|
|
183
|
+
.option('--dry-run', 'Print what would be done without writing files')
|
|
184
|
+
.option('--system', 'Uninstall the system-level service')
|
|
185
|
+
.action(async (opts) => {
|
|
186
|
+
const { uninstallDaemon } = await import('./commands/install-daemon.js');
|
|
187
|
+
await uninstallDaemon({ dryRun: opts.dryRun, system: opts.system });
|
|
188
|
+
});
|
|
189
|
+
daemon
|
|
190
|
+
.command('status')
|
|
191
|
+
.description('Show sync-daemon system service status.')
|
|
192
|
+
.action(async () => {
|
|
193
|
+
const { daemonStatus } = await import('./commands/install-daemon.js');
|
|
194
|
+
await daemonStatus();
|
|
195
|
+
});
|
|
196
|
+
daemon
|
|
197
|
+
.command('stop')
|
|
198
|
+
.description('Stop and unload the sync-daemon system service.')
|
|
199
|
+
.action(async () => {
|
|
200
|
+
const { daemonStop } = await import('./commands/install-daemon.js');
|
|
201
|
+
await daemonStop();
|
|
202
|
+
});
|
|
203
|
+
daemon
|
|
204
|
+
.command('start')
|
|
205
|
+
.description('Start and load the sync-daemon system service.')
|
|
206
|
+
.action(async () => {
|
|
207
|
+
const { daemonStart } = await import('./commands/install-daemon.js');
|
|
208
|
+
await daemonStart();
|
|
209
|
+
});
|
|
210
|
+
const mcpDaemon = daemon
|
|
211
|
+
.command('mcp')
|
|
212
|
+
.description('Manage the Intutic mcp-daemon system service');
|
|
213
|
+
mcpDaemon
|
|
214
|
+
.command('install')
|
|
215
|
+
.description('Install mcp-daemon as a system service')
|
|
216
|
+
.requiredOption('--workspace-id <id>', 'Workspace ID')
|
|
217
|
+
.requiredOption('--api-key <key>', 'Workspace API key')
|
|
218
|
+
.option('--control-plane-url <url>', 'Control plane URL', 'https://api.intutic.ai')
|
|
219
|
+
.option('--dry-run', 'Print what would be done without writing files')
|
|
220
|
+
.option('--system', 'Install as a system-level service (LaunchDaemon on macOS, systemd system unit on Linux)')
|
|
221
|
+
.action(async (opts) => {
|
|
222
|
+
const { installMcpDaemon } = await import('./commands/install-daemon.js');
|
|
223
|
+
await installMcpDaemon({
|
|
224
|
+
workspaceId: opts.workspaceId,
|
|
225
|
+
apiKey: opts.apiKey,
|
|
226
|
+
controlPlaneUrl: opts.controlPlaneUrl,
|
|
227
|
+
dryRun: opts.dryRun,
|
|
228
|
+
system: opts.system,
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
mcpDaemon
|
|
232
|
+
.command('uninstall')
|
|
233
|
+
.description('Remove the mcp-daemon system service')
|
|
234
|
+
.option('--dry-run', 'Print what would be done without writing files')
|
|
235
|
+
.option('--system', 'Uninstall the system-level service')
|
|
236
|
+
.action(async (opts) => {
|
|
237
|
+
const { uninstallMcpDaemon } = await import('./commands/install-daemon.js');
|
|
238
|
+
await uninstallMcpDaemon({ dryRun: opts.dryRun, system: opts.system });
|
|
239
|
+
});
|
|
240
|
+
mcpDaemon
|
|
241
|
+
.command('status')
|
|
242
|
+
.description('Show mcp-daemon status')
|
|
243
|
+
.action(async () => {
|
|
244
|
+
const { mcpDaemonStatus } = await import('./commands/install-daemon.js');
|
|
245
|
+
await mcpDaemonStatus();
|
|
246
|
+
});
|
|
247
|
+
mcpDaemon
|
|
248
|
+
.command('start')
|
|
249
|
+
.description('Start the mcp-daemon service')
|
|
250
|
+
.action(async () => {
|
|
251
|
+
const { mcpDaemonStart } = await import('./commands/install-daemon.js');
|
|
252
|
+
await mcpDaemonStart();
|
|
253
|
+
});
|
|
254
|
+
mcpDaemon
|
|
255
|
+
.command('stop')
|
|
256
|
+
.description('Stop the mcp-daemon service')
|
|
257
|
+
.action(async () => {
|
|
258
|
+
const { mcpDaemonStop } = await import('./commands/install-daemon.js');
|
|
259
|
+
await mcpDaemonStop();
|
|
260
|
+
});
|
|
261
|
+
// Top-level shortcuts (for discoverability)
|
|
262
|
+
program
|
|
263
|
+
.command('install-daemon', { hidden: false })
|
|
264
|
+
.description('Shortcut for \'intutic daemon install\' — install sync-daemon as system service')
|
|
265
|
+
.requiredOption('--workspace-id <id>', 'Workspace ID')
|
|
266
|
+
.requiredOption('--api-key <key>', 'Workspace API key')
|
|
267
|
+
.option('--control-plane-url <url>', 'Control plane URL', 'https://api.intutic.ai')
|
|
268
|
+
.option('--binary-path <path>', 'Path to intutic CLI binary')
|
|
269
|
+
.option('--dry-run', 'Print what would be done without writing files')
|
|
270
|
+
.option('--system', 'Install as a system-level service')
|
|
271
|
+
.action(async (opts) => {
|
|
272
|
+
const { installDaemon } = await import('./commands/install-daemon.js');
|
|
273
|
+
await installDaemon({
|
|
274
|
+
workspaceId: opts.workspaceId,
|
|
275
|
+
apiKey: opts.apiKey,
|
|
276
|
+
controlPlaneUrl: opts.controlPlaneUrl,
|
|
277
|
+
binaryPath: opts.binaryPath,
|
|
278
|
+
dryRun: opts.dryRun,
|
|
279
|
+
system: opts.system,
|
|
280
|
+
});
|
|
281
|
+
});
|
|
282
|
+
program
|
|
283
|
+
.command('uninstall-daemon', { hidden: false })
|
|
284
|
+
.description('Shortcut for \'intutic daemon uninstall\'')
|
|
285
|
+
.option('--dry-run', 'Print what would be done without writing files')
|
|
286
|
+
.option('--system', 'Uninstall the system-level service')
|
|
287
|
+
.action(async (opts) => {
|
|
288
|
+
const { uninstallDaemon } = await import('./commands/install-daemon.js');
|
|
289
|
+
await uninstallDaemon({ dryRun: opts.dryRun, system: opts.system });
|
|
290
|
+
});
|
|
291
|
+
// ─── PromptGrade Benchmarks subcommands ─────────────────────────────────────
|
|
292
|
+
const benchmark = program
|
|
293
|
+
.command('benchmark')
|
|
294
|
+
.description('PromptGrade™ benchmark and evaluation commands');
|
|
295
|
+
benchmark
|
|
296
|
+
.command('run')
|
|
297
|
+
.description('Run a benchmark suite against current workspace policies')
|
|
298
|
+
.requiredOption('--suite <id>', 'Benchmark suite ID to run')
|
|
299
|
+
.option('--harness <type>', 'Specific harness to evaluate (e.g. cursor, openhands)')
|
|
300
|
+
.option('--dev', 'Use local control plane (http://localhost:3001)')
|
|
301
|
+
.action(async (opts) => {
|
|
302
|
+
const { runBenchmark } = await import('./commands/benchmark.js');
|
|
303
|
+
await runBenchmark(opts);
|
|
304
|
+
});
|
|
305
|
+
benchmark
|
|
306
|
+
.command('compare <runIdA> <runIdB>')
|
|
307
|
+
.description('Compare two benchmark runs side-by-side')
|
|
308
|
+
.option('--dev', 'Use local control plane (http://localhost:3001)')
|
|
309
|
+
.action(async (runIdA, runIdB, opts) => {
|
|
310
|
+
const { compareBenchmarks } = await import('./commands/benchmark.js');
|
|
311
|
+
await compareBenchmarks(runIdA, runIdB, opts);
|
|
312
|
+
});
|
|
313
|
+
benchmark
|
|
314
|
+
.command('suites')
|
|
315
|
+
.description('List available benchmark suites')
|
|
316
|
+
.option('--dev', 'Use local control plane (http://localhost:3001)')
|
|
317
|
+
.action(async (opts) => {
|
|
318
|
+
const { listSuites } = await import('./commands/benchmark.js');
|
|
319
|
+
await listSuites(opts);
|
|
320
|
+
});
|
|
321
|
+
benchmark
|
|
322
|
+
.command('export <runId>')
|
|
323
|
+
.description('Export benchmark results')
|
|
324
|
+
.option('--format <format>', 'Export format (csv|json)', 'csv')
|
|
325
|
+
.option('--dev', 'Use local control plane (http://localhost:3001)')
|
|
326
|
+
.action(async (runId, opts) => {
|
|
327
|
+
const { exportBenchmark } = await import('./commands/benchmark.js');
|
|
328
|
+
await exportBenchmark(runId, opts);
|
|
329
|
+
});
|
|
330
|
+
const evalCmd = program
|
|
331
|
+
.command('eval')
|
|
332
|
+
.description('Evaluator Sandbox commands');
|
|
333
|
+
evalCmd
|
|
334
|
+
.command('run')
|
|
335
|
+
.description('Trigger a sandboxed evaluation run against a golden dataset')
|
|
336
|
+
.requiredOption('--dataset <id>', 'Dataset ID to evaluate')
|
|
337
|
+
.option('--dev', 'Use local control plane (http://localhost:3001)')
|
|
338
|
+
.action(async (opts) => {
|
|
339
|
+
const { runEval } = await import('./commands/eval.js');
|
|
340
|
+
await runEval(opts);
|
|
341
|
+
});
|
|
342
|
+
const exportCmd = program
|
|
343
|
+
.command('export')
|
|
344
|
+
.description('Data warehouse export commands');
|
|
345
|
+
exportCmd
|
|
346
|
+
.command('config')
|
|
347
|
+
.description('List configured export targets, or add a new target bucket')
|
|
348
|
+
.option('--provider <gcs|s3>', 'Storage provider (gcs or s3)')
|
|
349
|
+
.option('--bucket <name>', 'Bucket name')
|
|
350
|
+
.option('--prefix <prefix>', 'Path prefix', 'intutic/exports/')
|
|
351
|
+
.option('--credentials <creds>', 'Plain credentials (GCS JSON or "key:secret" for S3)')
|
|
352
|
+
.option('--region <region>', 'S3 Region (if using AWS S3)')
|
|
353
|
+
.option('--format <csv|parquet|ndjson>', 'Default format')
|
|
354
|
+
.option('--dev', 'Use local control plane (http://localhost:3001)')
|
|
355
|
+
.action(async (opts) => {
|
|
356
|
+
const { runExportConfig } = await import('./commands/export.js');
|
|
357
|
+
await runExportConfig(opts);
|
|
358
|
+
});
|
|
359
|
+
exportCmd
|
|
360
|
+
.command('status')
|
|
361
|
+
.description('List export jobs, or trigger a manual export job')
|
|
362
|
+
.option('--trigger <targetId>', 'Trigger a manual export job for targetId')
|
|
363
|
+
.option('--format <csv|parquet|ndjson>', 'Export format')
|
|
364
|
+
.option('--dev', 'Use local control plane (http://localhost:3001)')
|
|
365
|
+
.action(async (opts) => {
|
|
366
|
+
const { runExportStatus } = await import('./commands/export.js');
|
|
367
|
+
await runExportStatus({
|
|
368
|
+
triggerTarget: opts.trigger,
|
|
369
|
+
format: opts.format,
|
|
370
|
+
dev: opts.dev,
|
|
371
|
+
});
|
|
372
|
+
});
|
|
373
|
+
// ── MDM device enrollment (Remediation Task 5) ─────────────────────────────
|
|
374
|
+
const mdm = program
|
|
375
|
+
.command('mdm')
|
|
376
|
+
.description('MDM device enrollment and network security commands');
|
|
377
|
+
mdm
|
|
378
|
+
.command('enroll')
|
|
379
|
+
.description('Enroll this local device into MDM security constraints')
|
|
380
|
+
.option('--proxy-version <version>', 'Proxy version to enroll', '1.0.0')
|
|
381
|
+
.option('--ca-installed', 'Force mark CA certificate as installed')
|
|
382
|
+
.option('--no-ca-installed', 'Force mark CA certificate as not installed')
|
|
383
|
+
.option('--dns-configured', 'Force mark DNS configuration as active')
|
|
384
|
+
.option('--no-dns-configured', 'Force mark DNS configuration as inactive')
|
|
385
|
+
.option('--firewall-configured', 'Force mark firewall rules as active')
|
|
386
|
+
.option('--no-firewall-configured', 'Force mark firewall rules as inactive')
|
|
387
|
+
.option('--dev', 'Use local control plane (http://localhost:3001)')
|
|
388
|
+
.action(async (opts) => {
|
|
389
|
+
const { runMdmEnroll } = await import('./commands/mdm.js');
|
|
390
|
+
await runMdmEnroll(opts);
|
|
391
|
+
});
|
|
392
|
+
mdm
|
|
393
|
+
.command('status')
|
|
394
|
+
.description('Show local MDM device enrollment and configuration status')
|
|
395
|
+
.option('--dev', 'Use local control plane (http://localhost:3001)')
|
|
396
|
+
.action(async (opts) => {
|
|
397
|
+
const { runMdmStatus } = await import('./commands/mdm.js');
|
|
398
|
+
await runMdmStatus(opts);
|
|
399
|
+
});
|
|
91
400
|
program.parse();
|
|
92
401
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
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"}
|
|
@@ -0,0 +1,211 @@
|
|
|
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
|
+
import { log } from '../lib/logger.js';
|
|
13
|
+
import { loadCredentials } from '../config/store.js';
|
|
14
|
+
import { resolveControlPlaneUrl } from '../config/paths.js';
|
|
15
|
+
import { createApiClient } from '../lib/api.js';
|
|
16
|
+
import pc from 'picocolors';
|
|
17
|
+
function pad(str, width) {
|
|
18
|
+
if (str.length >= width)
|
|
19
|
+
return str.slice(0, width);
|
|
20
|
+
return str + ' '.repeat(width - str.length);
|
|
21
|
+
}
|
|
22
|
+
function renderTable(headers, widths, rows) {
|
|
23
|
+
// Draw header line
|
|
24
|
+
const headerLine = headers.map((h, i) => pad(pc.bold(h), widths[i])).join(' │ ');
|
|
25
|
+
console.log(headerLine);
|
|
26
|
+
console.log(widths.map((w) => '─'.repeat(w)).join('─┼─'));
|
|
27
|
+
// Draw rows
|
|
28
|
+
for (const row of rows) {
|
|
29
|
+
const rowLine = row.map((val, i) => pad(val, widths[i])).join(' │ ');
|
|
30
|
+
console.log(rowLine);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function colorOutcome(outcome, expected) {
|
|
34
|
+
if (outcome === expected) {
|
|
35
|
+
return pc.green(outcome);
|
|
36
|
+
}
|
|
37
|
+
return pc.red(`${outcome} (expected ${expected})`);
|
|
38
|
+
}
|
|
39
|
+
function getGradeColor(score) {
|
|
40
|
+
const num = parseFloat(score);
|
|
41
|
+
if (num >= 0.90)
|
|
42
|
+
return pc.bold(pc.green('A+'));
|
|
43
|
+
if (num >= 0.80)
|
|
44
|
+
return pc.bold(pc.green('A'));
|
|
45
|
+
if (num >= 0.70)
|
|
46
|
+
return pc.bold(pc.yellow('B'));
|
|
47
|
+
if (num >= 0.60)
|
|
48
|
+
return pc.bold(pc.yellow('C'));
|
|
49
|
+
if (num >= 0.50)
|
|
50
|
+
return pc.bold(pc.red('D'));
|
|
51
|
+
return pc.bold(pc.red('F'));
|
|
52
|
+
}
|
|
53
|
+
export async function runBenchmark(opts) {
|
|
54
|
+
const creds = await loadCredentials();
|
|
55
|
+
if (!creds) {
|
|
56
|
+
log.error('Not authenticated. Run `intutic login` first.');
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
const controlPlaneUrl = resolveControlPlaneUrl(opts.dev);
|
|
60
|
+
const client = createApiClient(controlPlaneUrl, creds.apiKey);
|
|
61
|
+
log.header(`Starting PromptGrade™ Run`);
|
|
62
|
+
log.info(`Suite ID: ${pc.bold(opts.suite)}`);
|
|
63
|
+
log.info(`Harness: ${pc.bold(opts.harness || 'generic')}`);
|
|
64
|
+
try {
|
|
65
|
+
// 1. Trigger the benchmark run
|
|
66
|
+
const result = await client.post('/api/v1/benchmarks/runs', {
|
|
67
|
+
workspaceId: creds.workspaceId,
|
|
68
|
+
suiteId: opts.suite,
|
|
69
|
+
triggeredBy: creds.email || 'cli',
|
|
70
|
+
harnessType: opts.harness || 'generic',
|
|
71
|
+
});
|
|
72
|
+
const runId = result.runId;
|
|
73
|
+
log.success(`Run created: ${pc.bold(runId)}. Executing tasks...`);
|
|
74
|
+
// 2. Poll for progress
|
|
75
|
+
let completed = false;
|
|
76
|
+
let attempts = 0;
|
|
77
|
+
const maxAttempts = 120; // 2 minutes max
|
|
78
|
+
while (!completed && attempts < maxAttempts) {
|
|
79
|
+
await new Promise((resolve) => setTimeout(resolve, 1500));
|
|
80
|
+
attempts++;
|
|
81
|
+
const { run } = await client.get(`/api/v1/benchmarks/runs/${runId}`);
|
|
82
|
+
if (run.status === 'completed' || run.status === 'failed') {
|
|
83
|
+
completed = true;
|
|
84
|
+
if (run.status === 'failed') {
|
|
85
|
+
log.error('Benchmark run failed.');
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
// Fetch task results
|
|
89
|
+
const { results } = await client.get(`/api/v1/benchmarks/runs/${runId}/tasks`);
|
|
90
|
+
log.header('Benchmark Tasks Completion Summary');
|
|
91
|
+
const headers = ['Task ID', 'Expected', 'Actual', 'Passed', 'Godel Score', 'Tokens', 'Cost'];
|
|
92
|
+
const widths = [24, 10, 10, 8, 12, 10, 10];
|
|
93
|
+
const rows = results.map((r) => [
|
|
94
|
+
r.taskId,
|
|
95
|
+
r.actualOutcome === 'BLOCK' ? 'BLOCK' : 'ALLOW', // dummy expected since task title not stored here
|
|
96
|
+
r.actualOutcome || 'ALLOW',
|
|
97
|
+
r.passed ? pc.green('✓') : pc.red('✗'),
|
|
98
|
+
parseFloat(r.godelScore || '0').toFixed(2),
|
|
99
|
+
String(r.tokensUsed || 0),
|
|
100
|
+
`$${parseFloat(r.costUsd || '0').toFixed(4)}`
|
|
101
|
+
]);
|
|
102
|
+
renderTable(headers, widths, rows);
|
|
103
|
+
log.header('Overall Evaluation Results');
|
|
104
|
+
log.field('Composite Score', `${run.compositeScore || '0.0000'} (${getGradeColor(run.compositeScore || '0')})`);
|
|
105
|
+
log.field('Tasks Total', String(run.tasksTotal));
|
|
106
|
+
log.field('Tasks Passed', pc.green(String(run.tasksPassed)));
|
|
107
|
+
log.field('Tasks Failed', run.tasksFailed > 0 ? pc.red(String(run.tasksFailed)) : pc.green('0'));
|
|
108
|
+
log.field('Violations Blocked', pc.green(String(run.violationsCaught)));
|
|
109
|
+
log.field('Violations Missed', run.violationsMissed > 0 ? pc.red(String(run.violationsMissed)) : pc.green('0'));
|
|
110
|
+
log.field('Total Token Cost', `$${parseFloat(run.totalCostUsd).toFixed(4)}`);
|
|
111
|
+
log.field('Total Tokens', String(run.totalTokens));
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
process.stdout.write(pc.dim('.'));
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (!completed) {
|
|
118
|
+
log.warn('Benchmark run execution timed out on the CLI. Check the dashboard for status.');
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
log.error(`Failed to execute benchmark run: ${err instanceof Error ? err.message : String(err)}`);
|
|
123
|
+
process.exit(1);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
export async function compareBenchmarks(runIdA, runIdB, opts) {
|
|
127
|
+
const creds = await loadCredentials();
|
|
128
|
+
if (!creds) {
|
|
129
|
+
log.error('Not authenticated. Run `intutic login` first.');
|
|
130
|
+
process.exit(1);
|
|
131
|
+
}
|
|
132
|
+
const controlPlaneUrl = resolveControlPlaneUrl(opts.dev);
|
|
133
|
+
const client = createApiClient(controlPlaneUrl, creds.apiKey);
|
|
134
|
+
log.header(`Comparing Run ${runIdA} vs Run ${runIdB}`);
|
|
135
|
+
try {
|
|
136
|
+
const report = await client.get(`/api/v1/benchmarks/compare/${runIdA}/${runIdB}`);
|
|
137
|
+
log.info(`Score Delta: ${report.scoreDelta >= 0 ? pc.green(`+${report.scoreDelta.toFixed(4)}`) : pc.red(report.scoreDelta.toFixed(4))}`);
|
|
138
|
+
log.field('Run A Composite Score', `${report.runA.compositeScore || '0.0000'} (${getGradeColor(report.runA.compositeScore || '0')})`);
|
|
139
|
+
log.field('Run B Composite Score', `${report.runB.compositeScore || '0.0000'} (${getGradeColor(report.runB.compositeScore || '0')})`);
|
|
140
|
+
log.header('Task Comparison Detail');
|
|
141
|
+
const headers = ['Task Title', 'Expected', 'Outcome A', 'Outcome B', 'Cost Delta', 'Tokens Delta'];
|
|
142
|
+
const widths = [30, 10, 24, 24, 12, 14];
|
|
143
|
+
const rows = report.taskComparisons.map((c) => [
|
|
144
|
+
c.title,
|
|
145
|
+
c.expectedOutcome,
|
|
146
|
+
colorOutcome(c.outcomeA, c.expectedOutcome),
|
|
147
|
+
colorOutcome(c.outcomeB, c.expectedOutcome),
|
|
148
|
+
c.costDelta === 0 ? '$0.0000' : (c.costDelta > 0 ? pc.red(`+$${c.costDelta.toFixed(4)}`) : pc.green(`-$${Math.abs(c.costDelta).toFixed(4)}`)),
|
|
149
|
+
c.tokenDelta === 0 ? '0' : (c.tokenDelta > 0 ? pc.red(`+${c.tokenDelta}`) : pc.green(`${c.tokenDelta}`))
|
|
150
|
+
]);
|
|
151
|
+
renderTable(headers, widths, rows);
|
|
152
|
+
}
|
|
153
|
+
catch (err) {
|
|
154
|
+
log.error(`Failed to compare benchmarks: ${err instanceof Error ? err.message : String(err)}`);
|
|
155
|
+
process.exit(1);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
export async function listSuites(opts) {
|
|
159
|
+
const creds = await loadCredentials();
|
|
160
|
+
if (!creds) {
|
|
161
|
+
log.error('Not authenticated. Run `intutic login` first.');
|
|
162
|
+
process.exit(1);
|
|
163
|
+
}
|
|
164
|
+
const controlPlaneUrl = resolveControlPlaneUrl(opts.dev);
|
|
165
|
+
const client = createApiClient(controlPlaneUrl, creds.apiKey);
|
|
166
|
+
log.header('PromptGrade™ Benchmark Suites');
|
|
167
|
+
try {
|
|
168
|
+
const { suites } = await client.get(`/api/v1/benchmarks/suites?workspaceId=${creds.workspaceId}`);
|
|
169
|
+
const headers = ['Suite ID', 'Name', 'Tasks', 'Type'];
|
|
170
|
+
const widths = [32, 30, 8, 12];
|
|
171
|
+
const rows = suites.map((s) => [
|
|
172
|
+
s.suiteId,
|
|
173
|
+
s.name,
|
|
174
|
+
String(s.taskCount),
|
|
175
|
+
s.isBuiltin ? pc.cyan('Built-in') : pc.yellow('Custom')
|
|
176
|
+
]);
|
|
177
|
+
renderTable(headers, widths, rows);
|
|
178
|
+
}
|
|
179
|
+
catch (err) {
|
|
180
|
+
log.error(`Failed to list suites: ${err instanceof Error ? err.message : String(err)}`);
|
|
181
|
+
process.exit(1);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
export async function exportBenchmark(runId, opts) {
|
|
185
|
+
const creds = await loadCredentials();
|
|
186
|
+
if (!creds) {
|
|
187
|
+
log.error('Not authenticated. Run `intutic login` first.');
|
|
188
|
+
process.exit(1);
|
|
189
|
+
}
|
|
190
|
+
const controlPlaneUrl = resolveControlPlaneUrl(opts.dev);
|
|
191
|
+
const client = createApiClient(controlPlaneUrl, creds.apiKey);
|
|
192
|
+
try {
|
|
193
|
+
const { run } = await client.get(`/api/v1/benchmarks/runs/${runId}`);
|
|
194
|
+
const { results } = await client.get(`/api/v1/benchmarks/runs/${runId}/tasks`);
|
|
195
|
+
if (opts.format === 'json') {
|
|
196
|
+
console.log(JSON.stringify({ run, results }, null, 2));
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
// CSV format
|
|
200
|
+
console.log('Result ID,Task ID,Expected Outcome,Actual Outcome,Passed,Godel Score,Tokens Used,Cost USD,Latency MS,Error Detail');
|
|
201
|
+
for (const r of results) {
|
|
202
|
+
console.log(`"${r.resultId}","${r.taskId}","BLOCK","${r.actualOutcome || ''}","${r.passed ? 'true' : 'false'}","${r.godelScore || ''}","${r.tokensUsed || 0}","${r.costUsd || ''}","${r.latencyMs || 0}","${r.errorDetail || ''}"`);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
catch (err) {
|
|
207
|
+
log.error(`Failed to export benchmark: ${err instanceof Error ? err.message : String(err)}`);
|
|
208
|
+
process.exit(1);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=benchmark.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../../src/commands/benchmark.ts"],"names":[],"mappings":"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"}
|