@prism-d1/cli 1.1.2 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/github-workflows/prism-agent-eval.yml +2 -1
- package/dist/assets/github-workflows/prism-eval-gate-kiro.yml +12 -2
- package/dist/assets/gitlab-workflows/prism-eval-gate.yml +8 -0
- package/dist/assets/infra/bin/app.ts +61 -37
- package/dist/assets/infra/lib/constructs/otel-collector-construct.ts +96 -0
- package/dist/assets/infra/lib/constructs/security-agent-construct.ts +35 -30
- package/dist/assets/infra/lib/dashboard-stack.ts +27 -0
- package/dist/assets/infra/lib/lambda/otel-receiver.ts +278 -8
- package/dist/assets/infra/lib/lambda/pricing/litellm-snapshot.json +3769 -0
- package/dist/assets/infra/lib/lambda/pricing/price-source.ts +56 -0
- package/dist/assets/infra/lib/lambda/pricing/price-table.ts +240 -0
- package/dist/assets/infra/lib/lambda/pricing/prices-key.ts +6 -0
- package/dist/assets/infra/lib/lambda/pricing/reprice.ts +108 -0
- package/dist/assets/infra/lib/lambda/pricing-refresh.ts +352 -0
- package/dist/assets/infra/lib/lambda/velocity-widget.ts +124 -1
- package/dist/assets/infra/lib/metrics-pipeline-stack.ts +2 -110
- package/dist/assets/infra/lib/security-agent-resources.ts +136 -0
- package/dist/assets/infra/lib/security-agent-stack.ts +69 -0
- package/dist/assets/infra/package.json +4 -1
- package/dist/assets/metric-hooks/prepare-commit-msg +3 -1
- package/dist/assets/pentest-cdk/bin/app.ts +12 -0
- package/dist/assets/pentest-cdk/cdk.json +7 -0
- package/dist/assets/pentest-cdk/lib/pentest-target-stack.ts +206 -0
- package/dist/assets/pentest-cdk/package.json +18 -0
- package/dist/assets/pentest-cdk/tsconfig.json +12 -0
- package/dist/src/codewatch/config.d.ts +17 -0
- package/dist/src/codewatch/config.d.ts.map +1 -0
- package/dist/src/codewatch/config.js +40 -0
- package/dist/src/codewatch/config.js.map +1 -0
- package/dist/src/codewatch/gitleaks.d.ts +49 -0
- package/dist/src/codewatch/gitleaks.d.ts.map +1 -0
- package/dist/src/codewatch/gitleaks.js +160 -0
- package/dist/src/codewatch/gitleaks.js.map +1 -0
- package/dist/src/codewatch/globalHooks.d.ts +52 -0
- package/dist/src/codewatch/globalHooks.d.ts.map +1 -0
- package/dist/src/codewatch/globalHooks.js +235 -0
- package/dist/src/codewatch/globalHooks.js.map +1 -0
- package/dist/src/codewatch/hooks.d.ts +38 -0
- package/dist/src/codewatch/hooks.d.ts.map +1 -0
- package/dist/src/codewatch/hooks.js +176 -0
- package/dist/src/codewatch/hooks.js.map +1 -0
- package/dist/src/codewatch/prepush.d.ts +37 -0
- package/dist/src/codewatch/prepush.d.ts.map +1 -0
- package/dist/src/codewatch/prepush.js +231 -0
- package/dist/src/codewatch/prepush.js.map +1 -0
- package/dist/src/codewatch/results.d.ts +210 -0
- package/dist/src/codewatch/results.d.ts.map +1 -0
- package/dist/src/codewatch/results.js +127 -0
- package/dist/src/codewatch/results.js.map +1 -0
- package/dist/src/codewatch/reviewers/claude.d.ts +9 -0
- package/dist/src/codewatch/reviewers/claude.d.ts.map +1 -0
- package/dist/src/codewatch/reviewers/claude.js +48 -0
- package/dist/src/codewatch/reviewers/claude.js.map +1 -0
- package/dist/src/codewatch/reviewers/index.d.ts +39 -0
- package/dist/src/codewatch/reviewers/index.d.ts.map +1 -0
- package/dist/src/codewatch/reviewers/index.js +97 -0
- package/dist/src/codewatch/reviewers/index.js.map +1 -0
- package/dist/src/codewatch/reviewers/kiro.d.ts +14 -0
- package/dist/src/codewatch/reviewers/kiro.d.ts.map +1 -0
- package/dist/src/codewatch/reviewers/kiro.js +32 -0
- package/dist/src/codewatch/reviewers/kiro.js.map +1 -0
- package/dist/src/codewatch/reviewers/types.d.ts +56 -0
- package/dist/src/codewatch/reviewers/types.d.ts.map +1 -0
- package/dist/src/codewatch/reviewers/types.js +91 -0
- package/dist/src/codewatch/reviewers/types.js.map +1 -0
- package/dist/src/codewatch/rules.d.ts +12 -0
- package/dist/src/codewatch/rules.d.ts.map +1 -0
- package/dist/src/codewatch/rules.js +27 -0
- package/dist/src/codewatch/rules.js.map +1 -0
- package/dist/src/commands/_top/dashboard.d.ts +17 -0
- package/dist/src/commands/_top/dashboard.d.ts.map +1 -0
- package/dist/src/commands/_top/dashboard.js +76 -0
- package/dist/src/commands/_top/dashboard.js.map +1 -0
- package/dist/src/commands/_top/version.d.ts +62 -0
- package/dist/src/commands/_top/version.d.ts.map +1 -0
- package/dist/src/commands/_top/version.js +175 -0
- package/dist/src/commands/_top/version.js.map +1 -0
- package/dist/src/commands/bedrock-protection/scan-account.d.ts.map +1 -1
- package/dist/src/commands/bedrock-protection/scan-account.js +2 -1
- package/dist/src/commands/bedrock-protection/scan-account.js.map +1 -1
- package/dist/src/commands/bedrock-protection/scan-org.d.ts.map +1 -1
- package/dist/src/commands/bedrock-protection/scan-org.js +16 -4
- package/dist/src/commands/bedrock-protection/scan-org.js.map +1 -1
- package/dist/src/commands/bootstrapper/install-eval-harness.d.ts.map +1 -1
- package/dist/src/commands/bootstrapper/install-eval-harness.js +15 -48
- package/dist/src/commands/bootstrapper/install-eval-harness.js.map +1 -1
- package/dist/src/commands/bootstrapper/install-git-hooks.d.ts +13 -0
- package/dist/src/commands/bootstrapper/install-git-hooks.d.ts.map +1 -1
- package/dist/src/commands/bootstrapper/install-git-hooks.js +28 -147
- package/dist/src/commands/bootstrapper/install-git-hooks.js.map +1 -1
- package/dist/src/commands/bootstrapper/setup-otel-sync.d.ts +12 -6
- package/dist/src/commands/bootstrapper/setup-otel-sync.d.ts.map +1 -1
- package/dist/src/commands/bootstrapper/setup-otel-sync.js +18 -443
- package/dist/src/commands/bootstrapper/setup-otel-sync.js.map +1 -1
- package/dist/src/commands/codewatch/pre-commit.d.ts +7 -0
- package/dist/src/commands/codewatch/pre-commit.d.ts.map +1 -0
- package/dist/src/commands/codewatch/pre-commit.js +30 -0
- package/dist/src/commands/codewatch/pre-commit.js.map +1 -0
- package/dist/src/commands/codewatch/pre-push.d.ts +16 -0
- package/dist/src/commands/codewatch/pre-push.d.ts.map +1 -0
- package/dist/src/commands/codewatch/pre-push.js +32 -0
- package/dist/src/commands/codewatch/pre-push.js.map +1 -0
- package/dist/src/commands/codewatch/report.d.ts +22 -0
- package/dist/src/commands/codewatch/report.d.ts.map +1 -0
- package/dist/src/commands/codewatch/report.js +64 -0
- package/dist/src/commands/codewatch/report.js.map +1 -0
- package/dist/src/commands/enable/codeburn.d.ts +59 -0
- package/dist/src/commands/enable/codeburn.d.ts.map +1 -0
- package/dist/src/commands/enable/codeburn.js +531 -0
- package/dist/src/commands/enable/codeburn.js.map +1 -0
- package/dist/src/commands/enable/codewatch.d.ts +15 -0
- package/dist/src/commands/enable/codewatch.d.ts.map +1 -0
- package/dist/src/commands/enable/codewatch.js +186 -0
- package/dist/src/commands/enable/codewatch.js.map +1 -0
- package/dist/src/commands/enable/security.d.ts +41 -0
- package/dist/src/commands/enable/security.d.ts.map +1 -0
- package/dist/src/commands/enable/security.js +130 -0
- package/dist/src/commands/enable/security.js.map +1 -0
- package/dist/src/commands/export/otel.d.ts +31 -0
- package/dist/src/commands/export/otel.d.ts.map +1 -0
- package/dist/src/commands/export/otel.js +52 -0
- package/dist/src/commands/export/otel.js.map +1 -0
- package/dist/src/commands/git/claude-session-context.d.ts.map +1 -1
- package/dist/src/commands/git/claude-session-context.js +2 -1
- package/dist/src/commands/git/claude-session-context.js.map +1 -1
- package/dist/src/commands/git/commit-trailers.js +1 -1
- package/dist/src/commands/git/commit-trailers.js.map +1 -1
- package/dist/src/commands/security/code-review.d.ts +22 -0
- package/dist/src/commands/security/code-review.d.ts.map +1 -0
- package/dist/src/commands/security/code-review.js +43 -0
- package/dist/src/commands/security/code-review.js.map +1 -0
- package/dist/src/commands/security/findings.d.ts +15 -0
- package/dist/src/commands/security/findings.d.ts.map +1 -0
- package/dist/src/commands/security/findings.js +31 -0
- package/dist/src/commands/security/findings.js.map +1 -0
- package/dist/src/commands/security/pentest.d.ts +18 -0
- package/dist/src/commands/security/pentest.d.ts.map +1 -0
- package/dist/src/commands/security/pentest.js +32 -0
- package/dist/src/commands/security/pentest.js.map +1 -0
- package/dist/src/commands/security/threat-model.d.ts +16 -0
- package/dist/src/commands/security/threat-model.d.ts.map +1 -0
- package/dist/src/commands/security/threat-model.js +24 -0
- package/dist/src/commands/security/threat-model.js.map +1 -0
- package/dist/src/commands/security/threats.d.ts +12 -0
- package/dist/src/commands/security/threats.d.ts.map +1 -0
- package/dist/src/commands/security/threats.js +23 -0
- package/dist/src/commands/security/threats.js.map +1 -0
- package/dist/src/commands/securityagent/setup.d.ts +19 -5
- package/dist/src/commands/securityagent/setup.d.ts.map +1 -1
- package/dist/src/commands/securityagent/setup.js +25 -189
- package/dist/src/commands/securityagent/setup.js.map +1 -1
- package/dist/src/commands/workshop/verify-setup.d.ts.map +1 -1
- package/dist/src/commands/workshop/verify-setup.js +5 -3
- package/dist/src/commands/workshop/verify-setup.js.map +1 -1
- package/dist/src/dashboard/codewatch.d.ts +106 -0
- package/dist/src/dashboard/codewatch.d.ts.map +1 -0
- package/dist/src/dashboard/codewatch.js +120 -0
- package/dist/src/dashboard/codewatch.js.map +1 -0
- package/dist/src/dashboard/commits.d.ts +96 -0
- package/dist/src/dashboard/commits.d.ts.map +1 -0
- package/dist/src/dashboard/commits.js +207 -0
- package/dist/src/dashboard/commits.js.map +1 -0
- package/dist/src/dashboard/page.d.ts +10 -0
- package/dist/src/dashboard/page.d.ts.map +1 -0
- package/dist/src/dashboard/page.js +470 -0
- package/dist/src/dashboard/page.js.map +1 -0
- package/dist/src/dashboard/payload.d.ts +114 -0
- package/dist/src/dashboard/payload.d.ts.map +1 -0
- package/dist/src/dashboard/payload.js +96 -0
- package/dist/src/dashboard/payload.js.map +1 -0
- package/dist/src/dashboard/report.d.ts +99 -0
- package/dist/src/dashboard/report.d.ts.map +1 -0
- package/dist/src/dashboard/report.js +300 -0
- package/dist/src/dashboard/report.js.map +1 -0
- package/dist/src/dashboard/repos.d.ts +58 -0
- package/dist/src/dashboard/repos.d.ts.map +1 -0
- package/dist/src/dashboard/repos.js +111 -0
- package/dist/src/dashboard/repos.js.map +1 -0
- package/dist/src/dashboard/security.d.ts +130 -0
- package/dist/src/dashboard/security.d.ts.map +1 -0
- package/dist/src/dashboard/security.js +144 -0
- package/dist/src/dashboard/security.js.map +1 -0
- package/dist/src/dashboard/server.d.ts +52 -0
- package/dist/src/dashboard/server.d.ts.map +1 -0
- package/dist/src/dashboard/server.js +163 -0
- package/dist/src/dashboard/server.js.map +1 -0
- package/dist/src/dashboard/setup.d.ts +67 -0
- package/dist/src/dashboard/setup.d.ts.map +1 -0
- package/dist/src/dashboard/setup.js +146 -0
- package/dist/src/dashboard/setup.js.map +1 -0
- package/dist/src/dashboard/usage.d.ts +43 -0
- package/dist/src/dashboard/usage.d.ts.map +1 -0
- package/dist/src/dashboard/usage.js +88 -0
- package/dist/src/dashboard/usage.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +48 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/security/cfn-diff.d.ts +57 -0
- package/dist/src/security/cfn-diff.d.ts.map +1 -0
- package/dist/src/security/cfn-diff.js +112 -0
- package/dist/src/security/cfn-diff.js.map +1 -0
- package/dist/src/security/errors.d.ts +45 -0
- package/dist/src/security/errors.d.ts.map +1 -0
- package/dist/src/security/errors.js +116 -0
- package/dist/src/security/errors.js.map +1 -0
- package/dist/src/security/marker.d.ts +46 -0
- package/dist/src/security/marker.d.ts.map +1 -0
- package/dist/src/security/marker.js +120 -0
- package/dist/src/security/marker.js.map +1 -0
- package/dist/src/security/pentest-dockerfile.d.ts +8 -0
- package/dist/src/security/pentest-dockerfile.d.ts.map +1 -0
- package/dist/src/security/pentest-dockerfile.js +163 -0
- package/dist/src/security/pentest-dockerfile.js.map +1 -0
- package/dist/src/security/pentest.d.ts +233 -0
- package/dist/src/security/pentest.d.ts.map +1 -0
- package/dist/src/security/pentest.js +1057 -0
- package/dist/src/security/pentest.js.map +1 -0
- package/dist/src/security/repo.d.ts +25 -0
- package/dist/src/security/repo.d.ts.map +1 -0
- package/dist/src/security/repo.js +38 -0
- package/dist/src/security/repo.js.map +1 -0
- package/dist/src/security/review.d.ts +202 -0
- package/dist/src/security/review.d.ts.map +1 -0
- package/dist/src/security/review.js +706 -0
- package/dist/src/security/review.js.map +1 -0
- package/dist/src/security/setup.d.ts +193 -0
- package/dist/src/security/setup.d.ts.map +1 -0
- package/dist/src/security/setup.js +728 -0
- package/dist/src/security/setup.js.map +1 -0
- package/dist/src/security/threat-model.d.ts +133 -0
- package/dist/src/security/threat-model.d.ts.map +1 -0
- package/dist/src/security/threat-model.js +653 -0
- package/dist/src/security/threat-model.js.map +1 -0
- package/dist/src/utils/audit-bedrock.d.ts +1 -0
- package/dist/src/utils/audit-bedrock.d.ts.map +1 -1
- package/dist/src/utils/audit-bedrock.js +133 -0
- package/dist/src/utils/audit-bedrock.js.map +1 -1
- package/dist/src/utils/audit-org.d.ts +1 -0
- package/dist/src/utils/audit-org.d.ts.map +1 -1
- package/dist/src/utils/audit-org.js +155 -0
- package/dist/src/utils/audit-org.js.map +1 -1
- package/dist/src/utils/exec.d.ts +6 -0
- package/dist/src/utils/exec.d.ts.map +1 -1
- package/dist/src/utils/exec.js +12 -1
- package/dist/src/utils/exec.js.map +1 -1
- package/dist/src/utils/otel-sync-schedule.d.ts +41 -0
- package/dist/src/utils/otel-sync-schedule.d.ts.map +1 -0
- package/dist/src/utils/otel-sync-schedule.js +90 -0
- package/dist/src/utils/otel-sync-schedule.js.map +1 -0
- package/dist/src/utils/tool-check.d.ts +14 -0
- package/dist/src/utils/tool-check.d.ts.map +1 -0
- package/dist/src/utils/tool-check.js +42 -0
- package/dist/src/utils/tool-check.js.map +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { Finding } from '../results.js';
|
|
2
|
+
export declare const REVIEWER_IDS: readonly ["kiro", "claude"];
|
|
3
|
+
export type ReviewerId = typeof REVIEWER_IDS[number];
|
|
4
|
+
export declare function isReviewerId(v: unknown): v is ReviewerId;
|
|
5
|
+
export interface ReviewRequest {
|
|
6
|
+
repoRoot: string;
|
|
7
|
+
/** Repo-relative path of the shared rule set (`.prism/review/rules.md`). */
|
|
8
|
+
rulesPath: string;
|
|
9
|
+
/** Contents of the rule set, for adapters that pass it inline. */
|
|
10
|
+
rulesText: string;
|
|
11
|
+
/** Absolute path of the diff file on disk. */
|
|
12
|
+
diffPath: string;
|
|
13
|
+
/** The diff text itself, for adapters that pass it inline. */
|
|
14
|
+
diff: string;
|
|
15
|
+
/** Requested model, if the team pinned one. */
|
|
16
|
+
model?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface Invocation {
|
|
19
|
+
args: string[];
|
|
20
|
+
/** Written to the child's stdin. */
|
|
21
|
+
input?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface ParsedReview {
|
|
24
|
+
findings: Finding[];
|
|
25
|
+
summary: string | null;
|
|
26
|
+
score: number | null;
|
|
27
|
+
/** Model the tool reported using, if its output says. */
|
|
28
|
+
model: string | null;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* One adapter per reviewer tool. An adapter only builds argv and parses
|
|
32
|
+
* output; running the process, timeouts and error handling are shared
|
|
33
|
+
* (see runReview in index.ts), so adding a tool is one small file.
|
|
34
|
+
*/
|
|
35
|
+
export interface ReviewerAdapter {
|
|
36
|
+
id: ReviewerId;
|
|
37
|
+
/** Executable looked up on PATH. */
|
|
38
|
+
binary: string;
|
|
39
|
+
displayName: string;
|
|
40
|
+
invocation(req: ReviewRequest): Invocation;
|
|
41
|
+
/** Throws when the output holds no usable review. */
|
|
42
|
+
parse(stdout: string): ParsedReview;
|
|
43
|
+
}
|
|
44
|
+
/** Output contract both adapters ask for. Matches the CI gate's JSON plus a `rule` field. */
|
|
45
|
+
export declare const OUTPUT_CONTRACT: string;
|
|
46
|
+
/** Strips ANSI escape sequences and carriage returns. */
|
|
47
|
+
export declare function stripAnsi(s: string): string;
|
|
48
|
+
/**
|
|
49
|
+
* Finds the last balanced top-level JSON object in free text that parses and
|
|
50
|
+
* has a `findings` array. Models wrap JSON in prose or fences; scanning for
|
|
51
|
+
* balanced braces (string-aware) is more reliable than one greedy regex.
|
|
52
|
+
*/
|
|
53
|
+
export declare function extractReviewJson(text: string): any;
|
|
54
|
+
/** Converts the model's JSON into the shared schema. Tolerates missing fields. */
|
|
55
|
+
export declare function normalizeReview(obj: any, model: string | null): ParsedReview;
|
|
56
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/codewatch/reviewers/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAA6B,MAAM,eAAe,CAAC;AAExE,eAAO,MAAM,YAAY,6BAA8B,CAAC;AACxD,MAAM,MAAM,UAAU,GAAG,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;AAErD,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,UAAU,CAExD;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,yDAAyD;IACzD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,UAAU,CAAC;IACf,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,UAAU,CAAC;IAC3C,qDAAqD;IACrD,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC;CACrC;AAED,6FAA6F;AAC7F,eAAO,MAAM,eAAe,QAGyB,CAAC;AAEtD,yDAAyD;AACzD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAG3C;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CA6BnD;AAmBD,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,CAc5E"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
export const REVIEWER_IDS = ['kiro', 'claude'];
|
|
2
|
+
export function isReviewerId(v) {
|
|
3
|
+
return typeof v === 'string' && REVIEWER_IDS.includes(v);
|
|
4
|
+
}
|
|
5
|
+
/** Output contract both adapters ask for. Matches the CI gate's JSON plus a `rule` field. */
|
|
6
|
+
export const OUTPUT_CONTRACT = 'Output ONLY one JSON object, no prose and no code fences: ' +
|
|
7
|
+
'{"findings":[{"file":"path","line":1,"severity":"high|medium|low","category":"security|correctness|performance|maintainability|reliability","rule":"name of the rule from the rules file","message":"str"}],"score":0.0,"summary":"str"}. ' +
|
|
8
|
+
'Use an empty findings array when nothing applies.';
|
|
9
|
+
/** Strips ANSI escape sequences and carriage returns. */
|
|
10
|
+
export function stripAnsi(s) {
|
|
11
|
+
// eslint-disable-next-line no-control-regex
|
|
12
|
+
return s.replace(/\x1b\[[0-9;?]*[ -/]*[@-~]/g, '').replace(/\x1b\][^\x07]*\x07/g, '').replace(/\r/g, '');
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Finds the last balanced top-level JSON object in free text that parses and
|
|
16
|
+
* has a `findings` array. Models wrap JSON in prose or fences; scanning for
|
|
17
|
+
* balanced braces (string-aware) is more reliable than one greedy regex.
|
|
18
|
+
*/
|
|
19
|
+
export function extractReviewJson(text) {
|
|
20
|
+
const candidates = [];
|
|
21
|
+
for (let start = text.indexOf('{'); start !== -1; start = text.indexOf('{', start + 1)) {
|
|
22
|
+
let depth = 0;
|
|
23
|
+
let inStr = false;
|
|
24
|
+
let esc = false;
|
|
25
|
+
for (let i = start; i < text.length; i++) {
|
|
26
|
+
const ch = text[i];
|
|
27
|
+
if (inStr) {
|
|
28
|
+
if (esc)
|
|
29
|
+
esc = false;
|
|
30
|
+
else if (ch === '\\')
|
|
31
|
+
esc = true;
|
|
32
|
+
else if (ch === '"')
|
|
33
|
+
inStr = false;
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (ch === '"')
|
|
37
|
+
inStr = true;
|
|
38
|
+
else if (ch === '{')
|
|
39
|
+
depth++;
|
|
40
|
+
else if (ch === '}') {
|
|
41
|
+
depth--;
|
|
42
|
+
if (depth === 0) {
|
|
43
|
+
candidates.push(text.slice(start, i + 1));
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
for (let i = candidates.length - 1; i >= 0; i--) {
|
|
50
|
+
try {
|
|
51
|
+
const obj = JSON.parse(candidates[i]);
|
|
52
|
+
if (obj && Array.isArray(obj.findings))
|
|
53
|
+
return obj;
|
|
54
|
+
}
|
|
55
|
+
catch { /* try the next one */ }
|
|
56
|
+
}
|
|
57
|
+
throw new Error('no JSON object with a "findings" array in reviewer output');
|
|
58
|
+
}
|
|
59
|
+
function normSeverity(v) {
|
|
60
|
+
const s = String(v ?? '').toLowerCase();
|
|
61
|
+
if (s === 'critical' || s === 'high')
|
|
62
|
+
return 'high';
|
|
63
|
+
if (s === 'medium' || s === 'moderate')
|
|
64
|
+
return 'medium';
|
|
65
|
+
return 'low';
|
|
66
|
+
}
|
|
67
|
+
/** The rules file uses five categories; the result schema keeps two. */
|
|
68
|
+
function normCategory(v) {
|
|
69
|
+
return String(v ?? '').toLowerCase().includes('secur') ? 'security' : 'quality';
|
|
70
|
+
}
|
|
71
|
+
function normLine(v) {
|
|
72
|
+
const n = typeof v === 'number' ? v : parseInt(String(v ?? ''), 10);
|
|
73
|
+
return Number.isFinite(n) && n > 0 ? Math.floor(n) : null;
|
|
74
|
+
}
|
|
75
|
+
/** Converts the model's JSON into the shared schema. Tolerates missing fields. */
|
|
76
|
+
export function normalizeReview(obj, model) {
|
|
77
|
+
const findings = obj.findings
|
|
78
|
+
.filter((f) => f && typeof f === 'object')
|
|
79
|
+
.map((f) => ({
|
|
80
|
+
severity: normSeverity(f.severity),
|
|
81
|
+
category: normCategory(f.category),
|
|
82
|
+
rule: String(f.rule || f.category || 'unspecified').slice(0, 200),
|
|
83
|
+
file: String(f.file || ''),
|
|
84
|
+
line: normLine(f.line),
|
|
85
|
+
message: String(f.message || '').slice(0, 2000),
|
|
86
|
+
}));
|
|
87
|
+
const score = typeof obj.score === 'number' && Number.isFinite(obj.score) ? obj.score : null;
|
|
88
|
+
const summary = typeof obj.summary === 'string' ? obj.summary.slice(0, 500) : null;
|
|
89
|
+
return { findings, summary, score, model };
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/codewatch/reviewers/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Where install-eval-harness has always put the review rules for kiro-cli. */
|
|
2
|
+
export declare const KIRO_STEERING_RULES = ".kiro/steering/code-review.md";
|
|
3
|
+
/**
|
|
4
|
+
* Ensures the tool-neutral rule set exists at `.prism/review/rules.md`.
|
|
5
|
+
*
|
|
6
|
+
* Seed order: keep an existing rules.md; else copy the repo's
|
|
7
|
+
* `.kiro/steering/code-review.md` (a team may have customised it, and CI
|
|
8
|
+
* reviewed against it until now); else the bundled default -- the same file
|
|
9
|
+
* install-eval-harness ships as steering. Returns what happened.
|
|
10
|
+
*/
|
|
11
|
+
export declare function ensureRulesFile(gitRoot: string, bundledRulesPath: string): 'kept' | 'from-steering' | 'from-bundle';
|
|
12
|
+
//# sourceMappingURL=rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../src/codewatch/rules.ts"],"names":[],"mappings":"AAIA,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,kCAAkC,CAAC;AAEnE;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,eAAe,GAAG,aAAa,CAWnH"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { copyFileSync, existsSync, mkdirSync } from 'node:fs';
|
|
2
|
+
import { dirname, resolve } from 'node:path';
|
|
3
|
+
import { RULES_PATH } from './config.js';
|
|
4
|
+
/** Where install-eval-harness has always put the review rules for kiro-cli. */
|
|
5
|
+
export const KIRO_STEERING_RULES = '.kiro/steering/code-review.md';
|
|
6
|
+
/**
|
|
7
|
+
* Ensures the tool-neutral rule set exists at `.prism/review/rules.md`.
|
|
8
|
+
*
|
|
9
|
+
* Seed order: keep an existing rules.md; else copy the repo's
|
|
10
|
+
* `.kiro/steering/code-review.md` (a team may have customised it, and CI
|
|
11
|
+
* reviewed against it until now); else the bundled default -- the same file
|
|
12
|
+
* install-eval-harness ships as steering. Returns what happened.
|
|
13
|
+
*/
|
|
14
|
+
export function ensureRulesFile(gitRoot, bundledRulesPath) {
|
|
15
|
+
const dest = resolve(gitRoot, RULES_PATH);
|
|
16
|
+
if (existsSync(dest))
|
|
17
|
+
return 'kept';
|
|
18
|
+
mkdirSync(dirname(dest), { recursive: true });
|
|
19
|
+
const steering = resolve(gitRoot, KIRO_STEERING_RULES);
|
|
20
|
+
if (existsSync(steering)) {
|
|
21
|
+
copyFileSync(steering, dest);
|
|
22
|
+
return 'from-steering';
|
|
23
|
+
}
|
|
24
|
+
copyFileSync(bundledRulesPath, dest);
|
|
25
|
+
return 'from-bundle';
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../src/codewatch/rules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,+BAA+B,CAAC;AAEnE;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,gBAAwB;IACvE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC1C,IAAI,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IACpC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IACvD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC7B,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACrC,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare function parsePort(v: string | undefined): number;
|
|
2
|
+
declare const _default: {
|
|
3
|
+
description: string;
|
|
4
|
+
options: {
|
|
5
|
+
flags: string;
|
|
6
|
+
description: string;
|
|
7
|
+
}[];
|
|
8
|
+
action(opts: {
|
|
9
|
+
json?: boolean;
|
|
10
|
+
all?: boolean;
|
|
11
|
+
root?: string;
|
|
12
|
+
port?: string;
|
|
13
|
+
open?: boolean;
|
|
14
|
+
}): Promise<void>;
|
|
15
|
+
};
|
|
16
|
+
export default _default;
|
|
17
|
+
//# sourceMappingURL=dashboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../../src/commands/_top/dashboard.ts"],"names":[],"mappings":"AAoBA,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAMvD;;;;;;;iBAWoB;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE;;AATpG,wBAyCE"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { buildPayload } from '../../dashboard/payload.js';
|
|
3
|
+
import { cachedPayload, startServer, BIND_HOST } from '../../dashboard/server.js';
|
|
4
|
+
import { reportFromRepos } from '../../dashboard/report.js';
|
|
5
|
+
/** Opens the URL in the default browser. argv only, detached; failure is non-fatal. */
|
|
6
|
+
function openBrowser(url) {
|
|
7
|
+
const [cmd, args] = process.platform === 'darwin' ? ['open', [url]]
|
|
8
|
+
: process.platform === 'win32' ? ['rundll32', ['url.dll,FileProtocolHandler', url]]
|
|
9
|
+
: ['xdg-open', [url]];
|
|
10
|
+
try {
|
|
11
|
+
const child = spawn(cmd, args, { stdio: 'ignore', detached: true });
|
|
12
|
+
child.on('error', () => console.log(' (could not open a browser; open the URL above)'));
|
|
13
|
+
child.unref();
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
console.log(' (could not open a browser; open the URL above)');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export function parsePort(v) {
|
|
20
|
+
if (v === undefined)
|
|
21
|
+
return 0;
|
|
22
|
+
if (!/^\d+$/.test(v))
|
|
23
|
+
throw new Error(`--port must be a number, got "${v}"`);
|
|
24
|
+
const n = Number(v);
|
|
25
|
+
if (n !== 0 && (n < 1024 || n > 65535))
|
|
26
|
+
throw new Error('--port must be 0 or between 1024 and 65535');
|
|
27
|
+
return n;
|
|
28
|
+
}
|
|
29
|
+
export default {
|
|
30
|
+
description: 'Local web dashboard (127.0.0.1 only): codewatch results, codeburn usage and setup checklist. No AWS calls.',
|
|
31
|
+
options: [
|
|
32
|
+
{ flags: '--json', description: 'Print the dashboard data as JSON and exit (no server)' },
|
|
33
|
+
{ flags: '--root <dir>', description: 'Where to look for repos with .prism/, 3 levels deep (default: your home directory)' },
|
|
34
|
+
{ flags: '--all', description: '[deprecated, no effect] every repo under --root is now shown by default' },
|
|
35
|
+
{ flags: '--port <n>', description: 'Port on 127.0.0.1 (default: a random free port)' },
|
|
36
|
+
{ flags: '--no-open', description: 'Do not open a browser' },
|
|
37
|
+
],
|
|
38
|
+
async action(opts) {
|
|
39
|
+
// stderr, so --json output stays parseable.
|
|
40
|
+
if (opts.all)
|
|
41
|
+
console.error('prism: --all is deprecated and has no effect; the dashboard now scans your home directory (or --root) by default.');
|
|
42
|
+
const build = () => buildPayload({ cwd: process.cwd(), root: opts.root });
|
|
43
|
+
if (opts.json) {
|
|
44
|
+
process.stdout.write(JSON.stringify(await build(), null, 2) + '\n');
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
let port;
|
|
48
|
+
try {
|
|
49
|
+
port = parsePort(opts.port);
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
console.error(`Error: ${e.message}`);
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
let srv;
|
|
56
|
+
try {
|
|
57
|
+
const payload = cachedPayload(build);
|
|
58
|
+
// Reports are looked up only in the repos the dashboard itself discovered.
|
|
59
|
+
const getReport = async (id) => reportFromRepos((await payload()).repos.map((r) => r.path), id);
|
|
60
|
+
srv = await startServer({ port, getPayload: payload, getReport });
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
console.error(`Error: could not start the dashboard on ${BIND_HOST}${port ? `:${port}` : ''}: ${e.message}`);
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
console.log(`PRISM dashboard (local only, ${BIND_HOST}:${srv.port})`);
|
|
67
|
+
console.log(` ${srv.url}`);
|
|
68
|
+
console.log(' The token in this URL is the only key to the page; do not share it. Ctrl-C to stop.');
|
|
69
|
+
if (opts.open !== false)
|
|
70
|
+
openBrowser(srv.url);
|
|
71
|
+
const stop = () => { srv.close().finally(() => process.exit(0)); setTimeout(() => process.exit(0), 2000).unref(); };
|
|
72
|
+
process.on('SIGINT', stop);
|
|
73
|
+
process.on('SIGTERM', stop);
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=dashboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../../src/commands/_top/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5D,uFAAuF;AACvF,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;QACjE,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YACjF,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,KAAK,CAAC,GAAa,EAAE,IAAgB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1F,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;QACzF,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;IAClE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAqB;IAC7C,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,GAAG,CAAC,CAAC;IAC7E,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IACtG,OAAO,CAAC,CAAC;AACX,CAAC;AAED,eAAe;IACb,WAAW,EAAE,4GAA4G;IACzH,OAAO,EAAE;QACP,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,uDAAuD,EAAE;QACzF,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,oFAAoF,EAAE;QAC5H,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,yEAAyE,EAAE;QAC1G,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,iDAAiD,EAAE;QACvF,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,uBAAuB,EAAE;KAC7D;IACD,KAAK,CAAC,MAAM,CAAC,IAAqF;QAChG,4CAA4C;QAC5C,IAAI,IAAI,CAAC,GAAG;YAAE,OAAO,CAAC,KAAK,CAAC,mHAAmH,CAAC,CAAC;QACjJ,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAE1E,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QAED,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAE9G,IAAI,GAAG,CAAC;QACR,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YACrC,2EAA2E;YAC3E,MAAM,SAAS,GAAG,KAAK,EAAE,EAAU,EAAE,EAAE,CAAC,eAAe,CAAE,CAAC,MAAM,OAAO,EAAE,CAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9H,GAAG,GAAG,MAAM,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,2CAA2C,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,gCAAgC,SAAS,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,uFAAuF,CAAC,CAAC;QACrG,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;YAAE,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE9C,MAAM,IAAI,GAAG,GAAG,EAAE,GAAG,GAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QACrH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC3B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export declare const PACKAGE_NAME = "@prism-d1/cli";
|
|
2
|
+
export interface Install {
|
|
3
|
+
/** The PATH entry. */
|
|
4
|
+
path: string;
|
|
5
|
+
/** Where it resolves after symlinks. */
|
|
6
|
+
realpath: string;
|
|
7
|
+
/** From the package.json next to it; null when it cannot be found. */
|
|
8
|
+
version: string | null;
|
|
9
|
+
/** True when it is this running CLI. */
|
|
10
|
+
isThis: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface VersionReport {
|
|
13
|
+
schema: 'prism.version.v1';
|
|
14
|
+
version: string;
|
|
15
|
+
node: string;
|
|
16
|
+
latest: string | null;
|
|
17
|
+
updateAvailable: boolean | null;
|
|
18
|
+
/** Why latest is null: 'offline', or the npm failure. */
|
|
19
|
+
latestNote: string | null;
|
|
20
|
+
onPath: Install[];
|
|
21
|
+
warnings: string[];
|
|
22
|
+
}
|
|
23
|
+
export interface VersionDeps {
|
|
24
|
+
/** The directory holding this CLI's package.json. */
|
|
25
|
+
ownPackageDir: string;
|
|
26
|
+
pathEnv: string;
|
|
27
|
+
/** `npm view @prism-d1/cli version`: the version, or an error message. */
|
|
28
|
+
npmLatest: () => {
|
|
29
|
+
version: string | null;
|
|
30
|
+
error?: string;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/** Walks up from `start` to the package.json of @prism-d1/cli, at most 6 levels. */
|
|
34
|
+
export declare function findPackageDir(start: string): string | null;
|
|
35
|
+
/** -1, 0 or 1, comparing dotted numeric versions; pre-release tags are ignored. */
|
|
36
|
+
export declare function compareVersions(a: string, b: string): number;
|
|
37
|
+
/**
|
|
38
|
+
* Every prism-cli on PATH, in PATH order, deduplicated by real path (e.g.
|
|
39
|
+
* /bin -> /usr/bin).
|
|
40
|
+
*
|
|
41
|
+
* shortcut: on Windows, npm's .cmd shims do not resolve to their package, so
|
|
42
|
+
* other installs there show version unknown; parse the shim if that matters.
|
|
43
|
+
*/
|
|
44
|
+
export declare function installsOnPath(pathEnv: string, ownPackageDir: string): Install[];
|
|
45
|
+
export declare function buildReport(opts: {
|
|
46
|
+
offline?: boolean;
|
|
47
|
+
}, d: VersionDeps): VersionReport;
|
|
48
|
+
export declare function defaultDeps(): VersionDeps;
|
|
49
|
+
export declare function printReport(r: VersionReport, log?: (l: string) => void): void;
|
|
50
|
+
declare const _default: {
|
|
51
|
+
description: string;
|
|
52
|
+
options: {
|
|
53
|
+
flags: string;
|
|
54
|
+
description: string;
|
|
55
|
+
}[];
|
|
56
|
+
action(opts: {
|
|
57
|
+
json?: boolean;
|
|
58
|
+
offline?: boolean;
|
|
59
|
+
}): Promise<void>;
|
|
60
|
+
};
|
|
61
|
+
export default _default;
|
|
62
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../../src/commands/_top/version.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAK5C,MAAM,WAAW,OAAO;IACtB,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,wCAAwC;IACxC,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,eAAe,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC,yDAAyD;IACzD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,qDAAqD;IACrD,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,SAAS,EAAE,MAAM;QAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7D;AAED,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAc3D;AAWD,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAK5D;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,EAAE,CAoBhF;AAMD,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,CAAC,EAAE,WAAW,GAAG,aAAa,CA4BtF;AAeD,wBAAgB,WAAW,IAAI,WAAW,CAMzC;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAkB,GAAG,IAAI,CAO1F;;;;;;;iBAQoB;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE;;AAN1D,wBAWE"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `prism-cli version`: this CLI's version, whether npm has a newer one, and
|
|
3
|
+
* any other prism-cli on PATH that shadows this one or differs from it (an old
|
|
4
|
+
* /usr/bin/prism-cli under a system Node is the usual case).
|
|
5
|
+
*
|
|
6
|
+
* The npm check never fails the command: a timeout, no network or no npm is
|
|
7
|
+
* reported as "not checked". `--offline` skips it. `prism-cli --version` stays
|
|
8
|
+
* the bare version string from commander.
|
|
9
|
+
*/
|
|
10
|
+
import { spawnSync } from 'node:child_process';
|
|
11
|
+
import { existsSync, readFileSync, realpathSync, statSync } from 'node:fs';
|
|
12
|
+
import { delimiter, dirname, join, resolve } from 'node:path';
|
|
13
|
+
import { fileURLToPath } from 'node:url';
|
|
14
|
+
export const PACKAGE_NAME = '@prism-d1/cli';
|
|
15
|
+
const BIN_NAME = 'prism-cli';
|
|
16
|
+
/** Short: this runs on every `version` call and must not stall a terminal. */
|
|
17
|
+
const NPM_TIMEOUT_MS = 5000;
|
|
18
|
+
/** Walks up from `start` to the package.json of @prism-d1/cli, at most 6 levels. */
|
|
19
|
+
export function findPackageDir(start) {
|
|
20
|
+
let dir = start;
|
|
21
|
+
for (let i = 0; i < 6; i++) {
|
|
22
|
+
const pkg = join(dir, 'package.json');
|
|
23
|
+
if (existsSync(pkg)) {
|
|
24
|
+
try {
|
|
25
|
+
if (JSON.parse(readFileSync(pkg, 'utf8')).name === PACKAGE_NAME)
|
|
26
|
+
return dir;
|
|
27
|
+
}
|
|
28
|
+
catch { /* not ours */ }
|
|
29
|
+
}
|
|
30
|
+
const parent = dirname(dir);
|
|
31
|
+
if (parent === dir)
|
|
32
|
+
break;
|
|
33
|
+
dir = parent;
|
|
34
|
+
}
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
function packageVersion(dir) {
|
|
38
|
+
if (!dir)
|
|
39
|
+
return null;
|
|
40
|
+
try {
|
|
41
|
+
return String(JSON.parse(readFileSync(join(dir, 'package.json'), 'utf8')).version);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/** -1, 0 or 1, comparing dotted numeric versions; pre-release tags are ignored. */
|
|
48
|
+
export function compareVersions(a, b) {
|
|
49
|
+
const pa = a.split(/[.-]/).slice(0, 3).map((n) => parseInt(n, 10) || 0);
|
|
50
|
+
const pb = b.split(/[.-]/).slice(0, 3).map((n) => parseInt(n, 10) || 0);
|
|
51
|
+
for (let i = 0; i < 3; i++)
|
|
52
|
+
if (pa[i] !== pb[i])
|
|
53
|
+
return pa[i] > pb[i] ? 1 : -1;
|
|
54
|
+
return 0;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Every prism-cli on PATH, in PATH order, deduplicated by real path (e.g.
|
|
58
|
+
* /bin -> /usr/bin).
|
|
59
|
+
*
|
|
60
|
+
* shortcut: on Windows, npm's .cmd shims do not resolve to their package, so
|
|
61
|
+
* other installs there show version unknown; parse the shim if that matters.
|
|
62
|
+
*/
|
|
63
|
+
export function installsOnPath(pathEnv, ownPackageDir) {
|
|
64
|
+
const seen = new Set();
|
|
65
|
+
const out = [];
|
|
66
|
+
const exts = process.platform === 'win32' ? ['.cmd', ''] : [''];
|
|
67
|
+
const own = realOrSelf(ownPackageDir);
|
|
68
|
+
for (const dir of pathEnv.split(delimiter)) {
|
|
69
|
+
if (!dir)
|
|
70
|
+
continue;
|
|
71
|
+
for (const ext of exts) {
|
|
72
|
+
const p = join(dir, BIN_NAME + ext);
|
|
73
|
+
try {
|
|
74
|
+
if (!statSync(p).isFile())
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
const real = realOrSelf(p);
|
|
81
|
+
if (seen.has(real))
|
|
82
|
+
continue;
|
|
83
|
+
seen.add(real);
|
|
84
|
+
const pkgDir = findPackageDir(dirname(real));
|
|
85
|
+
out.push({ path: p, realpath: real, version: packageVersion(pkgDir), isThis: !!pkgDir && realOrSelf(pkgDir) === own });
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return out;
|
|
89
|
+
}
|
|
90
|
+
function realOrSelf(p) {
|
|
91
|
+
try {
|
|
92
|
+
return realpathSync(p);
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return resolve(p);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
export function buildReport(opts, d) {
|
|
99
|
+
const version = packageVersion(d.ownPackageDir) ?? 'unknown';
|
|
100
|
+
const warnings = [];
|
|
101
|
+
const onPath = installsOnPath(d.pathEnv, d.ownPackageDir);
|
|
102
|
+
const first = onPath[0];
|
|
103
|
+
if (!first) {
|
|
104
|
+
warnings.push(`${BIN_NAME} is not on PATH; this copy runs only by its full path.`);
|
|
105
|
+
}
|
|
106
|
+
else if (!first.isThis) {
|
|
107
|
+
warnings.push(`"${BIN_NAME}" on PATH runs ${first.path} (${first.version ?? 'version unknown'}), not this CLI (${version}, ${d.ownPackageDir}).`);
|
|
108
|
+
}
|
|
109
|
+
const others = onPath.filter((i, n) => !i.isThis && n > 0 && i.version !== version);
|
|
110
|
+
for (const o of others) {
|
|
111
|
+
warnings.push(`Another ${BIN_NAME} on PATH: ${o.path} (${o.version ?? 'version unknown'}), shadowed by ${first.path}. A different Node or shell may run it; remove it with that Node's "npm uninstall -g ${PACKAGE_NAME}".`);
|
|
112
|
+
}
|
|
113
|
+
let latest = null;
|
|
114
|
+
let latestNote = null;
|
|
115
|
+
if (opts.offline) {
|
|
116
|
+
latestNote = 'offline';
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
const r = d.npmLatest();
|
|
120
|
+
latest = r.version;
|
|
121
|
+
if (!latest)
|
|
122
|
+
latestNote = r.error || 'npm returned no version';
|
|
123
|
+
}
|
|
124
|
+
const updateAvailable = latest && version !== 'unknown' ? compareVersions(latest, version) > 0 : null;
|
|
125
|
+
return { schema: 'prism.version.v1', version, node: process.version, latest, updateAvailable, latestNote, onPath, warnings };
|
|
126
|
+
}
|
|
127
|
+
function realNpmLatest() {
|
|
128
|
+
const o = { encoding: 'utf8', timeout: NPM_TIMEOUT_MS, stdio: ['ignore', 'pipe', 'pipe'] };
|
|
129
|
+
// Windows resolves npm.cmd only through a shell. The command is a constant
|
|
130
|
+
// with no user input, so the shell parses nothing it was given.
|
|
131
|
+
const r = process.platform === 'win32'
|
|
132
|
+
? spawnSync(`npm view ${PACKAGE_NAME} version`, { ...o, shell: true })
|
|
133
|
+
: spawnSync('npm', ['view', PACKAGE_NAME, 'version'], o);
|
|
134
|
+
if (r.error)
|
|
135
|
+
return { version: null, error: r.error.code === 'ETIMEDOUT' ? `npm did not answer within ${NPM_TIMEOUT_MS / 1000}s` : r.error.message };
|
|
136
|
+
if (r.status !== 0)
|
|
137
|
+
return { version: null, error: (r.stderr || '').trim().split('\n')[0] || `npm exited ${r.status}` };
|
|
138
|
+
const v = (r.stdout || '').trim();
|
|
139
|
+
return /^\d+\.\d+\.\d+/.test(v) ? { version: v } : { version: null, error: 'unexpected npm output' };
|
|
140
|
+
}
|
|
141
|
+
export function defaultDeps() {
|
|
142
|
+
return {
|
|
143
|
+
ownPackageDir: findPackageDir(dirname(fileURLToPath(import.meta.url))) ?? process.cwd(),
|
|
144
|
+
pathEnv: process.env.PATH || '',
|
|
145
|
+
npmLatest: realNpmLatest,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
export function printReport(r, log = console.log) {
|
|
149
|
+
log(`${BIN_NAME} ${r.version} (Node ${r.node})`);
|
|
150
|
+
if (r.updateAvailable)
|
|
151
|
+
log(`Update available: ${r.latest}. Run: npm install -g ${PACKAGE_NAME}`);
|
|
152
|
+
else if (r.latest)
|
|
153
|
+
log(`Up to date (latest on npm: ${r.latest}).`);
|
|
154
|
+
else if (r.latestNote === 'offline')
|
|
155
|
+
log('Update check skipped (--offline).');
|
|
156
|
+
else
|
|
157
|
+
log(`Update check: not checked (${r.latestNote}).`);
|
|
158
|
+
for (const w of r.warnings)
|
|
159
|
+
log(`⚠ ${w}`);
|
|
160
|
+
}
|
|
161
|
+
export default {
|
|
162
|
+
description: 'Print the CLI version, check npm for a newer release, and warn about other prism-cli copies on PATH',
|
|
163
|
+
options: [
|
|
164
|
+
{ flags: '--json', description: 'Print the report as JSON' },
|
|
165
|
+
{ flags: '--offline', description: 'Skip the npm check' },
|
|
166
|
+
],
|
|
167
|
+
async action(opts) {
|
|
168
|
+
const report = buildReport(opts, defaultDeps());
|
|
169
|
+
if (opts.json)
|
|
170
|
+
console.log(JSON.stringify(report, null, 2));
|
|
171
|
+
else
|
|
172
|
+
printReport(report);
|
|
173
|
+
},
|
|
174
|
+
};
|
|
175
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../../src/commands/_top/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;AAC5C,MAAM,QAAQ,GAAG,WAAW,CAAC;AAC7B,8EAA8E;AAC9E,MAAM,cAAc,GAAG,IAAI,CAAC;AAiC5B,oFAAoF;AACpF,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACtC,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY;oBAAE,OAAO,GAAG,CAAC;YAC9E,CAAC;YAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,GAAkB;IACxC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACrF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,eAAe,CAAC,CAAS,EAAE,CAAS;IAClD,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,aAAqB;IACnE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChE,MAAM,GAAG,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IACtC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3C,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,GAAG,GAAG,CAAC,CAAC;YACpC,IAAI,CAAC;gBACH,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;oBAAE,SAAS;YACtC,CAAC;YAAC,MAAM,CAAC;gBAAC,SAAS;YAAC,CAAC;YACrB,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACf,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QACzH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,IAAI,CAAC;QAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAA2B,EAAE,CAAc;IACrE,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC;IAC7D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,wDAAwD,CAAC,CAAC;IACrF,CAAC;SAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,kBAAkB,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,IAAI,iBAAiB,oBAAoB,OAAO,KAAK,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC;IACpJ,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IACpF,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,WAAW,QAAQ,aAAa,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,IAAI,iBAAiB,kBAAkB,KAAK,CAAC,IAAI,wFAAwF,YAAY,IAAI,CAAC,CAAC;IAC/N,CAAC;IAED,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC;QACxB,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC;QACnB,IAAI,CAAC,MAAM;YAAE,UAAU,GAAG,CAAC,CAAC,KAAK,IAAI,yBAAyB,CAAC;IACjE,CAAC;IACD,MAAM,eAAe,GAAG,MAAM,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEtG,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC/H,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAe,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAA+B,EAAE,CAAC;IAClI,2EAA2E;IAC3E,gEAAgE;IAChE,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO;QACpC,CAAC,CAAC,SAAS,CAAC,YAAY,YAAY,UAAU,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACtE,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,CAAC,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAG,CAAC,CAAC,KAA+B,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,6BAA6B,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAChL,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IACxH,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAClC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;AACvG,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO;QACL,aAAa,EAAE,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE;QACvF,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;QAC/B,SAAS,EAAE,aAAa;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAgB,EAAE,MAA2B,OAAO,CAAC,GAAG;IAClF,GAAG,CAAC,GAAG,QAAQ,IAAI,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IACjD,IAAI,CAAC,CAAC,eAAe;QAAE,GAAG,CAAC,qBAAqB,CAAC,CAAC,MAAM,yBAAyB,YAAY,EAAE,CAAC,CAAC;SAC5F,IAAI,CAAC,CAAC,MAAM;QAAE,GAAG,CAAC,8BAA8B,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;SAC9D,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS;QAAE,GAAG,CAAC,mCAAmC,CAAC,CAAC;;QACzE,GAAG,CAAC,8BAA8B,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC;IACzD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ;QAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,eAAe;IACb,WAAW,EAAE,qGAAqG;IAClH,OAAO,EAAE;QACP,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;QAC5D,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,oBAAoB,EAAE;KAC1D;IACD,KAAK,CAAC,MAAM,CAAC,IAA2C;QACtD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;YACvD,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan-account.d.ts","sourceRoot":"","sources":["../../../../src/commands/bedrock-protection/scan-account.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;;;;;iBAckB;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC3E,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;KAC3E;;AAfH,
|
|
1
|
+
{"version":3,"file":"scan-account.d.ts","sourceRoot":"","sources":["../../../../src/commands/bedrock-protection/scan-account.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;;;;;iBAckB;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC3E,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;KAC3E;;AAfH,wBAiFE"}
|
|
@@ -3,7 +3,7 @@ import { DEFAULT_REGION } from '../../utils/region.js';
|
|
|
3
3
|
import { validateAwsRegion } from '../../utils/validate.js';
|
|
4
4
|
import { renderReport, parseFailOn, applyFailOn, FAIL_ON_OPTION, JSON_OPTION, } from '../../utils/audit.js';
|
|
5
5
|
import { auditRoot, auditPasswordPolicy, auditUsers, auditUserPolicies } from '../../utils/audit-iam.js';
|
|
6
|
-
import { auditBudgets, auditBudgetAlerting, auditDetection, auditCommitments, auditForensics } from '../../utils/audit-bedrock.js';
|
|
6
|
+
import { auditBudgets, auditBudgetAlerting, auditDetection, auditAiProtection, auditCommitments, auditForensics } from '../../utils/audit-bedrock.js';
|
|
7
7
|
/**
|
|
8
8
|
* Audit the AWS account side of Bedrock protection.
|
|
9
9
|
*
|
|
@@ -77,6 +77,7 @@ export default {
|
|
|
77
77
|
...budgets.findings,
|
|
78
78
|
auditBudgetAlerting(target, accountId, budgets.coveringBudgets, budgets.listError),
|
|
79
79
|
...auditDetection(target, region),
|
|
80
|
+
auditAiProtection(target, region),
|
|
80
81
|
auditCommitments(target, region),
|
|
81
82
|
auditForensics(target, region),
|
|
82
83
|
] : []),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan-account.js","sourceRoot":"","sources":["../../../../src/commands/bedrock-protection/scan-account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EACI,YAAY,EAAE,WAAW,EAAE,WAAW,EAC/C,cAAc,EAAE,WAAW,GAC5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACzG,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"scan-account.js","sourceRoot":"","sources":["../../../../src/commands/bedrock-protection/scan-account.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan-org.d.ts","sourceRoot":"","sources":["../../../../src/commands/bedrock-protection/scan-org.ts"],"names":[],"mappings":";;;;;;iBA0JqB;QACjB,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAClE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAC;QAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAC;QACzF,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;KACjC;;AArBH,
|
|
1
|
+
{"version":3,"file":"scan-org.d.ts","sourceRoot":"","sources":["../../../../src/commands/bedrock-protection/scan-org.ts"],"names":[],"mappings":";;;;;;iBA0JqB;QACjB,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAClE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAC;QAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAC;QACzF,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;KACjC;;AArBH,wBAkTE"}
|