@intutic/cli 2.1.0 → 2.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.
- package/README.md +8 -8
- package/dist/cli.d.ts +0 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +492 -21
- package/dist/cli.js.map +1 -1
- package/dist/commands/apiCommand.d.ts +40 -0
- package/dist/commands/apiCommand.d.ts.map +1 -0
- package/dist/commands/apiCommand.js +88 -0
- package/dist/commands/apiCommand.js.map +1 -0
- package/dist/commands/budget.d.ts +4 -0
- package/dist/commands/budget.d.ts.map +1 -1
- package/dist/commands/budget.js +8 -0
- package/dist/commands/budget.js.map +1 -1
- package/dist/commands/compliance.d.ts +122 -0
- package/dist/commands/compliance.d.ts.map +1 -0
- package/dist/commands/compliance.js +278 -0
- package/dist/commands/compliance.js.map +1 -0
- package/dist/commands/connect.d.ts +26 -1
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +222 -86
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/credentials.d.ts +1 -1
- package/dist/commands/credentials.js +1 -1
- package/dist/commands/decision.d.ts +4 -4
- package/dist/commands/decision.js +4 -4
- package/dist/commands/disconnect.d.ts +29 -0
- package/dist/commands/disconnect.d.ts.map +1 -0
- package/dist/commands/disconnect.js +266 -0
- package/dist/commands/disconnect.js.map +1 -0
- package/dist/commands/doctor.d.ts +0 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +0 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/enforce.d.ts +1 -1
- package/dist/commands/enforce.js +1 -1
- package/dist/commands/enterprise.d.ts +3 -2
- package/dist/commands/enterprise.d.ts.map +1 -1
- package/dist/commands/enterprise.js +11 -3
- package/dist/commands/enterprise.js.map +1 -1
- package/dist/commands/env.d.ts +1 -1
- package/dist/commands/env.d.ts.map +1 -1
- package/dist/commands/env.js +3 -8
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/exec.d.ts +2 -3
- package/dist/commands/exec.d.ts.map +1 -1
- package/dist/commands/exec.js +4 -5
- package/dist/commands/exec.js.map +1 -1
- package/dist/commands/gateLiveness.d.ts +15 -0
- package/dist/commands/gateLiveness.d.ts.map +1 -0
- package/dist/commands/gateLiveness.js +34 -0
- package/dist/commands/gateLiveness.js.map +1 -0
- package/dist/commands/gateway.d.ts +16 -4
- package/dist/commands/gateway.d.ts.map +1 -1
- package/dist/commands/gateway.js +47 -6
- package/dist/commands/gateway.js.map +1 -1
- package/dist/commands/github.d.ts +20 -0
- package/dist/commands/github.d.ts.map +1 -0
- package/dist/commands/github.js +41 -0
- package/dist/commands/github.js.map +1 -0
- package/dist/commands/guardrails.d.ts +28 -2
- package/dist/commands/guardrails.d.ts.map +1 -1
- package/dist/commands/guardrails.js +233 -24
- package/dist/commands/guardrails.js.map +1 -1
- package/dist/commands/init.d.ts +1 -2
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +3 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install-daemon.d.ts +1 -1
- package/dist/commands/install-daemon.js +2 -2
- package/dist/commands/integrity.d.ts +10 -2
- package/dist/commands/integrity.d.ts.map +1 -1
- package/dist/commands/integrity.js +10 -3
- package/dist/commands/integrity.js.map +1 -1
- package/dist/commands/inventory.d.ts +60 -0
- package/dist/commands/inventory.d.ts.map +1 -0
- package/dist/commands/inventory.js +141 -0
- package/dist/commands/inventory.js.map +1 -0
- package/dist/commands/judge.d.ts +1 -1
- package/dist/commands/judge.js +2 -2
- package/dist/commands/judge.js.map +1 -1
- package/dist/commands/login.d.ts +0 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +0 -1
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts +0 -1
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +0 -1
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/mcp.d.ts +31 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +65 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/notifications.d.ts +54 -0
- package/dist/commands/notifications.d.ts.map +1 -0
- package/dist/commands/notifications.js +151 -0
- package/dist/commands/notifications.js.map +1 -0
- package/dist/commands/org.d.ts +3 -3
- package/dist/commands/org.js +3 -3
- package/dist/commands/policy.d.ts +6 -1
- package/dist/commands/policy.d.ts.map +1 -1
- package/dist/commands/policy.js +77 -37
- package/dist/commands/policy.js.map +1 -1
- package/dist/commands/predict-cost.d.ts +1 -2
- package/dist/commands/predict-cost.d.ts.map +1 -1
- package/dist/commands/predict-cost.js +1 -4
- package/dist/commands/predict-cost.js.map +1 -1
- package/dist/commands/rollback.d.ts.map +1 -1
- package/dist/commands/rollback.js +3 -1
- package/dist/commands/rollback.js.map +1 -1
- package/dist/commands/routing.d.ts +1 -1
- package/dist/commands/routing.js +1 -1
- package/dist/commands/rules.d.ts +74 -0
- package/dist/commands/rules.d.ts.map +1 -0
- package/dist/commands/rules.js +283 -0
- package/dist/commands/rules.js.map +1 -0
- package/dist/commands/settings.d.ts +43 -0
- package/dist/commands/settings.d.ts.map +1 -0
- package/dist/commands/settings.js +108 -0
- package/dist/commands/settings.js.map +1 -0
- package/dist/commands/setup.d.ts +1 -1
- package/dist/commands/setup.js +1 -1
- package/dist/commands/siem.d.ts +53 -0
- package/dist/commands/siem.d.ts.map +1 -0
- package/dist/commands/siem.js +132 -0
- package/dist/commands/siem.js.map +1 -0
- package/dist/commands/skill.d.ts +5 -5
- package/dist/commands/skill.js +7 -7
- package/dist/commands/skill.js.map +1 -1
- package/dist/commands/status.d.ts +0 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +2 -3
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/syncContext.d.ts +0 -1
- package/dist/commands/syncContext.d.ts.map +1 -1
- package/dist/commands/syncContext.js +0 -1
- package/dist/commands/syncContext.js.map +1 -1
- package/dist/commands/team.d.ts +2 -2
- package/dist/commands/team.js +2 -2
- package/dist/commands/traces.d.ts +0 -3
- package/dist/commands/traces.d.ts.map +1 -1
- package/dist/commands/traces.js +0 -3
- package/dist/commands/traces.js.map +1 -1
- package/dist/commands/usage.d.ts +41 -0
- package/dist/commands/usage.d.ts.map +1 -0
- package/dist/commands/usage.js +129 -0
- package/dist/commands/usage.js.map +1 -0
- package/dist/commands/whoami.d.ts +0 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +0 -1
- package/dist/commands/whoami.js.map +1 -1
- package/dist/config/keychain.d.ts +0 -1
- package/dist/config/keychain.d.ts.map +1 -1
- package/dist/config/keychain.js +0 -1
- package/dist/config/keychain.js.map +1 -1
- package/dist/config/paths.d.ts +0 -1
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +0 -1
- package/dist/config/paths.js.map +1 -1
- package/dist/config/store.d.ts +0 -1
- package/dist/config/store.d.ts.map +1 -1
- package/dist/config/store.js +0 -1
- package/dist/config/store.js.map +1 -1
- package/dist/harness/ag2.d.ts +1 -1
- package/dist/harness/ag2.js +1 -1
- package/dist/harness/agentFramework.d.ts +1 -1
- package/dist/harness/agentFramework.js +1 -1
- package/dist/harness/agenticOrchestrator.d.ts +4 -6
- package/dist/harness/agenticOrchestrator.d.ts.map +1 -1
- package/dist/harness/agenticOrchestrator.js +5 -7
- package/dist/harness/agenticOrchestrator.js.map +1 -1
- package/dist/harness/agentsMd.d.ts +24 -0
- package/dist/harness/agentsMd.d.ts.map +1 -0
- package/dist/harness/agentsMd.js +28 -0
- package/dist/harness/agentsMd.js.map +1 -0
- package/dist/harness/aider.d.ts +3 -1
- package/dist/harness/aider.d.ts.map +1 -1
- package/dist/harness/aider.js +9 -7
- package/dist/harness/aider.js.map +1 -1
- package/dist/harness/antigravity.d.ts +23 -5
- package/dist/harness/antigravity.d.ts.map +1 -1
- package/dist/harness/antigravity.js +45 -54
- package/dist/harness/antigravity.js.map +1 -1
- package/dist/harness/autogen.d.ts +1 -1
- package/dist/harness/autogen.js +2 -2
- package/dist/harness/autogen.js.map +1 -1
- package/dist/harness/claudeCode.d.ts +22 -1
- package/dist/harness/claudeCode.d.ts.map +1 -1
- package/dist/harness/claudeCode.js +47 -3
- package/dist/harness/claudeCode.js.map +1 -1
- package/dist/harness/cline.d.ts.map +1 -1
- package/dist/harness/cline.js +16 -24
- package/dist/harness/cline.js.map +1 -1
- package/dist/harness/codex.d.ts +6 -1
- package/dist/harness/codex.d.ts.map +1 -1
- package/dist/harness/codex.js +26 -28
- package/dist/harness/codex.js.map +1 -1
- package/dist/harness/continue.d.ts +10 -4
- package/dist/harness/continue.d.ts.map +1 -1
- package/dist/harness/continue.js +22 -22
- package/dist/harness/continue.js.map +1 -1
- package/dist/harness/cursor.d.ts +5 -2
- package/dist/harness/cursor.d.ts.map +1 -1
- package/dist/harness/cursor.js +19 -27
- package/dist/harness/cursor.js.map +1 -1
- package/dist/harness/detector.d.ts +0 -1
- package/dist/harness/detector.d.ts.map +1 -1
- package/dist/harness/detector.js +0 -1
- package/dist/harness/detector.js.map +1 -1
- package/dist/harness/dsh.d.ts +5 -3
- package/dist/harness/dsh.d.ts.map +1 -1
- package/dist/harness/dsh.js +17 -29
- package/dist/harness/dsh.js.map +1 -1
- package/dist/harness/eve.d.ts +3 -4
- package/dist/harness/eve.d.ts.map +1 -1
- package/dist/harness/eve.js +3 -4
- package/dist/harness/eve.js.map +1 -1
- package/dist/harness/githubCopilot.d.ts +4 -1
- package/dist/harness/githubCopilot.d.ts.map +1 -1
- package/dist/harness/githubCopilot.js +13 -24
- package/dist/harness/githubCopilot.js.map +1 -1
- package/dist/harness/goose.d.ts +7 -3
- package/dist/harness/goose.d.ts.map +1 -1
- package/dist/harness/goose.js +18 -21
- package/dist/harness/goose.js.map +1 -1
- package/dist/harness/grok.d.ts +2 -2
- package/dist/harness/grok.d.ts.map +1 -1
- package/dist/harness/grok.js +15 -28
- package/dist/harness/grok.js.map +1 -1
- package/dist/harness/hermes.d.ts +6 -0
- package/dist/harness/hermes.d.ts.map +1 -1
- package/dist/harness/hermes.js +17 -16
- package/dist/harness/hermes.js.map +1 -1
- package/dist/harness/jsSdkGatedAdapter.d.ts.map +1 -1
- package/dist/harness/jsSdkGatedAdapter.js +4 -6
- package/dist/harness/jsSdkGatedAdapter.js.map +1 -1
- package/dist/harness/langgraph.d.ts.map +1 -1
- package/dist/harness/langgraph.js +4 -6
- package/dist/harness/langgraph.js.map +1 -1
- package/dist/harness/muse.d.ts +3 -7
- package/dist/harness/muse.d.ts.map +1 -1
- package/dist/harness/muse.js +17 -39
- package/dist/harness/muse.js.map +1 -1
- package/dist/harness/n8n.d.ts +13 -7
- package/dist/harness/n8n.d.ts.map +1 -1
- package/dist/harness/n8n.js +21 -127
- package/dist/harness/n8n.js.map +1 -1
- package/dist/harness/openWebUI.d.ts.map +1 -1
- package/dist/harness/openWebUI.js +5 -4
- package/dist/harness/openWebUI.js.map +1 -1
- package/dist/harness/openaiAgents.d.ts +1 -1
- package/dist/harness/openaiAgents.d.ts.map +1 -1
- package/dist/harness/openaiAgents.js +6 -3
- package/dist/harness/openaiAgents.js.map +1 -1
- package/dist/harness/openclaw.d.ts +8 -0
- package/dist/harness/openclaw.d.ts.map +1 -1
- package/dist/harness/openclaw.js +27 -12
- package/dist/harness/openclaw.js.map +1 -1
- package/dist/harness/opencode.d.ts +4 -5
- package/dist/harness/opencode.d.ts.map +1 -1
- package/dist/harness/opencode.js +17 -34
- package/dist/harness/opencode.js.map +1 -1
- package/dist/harness/openhands.d.ts +9 -3
- package/dist/harness/openhands.d.ts.map +1 -1
- package/dist/harness/openhands.js +43 -25
- package/dist/harness/openhands.js.map +1 -1
- package/dist/harness/pi.d.ts +7 -2
- package/dist/harness/pi.d.ts.map +1 -1
- package/dist/harness/pi.js +19 -18
- package/dist/harness/pi.js.map +1 -1
- package/dist/harness/rooCode.d.ts +12 -5
- package/dist/harness/rooCode.d.ts.map +1 -1
- package/dist/harness/rooCode.js +25 -43
- package/dist/harness/rooCode.js.map +1 -1
- package/dist/harness/rulesFiles.d.ts +53 -0
- package/dist/harness/rulesFiles.d.ts.map +1 -0
- package/dist/harness/rulesFiles.js +106 -0
- package/dist/harness/rulesFiles.js.map +1 -0
- package/dist/harness/sdkGatedAdapter.d.ts.map +1 -1
- package/dist/harness/sdkGatedAdapter.js +4 -6
- package/dist/harness/sdkGatedAdapter.js.map +1 -1
- package/dist/harness/smolagents.d.ts +2 -2
- package/dist/harness/smolagents.js +3 -3
- package/dist/harness/smolagents.js.map +1 -1
- package/dist/harness/types.d.ts +20 -6
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/harness/types.js +1 -95
- package/dist/harness/types.js.map +1 -1
- package/dist/harness/windsurf.d.ts +7 -2
- package/dist/harness/windsurf.d.ts.map +1 -1
- package/dist/harness/windsurf.js +22 -29
- package/dist/harness/windsurf.js.map +1 -1
- package/dist/harness/xirp.d.ts +6 -9
- package/dist/harness/xirp.d.ts.map +1 -1
- package/dist/harness/xirp.js +7 -10
- package/dist/harness/xirp.js.map +1 -1
- package/dist/lib/api.d.ts +27 -1
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +55 -18
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/ciscoScanner.d.ts +1 -1
- package/dist/lib/ciscoScanner.js +1 -1
- package/dist/lib/decisionsLogRefresh.d.ts.map +1 -1
- package/dist/lib/decisionsLogRefresh.js +6 -7
- package/dist/lib/decisionsLogRefresh.js.map +1 -1
- package/dist/lib/deviceReport.d.ts +15 -0
- package/dist/lib/deviceReport.d.ts.map +1 -1
- package/dist/lib/deviceReport.js +30 -0
- package/dist/lib/deviceReport.js.map +1 -1
- package/dist/lib/envInjector.d.ts +16 -6
- package/dist/lib/envInjector.d.ts.map +1 -1
- package/dist/lib/envInjector.js +99 -88
- package/dist/lib/envInjector.js.map +1 -1
- package/dist/lib/gitHooks.d.ts +0 -1
- package/dist/lib/gitHooks.d.ts.map +1 -1
- package/dist/lib/gitHooks.js +8 -9
- package/dist/lib/gitHooks.js.map +1 -1
- package/dist/lib/gracefulShutdown.d.ts +1 -1
- package/dist/lib/gracefulShutdown.js +1 -1
- package/dist/lib/hash.d.ts +0 -1
- package/dist/lib/hash.d.ts.map +1 -1
- package/dist/lib/hash.js +0 -1
- package/dist/lib/hash.js.map +1 -1
- package/dist/lib/inventory.d.ts +47 -0
- package/dist/lib/inventory.d.ts.map +1 -0
- package/dist/lib/inventory.js +106 -0
- package/dist/lib/inventory.js.map +1 -0
- package/dist/lib/logger.d.ts +0 -1
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +0 -1
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/mdmManifest.d.ts +30 -2
- package/dist/lib/mdmManifest.d.ts.map +1 -1
- package/dist/lib/mdmManifest.js +50 -2
- package/dist/lib/mdmManifest.js.map +1 -1
- package/dist/lib/onboarding.d.ts +0 -1
- package/dist/lib/onboarding.d.ts.map +1 -1
- package/dist/lib/onboarding.js +2 -3
- package/dist/lib/onboarding.js.map +1 -1
- package/dist/lib/otelPropagation.d.ts +1 -1
- package/dist/lib/otelPropagation.js +1 -1
- package/dist/lib/policySnapshot.d.ts +3 -1
- package/dist/lib/policySnapshot.d.ts.map +1 -1
- package/dist/lib/policySnapshot.js +15 -5
- package/dist/lib/policySnapshot.js.map +1 -1
- package/dist/lib/process.d.ts +5 -1
- package/dist/lib/process.d.ts.map +1 -1
- package/dist/lib/process.js +13 -4
- package/dist/lib/process.js.map +1 -1
- package/dist/lib/providerProbe.d.ts +2 -2
- package/dist/lib/providerProbe.js +2 -2
- package/dist/lib/sandbox/firecracker.d.ts +3 -3
- package/dist/lib/sandbox/firecracker.js +3 -3
- package/dist/lib/sandbox/index.d.ts +2 -2
- package/dist/lib/sandbox/index.js +2 -2
- package/dist/lib/sandbox/oci.d.ts +1 -1
- package/dist/lib/sandbox/oci.js +1 -1
- package/dist/lib/sandbox/types.d.ts +1 -1
- package/dist/lib/sandbox/types.js +1 -1
- package/dist/lib/sopFrontMatter.d.ts +1 -1
- package/dist/lib/sopFrontMatter.js +1 -1
- package/package.json +6 -5
- package/resources/sandbox/Dockerfile +1 -1
- package/resources/sandbox/entrypoint.sh +4 -4
- package/resources/sandbox/firecracker-launch.sh +1 -1
- package/dist/harness/base.d.ts +0 -20
- package/dist/harness/base.d.ts.map +0 -1
- package/dist/harness/base.js +0 -73
- package/dist/harness/base.js.map +0 -1
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `intutic inventory` — the AI harnesses, MCP servers and skill bundles on
|
|
3
|
+
* every connected developer machine, and which of them run ungoverned.
|
|
4
|
+
*
|
|
5
|
+
* Subcommands:
|
|
6
|
+
* - `intutic inventory summary [--json]`
|
|
7
|
+
* - `intutic inventory devices [--json]`
|
|
8
|
+
* - `intutic inventory harnesses|mcp-servers [filters] [--csv] [--out <file>] [--json]`
|
|
9
|
+
* - `intutic inventory skills [--device <id>] [--search <text>] [--json]`
|
|
10
|
+
* - `intutic inventory disconnects [--limit <n>] [--json]`
|
|
11
|
+
*
|
|
12
|
+
* Server side: `GET /api/v1/inventory/{summary,devices,harnesses,mcp-servers,skills,disconnects}`
|
|
13
|
+
* (services/control-plane/src/routes/inventory.ts); the harness and MCP
|
|
14
|
+
* server lists filter on the server and serve the same CSV the dashboard
|
|
15
|
+
* downloads (`format=csv`). The skills list filters by machine and text only
|
|
16
|
+
* and has no CSV, as on the dashboard.
|
|
17
|
+
* OWNER, ADMIN and EM see every machine, a DEVELOPER only their own.
|
|
18
|
+
*
|
|
19
|
+
* @module
|
|
20
|
+
*/
|
|
21
|
+
import pc from 'picocolors';
|
|
22
|
+
import { log } from '../lib/logger.js';
|
|
23
|
+
import { positiveInt, runApiCommand, writeOutput } from './apiCommand.js';
|
|
24
|
+
/** The route's query string for the given filters, plus `format=csv` when asked. */
|
|
25
|
+
export function inventoryQuery(opts) {
|
|
26
|
+
const q = new URLSearchParams();
|
|
27
|
+
if (opts.status)
|
|
28
|
+
q.set('status', opts.status);
|
|
29
|
+
if (opts.harness)
|
|
30
|
+
q.set('harness', opts.harness);
|
|
31
|
+
if (opts.device)
|
|
32
|
+
q.set('device', opts.device);
|
|
33
|
+
if (opts.search)
|
|
34
|
+
q.set('q', opts.search);
|
|
35
|
+
if (opts.csv)
|
|
36
|
+
q.set('format', 'csv');
|
|
37
|
+
const s = q.toString();
|
|
38
|
+
return s ? `?${s}` : '';
|
|
39
|
+
}
|
|
40
|
+
function statusLabel(status) {
|
|
41
|
+
return status === 'governed' ? pc.green(status) : status === 'ungoverned' ? pc.red(status) : pc.yellow(status);
|
|
42
|
+
}
|
|
43
|
+
/** `intutic inventory summary` */
|
|
44
|
+
export async function runInventorySummary(opts) {
|
|
45
|
+
await runApiCommand(opts, 'Failed to read the AI inventory', async (client) => (await client.get('/api/v1/inventory/summary')).data, (s) => {
|
|
46
|
+
log.header('Intutic — AI Inventory');
|
|
47
|
+
log.field('Machines', `${s.devices} (${s.staleDevices} stale)`);
|
|
48
|
+
log.field('Harnesses', `${s.harnesses}: ${s.governedHarnesses} governed${s.governedPercent === null ? '' : ` (${s.governedPercent}%)`}, ` +
|
|
49
|
+
`${s.ungovernedHarnesses} ungoverned, ${s.staleGates} with a stale gate, ${s.unverifiedHarnesses} unverified`);
|
|
50
|
+
log.field('MCP servers', `${s.mcpServers}: ${s.ungovernedMcpServers} ungoverned`);
|
|
51
|
+
log.field('Skills', String(s.skills));
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
async function runInventoryList(view, opts, title, print) {
|
|
55
|
+
const path = `/api/v1/inventory/${view}${inventoryQuery(opts)}`;
|
|
56
|
+
if (opts.csv) {
|
|
57
|
+
await runApiCommand(
|
|
58
|
+
// The output is the CSV itself.
|
|
59
|
+
{ dev: opts.dev }, `Failed to export ${view}`, (client) => client.getFile(path), (bytes) => writeOutput(bytes, opts.out, view));
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
await runApiCommand(opts, `Failed to list ${view}`, (client) => client.get(path), (res) => {
|
|
63
|
+
log.header(`Intutic — ${title}`);
|
|
64
|
+
if (res.data.length === 0) {
|
|
65
|
+
log.dim(' Nothing reported.');
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
for (const r of res.data)
|
|
69
|
+
print(r);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/** `intutic inventory harnesses` */
|
|
73
|
+
export async function runInventoryHarnesses(opts) {
|
|
74
|
+
await runInventoryList('harnesses', opts, 'Harnesses', (r) => {
|
|
75
|
+
console.log(` ${r.hostname}${r.deviceStale ? pc.dim(' (stale)') : ''} ${r.harness}${r.version ? ` ${r.version}` : ''} ${statusLabel(r.status)}`);
|
|
76
|
+
if (r.reasonText)
|
|
77
|
+
log.dim(` ${r.reasonText}`);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/** `intutic inventory mcp-servers` */
|
|
81
|
+
export async function runInventoryMcpServers(opts) {
|
|
82
|
+
await runInventoryList('mcp-servers', opts, 'MCP Servers', (r) => {
|
|
83
|
+
console.log(` ${r.hostname}${r.deviceStale ? pc.dim(' (stale)') : ''} ${r.server} (${r.harness}, ${r.transport}) ${statusLabel(r.status)}`);
|
|
84
|
+
if (r.reason)
|
|
85
|
+
log.dim(` ${r.reason}`);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/** A skill bundle's content scan, as the dashboard's Content scan column says it. */
|
|
89
|
+
export function skillScanLabel(r) {
|
|
90
|
+
if (!r.scanned)
|
|
91
|
+
return pc.yellow('not readable');
|
|
92
|
+
if (r.clean)
|
|
93
|
+
return pc.green('clean');
|
|
94
|
+
return pc.yellow(`${r.findingsCount} finding${r.findingsCount === 1 ? '' : 's'}`);
|
|
95
|
+
}
|
|
96
|
+
/** `intutic inventory skills` */
|
|
97
|
+
export async function runInventorySkills(opts) {
|
|
98
|
+
await runApiCommand(opts, 'Failed to list skills', (client) => client.get(`/api/v1/inventory/skills${inventoryQuery({ device: opts.device, search: opts.search })}`), (res) => {
|
|
99
|
+
log.header('Intutic — Skills');
|
|
100
|
+
if (res.data.length === 0) {
|
|
101
|
+
log.dim(' Nothing reported.');
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
for (const r of res.data) {
|
|
105
|
+
const files = `${r.scriptCount} bundled file${r.scriptCount === 1 ? '' : 's'}`;
|
|
106
|
+
console.log(` ${r.hostname}${r.deviceStale ? pc.dim(' (stale)') : ''} ${r.name} (${r.source}) ${skillScanLabel(r)} ${pc.dim(files)}`);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
/** `intutic inventory devices`: one line per machine, its id first, for `--device`. */
|
|
111
|
+
export async function runInventoryDevices(opts) {
|
|
112
|
+
await runApiCommand(opts, 'Failed to list machines', (client) => client.get('/api/v1/inventory/devices'), (res) => {
|
|
113
|
+
log.header('Intutic — Machines');
|
|
114
|
+
if (res.data.length === 0) {
|
|
115
|
+
log.dim(' Nothing reported.');
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
for (const d of res.data) {
|
|
119
|
+
const state = d.disconnectedAt ? pc.dim(` (disconnected ${d.disconnectedAt})`) : d.stale ? pc.dim(' (stale)') : '';
|
|
120
|
+
console.log(` ${d.deviceId} ${d.hostname}${state} ${d.platform}${d.cliVersion ? `, CLI ${d.cliVersion}` : ''}`);
|
|
121
|
+
log.dim(` ${d.harnesses} harness${d.harnesses === 1 ? '' : 'es'}, ${d.ungovernedHarnesses} ungoverned, ` +
|
|
122
|
+
`${d.staleGates} with a stale gate; last report ${d.lastSeenAt}${d.reportedBy ? ` by ${d.reportedBy}` : ''}`);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
/** `intutic inventory disconnects`: machines that ran `intutic disconnect`, newest first. */
|
|
127
|
+
export async function runInventoryDisconnects(opts) {
|
|
128
|
+
const query = opts.limit === undefined ? '' : `?limit=${positiveInt(opts.limit, '--limit')}`;
|
|
129
|
+
await runApiCommand(opts, 'Failed to list disconnects', (client) => client.get(`/api/v1/inventory/disconnects${query}`), (res) => {
|
|
130
|
+
log.header('Intutic — Disconnects');
|
|
131
|
+
if (res.data.length === 0) {
|
|
132
|
+
log.dim(' No machine has disconnected.');
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
for (const r of res.data) {
|
|
136
|
+
const what = r.scope === 'machine' ? 'every harness' : r.harnesses.join(', ');
|
|
137
|
+
console.log(` ${r.createdAt} ${r.hostname} ${what}${r.reportedBy ? pc.dim(` by ${r.reportedBy}`) : ''}`);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=inventory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inventory.js","sourceRoot":"","sources":["../../src/commands/inventory.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/judge.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `intutic judge configure` — generate the local artifacts an on-prem
|
|
3
|
-
* LLM-as-judge needs (
|
|
3
|
+
* LLM-as-judge needs (model catalog & cohort wizard).
|
|
4
4
|
*
|
|
5
5
|
* Judges run only on self-hosted models (owner rule, 2026-10-03): the picker
|
|
6
6
|
* offers `selfHostedJudgeModelChoices()`, and a custom reference that names a
|
package/dist/commands/judge.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `intutic judge configure` — generate the local artifacts an on-prem
|
|
3
|
-
* LLM-as-judge needs (
|
|
3
|
+
* LLM-as-judge needs (model catalog & cohort wizard).
|
|
4
4
|
*
|
|
5
5
|
* Judges run only on self-hosted models (owner rule, 2026-10-03): the picker
|
|
6
6
|
* offers `selfHostedJudgeModelChoices()`, and a custom reference that names a
|
|
@@ -46,7 +46,7 @@ export function buildLiteLLMConfigYaml(modelRef) {
|
|
|
46
46
|
const litellmModel = provider ? `${provider}/${id}` : id;
|
|
47
47
|
const alias = id || modelRef;
|
|
48
48
|
const credLine = provider ? credentialLine(provider) : '';
|
|
49
|
-
return (`# Generated by \`intutic judge configure
|
|
49
|
+
return (`# Generated by \`intutic judge configure\`. Same shape as\n` +
|
|
50
50
|
`# infra/compose/litellm_config.yaml's hand-written example — add more\n` +
|
|
51
51
|
`# model_list entries by hand following that file if you need more than\n` +
|
|
52
52
|
`# the one judge model this command configured.\n\n` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"judge.js","sourceRoot":"","sources":["../../src/commands/judge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EACL,2BAA2B,EAC3B,gBAAgB,EAChB,8BAA8B,EAC9B,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAgB,MAAM,YAAY,CAAA;AAOxD;;;;GAIG;AACH,SAAS,cAAc,CAAC,UAAkB;IACxC,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,EAAE,CAAA;IACpC,OAAO,8BAA8B,CAAC,GAAG,CAAC,UAAU,CAAC;QACnD,CAAC,CAAC,8BAA8B,GAAG,aAAa;QAChD,CAAC,CAAC,6BAA6B,GAAG,YAAY,CAAA;AAClD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IACpD,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IACxD,MAAM,KAAK,GAAG,EAAE,IAAI,QAAQ,CAAA;IAC5B,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAEzD,OAAO,CACL,
|
|
1
|
+
{"version":3,"file":"judge.js","sourceRoot":"","sources":["../../src/commands/judge.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/login.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA+DH,wBAAsB,QAAQ,CAAC,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmEhH"}
|
package/dist/commands/login.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAG/C"}
|
package/dist/commands/logout.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,gBAAgB,EAAE,CAAA;IACxB,GAAG,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAA;AACzD,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `intutic mcp` — the workspace's MCP server registry and the decisions every
|
|
3
|
+
* MCP proxy enforces on it.
|
|
4
|
+
*
|
|
5
|
+
* Subcommands:
|
|
6
|
+
* - `intutic mcp list [--json]`
|
|
7
|
+
* - `intutic mcp approve|block|reset <server_id> [--json]`
|
|
8
|
+
* - `intutic mcp enable-tool|disable-tool <server_id> <tool> [--json]`
|
|
9
|
+
*
|
|
10
|
+
* Server side: services/control-plane/src/routes/mcpServers.ts. Approving,
|
|
11
|
+
* blocking, resetting and switching tools need OWNER or ADMIN; listing needs
|
|
12
|
+
* any member. The registry-wide settings (`mcpDefaultPolicy`,
|
|
13
|
+
* `mcpHighRiskToolChange`, `mcpBudgets`) are workspace settings, changed with
|
|
14
|
+
* `intutic settings set`.
|
|
15
|
+
*
|
|
16
|
+
* @module
|
|
17
|
+
*/
|
|
18
|
+
import { type ApiCommandOpts } from './apiCommand.js';
|
|
19
|
+
declare const STATUS_FOR: {
|
|
20
|
+
readonly approve: "approved";
|
|
21
|
+
readonly block: "blocked";
|
|
22
|
+
readonly reset: "candidate";
|
|
23
|
+
};
|
|
24
|
+
/** `intutic mcp list` */
|
|
25
|
+
export declare function runMcpList(opts: ApiCommandOpts): Promise<void>;
|
|
26
|
+
/** `intutic mcp approve|block|reset <server_id>` */
|
|
27
|
+
export declare function runMcpDecide(action: keyof typeof STATUS_FOR, serverId: string, opts: ApiCommandOpts): Promise<void>;
|
|
28
|
+
/** `intutic mcp enable-tool|disable-tool <server_id> <tool>` */
|
|
29
|
+
export declare function runMcpTool(serverId: string, tool: string, enabled: boolean, opts: ApiCommandOpts): Promise<void>;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAwBpE,QAAA,MAAM,UAAU;;;;CAAyE,CAAA;AAOzF,yBAAyB;AACzB,wBAAsB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBpE;AAED,oDAAoD;AACpD,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,OAAO,UAAU,EAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,gEAAgE;AAChE,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CAWf"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `intutic mcp` — the workspace's MCP server registry and the decisions every
|
|
3
|
+
* MCP proxy enforces on it.
|
|
4
|
+
*
|
|
5
|
+
* Subcommands:
|
|
6
|
+
* - `intutic mcp list [--json]`
|
|
7
|
+
* - `intutic mcp approve|block|reset <server_id> [--json]`
|
|
8
|
+
* - `intutic mcp enable-tool|disable-tool <server_id> <tool> [--json]`
|
|
9
|
+
*
|
|
10
|
+
* Server side: services/control-plane/src/routes/mcpServers.ts. Approving,
|
|
11
|
+
* blocking, resetting and switching tools need OWNER or ADMIN; listing needs
|
|
12
|
+
* any member. The registry-wide settings (`mcpDefaultPolicy`,
|
|
13
|
+
* `mcpHighRiskToolChange`, `mcpBudgets`) are workspace settings, changed with
|
|
14
|
+
* `intutic settings set`.
|
|
15
|
+
*
|
|
16
|
+
* @module
|
|
17
|
+
*/
|
|
18
|
+
import pc from 'picocolors';
|
|
19
|
+
import { log } from '../lib/logger.js';
|
|
20
|
+
import { runApiCommand } from './apiCommand.js';
|
|
21
|
+
const STATUS_FOR = { approve: 'approved', block: 'blocked', reset: 'candidate' };
|
|
22
|
+
function statusLabel(s) {
|
|
23
|
+
const label = s.status === 'approved' ? pc.green(s.status) : s.status === 'blocked' ? pc.red(s.status) : pc.yellow(s.status);
|
|
24
|
+
return s.heldForReview ? `${label} (held: high-risk tool change)` : label;
|
|
25
|
+
}
|
|
26
|
+
/** `intutic mcp list` */
|
|
27
|
+
export async function runMcpList(opts) {
|
|
28
|
+
await runApiCommand(opts, 'Failed to list MCP servers', (client) => client.get('/api/v1/mcp/servers'), (res) => {
|
|
29
|
+
log.header('Intutic — MCP Servers');
|
|
30
|
+
log.field('Default policy', res.defaultPolicy);
|
|
31
|
+
log.field('High-risk tool change', res.highRiskToolChange);
|
|
32
|
+
log.field('Awaiting a decision', String(res.pendingCount));
|
|
33
|
+
if (res.servers.length === 0) {
|
|
34
|
+
log.dim(' No MCP servers seen yet.');
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
for (const s of res.servers) {
|
|
38
|
+
console.log('');
|
|
39
|
+
log.field('Server ID', s.serverId);
|
|
40
|
+
log.field('Name', s.serverName);
|
|
41
|
+
log.field('Status', statusLabel(s));
|
|
42
|
+
log.field('Tools', `${s.tools.length}${s.disabledTools.length > 0 ? ` (disabled: ${s.disabledTools.join(', ')})` : ''}`);
|
|
43
|
+
log.field('Last seen', s.lastSeenAt);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/** `intutic mcp approve|block|reset <server_id>` */
|
|
48
|
+
export async function runMcpDecide(action, serverId, opts) {
|
|
49
|
+
await runApiCommand(opts, `Failed to ${action} MCP server ${serverId}`, (client) => client.post(`/api/v1/mcp/servers/${encodeURIComponent(serverId)}/status`, {
|
|
50
|
+
status: STATUS_FOR[action],
|
|
51
|
+
}), (res) => {
|
|
52
|
+
if (action === 'reset')
|
|
53
|
+
log.success(`${res.server.serverName} is back in the approval queue.`);
|
|
54
|
+
else
|
|
55
|
+
log.success(`${res.server.serverName} ${STATUS_FOR[action]}.`);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/** `intutic mcp enable-tool|disable-tool <server_id> <tool>` */
|
|
59
|
+
export async function runMcpTool(serverId, tool, enabled, opts) {
|
|
60
|
+
await runApiCommand(opts, `Failed to ${enabled ? 'enable' : 'disable'} ${tool}`, (client) => client.post(`/api/v1/mcp/servers/${encodeURIComponent(serverId)}/tools`, {
|
|
61
|
+
tool,
|
|
62
|
+
enabled,
|
|
63
|
+
}), (res) => log.success(`${tool} on ${res.server.serverName} ${enabled ? 'enabled' : 'disabled'}.`));
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `intutic notifications` — notification rules: which events go to which
|
|
3
|
+
* Slack channel, email addresses, webhook or PagerDuty service.
|
|
4
|
+
*
|
|
5
|
+
* Subcommands:
|
|
6
|
+
* - `intutic notifications list [--json]`
|
|
7
|
+
* - `intutic notifications create --event <type> --channel <channel> <target flag> [filters] [--json]`
|
|
8
|
+
* - `intutic notifications update <rule_id> [fields] [--json]`
|
|
9
|
+
* - `intutic notifications delete <rule_id> [--json]`
|
|
10
|
+
* - `intutic notifications rotate-secret <rule_id> [--json]`
|
|
11
|
+
*
|
|
12
|
+
* Server side: services/control-plane/src/routes/notifications.ts. A webhook
|
|
13
|
+
* rule's signing secret is generated by the server and returned once — in the
|
|
14
|
+
* response that created it (create, a switch to the webhook channel, or a
|
|
15
|
+
* rotation) — so this prints it once, with a warning to copy it.
|
|
16
|
+
*
|
|
17
|
+
* @module
|
|
18
|
+
*/
|
|
19
|
+
import { type ApiCommandOpts } from './apiCommand.js';
|
|
20
|
+
/** The flags `create` and `update` share. */
|
|
21
|
+
export interface RuleFlags {
|
|
22
|
+
event?: string;
|
|
23
|
+
channel?: string;
|
|
24
|
+
slackChannel?: string;
|
|
25
|
+
email?: string;
|
|
26
|
+
webhookUrl?: string;
|
|
27
|
+
pagerdutyKey?: string;
|
|
28
|
+
severity?: string;
|
|
29
|
+
harness?: string;
|
|
30
|
+
user?: string;
|
|
31
|
+
cooldown?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The request body for the given flags: only the fields a flag set, so an
|
|
35
|
+
* update leaves everything else as it is. Channel config and filters are each
|
|
36
|
+
* replaced whole when any of their flags is given, as the route stores them.
|
|
37
|
+
*/
|
|
38
|
+
export declare function ruleBody(flags: RuleFlags): Record<string, unknown>;
|
|
39
|
+
/** `intutic notifications list` */
|
|
40
|
+
export declare function runNotificationsList(opts: ApiCommandOpts): Promise<void>;
|
|
41
|
+
/** `intutic notifications create` */
|
|
42
|
+
export declare function runNotificationsCreate(opts: ApiCommandOpts & RuleFlags & {
|
|
43
|
+
disabled?: boolean;
|
|
44
|
+
}): Promise<void>;
|
|
45
|
+
/** `intutic notifications update <rule_id>` */
|
|
46
|
+
export declare function runNotificationsUpdate(ruleId: string, opts: ApiCommandOpts & RuleFlags & {
|
|
47
|
+
enable?: boolean;
|
|
48
|
+
disable?: boolean;
|
|
49
|
+
}): Promise<void>;
|
|
50
|
+
/** `intutic notifications delete <rule_id>` */
|
|
51
|
+
export declare function runNotificationsDelete(ruleId: string, opts: ApiCommandOpts): Promise<void>;
|
|
52
|
+
/** `intutic notifications rotate-secret <rule_id>` */
|
|
53
|
+
export declare function runNotificationsRotateSecret(ruleId: string, opts: ApiCommandOpts): Promise<void>;
|
|
54
|
+
//# sourceMappingURL=notifications.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../src/commands/notifications.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,EAA8D,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAwBjH,6CAA6C;AAC7C,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAkBD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA4BlE;AAsBD,mCAAmC;AACnC,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB9E;AAED,qCAAqC;AACrC,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAarH;AAED,+CAA+C;AAC/C,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GACzE,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,+CAA+C;AAC/C,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAOhG;AAED,sDAAsD;AACtD,wBAAsB,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAatG"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `intutic notifications` — notification rules: which events go to which
|
|
3
|
+
* Slack channel, email addresses, webhook or PagerDuty service.
|
|
4
|
+
*
|
|
5
|
+
* Subcommands:
|
|
6
|
+
* - `intutic notifications list [--json]`
|
|
7
|
+
* - `intutic notifications create --event <type> --channel <channel> <target flag> [filters] [--json]`
|
|
8
|
+
* - `intutic notifications update <rule_id> [fields] [--json]`
|
|
9
|
+
* - `intutic notifications delete <rule_id> [--json]`
|
|
10
|
+
* - `intutic notifications rotate-secret <rule_id> [--json]`
|
|
11
|
+
*
|
|
12
|
+
* Server side: services/control-plane/src/routes/notifications.ts. A webhook
|
|
13
|
+
* rule's signing secret is generated by the server and returned once — in the
|
|
14
|
+
* response that created it (create, a switch to the webhook channel, or a
|
|
15
|
+
* rotation) — so this prints it once, with a warning to copy it.
|
|
16
|
+
*
|
|
17
|
+
* @module
|
|
18
|
+
*/
|
|
19
|
+
import pc from 'picocolors';
|
|
20
|
+
import { NOTIFICATION_EVENT_TYPES } from '@intutic/shared-types';
|
|
21
|
+
import { log } from '../lib/logger.js';
|
|
22
|
+
import { fail, list, positiveInt, printSigningSecret, runApiCommand } from './apiCommand.js';
|
|
23
|
+
const CHANNELS = ['slack', 'email', 'webhook', 'pagerduty'];
|
|
24
|
+
/**
|
|
25
|
+
* Fails on an event type the API would refuse, suggesting the ones in the
|
|
26
|
+
* same family (`decision.pend` → `decision.pending`, …), or all of them when
|
|
27
|
+
* none share its first segment.
|
|
28
|
+
*/
|
|
29
|
+
function checkEventType(event) {
|
|
30
|
+
if (NOTIFICATION_EVENT_TYPES.includes(event))
|
|
31
|
+
return;
|
|
32
|
+
const family = event.split('.')[0];
|
|
33
|
+
const near = NOTIFICATION_EVENT_TYPES.filter((t) => t.split('.')[0] === family);
|
|
34
|
+
fail(`--event "${event}" is not a notification event type. ` +
|
|
35
|
+
(near.length > 0 ? `Did you mean ${near.join(', ')}?` : `Valid types: ${NOTIFICATION_EVENT_TYPES.join(', ')}.`) +
|
|
36
|
+
' Every type is described at https://docs.intutic.ai/guide/settings#notifications');
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The request body for the given flags: only the fields a flag set, so an
|
|
40
|
+
* update leaves everything else as it is. Channel config and filters are each
|
|
41
|
+
* replaced whole when any of their flags is given, as the route stores them.
|
|
42
|
+
*/
|
|
43
|
+
export function ruleBody(flags) {
|
|
44
|
+
const body = {};
|
|
45
|
+
if (flags.event !== undefined) {
|
|
46
|
+
checkEventType(flags.event);
|
|
47
|
+
body.eventType = flags.event;
|
|
48
|
+
}
|
|
49
|
+
if (flags.channel !== undefined) {
|
|
50
|
+
if (!CHANNELS.includes(flags.channel)) {
|
|
51
|
+
fail(`--channel must be one of ${CHANNELS.join(', ')}, got "${flags.channel}"`);
|
|
52
|
+
}
|
|
53
|
+
body.channel = flags.channel;
|
|
54
|
+
}
|
|
55
|
+
const config = {};
|
|
56
|
+
if (flags.slackChannel !== undefined)
|
|
57
|
+
config.slackChannelId = flags.slackChannel;
|
|
58
|
+
if (flags.email !== undefined)
|
|
59
|
+
config.emailRecipients = list(flags.email);
|
|
60
|
+
if (flags.webhookUrl !== undefined)
|
|
61
|
+
config.webhookUrl = flags.webhookUrl;
|
|
62
|
+
if (flags.pagerdutyKey !== undefined)
|
|
63
|
+
config.pagerdutyRoutingKey = flags.pagerdutyKey;
|
|
64
|
+
if (Object.keys(config).length > 0)
|
|
65
|
+
body.channelConfig = config;
|
|
66
|
+
const filters = {};
|
|
67
|
+
if (flags.severity !== undefined)
|
|
68
|
+
filters.severity = list(flags.severity);
|
|
69
|
+
if (flags.harness !== undefined)
|
|
70
|
+
filters.harnessType = list(flags.harness);
|
|
71
|
+
if (flags.user !== undefined)
|
|
72
|
+
filters.userId = list(flags.user);
|
|
73
|
+
if (Object.keys(filters).length > 0)
|
|
74
|
+
body.filters = filters;
|
|
75
|
+
if (flags.cooldown !== undefined)
|
|
76
|
+
body.cooldownMinutes = positiveInt(flags.cooldown, '--cooldown');
|
|
77
|
+
return body;
|
|
78
|
+
}
|
|
79
|
+
function target(rule) {
|
|
80
|
+
const c = rule.channelConfig;
|
|
81
|
+
switch (rule.channel) {
|
|
82
|
+
case 'slack': return c.slackChannelName ?? c.slackChannelId ?? '—';
|
|
83
|
+
case 'email': return c.emailRecipients?.join(', ') ?? '—';
|
|
84
|
+
case 'webhook': return c.webhookUrl ?? '—';
|
|
85
|
+
case 'pagerduty': return 'routing key set';
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function printRule(rule) {
|
|
89
|
+
log.field('Rule ID', rule.ruleId);
|
|
90
|
+
log.field('Event', rule.eventType);
|
|
91
|
+
log.field('Channel', `${rule.channel} → ${target(rule)}`);
|
|
92
|
+
const filters = Object.entries(rule.filters).filter(([, v]) => v && v.length > 0);
|
|
93
|
+
if (filters.length > 0)
|
|
94
|
+
log.field('Filters', filters.map(([k, v]) => `${k}=${v.join(',')}`).join('; '));
|
|
95
|
+
log.field('Cooldown', `${rule.cooldownMinutes} min`);
|
|
96
|
+
log.field('Enabled', rule.enabled ? pc.green('yes') : pc.dim('no'));
|
|
97
|
+
}
|
|
98
|
+
/** `intutic notifications list` */
|
|
99
|
+
export async function runNotificationsList(opts) {
|
|
100
|
+
await runApiCommand(opts, 'Failed to list notification rules', (client) => client.get('/api/v1/notifications/rules'), (res) => {
|
|
101
|
+
log.header('Intutic — Notification Rules');
|
|
102
|
+
if (res.rules.length === 0) {
|
|
103
|
+
log.dim(' No notification rules.');
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
for (const rule of res.rules) {
|
|
107
|
+
console.log('');
|
|
108
|
+
printRule(rule);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
/** `intutic notifications create` */
|
|
113
|
+
export async function runNotificationsCreate(opts) {
|
|
114
|
+
const body = ruleBody(opts);
|
|
115
|
+
if (opts.disabled)
|
|
116
|
+
body.enabled = false;
|
|
117
|
+
await runApiCommand(opts, 'Failed to create notification rule', (client) => client.post('/api/v1/notifications/rules', body), (rule) => {
|
|
118
|
+
log.success('Notification rule created.');
|
|
119
|
+
printRule(rule);
|
|
120
|
+
printSigningSecret(rule.signingSecret);
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/** `intutic notifications update <rule_id>` */
|
|
124
|
+
export async function runNotificationsUpdate(ruleId, opts) {
|
|
125
|
+
if (opts.enable && opts.disable)
|
|
126
|
+
fail('Pass --enable or --disable, not both.');
|
|
127
|
+
const body = ruleBody(opts);
|
|
128
|
+
if (opts.enable)
|
|
129
|
+
body.enabled = true;
|
|
130
|
+
if (opts.disable)
|
|
131
|
+
body.enabled = false;
|
|
132
|
+
if (Object.keys(body).length === 0)
|
|
133
|
+
fail('Nothing to update: pass at least one field to change.');
|
|
134
|
+
await runApiCommand(opts, `Failed to update notification rule ${ruleId}`, (client) => client.put(`/api/v1/notifications/rules/${encodeURIComponent(ruleId)}`, body), (rule) => {
|
|
135
|
+
log.success('Notification rule updated.');
|
|
136
|
+
printRule(rule);
|
|
137
|
+
printSigningSecret(rule.signingSecret);
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
/** `intutic notifications delete <rule_id>` */
|
|
141
|
+
export async function runNotificationsDelete(ruleId, opts) {
|
|
142
|
+
await runApiCommand(opts, `Failed to delete notification rule ${ruleId}`, (client) => client.del(`/api/v1/notifications/rules/${encodeURIComponent(ruleId)}`), () => log.success(`Notification rule ${ruleId} deleted.`));
|
|
143
|
+
}
|
|
144
|
+
/** `intutic notifications rotate-secret <rule_id>` */
|
|
145
|
+
export async function runNotificationsRotateSecret(ruleId, opts) {
|
|
146
|
+
await runApiCommand(opts, `Failed to replace the signing secret of ${ruleId}`, (client) => client.post(`/api/v1/notifications/rules/${encodeURIComponent(ruleId)}/signing-secret`), (res) => {
|
|
147
|
+
log.success(`New signing secret for ${res.ruleId}; deliveries are signed with it from now on.`);
|
|
148
|
+
printSigningSecret(res.signingSecret);
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=notifications.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/commands/notifications.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/org.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* `intutic org create` — create a real org from an already-authenticated
|
|
3
|
-
* session
|
|
3
|
+
* session.
|
|
4
4
|
*
|
|
5
|
-
* Real org creation now requires DNS domain-ownership verification
|
|
6
|
-
*
|
|
5
|
+
* Real org creation now requires DNS domain-ownership verification:
|
|
6
|
+
* creating an org auto-provisions a real managed gateway cell,
|
|
7
7
|
* so an org's claimed domain must be proven before `POST /api/v1/orgs` will
|
|
8
8
|
* create it. There's no anonymous-compatible verification flow (no session
|
|
9
9
|
* exists yet to own a verification attempt against), so the old anonymous
|