@prism-d1/cli 1.2.0 → 1.4.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.
Files changed (181) hide show
  1. package/dist/assets/github-workflows/prism-eval-gate-kiro.yml +2 -2
  2. package/dist/assets/infra/bin/app.ts +61 -37
  3. package/dist/assets/infra/lib/constructs/security-agent-construct.ts +35 -30
  4. package/dist/assets/infra/lib/metrics-pipeline-stack.ts +2 -110
  5. package/dist/assets/infra/lib/security-agent-resources.ts +136 -0
  6. package/dist/assets/infra/lib/security-agent-stack.ts +69 -0
  7. package/dist/assets/pentest-cdk/bin/app.ts +12 -0
  8. package/dist/assets/pentest-cdk/cdk.json +7 -0
  9. package/dist/assets/pentest-cdk/lib/pentest-target-stack.ts +206 -0
  10. package/dist/assets/pentest-cdk/package.json +18 -0
  11. package/dist/assets/pentest-cdk/tsconfig.json +12 -0
  12. package/dist/src/aws/advice.d.ts +33 -0
  13. package/dist/src/aws/advice.d.ts.map +1 -0
  14. package/dist/src/aws/advice.js +174 -0
  15. package/dist/src/aws/advice.js.map +1 -0
  16. package/dist/src/aws/check.d.ts +64 -0
  17. package/dist/src/aws/check.d.ts.map +1 -0
  18. package/dist/src/aws/check.js +269 -0
  19. package/dist/src/aws/check.js.map +1 -0
  20. package/dist/src/aws/connect.d.ts +65 -0
  21. package/dist/src/aws/connect.d.ts.map +1 -0
  22. package/dist/src/aws/connect.js +250 -0
  23. package/dist/src/aws/connect.js.map +1 -0
  24. package/dist/src/aws/connection.d.ts +67 -0
  25. package/dist/src/aws/connection.d.ts.map +1 -0
  26. package/dist/src/aws/connection.js +137 -0
  27. package/dist/src/aws/connection.js.map +1 -0
  28. package/dist/src/aws/recommend.d.ts +70 -0
  29. package/dist/src/aws/recommend.d.ts.map +1 -0
  30. package/dist/src/aws/recommend.js +244 -0
  31. package/dist/src/aws/recommend.js.map +1 -0
  32. package/dist/src/aws/run-check.d.ts +31 -0
  33. package/dist/src/aws/run-check.d.ts.map +1 -0
  34. package/dist/src/aws/run-check.js +91 -0
  35. package/dist/src/aws/run-check.js.map +1 -0
  36. package/dist/src/codewatch/results.d.ts +155 -4
  37. package/dist/src/codewatch/results.d.ts.map +1 -1
  38. package/dist/src/codewatch/results.js +12 -2
  39. package/dist/src/codewatch/results.js.map +1 -1
  40. package/dist/src/commands/_top/version.d.ts +62 -0
  41. package/dist/src/commands/_top/version.d.ts.map +1 -0
  42. package/dist/src/commands/_top/version.js +175 -0
  43. package/dist/src/commands/_top/version.js.map +1 -0
  44. package/dist/src/commands/aws/check.d.ts +25 -0
  45. package/dist/src/commands/aws/check.d.ts.map +1 -0
  46. package/dist/src/commands/aws/check.js +42 -0
  47. package/dist/src/commands/aws/check.js.map +1 -0
  48. package/dist/src/commands/aws/connect.d.ts +16 -0
  49. package/dist/src/commands/aws/connect.d.ts.map +1 -0
  50. package/dist/src/commands/aws/connect.js +39 -0
  51. package/dist/src/commands/aws/connect.js.map +1 -0
  52. package/dist/src/commands/aws/recommend.d.ts +12 -0
  53. package/dist/src/commands/aws/recommend.d.ts.map +1 -0
  54. package/dist/src/commands/aws/recommend.js +21 -0
  55. package/dist/src/commands/aws/recommend.js.map +1 -0
  56. package/dist/src/commands/bedrock-protection/scan-account.d.ts.map +1 -1
  57. package/dist/src/commands/bedrock-protection/scan-account.js +14 -35
  58. package/dist/src/commands/bedrock-protection/scan-account.js.map +1 -1
  59. package/dist/src/commands/bedrock-protection/scan-org.d.ts.map +1 -1
  60. package/dist/src/commands/bedrock-protection/scan-org.js +12 -5
  61. package/dist/src/commands/bedrock-protection/scan-org.js.map +1 -1
  62. package/dist/src/commands/bootstrapper/setup-otel-sync.d.ts +12 -6
  63. package/dist/src/commands/bootstrapper/setup-otel-sync.d.ts.map +1 -1
  64. package/dist/src/commands/bootstrapper/setup-otel-sync.js +18 -409
  65. package/dist/src/commands/bootstrapper/setup-otel-sync.js.map +1 -1
  66. package/dist/src/commands/enable/codeburn.d.ts +59 -0
  67. package/dist/src/commands/enable/codeburn.d.ts.map +1 -0
  68. package/dist/src/commands/enable/codeburn.js +531 -0
  69. package/dist/src/commands/enable/codeburn.js.map +1 -0
  70. package/dist/src/commands/enable/security.d.ts +41 -0
  71. package/dist/src/commands/enable/security.d.ts.map +1 -0
  72. package/dist/src/commands/enable/security.js +128 -0
  73. package/dist/src/commands/enable/security.js.map +1 -0
  74. package/dist/src/commands/export/otel.d.ts +31 -0
  75. package/dist/src/commands/export/otel.d.ts.map +1 -0
  76. package/dist/src/commands/export/otel.js +52 -0
  77. package/dist/src/commands/export/otel.js.map +1 -0
  78. package/dist/src/commands/security/code-review.d.ts +22 -0
  79. package/dist/src/commands/security/code-review.d.ts.map +1 -0
  80. package/dist/src/commands/security/code-review.js +44 -0
  81. package/dist/src/commands/security/code-review.js.map +1 -0
  82. package/dist/src/commands/security/findings.d.ts +15 -0
  83. package/dist/src/commands/security/findings.d.ts.map +1 -0
  84. package/dist/src/commands/security/findings.js +33 -0
  85. package/dist/src/commands/security/findings.js.map +1 -0
  86. package/dist/src/commands/security/pentest.d.ts +18 -0
  87. package/dist/src/commands/security/pentest.d.ts.map +1 -0
  88. package/dist/src/commands/security/pentest.js +33 -0
  89. package/dist/src/commands/security/pentest.js.map +1 -0
  90. package/dist/src/commands/security/threat-model.d.ts +16 -0
  91. package/dist/src/commands/security/threat-model.d.ts.map +1 -0
  92. package/dist/src/commands/security/threat-model.js +25 -0
  93. package/dist/src/commands/security/threat-model.js.map +1 -0
  94. package/dist/src/commands/security/threats.d.ts +12 -0
  95. package/dist/src/commands/security/threats.d.ts.map +1 -0
  96. package/dist/src/commands/security/threats.js +24 -0
  97. package/dist/src/commands/security/threats.js.map +1 -0
  98. package/dist/src/commands/securityagent/setup.d.ts +19 -5
  99. package/dist/src/commands/securityagent/setup.d.ts.map +1 -1
  100. package/dist/src/commands/securityagent/setup.js +25 -189
  101. package/dist/src/commands/securityagent/setup.js.map +1 -1
  102. package/dist/src/dashboard/aws.d.ts +39 -0
  103. package/dist/src/dashboard/aws.d.ts.map +1 -0
  104. package/dist/src/dashboard/aws.js +35 -0
  105. package/dist/src/dashboard/aws.js.map +1 -0
  106. package/dist/src/dashboard/codewatch.d.ts.map +1 -1
  107. package/dist/src/dashboard/codewatch.js +2 -1
  108. package/dist/src/dashboard/codewatch.js.map +1 -1
  109. package/dist/src/dashboard/page.d.ts.map +1 -1
  110. package/dist/src/dashboard/page.js +193 -5
  111. package/dist/src/dashboard/page.js.map +1 -1
  112. package/dist/src/dashboard/payload.d.ts +11 -5
  113. package/dist/src/dashboard/payload.d.ts.map +1 -1
  114. package/dist/src/dashboard/payload.js +7 -2
  115. package/dist/src/dashboard/payload.js.map +1 -1
  116. package/dist/src/dashboard/security.d.ts +130 -0
  117. package/dist/src/dashboard/security.d.ts.map +1 -0
  118. package/dist/src/dashboard/security.js +144 -0
  119. package/dist/src/dashboard/security.js.map +1 -0
  120. package/dist/src/dashboard/setup.d.ts +15 -0
  121. package/dist/src/dashboard/setup.d.ts.map +1 -1
  122. package/dist/src/dashboard/setup.js +20 -3
  123. package/dist/src/dashboard/setup.js.map +1 -1
  124. package/dist/src/dashboard/usage.js +1 -1
  125. package/dist/src/dashboard/usage.js.map +1 -1
  126. package/dist/src/index.d.ts.map +1 -1
  127. package/dist/src/index.js +9 -2
  128. package/dist/src/index.js.map +1 -1
  129. package/dist/src/security/cfn-diff.d.ts +57 -0
  130. package/dist/src/security/cfn-diff.d.ts.map +1 -0
  131. package/dist/src/security/cfn-diff.js +112 -0
  132. package/dist/src/security/cfn-diff.js.map +1 -0
  133. package/dist/src/security/errors.d.ts +45 -0
  134. package/dist/src/security/errors.d.ts.map +1 -0
  135. package/dist/src/security/errors.js +116 -0
  136. package/dist/src/security/errors.js.map +1 -0
  137. package/dist/src/security/marker.d.ts +46 -0
  138. package/dist/src/security/marker.d.ts.map +1 -0
  139. package/dist/src/security/marker.js +120 -0
  140. package/dist/src/security/marker.js.map +1 -0
  141. package/dist/src/security/pentest-dockerfile.d.ts +8 -0
  142. package/dist/src/security/pentest-dockerfile.d.ts.map +1 -0
  143. package/dist/src/security/pentest-dockerfile.js +163 -0
  144. package/dist/src/security/pentest-dockerfile.js.map +1 -0
  145. package/dist/src/security/pentest.d.ts +233 -0
  146. package/dist/src/security/pentest.d.ts.map +1 -0
  147. package/dist/src/security/pentest.js +1057 -0
  148. package/dist/src/security/pentest.js.map +1 -0
  149. package/dist/src/security/repo.d.ts +25 -0
  150. package/dist/src/security/repo.d.ts.map +1 -0
  151. package/dist/src/security/repo.js +38 -0
  152. package/dist/src/security/repo.js.map +1 -0
  153. package/dist/src/security/review.d.ts +202 -0
  154. package/dist/src/security/review.d.ts.map +1 -0
  155. package/dist/src/security/review.js +706 -0
  156. package/dist/src/security/review.js.map +1 -0
  157. package/dist/src/security/setup.d.ts +209 -0
  158. package/dist/src/security/setup.d.ts.map +1 -0
  159. package/dist/src/security/setup.js +742 -0
  160. package/dist/src/security/setup.js.map +1 -0
  161. package/dist/src/security/threat-model.d.ts +133 -0
  162. package/dist/src/security/threat-model.d.ts.map +1 -0
  163. package/dist/src/security/threat-model.js +653 -0
  164. package/dist/src/security/threat-model.js.map +1 -0
  165. package/dist/src/utils/audit-account.d.ts +50 -0
  166. package/dist/src/utils/audit-account.d.ts.map +1 -0
  167. package/dist/src/utils/audit-account.js +69 -0
  168. package/dist/src/utils/audit-account.js.map +1 -0
  169. package/dist/src/utils/audit-iam.d.ts +1 -1
  170. package/dist/src/utils/audit-iam.d.ts.map +1 -1
  171. package/dist/src/utils/audit-iam.js +11 -7
  172. package/dist/src/utils/audit-iam.js.map +1 -1
  173. package/dist/src/utils/exec.d.ts +6 -0
  174. package/dist/src/utils/exec.d.ts.map +1 -1
  175. package/dist/src/utils/exec.js +12 -1
  176. package/dist/src/utils/exec.js.map +1 -1
  177. package/dist/src/utils/otel-sync-schedule.d.ts +19 -0
  178. package/dist/src/utils/otel-sync-schedule.d.ts.map +1 -1
  179. package/dist/src/utils/otel-sync-schedule.js +24 -2
  180. package/dist/src/utils/otel-sync-schedule.js.map +1 -1
  181. package/package.json +3 -3
