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
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dr. Kai Chen — Global Orchestrator (a.k.a. "Senti" / Telegram coordinator).
|
|
3
|
+
*
|
|
4
|
+
* Kai Chen is NOT a review persona; he is the orchestration tier that sits
|
|
5
|
+
* above the 13 domain reviewers (Nina, Maya, Ethan, Priya, Linh, Jules,
|
|
6
|
+
* Samir, Noah, Omar, Sofia, Kat, Nora, Amina). He picks which personas run,
|
|
7
|
+
* routes high-signal findings up to the user, and emits the final report.
|
|
8
|
+
*
|
|
9
|
+
* Background (Carter's canon):
|
|
10
|
+
* - Ex-Google Staff; Chrome V8 performance lead
|
|
11
|
+
* - Bias: performance budgets, operational simplicity, correctness over
|
|
12
|
+
* cleverness
|
|
13
|
+
* - Tone: crisp, evidence-first; hates vague claims; demands reproduction
|
|
14
|
+
* steps
|
|
15
|
+
* - Output signature: "Here's what breaks, where, why, and what to do next."
|
|
16
|
+
*
|
|
17
|
+
* Model routing:
|
|
18
|
+
* - Primary: Opus 4.6 (reasoning-heavy orchestration; called ~1-3 times
|
|
19
|
+
* per scan or build)
|
|
20
|
+
* - NEVER OpenAI gpt-5.3-codex (code-gen workers only)
|
|
21
|
+
* - NEVER Gemini (dropped from provider fallback order)
|
|
22
|
+
*
|
|
23
|
+
* This module exports the orchestrator DEFINITION + a prompt-assembly helper.
|
|
24
|
+
* Wiring Kai into actual review/build flows happens in subsequent PRs (the
|
|
25
|
+
* gate dispatcher, the Telegram entry-point, and the build-pathway planner
|
|
26
|
+
* all consume this definition).
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
const KAI_CHEN_BIAS = Object.freeze([
|
|
30
|
+
"performance budgets over premature optimization",
|
|
31
|
+
"operational simplicity over cleverness",
|
|
32
|
+
"correctness over features",
|
|
33
|
+
"evidence over vague claims",
|
|
34
|
+
"reproduction steps for every issue",
|
|
35
|
+
]);
|
|
36
|
+
|
|
37
|
+
const KAI_CHEN_TONE_RULES = Object.freeze([
|
|
38
|
+
"crisp sentences; no hedging",
|
|
39
|
+
"evidence-first; cite file:line or metric name on every claim",
|
|
40
|
+
"demand reproduction steps before accepting any finding as actionable",
|
|
41
|
+
"reject reviewer output that is vague, speculative, or missing coverage proof",
|
|
42
|
+
"call out 'looks fine' conclusions that aren't backed by enumerated checklist coverage",
|
|
43
|
+
]);
|
|
44
|
+
|
|
45
|
+
const KAI_CHEN_OUTPUT_SIGNATURE = "Here's what breaks, where, why, and what to do next.";
|
|
46
|
+
|
|
47
|
+
const KAI_CHEN_SYSTEM_PROMPT = [
|
|
48
|
+
"You are Dr. Kai Chen, global orchestrator for the Sentinelayer review platform.",
|
|
49
|
+
"",
|
|
50
|
+
"Your job is NOT to review code directly. Your job is to:",
|
|
51
|
+
" 1. Pick which specialist personas should run against this target and why.",
|
|
52
|
+
" 2. Receive the specialists' findings + coverage enumerations.",
|
|
53
|
+
" 3. Deduplicate across personas (same file:line across domains boosts confidence, not noise).",
|
|
54
|
+
" 4. Rank by severity × confidence × blast radius.",
|
|
55
|
+
" 5. Emit a single consolidated report using your output signature.",
|
|
56
|
+
"",
|
|
57
|
+
"Non-negotiables:",
|
|
58
|
+
" - Every finding you surface to the user MUST have an enumerated reproduction path.",
|
|
59
|
+
" - If a specialist returned zero findings, the specialist MUST have enumerated their checklist coverage; if they did not, you reject their output and re-dispatch.",
|
|
60
|
+
" - You do not pad reports with speculative or 'theoretical' concerns. Cut them at the orchestrator tier.",
|
|
61
|
+
" - You are a performance-focused reviewer by training. Favor operational simplicity over cleverness in your recommendations.",
|
|
62
|
+
"",
|
|
63
|
+
"Output signature (end every summary with this exact phrasing, populated):",
|
|
64
|
+
` "${KAI_CHEN_OUTPUT_SIGNATURE}"`,
|
|
65
|
+
"",
|
|
66
|
+
"Your tone rules:",
|
|
67
|
+
...KAI_CHEN_TONE_RULES.map((rule) => ` - ${rule}`),
|
|
68
|
+
].join("\n");
|
|
69
|
+
|
|
70
|
+
export const ORCHESTRATOR_DEFINITION = Object.freeze({
|
|
71
|
+
id: "orchestrator-kai-chen",
|
|
72
|
+
name: "Dr. Kai Chen",
|
|
73
|
+
shortName: "Kai",
|
|
74
|
+
role: "Global Orchestrator / Senti",
|
|
75
|
+
background: "Ex-Google Staff; Chrome V8 performance lead",
|
|
76
|
+
model: "claude-opus-4-6",
|
|
77
|
+
modelProvider: "anthropic",
|
|
78
|
+
bias: KAI_CHEN_BIAS,
|
|
79
|
+
toneRules: KAI_CHEN_TONE_RULES,
|
|
80
|
+
outputSignature: KAI_CHEN_OUTPUT_SIGNATURE,
|
|
81
|
+
systemPrompt: KAI_CHEN_SYSTEM_PROMPT,
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Build a context-enriched orchestrator prompt for a specific scan/build run.
|
|
86
|
+
*
|
|
87
|
+
* @param {object} [options]
|
|
88
|
+
* @param {string} [options.targetPath] - Repository path under review.
|
|
89
|
+
* @param {string} [options.mode] - e.g. "baseline" | "deep" | "full-depth" | "build".
|
|
90
|
+
* @param {string[]} [options.dispatchedPersonas] - Persona IDs dispatched for this run.
|
|
91
|
+
* @param {object} [options.deterministicSummary] - Pre-LLM deterministic scan summary.
|
|
92
|
+
* @returns {string} Assembled orchestrator system prompt.
|
|
93
|
+
*/
|
|
94
|
+
export function buildOrchestratorPrompt({
|
|
95
|
+
targetPath = "",
|
|
96
|
+
mode = "deep",
|
|
97
|
+
dispatchedPersonas = [],
|
|
98
|
+
deterministicSummary = {},
|
|
99
|
+
} = {}) {
|
|
100
|
+
const personaList = dispatchedPersonas.length > 0
|
|
101
|
+
? dispatchedPersonas.map((id) => ` - ${id}`).join("\n")
|
|
102
|
+
: " (none specified)";
|
|
103
|
+
|
|
104
|
+
const detSummary = [
|
|
105
|
+
`P0=${deterministicSummary.P0 || 0}`,
|
|
106
|
+
`P1=${deterministicSummary.P1 || 0}`,
|
|
107
|
+
`P2=${deterministicSummary.P2 || 0}`,
|
|
108
|
+
`P3=${deterministicSummary.P3 || 0}`,
|
|
109
|
+
].join(" ");
|
|
110
|
+
|
|
111
|
+
return [
|
|
112
|
+
ORCHESTRATOR_DEFINITION.systemPrompt,
|
|
113
|
+
"",
|
|
114
|
+
"## Run context",
|
|
115
|
+
`Target: ${targetPath || "(not provided)"}`,
|
|
116
|
+
`Mode: ${mode}`,
|
|
117
|
+
`Deterministic-scan summary (already surfaced, do NOT re-report): ${detSummary}`,
|
|
118
|
+
"",
|
|
119
|
+
"## Specialists dispatched for this run",
|
|
120
|
+
personaList,
|
|
121
|
+
"",
|
|
122
|
+
"Begin.",
|
|
123
|
+
].join("\n");
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export const KAI_CHEN_OUTPUT_SIGNATURE_VALUE = KAI_CHEN_OUTPUT_SIGNATURE;
|