@intutic/cli 1.9.0 → 1.10.1
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 +1 -0
- package/dist/cli.js +868 -30
- package/dist/cli.js.map +1 -1
- package/dist/commands/attenuate.d.ts +39 -0
- package/dist/commands/attenuate.d.ts.map +1 -0
- package/dist/commands/attenuate.js +98 -0
- package/dist/commands/attenuate.js.map +1 -0
- package/dist/commands/budget.d.ts +80 -0
- package/dist/commands/budget.d.ts.map +1 -1
- package/dist/commands/budget.js +119 -3
- package/dist/commands/budget.js.map +1 -1
- package/dist/commands/connect.d.ts +10 -0
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +358 -48
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/credentials.d.ts +31 -0
- package/dist/commands/credentials.d.ts.map +1 -0
- package/dist/commands/credentials.js +134 -0
- package/dist/commands/credentials.js.map +1 -0
- package/dist/commands/decision.d.ts +37 -0
- package/dist/commands/decision.d.ts.map +1 -0
- package/dist/commands/decision.js +56 -0
- package/dist/commands/decision.js.map +1 -0
- package/dist/commands/doctor.d.ts +38 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +228 -18
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/enforce.d.ts +33 -0
- package/dist/commands/enforce.d.ts.map +1 -0
- package/dist/commands/enforce.js +150 -0
- package/dist/commands/enforce.js.map +1 -0
- package/dist/commands/enterprise.d.ts +29 -0
- package/dist/commands/enterprise.d.ts.map +1 -0
- package/dist/commands/enterprise.js +141 -0
- package/dist/commands/enterprise.js.map +1 -0
- package/dist/commands/env.d.ts +7 -0
- package/dist/commands/env.d.ts.map +1 -0
- package/dist/commands/env.js +55 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/exec.d.ts +38 -2
- package/dist/commands/exec.d.ts.map +1 -1
- package/dist/commands/exec.js +247 -10
- package/dist/commands/exec.js.map +1 -1
- package/dist/commands/findings.d.ts +84 -0
- package/dist/commands/findings.d.ts.map +1 -0
- package/dist/commands/findings.js +329 -0
- package/dist/commands/findings.js.map +1 -0
- package/dist/commands/gateway.d.ts +62 -0
- package/dist/commands/gateway.d.ts.map +1 -0
- package/dist/commands/gateway.js +298 -0
- package/dist/commands/gateway.js.map +1 -0
- package/dist/commands/guardrails.d.ts +81 -0
- package/dist/commands/guardrails.d.ts.map +1 -0
- package/dist/commands/guardrails.js +735 -0
- package/dist/commands/guardrails.js.map +1 -0
- package/dist/commands/init.d.ts +8 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +14 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install-daemon.d.ts +70 -3
- package/dist/commands/install-daemon.d.ts.map +1 -1
- package/dist/commands/install-daemon.js +482 -47
- package/dist/commands/install-daemon.js.map +1 -1
- package/dist/commands/integrity.d.ts +205 -0
- package/dist/commands/integrity.d.ts.map +1 -0
- package/dist/commands/integrity.js +620 -0
- package/dist/commands/integrity.js.map +1 -0
- package/dist/commands/judge.d.ts +31 -0
- package/dist/commands/judge.d.ts.map +1 -0
- package/dist/commands/judge.js +118 -0
- package/dist/commands/judge.js.map +1 -0
- package/dist/commands/org.d.ts +31 -0
- package/dist/commands/org.d.ts.map +1 -0
- package/dist/commands/org.js +159 -0
- package/dist/commands/org.js.map +1 -0
- package/dist/commands/policy.d.ts +138 -4
- package/dist/commands/policy.d.ts.map +1 -1
- package/dist/commands/policy.js +538 -97
- package/dist/commands/policy.js.map +1 -1
- package/dist/commands/predict-cost.d.ts +45 -0
- package/dist/commands/predict-cost.d.ts.map +1 -0
- package/dist/commands/predict-cost.js +123 -0
- package/dist/commands/predict-cost.js.map +1 -0
- package/dist/commands/rollback.d.ts +5 -0
- package/dist/commands/rollback.d.ts.map +1 -0
- package/dist/commands/rollback.js +142 -0
- package/dist/commands/rollback.js.map +1 -0
- package/dist/commands/routing.d.ts +62 -0
- package/dist/commands/routing.d.ts.map +1 -0
- package/dist/commands/routing.js +121 -0
- package/dist/commands/routing.js.map +1 -0
- package/dist/commands/setup.d.ts +62 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +238 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/skill.d.ts +268 -1
- package/dist/commands/skill.d.ts.map +1 -1
- package/dist/commands/skill.js +744 -39
- package/dist/commands/skill.js.map +1 -1
- package/dist/commands/sops.d.ts +95 -0
- package/dist/commands/sops.d.ts.map +1 -1
- package/dist/commands/sops.js +334 -34
- package/dist/commands/sops.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +1 -18
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +44 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/team.d.ts +38 -0
- package/dist/commands/team.d.ts.map +1 -0
- package/dist/commands/team.js +140 -0
- package/dist/commands/team.js.map +1 -0
- package/dist/commands/traces.d.ts +8 -1
- package/dist/commands/traces.d.ts.map +1 -1
- package/dist/commands/traces.js +114 -15
- package/dist/commands/traces.js.map +1 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +2 -1
- package/dist/commands/whoami.js.map +1 -1
- package/dist/config/keychain.d.ts +10 -2
- package/dist/config/keychain.d.ts.map +1 -1
- package/dist/config/keychain.js +83 -14
- package/dist/config/keychain.js.map +1 -1
- package/dist/config/paths.d.ts +27 -0
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +37 -6
- package/dist/config/paths.js.map +1 -1
- package/dist/config/store.d.ts.map +1 -1
- package/dist/config/store.js +19 -3
- package/dist/config/store.js.map +1 -1
- package/dist/harness/ag2.d.ts +22 -0
- package/dist/harness/ag2.d.ts.map +1 -0
- package/dist/harness/ag2.js +34 -0
- package/dist/harness/ag2.js.map +1 -0
- package/dist/harness/agentcore.d.ts +55 -0
- package/dist/harness/agentcore.d.ts.map +1 -0
- package/dist/harness/agentcore.js +119 -0
- package/dist/harness/agentcore.js.map +1 -0
- package/dist/harness/agenticOrchestrator.d.ts +52 -0
- package/dist/harness/agenticOrchestrator.d.ts.map +1 -0
- package/dist/harness/agenticOrchestrator.js +115 -0
- package/dist/harness/agenticOrchestrator.js.map +1 -0
- package/dist/harness/aiSdkHarness.d.ts +30 -0
- package/dist/harness/aiSdkHarness.d.ts.map +1 -0
- package/dist/harness/aiSdkHarness.js +51 -0
- package/dist/harness/aiSdkHarness.js.map +1 -0
- package/dist/harness/aiSdkWorkflow.d.ts +26 -0
- package/dist/harness/aiSdkWorkflow.d.ts.map +1 -0
- package/dist/harness/aiSdkWorkflow.js +39 -0
- package/dist/harness/aiSdkWorkflow.js.map +1 -0
- package/dist/harness/autogen.d.ts +24 -0
- package/dist/harness/autogen.d.ts.map +1 -0
- package/dist/harness/autogen.js +36 -0
- package/dist/harness/autogen.js.map +1 -0
- package/dist/harness/base.js.map +1 -1
- package/dist/harness/continue.d.ts.map +1 -1
- package/dist/harness/continue.js +2 -1
- package/dist/harness/continue.js.map +1 -1
- package/dist/harness/crewai.d.ts +15 -0
- package/dist/harness/crewai.d.ts.map +1 -0
- package/dist/harness/crewai.js +26 -0
- package/dist/harness/crewai.js.map +1 -0
- package/dist/harness/detector.d.ts +1 -1
- package/dist/harness/detector.d.ts.map +1 -1
- package/dist/harness/detector.js +47 -1
- package/dist/harness/detector.js.map +1 -1
- package/dist/harness/dsh.d.ts +19 -0
- package/dist/harness/dsh.d.ts.map +1 -0
- package/dist/harness/dsh.js +93 -0
- package/dist/harness/dsh.js.map +1 -0
- package/dist/harness/eve.d.ts +40 -0
- package/dist/harness/eve.d.ts.map +1 -0
- package/dist/harness/eve.js +67 -0
- package/dist/harness/eve.js.map +1 -0
- package/dist/harness/googleAdk.d.ts +18 -0
- package/dist/harness/googleAdk.d.ts.map +1 -0
- package/dist/harness/googleAdk.js +29 -0
- package/dist/harness/googleAdk.js.map +1 -0
- package/dist/harness/goose.d.ts.map +1 -1
- package/dist/harness/goose.js +5 -1
- package/dist/harness/goose.js.map +1 -1
- package/dist/harness/grok.d.ts +16 -0
- package/dist/harness/grok.d.ts.map +1 -0
- package/dist/harness/grok.js +78 -0
- package/dist/harness/grok.js.map +1 -0
- package/dist/harness/jsSdkGatedAdapter.d.ts +102 -0
- package/dist/harness/jsSdkGatedAdapter.d.ts.map +1 -0
- package/dist/harness/jsSdkGatedAdapter.js +139 -0
- package/dist/harness/jsSdkGatedAdapter.js.map +1 -0
- package/dist/harness/langchain.d.ts +22 -0
- package/dist/harness/langchain.d.ts.map +1 -0
- package/dist/harness/langchain.js +33 -0
- package/dist/harness/langchain.js.map +1 -0
- package/dist/harness/langgraph.d.ts +22 -0
- package/dist/harness/langgraph.d.ts.map +1 -0
- package/dist/harness/langgraph.js +80 -0
- package/dist/harness/langgraph.js.map +1 -0
- package/dist/harness/mastra.d.ts +21 -0
- package/dist/harness/mastra.d.ts.map +1 -0
- package/dist/harness/mastra.js +33 -0
- package/dist/harness/mastra.js.map +1 -0
- package/dist/harness/muse.d.ts +22 -0
- package/dist/harness/muse.d.ts.map +1 -0
- package/dist/harness/muse.js +92 -0
- package/dist/harness/muse.js.map +1 -0
- package/dist/harness/n8n.d.ts.map +1 -1
- package/dist/harness/n8n.js +36 -11
- package/dist/harness/n8n.js.map +1 -1
- package/dist/harness/openaiAgents.d.ts +40 -0
- package/dist/harness/openaiAgents.d.ts.map +1 -0
- package/dist/harness/openaiAgents.js +107 -0
- package/dist/harness/openaiAgents.js.map +1 -0
- package/dist/harness/opencode.d.ts +24 -0
- package/dist/harness/opencode.d.ts.map +1 -0
- package/dist/harness/opencode.js +97 -0
- package/dist/harness/opencode.js.map +1 -0
- package/dist/harness/pydanticAi.d.ts +19 -0
- package/dist/harness/pydanticAi.d.ts.map +1 -0
- package/dist/harness/pydanticAi.js +30 -0
- package/dist/harness/pydanticAi.js.map +1 -0
- package/dist/harness/sdkGatedAdapter.d.ts +55 -0
- package/dist/harness/sdkGatedAdapter.d.ts.map +1 -0
- package/dist/harness/sdkGatedAdapter.js +85 -0
- package/dist/harness/sdkGatedAdapter.js.map +1 -0
- package/dist/harness/smolagents.d.ts +22 -0
- package/dist/harness/smolagents.d.ts.map +1 -0
- package/dist/harness/smolagents.js +33 -0
- package/dist/harness/smolagents.js.map +1 -0
- package/dist/harness/strands.d.ts +22 -0
- package/dist/harness/strands.d.ts.map +1 -0
- package/dist/harness/strands.js +35 -0
- package/dist/harness/strands.js.map +1 -0
- package/dist/harness/trueforge.d.ts +25 -0
- package/dist/harness/trueforge.d.ts.map +1 -0
- package/dist/harness/trueforge.js +40 -0
- package/dist/harness/trueforge.js.map +1 -0
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/harness/types.js +70 -0
- package/dist/harness/types.js.map +1 -1
- package/dist/harness/vercelAiSdk.d.ts +31 -0
- package/dist/harness/vercelAiSdk.d.ts.map +1 -0
- package/dist/harness/vercelAiSdk.js +44 -0
- package/dist/harness/vercelAiSdk.js.map +1 -0
- package/dist/harness/xirp.d.ts +43 -0
- package/dist/harness/xirp.d.ts.map +1 -0
- package/dist/harness/xirp.js +95 -0
- package/dist/harness/xirp.js.map +1 -0
- package/dist/lib/api.d.ts +68 -0
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +108 -67
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/authMessages.d.ts +19 -0
- package/dist/lib/authMessages.d.ts.map +1 -0
- package/dist/lib/authMessages.js +20 -0
- package/dist/lib/authMessages.js.map +1 -0
- package/dist/lib/binaryChecksum.d.ts +12 -0
- package/dist/lib/binaryChecksum.d.ts.map +1 -0
- package/dist/lib/binaryChecksum.js +45 -0
- package/dist/lib/binaryChecksum.js.map +1 -0
- package/dist/lib/binaryOnPath.d.ts +24 -0
- package/dist/lib/binaryOnPath.d.ts.map +1 -0
- package/dist/lib/binaryOnPath.js +31 -0
- package/dist/lib/binaryOnPath.js.map +1 -0
- package/dist/lib/caTrust.d.ts +69 -0
- package/dist/lib/caTrust.d.ts.map +1 -0
- package/dist/lib/caTrust.js +169 -0
- package/dist/lib/caTrust.js.map +1 -0
- package/dist/lib/ciscoScanner.d.ts +178 -0
- package/dist/lib/ciscoScanner.d.ts.map +1 -0
- package/dist/lib/ciscoScanner.js +292 -0
- package/dist/lib/ciscoScanner.js.map +1 -0
- package/dist/lib/decisionsLogRefresh.d.ts +28 -0
- package/dist/lib/decisionsLogRefresh.d.ts.map +1 -0
- package/dist/lib/decisionsLogRefresh.js +54 -0
- package/dist/lib/decisionsLogRefresh.js.map +1 -0
- package/dist/lib/deviceReport.d.ts +26 -0
- package/dist/lib/deviceReport.d.ts.map +1 -0
- package/dist/lib/deviceReport.js +55 -0
- package/dist/lib/deviceReport.js.map +1 -0
- package/dist/lib/elevation.d.ts +58 -0
- package/dist/lib/elevation.d.ts.map +1 -0
- package/dist/lib/elevation.js +83 -0
- package/dist/lib/elevation.js.map +1 -0
- package/dist/lib/enforcementState.d.ts +69 -0
- package/dist/lib/enforcementState.d.ts.map +1 -0
- package/dist/lib/enforcementState.js +113 -0
- package/dist/lib/enforcementState.js.map +1 -0
- package/dist/lib/ensureValkey.d.ts.map +1 -1
- package/dist/lib/ensureValkey.js +2 -2
- package/dist/lib/ensureValkey.js.map +1 -1
- package/dist/lib/envInjector.d.ts.map +1 -1
- package/dist/lib/envInjector.js +22 -4
- package/dist/lib/envInjector.js.map +1 -1
- package/dist/lib/gitHooks.d.ts +7 -2
- package/dist/lib/gitHooks.d.ts.map +1 -1
- package/dist/lib/gitHooks.js +180 -13
- package/dist/lib/gitHooks.js.map +1 -1
- package/dist/lib/gracefulShutdown.d.ts +37 -0
- package/dist/lib/gracefulShutdown.d.ts.map +1 -0
- package/dist/lib/gracefulShutdown.js +57 -0
- package/dist/lib/gracefulShutdown.js.map +1 -0
- package/dist/lib/graphIdentity.d.ts +80 -0
- package/dist/lib/graphIdentity.d.ts.map +1 -0
- package/dist/lib/graphIdentity.js +120 -0
- package/dist/lib/graphIdentity.js.map +1 -0
- package/dist/lib/localTraces.d.ts +61 -0
- package/dist/lib/localTraces.d.ts.map +1 -0
- package/dist/lib/localTraces.js +173 -0
- package/dist/lib/localTraces.js.map +1 -0
- package/dist/lib/mdmManifest.d.ts +73 -0
- package/dist/lib/mdmManifest.d.ts.map +1 -0
- package/dist/lib/mdmManifest.js +190 -0
- package/dist/lib/mdmManifest.js.map +1 -0
- package/dist/lib/onboarding.d.ts.map +1 -1
- package/dist/lib/onboarding.js +60 -1
- package/dist/lib/onboarding.js.map +1 -1
- package/dist/lib/otelPropagation.d.ts +26 -0
- package/dist/lib/otelPropagation.d.ts.map +1 -0
- package/dist/lib/otelPropagation.js +40 -0
- package/dist/lib/otelPropagation.js.map +1 -0
- package/dist/lib/policySnapshot.d.ts +92 -0
- package/dist/lib/policySnapshot.d.ts.map +1 -0
- package/dist/lib/policySnapshot.js +173 -0
- package/dist/lib/policySnapshot.js.map +1 -0
- package/dist/lib/process.d.ts.map +1 -1
- package/dist/lib/process.js +60 -0
- package/dist/lib/process.js.map +1 -1
- package/dist/lib/providerProbe.d.ts +28 -0
- package/dist/lib/providerProbe.d.ts.map +1 -0
- package/dist/lib/providerProbe.js +57 -0
- package/dist/lib/providerProbe.js.map +1 -0
- package/dist/lib/proxyBinary.d.ts +19 -0
- package/dist/lib/proxyBinary.d.ts.map +1 -0
- package/dist/lib/proxyBinary.js +30 -0
- package/dist/lib/proxyBinary.js.map +1 -0
- package/dist/lib/sandbox/firecracker.d.ts +89 -0
- package/dist/lib/sandbox/firecracker.d.ts.map +1 -0
- package/dist/lib/sandbox/firecracker.js +135 -0
- package/dist/lib/sandbox/firecracker.js.map +1 -0
- package/dist/lib/sandbox/index.d.ts +34 -0
- package/dist/lib/sandbox/index.d.ts.map +1 -0
- package/dist/lib/sandbox/index.js +54 -0
- package/dist/lib/sandbox/index.js.map +1 -0
- package/dist/lib/sandbox/oci.d.ts +38 -0
- package/dist/lib/sandbox/oci.d.ts.map +1 -0
- package/dist/lib/sandbox/oci.js +108 -0
- package/dist/lib/sandbox/oci.js.map +1 -0
- package/dist/lib/sandbox/types.d.ts +48 -0
- package/dist/lib/sandbox/types.d.ts.map +1 -0
- package/dist/lib/sandbox/types.js +12 -0
- package/dist/lib/sandbox/types.js.map +1 -0
- package/dist/lib/sopFrontMatter.d.ts +50 -0
- package/dist/lib/sopFrontMatter.d.ts.map +1 -0
- package/dist/lib/sopFrontMatter.js +129 -0
- package/dist/lib/sopFrontMatter.js.map +1 -0
- package/package.json +11 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../../src/commands/routing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `intutic setup` — the cohort setup wizard (LLD #70, model catalog & cohort
|
|
3
|
+
* wizard): codescan → provider → credentials → verify → persist → judge
|
|
4
|
+
* model → summary. Mirrors the dashboard's `SetupWizard.tsx` step order
|
|
5
|
+
* (minus the parts that need a browser) and, wherever a step corresponds to
|
|
6
|
+
* an existing flag-driven command, calls exactly what that command calls —
|
|
7
|
+
* `detectHarnesses` (same as `intutic init`), the provider-credentials PUT
|
|
8
|
+
* (same route `intutic credentials set` hits), `probeProviderCredential`
|
|
9
|
+
* (same shared-types probe spec the dashboard's verify button uses). This is
|
|
10
|
+
* a guided sequence over existing actions, not a parallel code path.
|
|
11
|
+
*
|
|
12
|
+
* `intutic init` stays exactly as it was — flag-driven, safe for CI, no
|
|
13
|
+
* prompts. This command is the interactive counterpart for a human at a
|
|
14
|
+
* keyboard.
|
|
15
|
+
*
|
|
16
|
+
* @module
|
|
17
|
+
*/
|
|
18
|
+
export declare const CANCELLED: unique symbol;
|
|
19
|
+
/**
|
|
20
|
+
* The subset of @clack/prompts this command uses, behind an interface so
|
|
21
|
+
* tests can inject a scripted fake instead of driving a real terminal.
|
|
22
|
+
* `select`/`text`/`password`/`confirm` return `CANCELLED` on Ctrl-C, mirroring
|
|
23
|
+
* clack's own `isCancel` convention rather than throwing.
|
|
24
|
+
*/
|
|
25
|
+
export interface SetupIO {
|
|
26
|
+
intro(msg: string): void;
|
|
27
|
+
outro(msg: string): void;
|
|
28
|
+
note(msg: string, title?: string): void;
|
|
29
|
+
log: {
|
|
30
|
+
info(msg: string): void;
|
|
31
|
+
success(msg: string): void;
|
|
32
|
+
warn(msg: string): void;
|
|
33
|
+
error(msg: string): void;
|
|
34
|
+
};
|
|
35
|
+
select<T extends string>(opts: {
|
|
36
|
+
message: string;
|
|
37
|
+
options: Array<{
|
|
38
|
+
value: T;
|
|
39
|
+
label: string;
|
|
40
|
+
hint?: string;
|
|
41
|
+
}>;
|
|
42
|
+
}): Promise<T | typeof CANCELLED>;
|
|
43
|
+
text(opts: {
|
|
44
|
+
message: string;
|
|
45
|
+
placeholder?: string;
|
|
46
|
+
defaultValue?: string;
|
|
47
|
+
}): Promise<string | typeof CANCELLED>;
|
|
48
|
+
password(opts: {
|
|
49
|
+
message: string;
|
|
50
|
+
}): Promise<string | typeof CANCELLED>;
|
|
51
|
+
confirm(opts: {
|
|
52
|
+
message: string;
|
|
53
|
+
initialValue?: boolean;
|
|
54
|
+
}): Promise<boolean | typeof CANCELLED>;
|
|
55
|
+
}
|
|
56
|
+
/** Real terminal IO, backed by @clack/prompts. */
|
|
57
|
+
export declare function createClackIO(): SetupIO;
|
|
58
|
+
export interface SetupOpts {
|
|
59
|
+
dev?: boolean;
|
|
60
|
+
}
|
|
61
|
+
export declare function runSetup(opts: SetupOpts, io?: SetupIO): Promise<void>;
|
|
62
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AA4CH,eAAO,MAAM,SAAS,eAAsB,CAAA;AAE5C;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvC,GAAG,EAAE;QAAE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IAC/G,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,CAAC,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,SAAS,CAAC,CAAA;IAC9I,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,SAAS,CAAC,CAAA;IAChH,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,SAAS,CAAC,CAAA;IACvE,OAAO,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,SAAS,CAAC,CAAA;CAChG;AAED,kDAAkD;AAClD,wBAAgB,aAAa,IAAI,OAAO,CA6BvC;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd;AAmBD,wBAAsB,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,GAAE,OAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6J5F"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `intutic setup` — the cohort setup wizard (LLD #70, model catalog & cohort
|
|
3
|
+
* wizard): codescan → provider → credentials → verify → persist → judge
|
|
4
|
+
* model → summary. Mirrors the dashboard's `SetupWizard.tsx` step order
|
|
5
|
+
* (minus the parts that need a browser) and, wherever a step corresponds to
|
|
6
|
+
* an existing flag-driven command, calls exactly what that command calls —
|
|
7
|
+
* `detectHarnesses` (same as `intutic init`), the provider-credentials PUT
|
|
8
|
+
* (same route `intutic credentials set` hits), `probeProviderCredential`
|
|
9
|
+
* (same shared-types probe spec the dashboard's verify button uses). This is
|
|
10
|
+
* a guided sequence over existing actions, not a parallel code path.
|
|
11
|
+
*
|
|
12
|
+
* `intutic init` stays exactly as it was — flag-driven, safe for CI, no
|
|
13
|
+
* prompts. This command is the interactive counterpart for a human at a
|
|
14
|
+
* keyboard.
|
|
15
|
+
*
|
|
16
|
+
* @module
|
|
17
|
+
*/
|
|
18
|
+
import * as p from '@clack/prompts';
|
|
19
|
+
import pc from 'picocolors';
|
|
20
|
+
import { writeFileSync } from 'node:fs';
|
|
21
|
+
import { join } from 'node:path';
|
|
22
|
+
import { PROVIDER_REGISTRY, getProviderDefinition, judgeModelChoices, findCatalogModel, } from '@intutic/shared-types';
|
|
23
|
+
import { findWorkspaceRoot } from './init.js';
|
|
24
|
+
import { detectHarnesses } from '../harness/detector.js';
|
|
25
|
+
import { loadCredentials } from '../config/store.js';
|
|
26
|
+
import { resolveControlPlaneUrl } from '../config/paths.js';
|
|
27
|
+
import { createApiClient } from '../lib/api.js';
|
|
28
|
+
import { probeProviderCredential } from '../lib/providerProbe.js';
|
|
29
|
+
// Exported (not just module-private) so a test's SetupIO implementation can
|
|
30
|
+
// return the SAME unique-symbol value the SetupIO interface's method
|
|
31
|
+
// signatures reference -- TS treats two `Symbol('cancelled')` literals in
|
|
32
|
+
// different files as distinct unique-symbol types, so a test-local re-
|
|
33
|
+
// declaration would fail to satisfy the interface even though it is
|
|
34
|
+
// semantically "the same" cancellation marker.
|
|
35
|
+
export const CANCELLED = Symbol('cancelled');
|
|
36
|
+
/** Real terminal IO, backed by @clack/prompts. */
|
|
37
|
+
export function createClackIO() {
|
|
38
|
+
return {
|
|
39
|
+
intro: (msg) => p.intro(msg),
|
|
40
|
+
outro: (msg) => p.outro(msg),
|
|
41
|
+
note: (msg, title) => p.note(msg, title),
|
|
42
|
+
log: { info: p.log.info, success: p.log.success, warn: p.log.warn, error: p.log.error },
|
|
43
|
+
async select(opts) {
|
|
44
|
+
// p.select<Value>'s Option<Value> is a conditional type that doesn't
|
|
45
|
+
// resolve against a still-generic T here (TS can't distribute
|
|
46
|
+
// `Value extends Primitive ? … : never` over an unresolved type
|
|
47
|
+
// parameter) -- the object shape is correct at runtime; the cast
|
|
48
|
+
// below is narrowing past that inference gap, not around a real type
|
|
49
|
+
// mismatch.
|
|
50
|
+
const res = await p.select(opts);
|
|
51
|
+
return p.isCancel(res) ? CANCELLED : res;
|
|
52
|
+
},
|
|
53
|
+
async text(opts) {
|
|
54
|
+
const res = await p.text(opts);
|
|
55
|
+
return p.isCancel(res) ? CANCELLED : res;
|
|
56
|
+
},
|
|
57
|
+
async password(opts) {
|
|
58
|
+
const res = await p.password(opts);
|
|
59
|
+
return p.isCancel(res) ? CANCELLED : res;
|
|
60
|
+
},
|
|
61
|
+
async confirm(opts) {
|
|
62
|
+
const res = await p.confirm(opts);
|
|
63
|
+
return p.isCancel(res) ? CANCELLED : res;
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
async function promptCredentialFields(io, def) {
|
|
68
|
+
const values = {};
|
|
69
|
+
for (const field of def.fields) {
|
|
70
|
+
const raw = field.type === 'password'
|
|
71
|
+
? await io.password({ message: `${field.label}${field.required ? '' : ' (optional)'}` })
|
|
72
|
+
: await io.text({ message: `${field.label}${field.required ? '' : ' (optional)'}`, placeholder: field.placeholder });
|
|
73
|
+
if (raw === CANCELLED)
|
|
74
|
+
return null;
|
|
75
|
+
if (!raw && field.required) {
|
|
76
|
+
io.log.error(`${field.label} is required.`);
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
if (raw)
|
|
80
|
+
values[field.key] = raw;
|
|
81
|
+
}
|
|
82
|
+
return values;
|
|
83
|
+
}
|
|
84
|
+
export async function runSetup(opts, io = createClackIO()) {
|
|
85
|
+
io.intro(pc.bold('Intutic — Guided Setup'));
|
|
86
|
+
// ── Step 1: codescan — reuse exactly what `intutic init` uses ──
|
|
87
|
+
const workspaceRoot = findWorkspaceRoot();
|
|
88
|
+
if (workspaceRoot) {
|
|
89
|
+
const harnesses = await detectHarnesses(workspaceRoot);
|
|
90
|
+
const detected = harnesses.filter((h) => h.detected);
|
|
91
|
+
if (detected.length > 0) {
|
|
92
|
+
io.note(detected.map((h) => `${pc.green('✔')} ${h.type}`).join('\n'), 'Detected harnesses');
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
io.log.warn('No harnesses detected in this workspace — Intutic still works via proxy redirect.');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
io.log.warn('Not inside a workspace (no .git/ or package.json found) — skipping harness detection.');
|
|
100
|
+
}
|
|
101
|
+
// ── Step 2: mode ──
|
|
102
|
+
const creds = await loadCredentials();
|
|
103
|
+
const mode = await io.select({
|
|
104
|
+
message: 'How do you want to configure this provider?',
|
|
105
|
+
options: [
|
|
106
|
+
{
|
|
107
|
+
value: 'connected',
|
|
108
|
+
label: 'Connected to Intutic',
|
|
109
|
+
hint: creds ? `authenticated as ${creds.email}` : 'requires `intutic login` first',
|
|
110
|
+
},
|
|
111
|
+
{ value: 'local', label: 'Local / offline (no control plane)', hint: 'writes an env file you export yourself' },
|
|
112
|
+
],
|
|
113
|
+
});
|
|
114
|
+
if (mode === CANCELLED)
|
|
115
|
+
return io.outro('Cancelled.');
|
|
116
|
+
if (mode === 'connected' && !creds) {
|
|
117
|
+
io.log.error('Not authenticated. Run `intutic login` first, or choose Local / offline.');
|
|
118
|
+
return io.outro('Cancelled.');
|
|
119
|
+
}
|
|
120
|
+
// ── Step 3: provider ──
|
|
121
|
+
const providerId = await io.select({
|
|
122
|
+
message: 'Which LLM provider do you want to configure?',
|
|
123
|
+
options: PROVIDER_REGISTRY.map((def) => ({
|
|
124
|
+
value: def.id,
|
|
125
|
+
label: def.displayName,
|
|
126
|
+
hint: def.routingLive ? 'live' : 'not yet routable',
|
|
127
|
+
})),
|
|
128
|
+
});
|
|
129
|
+
if (providerId === CANCELLED)
|
|
130
|
+
return io.outro('Cancelled.');
|
|
131
|
+
const def = getProviderDefinition(providerId);
|
|
132
|
+
// ── Step 4: credentials ──
|
|
133
|
+
io.note(`Enter your ${def.displayName} credential.${def.docsUrl ? ` Get one at ${def.docsUrl}` : ''}`, def.displayName);
|
|
134
|
+
const fields = await promptCredentialFields(io, def);
|
|
135
|
+
if (!fields)
|
|
136
|
+
return io.outro('Cancelled.');
|
|
137
|
+
// ── Step 5: verify (informational — 401/403 is the only hard stop) ──
|
|
138
|
+
io.log.info('Verifying credential…');
|
|
139
|
+
const probeResult = await probeProviderCredential(providerId, fields);
|
|
140
|
+
if (probeResult.status === 'invalid') {
|
|
141
|
+
io.log.error(probeResult.detail);
|
|
142
|
+
const proceed = await io.confirm({ message: 'Save it anyway?', initialValue: false });
|
|
143
|
+
if (proceed !== true)
|
|
144
|
+
return io.outro('Cancelled.');
|
|
145
|
+
}
|
|
146
|
+
else if (probeResult.status === 'valid') {
|
|
147
|
+
io.log.success(probeResult.detail);
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
io.log.warn(probeResult.detail);
|
|
151
|
+
}
|
|
152
|
+
// ── Step 6: persist ──
|
|
153
|
+
if (mode === 'connected') {
|
|
154
|
+
const client = createApiClient(resolveControlPlaneUrl(opts.dev), creds.apiKey);
|
|
155
|
+
try {
|
|
156
|
+
await client.put(`/api/v1/workspace/provider-credentials/${encodeURIComponent(providerId)}`, fields);
|
|
157
|
+
io.log.success(`${def.displayName} credential saved to your workspace.`);
|
|
158
|
+
}
|
|
159
|
+
catch (err) {
|
|
160
|
+
io.log.error(`Failed to save credential: ${err instanceof Error ? err.message : String(err)}`);
|
|
161
|
+
return io.outro('Setup incomplete.');
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
const envLines = Object.entries(fields).map(([k, v]) => `INTUTIC_${providerId.toUpperCase()}_${k.toUpperCase()}=${v}`);
|
|
166
|
+
const envPath = join(workspaceRoot ?? process.cwd(), '.intutic.env');
|
|
167
|
+
writeFileSync(envPath, envLines.join('\n') + '\n', { mode: 0o600 });
|
|
168
|
+
io.note(envLines.map((l) => l.replace(/=.*/, '=<redacted>')).join('\n'), `Written to ${envPath}`);
|
|
169
|
+
io.log.warn(`${envPath} contains a secret — do not commit it. Source it yourself before running your harness.`);
|
|
170
|
+
}
|
|
171
|
+
// ── Step 7: judge model ──
|
|
172
|
+
const wantJudge = await io.confirm({
|
|
173
|
+
message: "Set up an LLM-as-judge model for this workspace's checks?",
|
|
174
|
+
initialValue: false,
|
|
175
|
+
});
|
|
176
|
+
let judgeModel = null;
|
|
177
|
+
if (wantJudge === true) {
|
|
178
|
+
const choices = judgeModelChoices({ saasRoutableOnly: mode === 'connected' });
|
|
179
|
+
const CUSTOM = '__custom__';
|
|
180
|
+
const pick = await io.select({
|
|
181
|
+
message: 'Judge model',
|
|
182
|
+
options: [
|
|
183
|
+
...choices.slice(0, 20).map((m) => ({ value: m.ref, label: `${m.displayName} (${m.provider})` })),
|
|
184
|
+
{ value: CUSTOM, label: 'Enter a custom model name…' },
|
|
185
|
+
],
|
|
186
|
+
});
|
|
187
|
+
if (pick !== CANCELLED) {
|
|
188
|
+
judgeModel = pick === CUSTOM ? null : pick;
|
|
189
|
+
if (pick === CUSTOM) {
|
|
190
|
+
const custom = await io.text({ message: 'Custom judge model name' });
|
|
191
|
+
judgeModel = custom === CANCELLED ? null : custom || null;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
if (judgeModel) {
|
|
196
|
+
if (!findCatalogModel(judgeModel)) {
|
|
197
|
+
io.log.warn(`'${judgeModel}' is not in the known model catalog — treating it as a custom/BYO alias.`);
|
|
198
|
+
}
|
|
199
|
+
if (mode === 'connected') {
|
|
200
|
+
const client = createApiClient(resolveControlPlaneUrl(opts.dev), creds.apiKey);
|
|
201
|
+
try {
|
|
202
|
+
await client.put('/api/v1/workspace/settings', { managedJudgeModel: judgeModel });
|
|
203
|
+
io.log.success(`Judge model set to ${judgeModel}.`);
|
|
204
|
+
}
|
|
205
|
+
catch (err) {
|
|
206
|
+
io.log.error(`Failed to save judge model: ${err instanceof Error ? err.message : String(err)}`);
|
|
207
|
+
}
|
|
208
|
+
// Same round-trip the dashboard's JudgeModelPanel Test button runs
|
|
209
|
+
// (POST /api/v1/workspace/judge-model/test, workspace.ts) — a real,
|
|
210
|
+
// tiny completion through the exact path a workspace judge would
|
|
211
|
+
// take. Reported, not gating: the setting is already saved above, the
|
|
212
|
+
// same way the dashboard's Save and Test are independent actions.
|
|
213
|
+
io.log.info('Verifying the judge model…');
|
|
214
|
+
try {
|
|
215
|
+
const testResult = await client.post('/api/v1/workspace/judge-model/test', {
|
|
216
|
+
model: judgeModel,
|
|
217
|
+
});
|
|
218
|
+
if (testResult.ok) {
|
|
219
|
+
io.log.success(`Judge model verified — routes via ${testResult.provider}, ${testResult.latencyMs}ms round-trip.`);
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
io.log.warn(`Judge model test failed at the ${testResult.stage} stage: ${testResult.error}` +
|
|
223
|
+
(testResult.stage === 'provider'
|
|
224
|
+
? ' (this only means it cannot be tested right now — the setting above is already saved)'
|
|
225
|
+
: ''));
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
catch (err) {
|
|
229
|
+
io.log.warn(`Could not run the judge model test: ${err instanceof Error ? err.message : String(err)}`);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
io.note(`On-prem judge setup isn't finished by this command — run:\n intutic judge configure`, 'Next step');
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
io.outro(pc.bold('Setup complete.'));
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/skill.d.ts
CHANGED
|
@@ -3,8 +3,262 @@
|
|
|
3
3
|
*
|
|
4
4
|
* LLD Phase 8 — Loop Engineering & Ingestion Proposals
|
|
5
5
|
*/
|
|
6
|
+
import { type SkillScanFinding, type SkillScanCategory } from '@intutic/shared-types';
|
|
7
|
+
import { type CiscoDirScanResult } from '../lib/ciscoScanner.js';
|
|
8
|
+
/**
|
|
9
|
+
* One row of the local skill/rule-file inventory reported to the control
|
|
10
|
+
* plane by `POST /api/v1/workspaces/:id/skills/report`.
|
|
11
|
+
*/
|
|
12
|
+
export interface SkillReportEntry {
|
|
13
|
+
/** Path relative to the workspace root, e.g. `CLAUDE.md`. */
|
|
14
|
+
filePath: string;
|
|
15
|
+
/** Line count of the file as scanned. */
|
|
16
|
+
linesCount: number;
|
|
17
|
+
/** Audit findings in this file; always 0 for `skill list`, which only counts. */
|
|
18
|
+
issuesDetected: number;
|
|
19
|
+
/**
|
|
20
|
+
* Bounded findings from `scanSkillContent` (`@intutic/shared-types`), for
|
|
21
|
+
* real `.agents/skills/**\/SKILL.md` / `.claude/skills/**\/SKILL.md` skill
|
|
22
|
+
* files. Absent for the legacy rule-file rows, which keep the coarse
|
|
23
|
+
* regex audit above — never full skill content, see `scanSkillContent`'s
|
|
24
|
+
* own doc comment.
|
|
25
|
+
*/
|
|
26
|
+
findings?: SkillScanFinding[];
|
|
27
|
+
/** sha256 of the file content at scan time, so a consumer can tell which
|
|
28
|
+
* content a set of findings refers to without re-uploading it. */
|
|
29
|
+
sha256?: string;
|
|
30
|
+
/**
|
|
31
|
+
* `false` when the file could not be read (permissions, vanished between
|
|
32
|
+
* discovery and read, etc). Refusal-not-pass: an unscanned file MUST NOT
|
|
33
|
+
* be reported as `issuesDetected: 0` implying safety — that would read as
|
|
34
|
+
* "scanned and clean" to anything downstream. Omitted (not `false`) for
|
|
35
|
+
* the legacy rule-file rows and for successfully scanned skill files, so
|
|
36
|
+
* `scanned === false` unambiguously means "we could not tell."
|
|
37
|
+
*/
|
|
38
|
+
scanned?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Which surface this row describes. `'skill_md'` for a skill's
|
|
41
|
+
* `SKILL.md`, `'script'` for a bundled file discovered by
|
|
42
|
+
* `discoverSkillBundledFiles` and audited by `auditScriptFile`. Absent for
|
|
43
|
+
* the legacy rule-file rows (`.cursorrules`, `CLAUDE.md`, etc), which
|
|
44
|
+
* predate this distinction and are neither.
|
|
45
|
+
*/
|
|
46
|
+
kind?: 'skill_md' | 'script';
|
|
47
|
+
/**
|
|
48
|
+
* The script language `detectScriptLanguage` (`@intutic/shared-types`)
|
|
49
|
+
* inferred for a `kind: 'script'` row — `'unknown'` when neither the
|
|
50
|
+
* extension nor a shebang resolved (still hashed, never scanned; see
|
|
51
|
+
* `auditScriptFile`). Absent for anything that isn't a script row.
|
|
52
|
+
*/
|
|
53
|
+
language?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Phase S5 (TD-357). FULL content of a `kind: 'skill_md'` file, attached
|
|
56
|
+
* ONLY when the workspace has `semanticSkillAnalysisEnabled` on (read from
|
|
57
|
+
* `client.fetchConfig`'s resolved `settings`, the same way
|
|
58
|
+
* `enableLocalSkillAuditDelete` already is below) — never for `kind:
|
|
59
|
+
* 'script'` rows, which stay S2/S3/S4's domain. Capped client-side to the
|
|
60
|
+
* same 65536-char bound `SkillFileReportSchema` enforces server-side
|
|
61
|
+
* (`services/control-plane/src/routes/harnessConfig.ts`), so an oversized
|
|
62
|
+
* file 400s never a request; it is silently capped, the same
|
|
63
|
+
* refusal-vs-cap posture `capContentForTransport`'s own doc comment
|
|
64
|
+
* explains.
|
|
65
|
+
*/
|
|
66
|
+
content?: string;
|
|
67
|
+
}
|
|
68
|
+
export declare function capContentForTransport(content: string): string;
|
|
69
|
+
export interface DiscoveredSkillFile {
|
|
70
|
+
/** Path relative to the workspace root, e.g. `.agents/skills/foo/SKILL.md`. */
|
|
71
|
+
filePath: string;
|
|
72
|
+
fullPath: string;
|
|
73
|
+
source: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Read, content-scan, and (if `prune` is set and the scan is not clean)
|
|
77
|
+
* auto-prune one real skill file. Extracted from `runSkillAudit` so the
|
|
78
|
+
* discovery/read/scan/report path is testable without the network and
|
|
79
|
+
* credentials setup the full command does.
|
|
80
|
+
*
|
|
81
|
+
* Refusal-not-pass: a read failure returns `scanned: false` with
|
|
82
|
+
* `issuesDetected: 0` — the zero is not a clean bill of health, it is "we
|
|
83
|
+
* never got to look." Callers must treat `scanned: false` as its own status,
|
|
84
|
+
* never as `clean`.
|
|
85
|
+
*/
|
|
86
|
+
export declare function auditSkillFile(filePath: string, fullPath: string, prune: boolean,
|
|
87
|
+
/** Suppresses the per-finding `log.warn` narrative. Used by `--sarif`
|
|
88
|
+
* (`runSkillAudit`), whose stdout contract is a single JSON document — a
|
|
89
|
+
* CI tool piping that into a SARIF parser must not see decorated text
|
|
90
|
+
* interleaved with it. Findings are still returned; only the console
|
|
91
|
+
* narration is skipped. Defaults to `false` so every existing caller
|
|
92
|
+
* (including the tests that assert on `log.warn` output indirectly via
|
|
93
|
+
* behaviour) is unaffected. */
|
|
94
|
+
quiet?: boolean,
|
|
95
|
+
/**
|
|
96
|
+
* Phase S5 (TD-357). Attach the file's full content to the returned entry
|
|
97
|
+
* — only ever set by a caller that already confirmed
|
|
98
|
+
* `semanticSkillAnalysisEnabled` for this workspace (`runSkillAudit`
|
|
99
|
+
* below reads it off `client.fetchConfig`'s resolved settings, the same
|
|
100
|
+
* way it already reads `enableLocalSkillAuditDelete`). Defaults to
|
|
101
|
+
* `false` so every existing caller/test is unaffected. */
|
|
102
|
+
attachContent?: boolean): Promise<SkillReportEntry>;
|
|
103
|
+
/** Enumerate real `SKILL.md` files under both skill directory roots. A
|
|
104
|
+
* missing root is not an error — most workspaces have neither. Exported so
|
|
105
|
+
* tests can walk a fixture directory tree without going through the full
|
|
106
|
+
* `skill audit`/`skill list` command (credentials, network, etc). */
|
|
107
|
+
export declare function discoverSkillFiles(workspaceRoot: string): Promise<DiscoveredSkillFile[]>;
|
|
108
|
+
/** One bundled file discovered alongside a skill's `SKILL.md`. */
|
|
109
|
+
export interface DiscoveredScriptFile {
|
|
110
|
+
/** Path relative to the workspace root. */
|
|
111
|
+
filePath: string;
|
|
112
|
+
fullPath: string;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Bounded, symlink-skipping recursive walk of a skill directory's sibling
|
|
116
|
+
* files — everything alongside `SKILL.md`, the surface TD-356
|
|
117
|
+
* (`docs/TECH_DEBT.md`) named as unenumerated. `SKILL.md` itself is excluded
|
|
118
|
+
* (it is already covered by `discoverSkillFiles`/`auditSkillFile` above);
|
|
119
|
+
* everything else found, at any depth up to the cap, is a candidate for
|
|
120
|
+
* `auditScriptFile`.
|
|
121
|
+
*
|
|
122
|
+
* Bounded by `MAX_SKILL_DIR_DEPTH` and `MAX_FILES_PER_SKILL`
|
|
123
|
+
* (`@intutic/shared-types`) — a skill directory is developer-authored
|
|
124
|
+
* content, not something this command should ever walk unboundedly. Depth 0
|
|
125
|
+
* is the skill directory itself; nested subdirectories increment from
|
|
126
|
+
* there, and the walk stops recursing once depth exceeds the cap.
|
|
127
|
+
*
|
|
128
|
+
* Symlinks are never followed: `Dirent.isSymbolicLink()` is checked during
|
|
129
|
+
* `readdir` and skipped outright, without ever stat-ing or resolving where
|
|
130
|
+
* the link points. A symlink inside a skill directory could point outside
|
|
131
|
+
* that directory — or outside the workspace entirely — which would turn a
|
|
132
|
+
* bounded, skill-scoped walk into an effectively unbounded one, and would
|
|
133
|
+
* let a skill directory "bundle" a script that does not actually live on
|
|
134
|
+
* disk inside it.
|
|
135
|
+
*/
|
|
136
|
+
export declare function discoverSkillBundledFiles(workspaceRoot: string,
|
|
137
|
+
/** Path to the skill directory (not `SKILL.md` itself), relative to
|
|
138
|
+
* `workspaceRoot`, e.g. `.agents/skills/my-skill`. */
|
|
139
|
+
skillDirPath: string): Promise<DiscoveredScriptFile[]>;
|
|
140
|
+
/**
|
|
141
|
+
* Read, hash, and — when recognized and within the byte cap — content-scan
|
|
142
|
+
* one bundled script file discovered by `discoverSkillBundledFiles`.
|
|
143
|
+
*
|
|
144
|
+
* The sha256 hash is ALWAYS computed, even for a file this scanner cannot
|
|
145
|
+
* itself interpret (a binary, an unrecognized extension with no useful
|
|
146
|
+
* shebang) — that is deliberate, not a leftover from a simpler version of
|
|
147
|
+
* this function. A later, separate, opt-in phase (Cisco `skill-scanner` /
|
|
148
|
+
* VirusTotal-style hash lookup, Phase S3) needs the hash of every bundled
|
|
149
|
+
* file regardless of whether THIS scanner's regex patterns can say anything
|
|
150
|
+
* about its content.
|
|
151
|
+
*
|
|
152
|
+
* Refusal-not-pass, same contract as `auditSkillFile`: a read failure, a
|
|
153
|
+
* file over `MAX_SCRIPT_SCAN_BYTES`, or an unrecognized language all return
|
|
154
|
+
* `scanned: false` — never folded into `issuesDetected: 0` implying safety.
|
|
155
|
+
* A file over the byte cap is a REFUSAL to look, reported as such, not a
|
|
156
|
+
* silent skip and not a false "clean".
|
|
157
|
+
*/
|
|
158
|
+
export declare function auditScriptFile(filePath: string, fullPath: string, quiet?: boolean): Promise<SkillReportEntry>;
|
|
159
|
+
/**
|
|
160
|
+
* A loop run as returned by `GET /api/v1/loops`.
|
|
161
|
+
*
|
|
162
|
+
* `totalTokenCostUsd` and `budgetLimitUsd` are strings, not numbers: both are
|
|
163
|
+
* Postgres `numeric` columns, which the driver hands back as strings to keep
|
|
164
|
+
* the scale exact — hence the `parseFloat` at every use site.
|
|
165
|
+
*/
|
|
166
|
+
export interface LoopRunSummary {
|
|
167
|
+
loopRunId: string;
|
|
168
|
+
name: string;
|
|
169
|
+
/**
|
|
170
|
+
* PENDING_REVIEW is the only non-ACTIVE status that is not terminal — see
|
|
171
|
+
* `LoopRunDetails` in the control plane's loopGovernanceService.
|
|
172
|
+
*/
|
|
173
|
+
status: 'ACTIVE' | 'PENDING_REVIEW' | 'COMPLETED' | 'FAILED' | 'KILLED';
|
|
174
|
+
totalTokenCostUsd: string;
|
|
175
|
+
budgetLimitUsd: string;
|
|
176
|
+
}
|
|
177
|
+
/** Envelope of `GET /api/v1/loops`. */
|
|
178
|
+
export interface LoopListResponse {
|
|
179
|
+
ok: boolean;
|
|
180
|
+
loops: LoopRunSummary[];
|
|
181
|
+
}
|
|
6
182
|
export declare function runSkillList(): Promise<void>;
|
|
7
|
-
|
|
183
|
+
/**
|
|
184
|
+
* A minimal, valid SARIF 2.1.0 document for CI/code-scanning interop.
|
|
185
|
+
*
|
|
186
|
+
* Built for GitHub Code Scanning and any other consumer of the format — not
|
|
187
|
+
* for Cisco's open-source `skill-scanner` project specifically, but so that
|
|
188
|
+
* tool's findings and ours can land in the same code-scanning pane on a repo
|
|
189
|
+
* that runs both. We do not shell out to or depend on that project; this is
|
|
190
|
+
* only a compatible OUTPUT shape.
|
|
191
|
+
*
|
|
192
|
+
* `rules` lists every pattern `scanSkillContent` knows how to report —
|
|
193
|
+
* SARIF's convention is the tool's full rule catalog, not only the ids that
|
|
194
|
+
* fired in this run, so a code-scanning UI can show a rule as "0 findings"
|
|
195
|
+
* rather than "unknown rule". `results` is built only from real skill files
|
|
196
|
+
* (`SkillReportEntry.findings`, populated by `auditSkillFile`); the legacy
|
|
197
|
+
* `.cursorrules`/`CLAUDE.md` regex checks above have no pattern ids and stay
|
|
198
|
+
* out of SARIF for that reason — see the entries' own `findings` being
|
|
199
|
+
* absent, not an omission here.
|
|
200
|
+
*
|
|
201
|
+
* `locations` deliberately carries no `region`: `SkillScanFinding` bounds an
|
|
202
|
+
* excerpt (see `skillScan.ts`'s `excerptFor`) but not a line/column, and
|
|
203
|
+
* SARIF's `region` is optional — fabricating `startLine: 1` would claim a
|
|
204
|
+
* precision this scanner does not have.
|
|
205
|
+
*
|
|
206
|
+
* `additionalRuns` (Phase S3): zero or more extra SARIF `runs[]`-shaped
|
|
207
|
+
* objects appended AFTER this codebase's own run — the Cisco skill-scanner
|
|
208
|
+
* integration's combined run, when that engine ran. SARIF is explicitly
|
|
209
|
+
* designed to carry multiple runs from different tools in one document, so
|
|
210
|
+
* these are appended AS-IS, never translated or merged into this function's
|
|
211
|
+
* own `results`/`rules` — that translation only happens for the internal
|
|
212
|
+
* `SkillScanFinding` representation (`mergeCiscoFindings`), never for this
|
|
213
|
+
* output mode.
|
|
214
|
+
*/
|
|
215
|
+
export declare function buildSarifLog(entries: readonly SkillReportEntry[], additionalRuns?: readonly unknown[]): object;
|
|
216
|
+
/** See {@link CISCO_CATEGORY_MAP}. Exported for tests. */
|
|
217
|
+
export declare function mapCiscoCategory(category: string | undefined): SkillScanCategory;
|
|
218
|
+
/**
|
|
219
|
+
* Merges one skill directory's Cisco findings into that skill's existing
|
|
220
|
+
* report entries — the `SKILL.md` row, or a bundled-script row when a
|
|
221
|
+
* finding's own location matches one of `candidateEntries` exactly. Falls
|
|
222
|
+
* back to `fallbackEntry` (always the skill's `SKILL.md` row) when no
|
|
223
|
+
* location match is found — this codebase does not assume `skill-scanner`
|
|
224
|
+
* always attributes a finding to a specific bundled file, so an
|
|
225
|
+
* unmatched/absent location is treated as "belongs to the skill as a
|
|
226
|
+
* whole," not an error.
|
|
227
|
+
*
|
|
228
|
+
* Each Cisco finding becomes a `SkillScanFinding` with `patternId: 'cisco.'
|
|
229
|
+
* + ruleId`, a category from {@link mapCiscoCategory} (mapped from the
|
|
230
|
+
* finding's own `category`, not its `ruleId`), an excerpt capped at
|
|
231
|
+
* {@link CISCO_EXCERPT_CAP}, and `engine: 'cisco-skill-scanner'` — this
|
|
232
|
+
* codebase's own findings stamp `engine: 'native'` at construction
|
|
233
|
+
* (`skillScan.ts`/`scriptScan.ts`), so every finding in a report entry now
|
|
234
|
+
* carries its provenance.
|
|
235
|
+
*
|
|
236
|
+
* Returns the number of findings merged, for the caller's running `issues`
|
|
237
|
+
* count.
|
|
238
|
+
*/
|
|
239
|
+
export declare function mergeCiscoFindings(candidateEntries: readonly SkillReportEntry[], fallbackEntry: SkillReportEntry, ciscoResult: CiscoDirScanResult, workspaceRoot: string): number;
|
|
240
|
+
export declare function runSkillAudit(opts?: {
|
|
241
|
+
sarif?: boolean;
|
|
242
|
+
engine?: 'native' | 'cisco';
|
|
243
|
+
}): Promise<void>;
|
|
244
|
+
/**
|
|
245
|
+
* Warn-only skill-content scan over staged additions in the skill surface.
|
|
246
|
+
*
|
|
247
|
+
* TD-358. This is the CLI entry point `lib/gitHooks.ts`'s pre-commit hook
|
|
248
|
+
* shells out to (`intutic skill scan-staged`) — deliberately separate from
|
|
249
|
+
* `skill audit` above, which scans the whole workspace and is too slow and
|
|
250
|
+
* too broad for a commit-time check that must stay fast.
|
|
251
|
+
*
|
|
252
|
+
* Never refuses a commit and never throws: `scanSkillContent`'s
|
|
253
|
+
* false-positive rate against real, benign skill markdown is unmeasured (see
|
|
254
|
+
* `skillScan.ts`'s module doc comment), so this phase stages the signal as
|
|
255
|
+
* an advisory only. Contrast `lib/gitHooks.ts`'s secret scan, which DOES
|
|
256
|
+
* refuse — that check is high-precision, prefixed credential shapes with no
|
|
257
|
+
* known false positives; this one is not, and must not borrow that check's
|
|
258
|
+
* authority until it has earned it the same way.
|
|
259
|
+
*/
|
|
260
|
+
export declare function runSkillScanStaged(): Promise<void>;
|
|
261
|
+
export declare function getClient(dev?: boolean): Promise<import("../lib/api.js").ApiClient>;
|
|
8
262
|
export declare function runLoopStart(opts: {
|
|
9
263
|
name: string;
|
|
10
264
|
budget?: string;
|
|
@@ -21,6 +275,19 @@ export declare function runLoopKill(loopRunId: string, opts: {
|
|
|
21
275
|
export declare function runLoopList(opts: {
|
|
22
276
|
dev?: boolean;
|
|
23
277
|
}): Promise<void>;
|
|
278
|
+
/**
|
|
279
|
+
* Approve or reject a run held for human review.
|
|
280
|
+
*
|
|
281
|
+
* The other half of `review_before:`. Without it a hold has no resolution from
|
|
282
|
+
* the terminal, and the hold is deliberately permanent — there is no reaper, so
|
|
283
|
+
* an unreviewed run stays blocked until a person acts.
|
|
284
|
+
*/
|
|
285
|
+
export declare function runLoopReview(loopRunId: string, opts: {
|
|
286
|
+
approve?: boolean;
|
|
287
|
+
reject?: boolean;
|
|
288
|
+
note?: string;
|
|
289
|
+
dev?: boolean;
|
|
290
|
+
}): Promise<void>;
|
|
24
291
|
export declare function runLoopExec(commandAndArgs: string[], opts: {
|
|
25
292
|
name?: string;
|
|
26
293
|
budget?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH,OAAO,EASL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EAEvB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAA;AAK/B;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAA;IAChB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,iFAAiF;IACjF,cAAc,EAAE,MAAM,CAAA;IACtB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC7B;uEACmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAA;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAcD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI9D;AAWD,MAAM,WAAW,mBAAmB;IAClC,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO;AACd;;;;;;gCAMgC;AAChC,KAAK,UAAQ;AACb;;;;;;0DAM0D;AAC1D,aAAa,UAAQ,GACpB,OAAO,CAAC,gBAAgB,CAAC,CAsD3B;AAED;;;sEAGsE;AACtE,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAoB9F;AAED,kEAAkE;AAClE,MAAM,WAAW,oBAAoB;IACnC,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,yBAAyB,CAC7C,aAAa,EAAE,MAAM;AACrB;uDACuD;AACvD,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CA6BjC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,UAAQ,GACZ,OAAO,CAAC,gBAAgB,CAAC,CAuD3B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ;;;OAGG;IACH,MAAM,EAAE,QAAQ,GAAG,gBAAgB,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAA;IACvE,iBAAiB,EAAE,MAAM,CAAA;IACzB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,uCAAuC;AACvC,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAA;IACX,KAAK,EAAE,cAAc,EAAE,CAAA;CACxB;AAID,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAkElD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,EAAE,cAAc,GAAE,SAAS,OAAO,EAAO,GAAG,MAAM,CAqDnH;AA+CD,0DAA0D;AAC1D,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,iBAAiB,CAGhF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAChC,gBAAgB,EAAE,SAAS,gBAAgB,EAAE,EAC7C,aAAa,EAAE,gBAAgB,EAC/B,WAAW,EAAE,kBAAkB,EAC/B,aAAa,EAAE,MAAM,GACpB,MAAM,CAyBR;AAED,wBAAsB,aAAa,CAAC,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA0M9G;AAyCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CA+BxD;AAOD,wBAAsB,SAAS,CAAC,GAAG,CAAC,EAAE,OAAO,8CAsB5C;AAkCD,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CA+ChB;AAED,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAc/F;AAED,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAa3F;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BxE;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1E,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED,wBAAsB,WAAW,CAC/B,cAAc,EAAE,MAAM,EAAE,EACxB,IAAI,EAAE;IACJ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,GACA,OAAO,CAAC,IAAI,CAAC,CA6Gf"}
|