@@ -0,0 +1,144 @@
1
+ /**
2
+ * The Security findings panel: the cached `security-review` results that
3
+ * `prism-cli security code-review` and `security findings` write to
4
+ * .prism/results/. Local files only; no AWS calls.
5
+ */
6
+ import { readResults } from '../codewatch/results.js';
7
+ import { firstParagraph } from '../security/threat-model.js';
8
+ export const MAX_PANEL_FINDINGS = 50;
9
+ /** A pending record older than this is marked `stale?`: results are local, so the dashboard cannot know the job's real state. */
10
+ export const PENDING_STALE_MS = 2 * 60 * 60 * 1000;
11
+ export const PENDING_HINT = 'prism-cli security findings';
12
+ /** A pentest runs for hours, so its pending record goes stale later than a review's. */
13
+ export const PENTEST_PENDING_STALE_MS = 6 * 60 * 60 * 1000;
14
+ export const PENTEST_HINT = 'prism-cli security pentest --status';
15
+ /** Threats shown per repo; the rest are in the result file and `prism-cli security threats`. */
16
+ export const MAX_PANEL_THREATS = 5;
17
+ export const THREATS_HINT = 'prism-cli security threats';
18
+ const RANK = { CRITICAL: 4, HIGH: 3, MEDIUM: 2, LOW: 1 };
19
+ /**
20
+ * The latest job of a repo. Two files can hold the same job (code-review
21
+ * writes it with its scope, `security findings` again without); the one that
22
+ * knows its scope wins, then the newest write. A pending record is completed
23
+ * in place, but should a verdict for the same job exist elsewhere, it wins.
24
+ */
25
+ export function latestSecurityReview(results) {
26
+ const byJob = new Map();
27
+ for (const r of results) {
28
+ if (r.kind !== 'security-review' || !r.security?.job_id)
29
+ continue;
30
+ const prev = byJob.get(r.security.job_id);
31
+ if (prev && (prev.status === 'pending') !== (r.status === 'pending')) {
32
+ if (prev.status === 'pending')
33
+ byJob.set(r.security.job_id, r);
34
+ continue;
35
+ }
36
+ const better = !prev || (prev.security.scope === 'unknown' && r.security.scope !== 'unknown')
37
+ || (prev.security.scope === r.security.scope && r.finished_at > prev.finished_at)
38
+ || (r.security.scope !== 'unknown' && r.finished_at > prev.finished_at);
39
+ if (better)
40
+ byJob.set(r.security.job_id, r);
41
+ }
42
+ const all = [...byJob.values()].sort((a, b) => b.started_at.localeCompare(a.started_at));
43
+ return all[0] ?? null;
44
+ }
45
+ /**
46
+ * The latest pentest job of a repo. Like latestSecurityReview: newest write per
47
+ * job, but a completed record for a job wins over its pending record.
48
+ */
49
+ export function latestPentest(results) {
50
+ const byJob = new Map();
51
+ for (const r of results) {
52
+ // A run that never started a job (the app never became healthy) has no job id but may still have a stack up.
53
+ const key = r.kind === 'security-pentest' ? (r.pentest?.job_id || r.pentest?.stack) : null;
54
+ if (!key)
55
+ continue;
56
+ const prev = byJob.get(key);
57
+ if (prev && (prev.status === 'pending') !== (r.status === 'pending')) {
58
+ if (prev.status === 'pending')
59
+ byJob.set(key, r);
60
+ continue;
61
+ }
62
+ if (!prev || r.finished_at > prev.finished_at)
63
+ byJob.set(key, r);
64
+ }
65
+ const all = [...byJob.values()].sort((a, b) => b.started_at.localeCompare(a.started_at));
66
+ return all[0] ?? null;
67
+ }
68
+ export function collectSecurity(repos, read = readResults, now = new Date()) {
69
+ const rows = [];
70
+ const pentests = [];
71
+ for (const repo of repos) {
72
+ const all = read(repo.path);
73
+ const r = latestSecurityReview(all);
74
+ if (r && r.security) {
75
+ const findings = [...(r.findings || [])]
76
+ .sort((a, b) => (RANK[b.risk_level || ''] ?? 0) - (RANK[a.risk_level || ''] ?? 0) || a.file.localeCompare(b.file))
77
+ .map((f) => ({ risk_level: f.risk_level || f.severity.toUpperCase(), title: f.title || f.message, file: f.file, line: f.line, cwe: f.cwe ?? null }));
78
+ rows.push({
79
+ name: repo.name, path: repo.path, current: repo.current,
80
+ job_id: r.security.job_id, job_status: r.security.job_status, status: r.status, scope: r.security.scope,
81
+ started_at: r.started_at, finished_at: r.finished_at, counts: r.security.counts || {},
82
+ findings: findings.slice(0, MAX_PANEL_FINDINGS), truncated: findings.length > MAX_PANEL_FINDINGS, reason: r.reason ?? null,
83
+ pending: r.status === 'pending',
84
+ stale: r.status === 'pending' && now.getTime() - Date.parse(r.started_at) > PENDING_STALE_MS,
85
+ });
86
+ }
87
+ const p = latestPentest(all);
88
+ if (p && p.pentest) {
89
+ const pf = [...(p.findings || [])]
90
+ .sort((a, b) => (RANK[b.risk_level || ''] ?? 0) - (RANK[a.risk_level || ''] ?? 0) || (a.title || '').localeCompare(b.title || ''))
91
+ .map((f) => ({ risk_level: f.risk_level || f.severity.toUpperCase(), title: f.title || f.message, confidence: f.confidence ?? null }));
92
+ pentests.push({
93
+ name: repo.name, path: repo.path, current: repo.current,
94
+ job_id: p.pentest.job_id, job_status: p.pentest.job_status, status: p.status,
95
+ target_host: p.pentest.target_host, started_at: p.started_at, finished_at: p.finished_at,
96
+ counts: p.pentest.counts || {}, findings: pf.slice(0, MAX_PANEL_FINDINGS), truncated: pf.length > MAX_PANEL_FINDINGS,
97
+ reason: p.reason ?? null, overview: p.pentest.overview ?? null,
98
+ teardown_failed: p.pentest.teardown_failed ?? null,
99
+ pending: p.status === 'pending',
100
+ stale: p.status === 'pending' && now.getTime() - Date.parse(p.started_at) > PENTEST_PENDING_STALE_MS,
101
+ });
102
+ }
103
+ }
104
+ rows.sort((a, b) => Number(b.current) - Number(a.current) || b.started_at.localeCompare(a.started_at));
105
+ const tms = [];
106
+ for (const repo of repos) {
107
+ const r = latestThreatModel(read(repo.path));
108
+ if (r)
109
+ tms.push(threatModelRow(repo, r, now));
110
+ }
111
+ tms.sort((a, b) => Number(b.current) - Number(a.current) || b.started_at.localeCompare(a.started_at));
112
+ pentests.sort((a, b) => Number(b.current) - Number(a.current) || b.started_at.localeCompare(a.started_at));
113
+ return { repos: rows, pentests, hint: 'prism-cli security code-review', pending_hint: PENDING_HINT, pentest_hint: PENTEST_HINT, threat_models: tms, threats_hint: THREATS_HINT };
114
+ }
115
+ /** The newest threat model job of a repo; for one job, a verdict wins over a pending record. */
116
+ export function latestThreatModel(results) {
117
+ const byJob = new Map();
118
+ for (const r of results) {
119
+ if (r.kind !== 'security-threat-model' || !r.threat_model?.job_id)
120
+ continue;
121
+ const prev = byJob.get(r.threat_model.job_id);
122
+ const better = !prev || (prev.status === 'pending' && r.status !== 'pending')
123
+ || ((prev.status === 'pending') === (r.status === 'pending') && r.finished_at > prev.finished_at);
124
+ if (better)
125
+ byJob.set(r.threat_model.job_id, r);
126
+ }
127
+ return [...byJob.values()].sort((a, b) => b.started_at.localeCompare(a.started_at))[0] ?? null;
128
+ }
129
+ function threatModelRow(repo, r, now) {
130
+ const t = r.threat_model;
131
+ const threats = [...(r.findings || [])]
132
+ .sort((a, b) => (RANK[b.risk_level || ''] ?? 0) - (RANK[a.risk_level || ''] ?? 0))
133
+ .map((f) => ({ severity: f.risk_level || f.severity.toUpperCase(), title: f.title || f.message, stride: f.stride || [] }));
134
+ return {
135
+ name: repo.name, path: repo.path, current: repo.current,
136
+ job_id: t.job_id, job_status: t.job_status, status: r.status, commit: r.commit,
137
+ started_at: r.started_at, finished_at: r.finished_at, counts: t.counts || {}, scope_docs: t.scope_docs || [],
138
+ overview: firstParagraph(t.system_overview),
139
+ threats: threats.slice(0, MAX_PANEL_THREATS), more: Math.max(0, threats.length - MAX_PANEL_THREATS), reason: r.reason ?? null,
140
+ pending: r.status === 'pending',
141
+ stale: r.status === 'pending' && now.getTime() - Date.parse(r.started_at) > PENDING_STALE_MS,
142
+ };
143
+ }
144
+ //# sourceMappingURL=security.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../../src/dashboard/security.ts"],"names":[],"mappings":"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"}
@@ -49,4 +49,19 @@ export declare function codewatchSetup(repo: string, deps?: {
49
49
  pathEnv?: string;
50
50
  global?: GlobalStatus;
51
51
  }): CodewatchSetup;
