sentinelayer-cli 0.6.2 → 0.8.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 +1009 -996
- package/bin/create-sentinelayer.js +5 -5
- package/bin/sentinelayer-cli.js +4 -4
- package/bin/sl.js +5 -5
- package/package.json +64 -63
- package/src/agents/ai-governance/index.js +12 -0
- package/src/agents/ai-governance/tools/base.js +171 -0
- package/src/agents/ai-governance/tools/eval-regression.js +47 -0
- package/src/agents/ai-governance/tools/hitl-audit.js +81 -0
- package/src/agents/ai-governance/tools/index.js +52 -0
- package/src/agents/ai-governance/tools/prompt-drift.js +42 -0
- package/src/agents/ai-governance/tools/provenance-check.js +69 -0
- package/src/agents/backend/index.js +12 -0
- package/src/agents/backend/tools/base.js +189 -0
- package/src/agents/backend/tools/circuit-breaker-check.js +123 -0
- package/src/agents/backend/tools/idempotency-audit.js +105 -0
- package/src/agents/backend/tools/index.js +87 -0
- package/src/agents/backend/tools/retry-audit.js +132 -0
- package/src/agents/backend/tools/timeout-audit.js +144 -0
- package/src/agents/code-quality/index.js +12 -0
- package/src/agents/code-quality/tools/base.js +159 -0
- package/src/agents/code-quality/tools/complexity-measure.js +197 -0
- package/src/agents/code-quality/tools/coupling-analysis.js +81 -0
- package/src/agents/code-quality/tools/cycle-detect.js +49 -0
- package/src/agents/code-quality/tools/dep-graph.js +196 -0
- package/src/agents/code-quality/tools/index.js +89 -0
- package/src/agents/data-layer/index.js +12 -0
- package/src/agents/data-layer/tools/base.js +181 -0
- package/src/agents/data-layer/tools/index-audit.js +165 -0
- package/src/agents/data-layer/tools/index.js +83 -0
- package/src/agents/data-layer/tools/migration-scan.js +135 -0
- package/src/agents/data-layer/tools/query-explain.js +120 -0
- package/src/agents/data-layer/tools/tenancy-scan.js +166 -0
- package/src/agents/documentation/index.js +12 -0
- package/src/agents/documentation/tools/api-diff.js +91 -0
- package/src/agents/documentation/tools/base.js +151 -0
- package/src/agents/documentation/tools/dead-link-check.js +58 -0
- package/src/agents/documentation/tools/docstring-coverage.js +78 -0
- package/src/agents/documentation/tools/index.js +52 -0
- package/src/agents/documentation/tools/readme-freshness.js +61 -0
- package/src/agents/envelope/fix-cycle.js +45 -0
- package/src/agents/envelope/index.js +31 -0
- package/src/agents/envelope/loop.js +150 -0
- package/src/agents/envelope/pulse.js +18 -0
- package/src/agents/envelope/stream.js +40 -0
- package/src/agents/infrastructure/index.js +12 -0
- package/src/agents/infrastructure/tools/base.js +171 -0
- package/src/agents/infrastructure/tools/checkov-run.js +32 -0
- package/src/agents/infrastructure/tools/drift-detect.js +59 -0
- package/src/agents/infrastructure/tools/iam-least-priv-check.js +78 -0
- package/src/agents/infrastructure/tools/index.js +52 -0
- package/src/agents/infrastructure/tools/tflint-run.js +31 -0
- package/src/agents/jules/config/definition.js +160 -160
- package/src/agents/jules/config/system-prompt.js +182 -182
- package/src/agents/jules/error-intake.js +51 -51
- package/src/agents/jules/fix-cycle.js +17 -17
- package/src/agents/jules/loop.js +460 -450
- package/src/agents/jules/pulse.js +10 -10
- package/src/agents/jules/stream.js +187 -186
- package/src/agents/jules/swarm/file-scanner.js +74 -74
- package/src/agents/jules/swarm/index.js +11 -11
- package/src/agents/jules/swarm/orchestrator.js +362 -362
- package/src/agents/jules/swarm/pattern-hunter.js +123 -123
- package/src/agents/jules/swarm/sub-agent.js +315 -309
- package/src/agents/jules/tools/aidenid-email.js +189 -189
- package/src/agents/jules/tools/auth-audit.js +1708 -1691
- package/src/agents/jules/tools/dispatch.js +340 -335
- package/src/agents/jules/tools/file-edit.js +2 -2
- package/src/agents/jules/tools/file-read.js +2 -2
- package/src/agents/jules/tools/frontend-analyze.js +570 -570
- package/src/agents/jules/tools/glob.js +2 -2
- package/src/agents/jules/tools/grep.js +2 -2
- package/src/agents/jules/tools/index.js +29 -29
- package/src/agents/jules/tools/path-guards.js +2 -2
- package/src/agents/jules/tools/runtime-audit.js +507 -507
- package/src/agents/jules/tools/shell.js +2 -2
- package/src/agents/jules/tools/url-policy.js +100 -100
- package/src/agents/mode.js +113 -0
- package/src/agents/observability/index.js +12 -0
- package/src/agents/observability/tools/alert-audit.js +39 -0
- package/src/agents/observability/tools/base.js +181 -0
- package/src/agents/observability/tools/dashboard-gap.js +42 -0
- package/src/agents/observability/tools/index.js +54 -0
- package/src/agents/observability/tools/log-schema-check.js +74 -0
- package/src/agents/observability/tools/span-coverage.js +74 -0
- package/src/agents/persona-visuals.js +102 -61
- package/src/agents/release/index.js +12 -0
- package/src/agents/release/tools/base.js +181 -0
- package/src/agents/release/tools/changelog-diff.js +86 -0
- package/src/agents/release/tools/feature-flag-audit.js +126 -0
- package/src/agents/release/tools/index.js +61 -0
- package/src/agents/release/tools/rollback-verify.js +129 -0
- package/src/agents/release/tools/semver-check.js +109 -0
- package/src/agents/reliability/index.js +12 -0
- package/src/agents/reliability/tools/backpressure-check.js +129 -0
- package/src/agents/reliability/tools/base.js +181 -0
- package/src/agents/reliability/tools/chaos-probe.js +109 -0
- package/src/agents/reliability/tools/graceful-degradation-check.js +114 -0
- package/src/agents/reliability/tools/health-check-audit.js +111 -0
- package/src/agents/reliability/tools/index.js +87 -0
- package/src/agents/run-persona.js +109 -0
- package/src/agents/security/index.js +12 -0
- package/src/agents/security/tools/authz-audit.js +134 -0
- package/src/agents/security/tools/base.js +190 -0
- package/src/agents/security/tools/crypto-review.js +175 -0
- package/src/agents/security/tools/index.js +97 -0
- package/src/agents/security/tools/sast-scan.js +175 -0
- package/src/agents/security/tools/secrets-scan.js +216 -0
- package/src/agents/shared-tools/dispatch-core.js +320 -315
- package/src/agents/shared-tools/file-edit.js +180 -180
- package/src/agents/shared-tools/file-read.js +100 -100
- package/src/agents/shared-tools/glob.js +168 -168
- package/src/agents/shared-tools/grep.js +228 -228
- package/src/agents/shared-tools/index.js +46 -46
- package/src/agents/shared-tools/path-guards.js +161 -161
- package/src/agents/shared-tools/shell.js +383 -383
- package/src/agents/supply-chain/index.js +12 -0
- package/src/agents/supply-chain/tools/attestation-check.js +42 -0
- package/src/agents/supply-chain/tools/base.js +151 -0
- package/src/agents/supply-chain/tools/index.js +52 -0
- package/src/agents/supply-chain/tools/lockfile-integrity.js +73 -0
- package/src/agents/supply-chain/tools/package-verify.js +56 -0
- package/src/agents/supply-chain/tools/sbom-diff.js +34 -0
- package/src/agents/testing/index.js +12 -0
- package/src/agents/testing/tools/base.js +202 -0
- package/src/agents/testing/tools/coverage-gap.js +144 -0
- package/src/agents/testing/tools/flake-detect.js +125 -0
- package/src/agents/testing/tools/index.js +85 -0
- package/src/agents/testing/tools/mutation-test.js +143 -0
- package/src/agents/testing/tools/snapshot-diff.js +103 -0
- package/src/ai/aidenid.js +1021 -1009
- package/src/ai/client.js +553 -553
- package/src/ai/domain-target-store.js +268 -268
- package/src/ai/identity-store.js +270 -270
- package/src/ai/proxy.js +137 -137
- package/src/ai/site-store.js +145 -145
- package/src/audit/agents/architecture.js +180 -180
- package/src/audit/agents/compliance.js +179 -179
- package/src/audit/agents/documentation.js +165 -165
- package/src/audit/agents/performance.js +145 -145
- package/src/audit/agents/security.js +215 -215
- package/src/audit/agents/testing.js +172 -172
- package/src/audit/orchestrator.js +557 -557
- package/src/audit/package.js +204 -204
- package/src/audit/registry.js +284 -284
- package/src/audit/replay.js +103 -103
- package/src/auth/gate.js +428 -371
- package/src/auth/http.js +681 -611
- package/src/auth/service.js +1106 -1106
- package/src/auth/session-store.js +813 -813
- package/src/cli.js +257 -252
- package/src/commands/ai/identity-lifecycle.js +1338 -1338
- package/src/commands/ai/provision-governance.js +1272 -1272
- package/src/commands/ai/shared.js +147 -147
- package/src/commands/ai.js +11 -11
- package/src/commands/apply.js +12 -12
- package/src/commands/audit.js +1171 -1166
- package/src/commands/auth.js +419 -419
- package/src/commands/chat.js +184 -191
- package/src/commands/config.js +184 -184
- package/src/commands/cost.js +311 -311
- package/src/commands/daemon/core.js +850 -850
- package/src/commands/daemon/extended.js +1048 -1048
- package/src/commands/daemon/shared.js +213 -213
- package/src/commands/daemon.js +11 -11
- package/src/commands/guide.js +174 -174
- package/src/commands/ingest.js +58 -58
- package/src/commands/init.js +55 -55
- package/src/commands/legacy-args.js +20 -10
- package/src/commands/mcp.js +461 -461
- package/src/commands/omargate.js +63 -29
- package/src/commands/persona.js +65 -20
- package/src/commands/plugin.js +260 -260
- package/src/commands/policy.js +132 -132
- package/src/commands/prompt.js +238 -238
- package/src/commands/review.js +704 -704
- package/src/commands/scan.js +865 -872
- package/src/commands/session.js +1238 -0
- package/src/commands/spec.js +771 -716
- package/src/commands/swarm.js +651 -651
- package/src/commands/telemetry.js +202 -202
- package/src/commands/watch.js +511 -511
- package/src/config/agent-dictionary.js +182 -182
- package/src/config/io.js +56 -56
- package/src/config/paths.js +18 -18
- package/src/config/schema.js +55 -55
- package/src/config/service.js +184 -184
- package/src/coord/events-log.js +141 -0
- package/src/coord/handshake.js +719 -0
- package/src/coord/index.js +35 -0
- package/src/coord/paths.js +84 -0
- package/src/coord/priority.js +62 -0
- package/src/coord/tarjan.js +157 -0
- package/src/cost/budget.js +235 -235
- package/src/cost/history.js +188 -188
- package/src/cost/tokenizer.js +160 -0
- package/src/cost/tracker.js +232 -171
- package/src/daemon/artifact-lineage.js +896 -534
- package/src/daemon/assignment-ledger.js +1083 -770
- package/src/daemon/ast-drift.js +496 -0
- package/src/daemon/ast-parser-layer.js +258 -258
- package/src/daemon/budget-governor.js +633 -633
- package/src/daemon/callgraph-overlay.js +646 -646
- package/src/daemon/error-worker.js +1209 -626
- package/src/daemon/fix-cycle.js +384 -377
- package/src/daemon/hybrid-mapper.js +929 -929
- package/src/daemon/ingest-refresh.js +79 -11
- package/src/daemon/jira-lifecycle.js +767 -632
- package/src/daemon/operator-control.js +657 -657
- package/src/daemon/pulse.js +327 -327
- package/src/daemon/reliability-lane.js +471 -471
- package/src/daemon/scope-engine.js +1068 -0
- package/src/daemon/watchdog.js +971 -971
- package/src/events/schema.js +190 -0
- package/src/guide/generator.js +316 -316
- package/src/ingest/engine.js +933 -918
- package/src/ingest/ownership.js +380 -0
- package/src/interactive/index.js +97 -97
- package/src/legacy-cli.js +3228 -2994
- package/src/mcp/registry.js +695 -695
- package/src/memory/blackboard.js +301 -301
- package/src/memory/retrieval.js +581 -581
- package/src/orchestrator/kai-chen.js +126 -0
- package/src/plugin/manifest.js +553 -553
- package/src/policy/packs.js +144 -144
- package/src/prompt/generator.js +136 -118
- package/src/review/ai-review.js +672 -679
- package/src/review/compliance-pack.js +389 -0
- package/src/review/investor-dd-config.js +54 -0
- package/src/review/investor-dd-file-loop.js +303 -0
- package/src/review/investor-dd-file-router.js +406 -0
- package/src/review/investor-dd-html-report.js +233 -0
- package/src/review/investor-dd-notification.js +120 -0
- package/src/review/investor-dd-orchestrator.js +405 -0
- package/src/review/investor-dd-persona-runner.js +275 -0
- package/src/review/live-validator.js +253 -0
- package/src/review/local-review.js +1351 -1305
- package/src/review/omargate-interactive.js +68 -68
- package/src/review/omargate-orchestrator.js +492 -300
- package/src/review/persona-prompts.js +484 -296
- package/src/review/reconciliation-rules.js +329 -0
- package/src/review/replay.js +235 -235
- package/src/review/report.js +664 -664
- package/src/review/reproducibility-chain.js +136 -0
- package/src/review/scan-modes.js +147 -42
- package/src/review/spec-binding.js +487 -487
- package/src/scaffold/generator.js +67 -67
- package/src/scaffold/templates.js +150 -150
- package/src/scan/generator.js +418 -418
- package/src/scan/gh-secrets.js +107 -107
- package/src/session/agent-registry.js +359 -0
- package/src/session/analytics.js +479 -0
- package/src/session/daemon.js +1396 -0
- package/src/session/file-locks.js +666 -0
- package/src/session/paths.js +37 -0
- package/src/session/recap.js +567 -0
- package/src/session/redact.js +82 -0
- package/src/session/runtime-bridge.js +762 -0
- package/src/session/scoring.js +406 -0
- package/src/session/setup-guides.js +304 -0
- package/src/session/store.js +704 -0
- package/src/session/stream.js +333 -0
- package/src/session/sync.js +753 -0
- package/src/session/tasks.js +1054 -0
- package/src/session/templates.js +188 -0
- package/src/spec/generator.js +619 -519
- package/src/spec/regenerate.js +237 -237
- package/src/spec/templates.js +91 -91
- package/src/swarm/dashboard.js +247 -247
- package/src/swarm/factory.js +363 -363
- package/src/swarm/pentest.js +934 -934
- package/src/swarm/registry.js +419 -419
- package/src/swarm/report.js +158 -158
- package/src/swarm/runtime.js +569 -576
- package/src/swarm/scenario-dsl.js +272 -272
- package/src/telemetry/ledger.js +302 -302
- package/src/telemetry/session-tracker.js +234 -234
- package/src/telemetry/sync.js +203 -203
- package/src/ui/command-hints.js +13 -13
- package/src/ui/markdown.js +220 -220
package/src/commands/omargate.js
CHANGED
|
@@ -1,29 +1,63 @@
|
|
|
1
|
-
import { buildLegacyArgs } from "./legacy-args.js";
|
|
2
|
-
|
|
3
|
-
export function registerOmarGateCommand(program, invokeLegacy) {
|
|
4
|
-
const omargate = program
|
|
5
|
-
.command("omargate")
|
|
6
|
-
.description("Run local Omar Gate security analysis (deterministic + AI persona swarm)");
|
|
7
|
-
|
|
8
|
-
omargate
|
|
9
|
-
.command("deep")
|
|
10
|
-
.description("Run full Omar Gate deep scan with 22-rule deterministic + multi-persona AI analysis")
|
|
11
|
-
.option("--path <path>", "Target repository path")
|
|
12
|
-
.option("--output-dir <path>", "Artifact root for report output")
|
|
13
|
-
.option("--no-ai", "Skip AI review layer (deterministic only)")
|
|
14
|
-
.option("--ai-dry-run", "Run AI layer in dry-run mode (no LLM call)")
|
|
15
|
-
.option("--scan-mode <mode>", "Scan depth: baseline (1 persona), deep (
|
|
16
|
-
.option("--max-parallel <n>", "Max concurrent persona calls (default: 4)")
|
|
17
|
-
.option("--model <id>", "LLM model override (default: gpt-5.3-codex)")
|
|
18
|
-
.option("--provider <name>", "LLM provider: sentinelayer, openai, anthropic
|
|
19
|
-
.option("--max-cost <usd>", "Maximum AI layer cost in USD (default: 5.0)")
|
|
20
|
-
.option("--
|
|
21
|
-
.option("--
|
|
22
|
-
.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
1
|
+
import { buildLegacyArgs } from "./legacy-args.js";
|
|
2
|
+
|
|
3
|
+
export function registerOmarGateCommand(program, invokeLegacy) {
|
|
4
|
+
const omargate = program
|
|
5
|
+
.command("omargate")
|
|
6
|
+
.description("Run local Omar Gate security analysis (deterministic + AI persona swarm)");
|
|
7
|
+
|
|
8
|
+
omargate
|
|
9
|
+
.command("deep")
|
|
10
|
+
.description("Run full Omar Gate deep scan with 22-rule deterministic + multi-persona AI analysis")
|
|
11
|
+
.option("--path <path>", "Target repository path")
|
|
12
|
+
.option("--output-dir <path>", "Artifact root for report output")
|
|
13
|
+
.option("--no-ai", "Skip AI review layer (deterministic only)")
|
|
14
|
+
.option("--ai-dry-run", "Run AI layer in dry-run mode (no LLM call)")
|
|
15
|
+
.option("--scan-mode <mode>", "Scan depth: baseline (1 persona), deep (13), full-depth (13)")
|
|
16
|
+
.option("--max-parallel <n>", "Max concurrent persona calls (default: 4)")
|
|
17
|
+
.option("--model <id>", "LLM model override (default: gpt-5.3-codex)")
|
|
18
|
+
.option("--provider <name>", "LLM provider: sentinelayer, openai, anthropic")
|
|
19
|
+
.option("--max-cost <usd>", "Maximum AI layer cost in USD (default: 5.0)")
|
|
20
|
+
.option("--persona <csv>", "Only run these personas (comma-separated IDs); unknown IDs are dropped + warned")
|
|
21
|
+
.option("--skip-persona <csv>", "Skip these personas (comma-separated IDs)")
|
|
22
|
+
.option("--stream", "Emit NDJSON events to stdout as personas run")
|
|
23
|
+
.option("--json", "Emit machine-readable output")
|
|
24
|
+
.action(async (options, command) => {
|
|
25
|
+
const legacyArgs = buildLegacyArgs(["/omargate", "deep"], {
|
|
26
|
+
commandOptions: options,
|
|
27
|
+
command,
|
|
28
|
+
});
|
|
29
|
+
await invokeLegacy(legacyArgs);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
// Investor-DD mode (docs/INVESTOR_DD_ARCHITECTURE.md). Per-file agentic
|
|
33
|
+
// review across all 13 personas with deterministic file routing,
|
|
34
|
+
// reproducibility chain per finding, Senti session streaming, and a
|
|
35
|
+
// final report shipped via email + dashboard card. Trades runtime +
|
|
36
|
+
// cost for depth — budgets default to 45min / $25 vs deep's 2min / $5.
|
|
37
|
+
omargate
|
|
38
|
+
.command("investor-dd")
|
|
39
|
+
.description("Investor-grade due-diligence audit: per-file agentic review + reproducibility chain + email/dashboard report")
|
|
40
|
+
.option("--path <path>", "Target repository path")
|
|
41
|
+
.option("--output-dir <path>", "Artifact root for report output")
|
|
42
|
+
.option("--max-cost <usd>", "Maximum LLM cost in USD (default: 25.0)")
|
|
43
|
+
.option("--max-runtime-minutes <n>", "Maximum wall-clock runtime (default: 45)")
|
|
44
|
+
.option("--max-parallel <n>", "Max concurrent persona loops (default: 3)")
|
|
45
|
+
.option("--model <id>", "LLM model override (default: gpt-5.3-codex)")
|
|
46
|
+
.option("--provider <name>", "LLM provider: sentinelayer, openai, anthropic")
|
|
47
|
+
.option("--persona <csv>", "Only run these personas (comma-separated IDs)")
|
|
48
|
+
.option("--skip-persona <csv>", "Skip these personas (comma-separated IDs)")
|
|
49
|
+
.option("--stream", "Emit NDJSON events to stdout as personas work file-by-file")
|
|
50
|
+
.option("--notify-email <addr>", "Send final report to this email (default: account email)")
|
|
51
|
+
.option("--notify-session <session-id>", "Stream progress into this Senti session (default: auto-start)")
|
|
52
|
+
.option("--no-email", "Skip email dispatch")
|
|
53
|
+
.option("--no-dashboard", "Skip dashboard card persistence")
|
|
54
|
+
.option("--dry-run", "Validate config + emit plan.json; skip LLM calls")
|
|
55
|
+
.option("--json", "Emit machine-readable final output")
|
|
56
|
+
.action(async (options, command) => {
|
|
57
|
+
const legacyArgs = buildLegacyArgs(["/omargate", "investor-dd"], {
|
|
58
|
+
commandOptions: options,
|
|
59
|
+
command,
|
|
60
|
+
});
|
|
61
|
+
await invokeLegacy(legacyArgs);
|
|
62
|
+
});
|
|
63
|
+
}
|
package/src/commands/persona.js
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
|
|
3
|
+
import { PERSONA_MODES } from "../agents/mode.js";
|
|
4
|
+
import {
|
|
5
|
+
SUPPORTED_PERSONA_IDS,
|
|
6
|
+
runPersona,
|
|
7
|
+
} from "../agents/run-persona.js";
|
|
8
|
+
import { buildLegacyArgs } from "./legacy-args.js";
|
|
9
|
+
|
|
10
|
+
export function registerPersonaCommand(program, invokeLegacy) {
|
|
11
|
+
const persona = program
|
|
12
|
+
.command("persona")
|
|
13
|
+
.description("Run persona-scoped domain-tool sweeps or orchestrator reports");
|
|
14
|
+
|
|
8
15
|
persona
|
|
9
16
|
.command("orchestrator")
|
|
10
17
|
.description("Generate mode-specific orchestrator report")
|
|
@@ -12,16 +19,54 @@ export function registerPersonaCommand(program, invokeLegacy) {
|
|
|
12
19
|
.option("--path <path>", "Target repository path")
|
|
13
20
|
.option("--output-dir <path>", "Artifact root for report output")
|
|
14
21
|
.option("--json", "Emit machine-readable output")
|
|
15
|
-
.action(async (options, command) => {
|
|
16
|
-
const legacyArgs = buildLegacyArgs([
|
|
17
|
-
"/persona",
|
|
18
|
-
"orchestrator",
|
|
19
|
-
"--mode",
|
|
20
|
-
String(options.mode || "builder"),
|
|
21
|
-
], {
|
|
22
|
-
commandOptions: options,
|
|
23
|
-
command,
|
|
24
|
-
});
|
|
25
|
-
await invokeLegacy(legacyArgs);
|
|
26
|
-
});
|
|
27
|
-
|
|
22
|
+
.action(async (options, command) => {
|
|
23
|
+
const legacyArgs = buildLegacyArgs([
|
|
24
|
+
"/persona",
|
|
25
|
+
"orchestrator",
|
|
26
|
+
"--mode",
|
|
27
|
+
String(options.mode || "builder"),
|
|
28
|
+
], {
|
|
29
|
+
commandOptions: options,
|
|
30
|
+
command,
|
|
31
|
+
});
|
|
32
|
+
await invokeLegacy(legacyArgs);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
persona
|
|
36
|
+
.command("run <personaId>")
|
|
37
|
+
.description(
|
|
38
|
+
`Run a single persona's domain tools over the repo and emit findings. Supported ids: ${SUPPORTED_PERSONA_IDS.join(", ")}.`
|
|
39
|
+
)
|
|
40
|
+
.option(
|
|
41
|
+
"--mode <mode>",
|
|
42
|
+
`Persona mode: ${PERSONA_MODES.join("|")}. Audit emits findings; codegen attaches allowed-tools + prompt-suffix plan so callers can drive the LLM edit loop.`,
|
|
43
|
+
"audit"
|
|
44
|
+
)
|
|
45
|
+
.option("--path <path>", "Repository root to scan (default: cwd)", ".")
|
|
46
|
+
.option(
|
|
47
|
+
"--files <csv>",
|
|
48
|
+
"Optional comma-separated list of files to focus the sweep. Empty = whole repo."
|
|
49
|
+
)
|
|
50
|
+
.option(
|
|
51
|
+
"--json",
|
|
52
|
+
"Always-on for this subcommand; kept for interface parity. Output is a single-line JSON object on stdout.",
|
|
53
|
+
true
|
|
54
|
+
)
|
|
55
|
+
.action(async (personaId, options) => {
|
|
56
|
+
try {
|
|
57
|
+
const result = await runPersona({
|
|
58
|
+
personaId,
|
|
59
|
+
mode: options.mode,
|
|
60
|
+
rootPath: options.path,
|
|
61
|
+
files: options.files,
|
|
62
|
+
});
|
|
63
|
+
process.stdout.write(JSON.stringify(result));
|
|
64
|
+
process.stdout.write("\n");
|
|
65
|
+
process.exitCode = 0;
|
|
66
|
+
} catch (err) {
|
|
67
|
+
const message = err && err.message ? err.message : String(err);
|
|
68
|
+
process.stderr.write(`persona run failed: ${message}\n`);
|
|
69
|
+
process.exitCode = 2;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|