52
+ export interface SecuritySetup {
53
+ /** ok: `prism-cli enable security` finished here (.prism/security.local.json, or a legacy .prism/config.json block). missing: no marker. */
54
+ status: 'ok' | 'missing';
55
+ detail: string;
56
+ /** Empty when ok. */
57
+ fix: string;
58
+ }
59
+ export declare function enableSecurityFix(repo: string): string;
60
+ /**
61
+ * Security Agent per repo, from the marker `enable security` writes
62
+ * (.prism/security.local.json, else a legacy block in .prism/config.json). Local
63
+ * evidence only: the dashboard makes no AWS calls, so this says the setup ran
64
+ * here, not that the AWS resources still exist (`enable security --status` checks those).
65
+ */
66
+ export declare function securitySetup(repo: string): SecuritySetup;
52
67
  //# sourceMappingURL=setup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/dashboard/setup.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAA6E,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAK3I,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AACpD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC;IAC7B,0EAA0E;IAC1E,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,eAAO,MAAM,kBAAkB,wCAAwC,CAAC;AACxE,eAAO,MAAM,gBAAgB,gDAAgD,CAAC;AAE9E,oGAAoG;AACpG,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,YAAY,GAAG,SAAS,CAY3D;AAGD,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAM/B,iDAAiD;AACjD,wBAAgB,aAAa,CAAC,IAAI,GAAE,WAAgB,GAAG,SAAS,EAAE,CAwCjE;AAWD,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC;IAChD,8DAA8D;IAC9D,MAAM,EAAE,OAAO,CAAC;IAChB,mFAAmF;IACnF,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,yFAAyF;IACzF,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAOD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAOD,6GAA6G;AAC7G,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,CAAA;CAAO,GAAG,cAAc,CA+BnH"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/dashboard/setup.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAA6E,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAM3I,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AACpD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC;IAC7B,0EAA0E;IAC1E,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,eAAO,MAAM,kBAAkB,wCAAwC,CAAC;AACxE,eAAO,MAAM,gBAAgB,gDAAgD,CAAC;AAE9E,oGAAoG;AACpG,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,YAAY,GAAG,SAAS,CAY3D;AAGD,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAM/B,iDAAiD;AACjD,wBAAgB,aAAa,CAAC,IAAI,GAAE,WAAgB,GAAG,SAAS,EAAE,CAwCjE;AAWD,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC;IAChD,8DAA8D;IAC9D,MAAM,EAAE,OAAO,CAAC;IAChB,mFAAmF;IACnF,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,yFAAyF;IACzF,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAOD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAOD,6GAA6G;AAC7G,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,CAAA;CAAO,GAAG,cAAc,CA+BnH;AAED,MAAM,WAAW,aAAa;IAC5B,4IAA4I;IAC5I,MAAM,EAAE,IAAI,GAAG,SAAS,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAKzD"}
@@ -7,13 +7,14 @@ import { existsSync, readFileSync } from 'node:fs';
7
7
  import { homedir } from 'node:os';
8
8
  import { join, resolve } from 'node:path';
9
9
  import { checkTool } from '../utils/tool-check.js';
10
- import { lastSync, scheduleExists, schedulerName } from '../utils/otel-sync-schedule.js';
10
+ import { ENABLE_CODEBURN_CMD, lastSync, scheduleExists, schedulerName } from '../utils/otel-sync-schedule.js';
11
11
  import { HOOK_MARKER, MANAGED_HOOKS } from '../codewatch/hooks.js';
12
12
  import { gitleaksInstallHint } from '../codewatch/gitleaks.js';
13
13
  import { globalHooksDir, globalStatus, isOptedOut, OPT_OUT_KEY, repoLocalHooksPath } from '../codewatch/globalHooks.js';
14
14
  import { realpathSync } from 'node:fs';
15
15
  import { readEvalConfig, REVIEWER_GIT_CONFIG_KEY } from '../codewatch/config.js';
16
16
  import { detectReviewers, resolveReviewer } from '../codewatch/reviewers/index.js';
17
+ import { readSecurityMarker } from '../security/marker.js';
17
18
  export const GLOBAL_INSTALL_CMD = 'prism-cli enable codewatch --global';
18
19
  export const GLOBAL_FORCE_CMD = 'prism-cli enable codewatch --global --force';
19
20
  /** The machine row for the global hooks (~/.prism/hooks via git config --global core.hooksPath). */
@@ -40,7 +41,7 @@ export function machineChecks(deps = {}) {
40
41
  const home = deps.home || homedir();
41
42
  const out = [];
42
43
  const cb = checkTool('codeburn', { pathEnv: deps.pathEnv });
43
- out.push(item('codeburn', 'codeburn installed', cb.installed ? 'ok' : 'missing', cb.installed ? (cb.version || 'version unknown') : 'not on PATH', 'npm install -g codeburn'));
44
+ out.push(item('codeburn', 'codeburn installed', cb.installed ? 'ok' : 'missing', cb.installed ? (cb.version || 'version unknown') : 'not on PATH', ENABLE_CODEBURN_CMD));
44
45
  const hasSchedule = (deps.scheduleExists || scheduleExists)();
45
46
  const sched = (deps.schedulerName || schedulerName)();
46
47
  const last = lastSync(home);
@@ -48,7 +49,7 @@ export function machineChecks(deps = {}) {
48
49
  out.push(item('codeburn-sync', 'Scheduled codeburn sync push', last ? 'ok' : 'warn', last ? `${sched} entry installed; last sync log write ${last.at}` : `${sched} entry installed; no sync log yet in ~/.prism/logs`, 'Wait for the next run, or check ~/.prism/logs/otel-sync.log'));
49
50
  }
50
51
  else {
51
- out.push(item('codeburn-sync', 'Scheduled codeburn sync push', 'missing', `no ${sched} entry${last ? `; last sync log write ${last.at}` : ''}`, 'prism-cli bootstrapper setup-otel-sync'));
52
+ out.push(item('codeburn-sync', 'Scheduled codeburn sync push', 'missing', `no ${sched} entry${last ? `; last sync log write ${last.at}` : ''}`, ENABLE_CODEBURN_CMD));
52
53
  }
53
54
  const gl = checkTool('gitleaks', { pathEnv: deps.pathEnv, versionArgs: ['version'] });
54
55
  // warn, not missing: commits are still allowed, just not secret-scanned (decided).
@@ -126,4 +127,20 @@ export function codewatchSetup(repo, deps = {}) {
126
127
  : have.length ? `only ${have.join(', ')} installed` : 'not installed';
127
128
  return { ...base, status: 'missing', detail, fix: enableCodewatchFix(repo) };
128
129
  }
130
+ export function enableSecurityFix(repo) {
131
+ return `cd ${shellPath(repo)} && prism-cli enable security`;
132
+ }
133
+ /**
134
+ * Security Agent per repo, from the marker `enable security` writes
135
+ * (.prism/security.local.json, else a legacy block in .prism/config.json). Local
136
+ * evidence only: the dashboard makes no AWS calls, so this says the setup ran
137
+ * here, not that the AWS resources still exist (`enable security --status` checks those).
138
+ */
139
+ export function securitySetup(repo) {
140
+ const m = readSecurityMarker(repo);
141
+ if (!m)
142
+ return { status: 'missing', detail: 'not set up', fix: enableSecurityFix(repo) };
143
+ const when = m.setupAt ? `, set up ${m.setupAt.slice(0, 10)}` : '';
144
+ return { status: 'ok', detail: `code review ${m.codeReviewId} in account ${m.account} (${m.region})${when}`, fix: '' };
145
+ }
129
146
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/dashboard/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/dashboard/setup.ts"],"names":[],"mappings":"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"}
@@ -45,7 +45,7 @@ export async function collectUsage(opts = {}) {
45
45
  if (!exporter) {
46
46
  const bin = findOnPath('codeburn', opts.pathEnv);
47
47
  if (!bin)
48
- return emptyUsage('not-installed', 'codeburn is not installed. Install it with: npm install -g codeburn');
48
+ return emptyUsage('not-installed', 'codeburn is not installed. Set it up with: prism-cli enable codeburn');
49
49
  exporter = realCodeburnExport(bin);
50
50
  }
51
51
  const now = opts.now || new Date();
@@ -1 +1 @@
1
- {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../src/dashboard/usage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../src/dashboard/usage.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AA8FA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,GAAG,iBAOlD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAoGA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,GAAG,iBAOlD"}
package/dist/src/index.js CHANGED
@@ -5,6 +5,13 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
5
5
  const commandsDir = resolve(__dirname, 'commands');
6
6
  /** Files here register as top-level commands (`prism-cli <name>`), not as a group. */
7
7
  const TOP_LEVEL_DIR = '_top';
8
+ /** An option may carry a commander parser (e.g. to collect a repeatable flag). */
9
+ function addOption(cmd, opt) {
10
+ if (typeof opt.parser === 'function')
11
+ cmd.option(opt.flags, opt.description, opt.parser, opt.default);
12
+ else
13
+ cmd.option(opt.flags, opt.description, opt.default);
14
+ }
8
15
  function attach(program, category, command, def) {
9
16
  // Reuse an existing category command if it was already created
10
17
  let categoryCmd = program.commands.find((c) => c.name() === category);
@@ -13,7 +20,7 @@ function attach(program, category, command, def) {
13
20
  const sub = categoryCmd.command(command).description(def.description || command);
14
21
  if (def.options) {
15
22
  for (const opt of def.options)
16
- sub.option(opt.flags, opt.description, opt.default);
23
+ addOption(sub, opt);
17
24
  }
18
25
  sub.action((opts) => def.action(opts));
19
26
  }
@@ -23,7 +30,7 @@ function attachTop(program, name, def) {
23
30
  const cmd = program.command(name).description(def.description || name);
24
31
  if (def.options) {
25
32
  for (const opt of def.options)
26
- cmd.option(opt.flags, opt.description, opt.default);
33
+ addOption(cmd, opt);
27
34
  }
28
35
  cmd.action((opts) => def.action(opts));
29
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Resource-level diff between the deployed CloudFormation template and the
3
+ * one `cdk synth` produced, used for the summary shown before confirmation.
4
+ *
5
+ * `cdk diff` is still run (its full text goes to a file the summary points
6
+ * at), but its output is human-oriented and changes between CDK versions, so
7
+ * the summary is computed from the two templates directly. It answers what the
8
+ * confirmation needs: how many resources are added, changed or removed, which
9
+ * of those touch IAM, network or public endpoints, and whether any of them are
10
+ * the Security Agent resources at all.
11
+ */
12
+ export interface CfnTemplate {
13
+ Resources?: Record<string, CfnResource>;
14
+ }
15
+ interface CfnResource {
16
+ Type: string;
17
+ Properties?: unknown;
18
+ DependsOn?: unknown;
19
+ Condition?: unknown;
20
+ Metadata?: Record<string, unknown>;
21
+ }
22
+ export type ChangeKind = 'add' | 'modify' | 'remove';
23
+ export type Category = 'iam' | 'network' | 'endpoint' | 'other';
24
+ export interface ResourceChange {
25
+ logicalId: string;
26
+ type: string;
27
+ /** CDK construct path without the stack prefix, e.g. SecurityAgent/ScanBucket/Resource. */
28
+ path: string;
29
+ change: ChangeKind;
30
+ category: Category;
31
+ /** Part of the Security Agent feature (the SecurityAgent construct or the CI policy). */
32
+ securityAgent: boolean;
33
+ }
34
+ export interface TemplateDiff {
35
+ newStack: boolean;
36
+ changes: ResourceChange[];
37
+ counts: Record<ChangeKind, number>;
38
+ /** Any change to a Security Agent resource. */
39
+ touchesSecurityAgent: boolean;
40
+ /** The deployed template already has an agent space. */
41
+ deployedHasSecurityAgent: boolean;
42
+ }
43
+ /**
44
+ * Construct path prefixes (after the stack name) that make up the Security
45
+ * Agent feature. The auto-delete provider is a stack-level singleton CDK adds
46
+ * for the scan bucket's autoDeleteObjects; measured on a real synth, it is
47
+ * the only thing enableSecurityAgent adds outside the SecurityAgent construct.
48
+ */
49
+ export declare const SECURITY_AGENT_PATHS: string[];
50
+ export declare function categorize(type: string): Category;
51
+ /** `deployed` is null when the stack does not exist yet. */
52
+ /** `isFeature` decides which resources belong to Security Agent; default: SECURITY_AGENT_PATHS. */
53
+ export declare function diffTemplates(deployed: CfnTemplate | null, synthesized: CfnTemplate, stackName: string, isFeature?: (path: string) => boolean): TemplateDiff;
54
+ /** Lines for the summary. Every IAM, network and endpoint change is listed by name; other resources are counted by type. */
55
+ export declare function formatDiff(d: TemplateDiff, stackName: string): string[];
56
+ export {};
57
+ //# sourceMappingURL=cfn-diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cfn-diff.d.ts","sourceRoot":"","sources":["../../../src/security/cfn-diff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACzC;AACD,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACrD,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;AAEhE,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,2FAA2F;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,yFAAyF;IACzF,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACnC,+CAA+C;IAC/C,oBAAoB,EAAE,OAAO,CAAC;IAC9B,wDAAwD;IACxD,wBAAwB,EAAE,OAAO,CAAC;CACnC;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,UAAiG,CAAC;AAInI,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAKjD;AAYD,4DAA4D;AAC5D,mGAAmG;AACnG,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,WAAW,GAAG,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EACzE,SAAS,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAwE,GACpG,YAAY,CA2Bd;AAUD,4HAA4H;AAC5H,wBAAgB,UAAU,CAAC,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBvE"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Resource-level diff between the deployed CloudFormation template and the
3
+ * one `cdk synth` produced, used for the summary shown before confirmation.
4
+ *
5
+ * `cdk diff` is still run (its full text goes to a file the summary points
6
+ * at), but its output is human-oriented and changes between CDK versions, so
7
+ * the summary is computed from the two templates directly. It answers what the
8
+ * confirmation needs: how many resources are added, changed or removed, which
9
+ * of those touch IAM, network or public endpoints, and whether any of them are
10
+ * the Security Agent resources at all.
11
+ */
12
+ /**
13
+ * Construct path prefixes (after the stack name) that make up the Security
14
+ * Agent feature. The auto-delete provider is a stack-level singleton CDK adds
15
+ * for the scan bucket's autoDeleteObjects; measured on a real synth, it is
16
+ * the only thing enableSecurityAgent adds outside the SecurityAgent construct.
17
+ */
18
+ export const SECURITY_AGENT_PATHS = ['SecurityAgent/', 'ContinuumCiPolicy/', 'Custom::S3AutoDeleteObjectsCustomResourceProvider/'];
19
+ const IGNORED_TYPES = new Set(['AWS::CDK::Metadata']);
20
+ export function categorize(type) {
21
+ if (/^AWS::IAM::/.test(type) || /^AWS::(S3::BucketPolicy|KMS::Key|KMS::Grant|Lambda::Permission|SQS::QueuePolicy|SNS::TopicPolicy|Events::EventBusPolicy)$/.test(type))
22
+ return 'iam';
23
+ if (/^AWS::EC2::(SecurityGroup|SecurityGroupIngress|SecurityGroupEgress|VPC|Subnet|InternetGateway|NatGateway|EIP|Route|RouteTable|VPCEndpoint|NetworkAcl)/.test(type))
24
+ return 'network';
25
+ if (/^AWS::(ApiGateway::|ApiGatewayV2::|ElasticLoadBalancing|ElasticLoadBalancingV2::|CloudFront::|Lambda::Url$|Cognito::UserPoolDomain$|AppSync::)/.test(type))
26
+ return 'endpoint';
27
+ return 'other';
28
+ }
29
+ function cdkPath(r, stackName) {
30
+ const p = r?.Metadata?.['aws:cdk:path'];
31
+ if (typeof p !== 'string')
32
+ return '';
33
+ return p.startsWith(stackName + '/') ? p.slice(stackName.length + 1) : p;
34
+ }
35
+ function comparable(r) {
36
+ return JSON.stringify({ t: r.Type, p: r.Properties ?? null, d: r.DependsOn ?? null, c: r.Condition ?? null });
37
+ }
38
+ /** `deployed` is null when the stack does not exist yet. */
39
+ /** `isFeature` decides which resources belong to Security Agent; default: SECURITY_AGENT_PATHS. */
40
+ export function diffTemplates(deployed, synthesized, stackName, isFeature = (path) => SECURITY_AGENT_PATHS.some((p) => path.startsWith(p))) {
41
+ const before = deployed?.Resources ?? {};
42
+ const after = synthesized.Resources ?? {};
43
+ const changes = [];
44
+ const add = (logicalId, r, change) => {
45
+ if (IGNORED_TYPES.has(r.Type))
46
+ return;
47
+ const path = cdkPath(r, stackName) || logicalId;
48
+ changes.push({
49
+ logicalId, type: r.Type, path, change, category: categorize(r.Type),
50
+ securityAgent: isFeature(path),
51
+ });
52
+ };
53
+ for (const [id, r] of Object.entries(after)) {
54
+ if (!(id in before))
55
+ add(id, r, 'add');
56
+ else if (comparable(before[id]) !== comparable(r))
57
+ add(id, r, 'modify');
58
+ }
59
+ for (const [id, r] of Object.entries(before))
60
+ if (!(id in after))
61
+ add(id, r, 'remove');
62
+ changes.sort((a, b) => a.path.localeCompare(b.path));
63
+ const counts = { add: 0, modify: 0, remove: 0 };
64
+ for (const c of changes)
65
+ counts[c.change]++;
66
+ return {
67
+ newStack: deployed === null,
68
+ changes,
69
+ counts,
70
+ touchesSecurityAgent: changes.some((c) => c.securityAgent),
71
+ deployedHasSecurityAgent: Object.values(before).some((r) => r.Type === 'AWS::SecurityAgent::AgentSpace'),
72
+ };
73
+ }
74
+ const SIGN = { add: '+', modify: '~', remove: '-' };
75
+ const HEADINGS = {
76
+ iam: 'IAM and resource policies',
77
+ network: 'Security groups and network',
78
+ endpoint: 'Public endpoints (API Gateway, load balancers, CloudFront, Cognito domains, function URLs)',
79
+ other: 'Other resources',
80
+ };
81
+ /** Lines for the summary. Every IAM, network and endpoint change is listed by name; other resources are counted by type. */
82
+ export function formatDiff(d, stackName) {
83
+ const L = [];
84
+ const { add, modify, remove } = d.counts;
85
+ L.push(`Stack ${stackName}${d.newStack ? ' (new stack)' : ''}: ${add} to add, ${modify} to change, ${remove} to remove`);
86
+ if (!d.changes.length) {
87
+ L.push(' No changes.');
88
+ return L;
89
+ }
90
+ for (const cat of ['iam', 'network', 'endpoint']) {
91
+ const items = d.changes.filter((c) => c.category === cat);
92
+ L.push(` ${HEADINGS[cat]}:${items.length ? '' : ' none'}`);
93
+ for (const c of items)
94
+ L.push(` ${SIGN[c.change]} ${c.type} ${c.path}`);
95
+ }
96
+ const other = d.changes.filter((c) => c.category === 'other');
97
+ if (other.length) {
98
+ L.push(` ${HEADINGS.other}:`);
99
+ const groups = new Map();
100
+ for (const c of other)
101
+ groups.set(`${SIGN[c.change]} ${c.type}`, (groups.get(`${SIGN[c.change]} ${c.type}`) ?? 0) + 1);
102
+ for (const [k, n] of [...groups].sort())
103
+ L.push(` ${k}${n > 1 ? ` x${n}` : ''}`);
104
+ }
105
+ if (remove)
106
+ L.push(` WARNING: ${remove} resource(s) would be REMOVED. If your stack was deployed with extra context (for example -c skipVpc=true), pass the same values with --context.`);
107
+ const outside = d.changes.filter((c) => !c.securityAgent).length;
108
+ if (!d.newStack && outside)
109
+ L.push(` ${outside} of these changes are outside the Security Agent resources (the local infra code differs from what is deployed).`);
110
+ return L;
111
+ }
112
+ //# sourceMappingURL=cfn-diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cfn-diff.js","sourceRoot":"","sources":["../../../src/security/cfn-diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Turns AWS CLI failures into messages a developer can act on.
3
+ *
4
+ * Three cases get their own wording because the raw CLI output does not say
5
+ * what to do: no usable credentials, an AWS CLI too old to know the
6
+ * `securityagent` commands, and an AccessDenied (which API, and which IAM
7
+ * action it needed). Everything printed goes through redact() first, so a
8
+ * credential that ends up in an error string is never echoed.
9
+ */
10
+ /** First AWS CLI release with the Security Agent code review commands (matches the CI eval gate's check). */
11
+ export declare const MIN_AWS_CLI: readonly [2, 36];
12
+ export declare const MIN_AWS_CLI_TEXT: string;
13
+ export declare const NO_CREDENTIALS_MESSAGE = "Failed to get account ID. Check your AWS credentials.";
14
+ /** Removes anything shaped like an AWS credential from text before it is printed. */
15
+ export declare function redact(text: string): string;
16
+ /** The IAM action an `aws <service> <command>` call needs, derived from the argv. */
17
+ export declare function permissionFor(args: string[]): string;
18
+ export type AwsErrorKind = 'no-credentials' | 'access-denied' | 'old-cli' | 'other';
19
+ export interface ExplainedError {
20
+ kind: AwsErrorKind;
21
+ /** One or more lines, already redacted. */
22
+ message: string;
23
+ }
24
+ /**
25
+ * Explains a failed `aws` call. `args` is the argv that failed (without
26
+ * --region/--profile), `stderr` what the CLI printed, `cliVersion` the
27
+ * `aws --version` output when known.
28
+ */
29
+ export declare function explainAwsError(args: string[], stderr: string, cliVersion?: string | null): ExplainedError;
30
+ /**
31
+ * Lines for an error that is not one of ours (not an Abort): a failed npm or
32
+ * cdk run, a JSON parse, a git or file-system error. One redacted `Error:`
33
+ * line, at most one hint, and the redacted stack only with PRISM_DEBUG=1.
34
+ *
35
+ * Only `message`, `code`, `syscall` and `stack` are read. A child-process
36
+ * error also carries `cmd`, `spawnargs`, `envPairs`, `stdout` and `stderr`,
37
+ * which can hold full command lines and the environment; those are never read.
38
+ */
39
+ export declare function describeUnexpectedError(e: unknown, env?: NodeJS.ProcessEnv): string[];
40
+ /** Parses `aws --version` ("aws-cli/2.36.19 Python/...") and checks it against MIN_AWS_CLI. */
41
+ export declare function cliVersionOk(versionText: string | null): {
42
+ ok: boolean;
43
+ version: string | null;
44
+ };
45
+ //# sourceMappingURL=errors.d.ts.map