autoremediator 0.21.1 → 0.21.2

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 (237) hide show
  1. package/dist/api/change-request/index.d.ts.map +1 -1
  2. package/dist/api/change-request/index.js +404 -0
  3. package/dist/api/change-request/index.js.map +1 -0
  4. package/dist/api/context.js +41 -0
  5. package/dist/api/context.js.map +1 -0
  6. package/dist/api/contracts.js +2 -0
  7. package/dist/api/contracts.js.map +1 -0
  8. package/dist/api/delta-scan/index.js +5 -0
  9. package/dist/api/delta-scan/index.js.map +1 -0
  10. package/dist/api/evaluate/index.js +5 -0
  11. package/dist/api/evaluate/index.js.map +1 -0
  12. package/dist/api/index.js +16 -0
  13. package/dist/api/index.js.map +1 -0
  14. package/dist/api/jobs/index.js +54 -0
  15. package/dist/api/jobs/index.js.map +1 -0
  16. package/dist/api/options-schema.js +367 -0
  17. package/dist/api/options-schema.js.map +1 -0
  18. package/dist/api/patches/helpers.js +71 -0
  19. package/dist/api/patches/helpers.js.map +1 -0
  20. package/dist/api/patches/index.js +4 -0
  21. package/dist/api/patches/index.js.map +1 -0
  22. package/dist/api/patches/inspection.js +66 -0
  23. package/dist/api/patches/inspection.js.map +1 -0
  24. package/dist/api/patches/reconcile.js +245 -0
  25. package/dist/api/patches/reconcile.js.map +1 -0
  26. package/dist/api/patches/validation.js +105 -0
  27. package/dist/api/patches/validation.js.map +1 -0
  28. package/dist/api/portfolio/index.js +127 -0
  29. package/dist/api/portfolio/index.js.map +1 -0
  30. package/dist/api/portfolio/risk-score.js +32 -0
  31. package/dist/api/portfolio/risk-score.js.map +1 -0
  32. package/dist/api/reachability/index.js +9 -0
  33. package/dist/api/reachability/index.js.map +1 -0
  34. package/dist/api/remediate/index.js +97 -0
  35. package/dist/api/remediate/index.js.map +1 -0
  36. package/dist/api/remediate/validators.js +11 -0
  37. package/dist/api/remediate/validators.js.map +1 -0
  38. package/dist/api/remediate-from-scan/index.js +132 -0
  39. package/dist/api/remediate-from-scan/index.js.map +1 -0
  40. package/dist/api/remediate-from-scan/report-metrics.js +21 -0
  41. package/dist/api/remediate-from-scan/report-metrics.js.map +1 -0
  42. package/dist/api/remediate.evidence.d.ts.map +1 -1
  43. package/dist/api/remediate.evidence.js +109 -0
  44. package/dist/api/remediate.evidence.js.map +1 -0
  45. package/dist/api/reporting.js +351 -0
  46. package/dist/api/reporting.js.map +1 -0
  47. package/dist/api/sarif.js +67 -0
  48. package/dist/api/sarif.js.map +1 -0
  49. package/dist/api/scan-execution.js +48 -0
  50. package/dist/api/scan-execution.js.map +1 -0
  51. package/dist/api/scan-outcome.js +41 -0
  52. package/dist/api/scan-outcome.js.map +1 -0
  53. package/dist/api/update-outdated/index.js +255 -0
  54. package/dist/api/update-outdated/index.js.map +1 -0
  55. package/dist/api/vex/index.js +138 -0
  56. package/dist/api/vex/index.js.map +1 -0
  57. package/dist/cli/index.js +18 -0
  58. package/dist/cli/index.js.map +1 -0
  59. package/dist/cli/output.js +12 -0
  60. package/dist/cli/output.js.map +1 -0
  61. package/dist/cli/program.js +294 -0
  62. package/dist/cli/program.js.map +1 -0
  63. package/dist/cli/runners.js +622 -0
  64. package/dist/cli/runners.js.map +1 -0
  65. package/dist/cli/triage.js +183 -0
  66. package/dist/cli/triage.js.map +1 -0
  67. package/dist/cli/types.js +4 -0
  68. package/dist/cli/types.js.map +1 -0
  69. package/dist/cli/validators.js +33 -0
  70. package/dist/cli/validators.js.map +1 -0
  71. package/dist/intelligence/sources/cisa-kev.js +38 -0
  72. package/dist/intelligence/sources/cisa-kev.js.map +1 -0
  73. package/dist/intelligence/sources/epss.js +33 -0
  74. package/dist/intelligence/sources/epss.js.map +1 -0
  75. package/dist/intelligence/sources/github-advisory.js +109 -0
  76. package/dist/intelligence/sources/github-advisory.js.map +1 -0
  77. package/dist/intelligence/sources/nvd.js +64 -0
  78. package/dist/intelligence/sources/nvd.js.map +1 -0
  79. package/dist/intelligence/sources/osv.js +184 -0
  80. package/dist/intelligence/sources/osv.js.map +1 -0
  81. package/dist/intelligence/sources/registry.js +303 -0
  82. package/dist/intelligence/sources/registry.js.map +1 -0
  83. package/dist/intelligence/sources/snapshot.js +109 -0
  84. package/dist/intelligence/sources/snapshot.js.map +1 -0
  85. package/dist/mcp/server.js +427 -451
  86. package/dist/mcp/server.js.map +1 -0
  87. package/dist/openapi/handlers/index.js +53 -0
  88. package/dist/openapi/handlers/index.js.map +1 -0
  89. package/dist/openapi/handlers/routes.js +122 -0
  90. package/dist/openapi/handlers/routes.js.map +1 -0
  91. package/dist/openapi/handlers/validators.js +45 -0
  92. package/dist/openapi/handlers/validators.js.map +1 -0
  93. package/dist/openapi/http-utils.js +99 -0
  94. package/dist/openapi/http-utils.js.map +1 -0
  95. package/dist/openapi/path-guard.js +79 -0
  96. package/dist/openapi/path-guard.js.map +1 -0
  97. package/dist/openapi/rbac.js +150 -0
  98. package/dist/openapi/rbac.js.map +1 -0
  99. package/dist/openapi/server.d.ts.map +1 -1
  100. package/dist/openapi/server.js +51 -1240
  101. package/dist/openapi/server.js.map +1 -0
  102. package/dist/openapi/spec/index.js +24 -0
  103. package/dist/openapi/spec/index.js.map +1 -0
  104. package/dist/openapi/spec/paths.js +623 -0
  105. package/dist/openapi/spec/paths.js.map +1 -0
  106. package/dist/openapi/spec/schemas.js +32 -0
  107. package/dist/openapi/spec/schemas.js.map +1 -0
  108. package/dist/platform/config.js +18 -0
  109. package/dist/platform/config.js.map +1 -0
  110. package/dist/platform/entrypoint.js +19 -0
  111. package/dist/platform/entrypoint.js.map +1 -0
  112. package/dist/platform/escalation.js +18 -0
  113. package/dist/platform/escalation.js.map +1 -0
  114. package/dist/platform/evidence.js +40 -0
  115. package/dist/platform/evidence.js.map +1 -0
  116. package/dist/platform/http-client.js +107 -0
  117. package/dist/platform/http-client.js.map +1 -0
  118. package/dist/platform/idempotency.js +49 -0
  119. package/dist/platform/idempotency.js.map +1 -0
  120. package/dist/platform/jobs.js +154 -0
  121. package/dist/platform/jobs.js.map +1 -0
  122. package/dist/platform/package-manager/index.js +213 -0
  123. package/dist/platform/package-manager/index.js.map +1 -0
  124. package/dist/platform/package-manager/list-parser.js +141 -0
  125. package/dist/platform/package-manager/list-parser.js.map +1 -0
  126. package/dist/platform/patch-generator.js +2 -0
  127. package/dist/platform/patch-generator.js.map +1 -0
  128. package/dist/platform/policy.js +361 -0
  129. package/dist/platform/policy.js.map +1 -0
  130. package/dist/platform/repo-lock.js +42 -0
  131. package/dist/platform/repo-lock.js.map +1 -0
  132. package/dist/platform/rollback.js +397 -0
  133. package/dist/platform/rollback.js.map +1 -0
  134. package/dist/platform/safe-exec-command.js +13 -0
  135. package/dist/platform/safe-exec-command.js.map +1 -0
  136. package/dist/platform/safe-exec.js +66 -0
  137. package/dist/platform/safe-exec.js.map +1 -0
  138. package/dist/platform/supply-chain.js +84 -0
  139. package/dist/platform/supply-chain.js.map +1 -0
  140. package/dist/platform/timeouts.js +3 -0
  141. package/dist/platform/timeouts.js.map +1 -0
  142. package/dist/platform/trim.d.ts +7 -0
  143. package/dist/platform/trim.d.ts.map +1 -0
  144. package/dist/platform/trim.js +19 -0
  145. package/dist/platform/trim.js.map +1 -0
  146. package/dist/platform/types.js +2 -0
  147. package/dist/platform/types.js.map +1 -0
  148. package/dist/platform/workspace.d.ts.map +1 -1
  149. package/dist/platform/workspace.js +181 -0
  150. package/dist/platform/workspace.js.map +1 -0
  151. package/dist/remediation/evaluate-package.js +142 -0
  152. package/dist/remediation/evaluate-package.js.map +1 -0
  153. package/dist/remediation/local/disposition.js +99 -0
  154. package/dist/remediation/local/disposition.js.map +1 -0
  155. package/dist/remediation/local/fallback.js +129 -0
  156. package/dist/remediation/local/fallback.js.map +1 -0
  157. package/dist/remediation/local/index.js +2 -0
  158. package/dist/remediation/local/index.js.map +1 -0
  159. package/dist/remediation/local/options.js +54 -0
  160. package/dist/remediation/local/options.js.map +1 -0
  161. package/dist/remediation/local/primary-strategy.js +170 -0
  162. package/dist/remediation/local/primary-strategy.js.map +1 -0
  163. package/dist/remediation/local/run.js +234 -0
  164. package/dist/remediation/local/run.js.map +1 -0
  165. package/dist/remediation/local/sbom.js +36 -0
  166. package/dist/remediation/local/sbom.js.map +1 -0
  167. package/dist/remediation/local/secops-preflight.js +37 -0
  168. package/dist/remediation/local/secops-preflight.js.map +1 -0
  169. package/dist/remediation/local/summary.js +7 -0
  170. package/dist/remediation/local/summary.js.map +1 -0
  171. package/dist/remediation/local/vulnerability-match.js +31 -0
  172. package/dist/remediation/local/vulnerability-match.js.map +1 -0
  173. package/dist/remediation/patch/diff.js +204 -0
  174. package/dist/remediation/patch/diff.js.map +1 -0
  175. package/dist/remediation/patch/generate.js +72 -0
  176. package/dist/remediation/patch/generate.js.map +1 -0
  177. package/dist/remediation/patch/llm-generator.js +41 -0
  178. package/dist/remediation/patch/llm-generator.js.map +1 -0
  179. package/dist/remediation/patch/model.js +37 -0
  180. package/dist/remediation/patch/model.js.map +1 -0
  181. package/dist/remediation/patch/prompt.js +22 -0
  182. package/dist/remediation/patch/prompt.js.map +1 -0
  183. package/dist/remediation/patch/resolve.js +15 -0
  184. package/dist/remediation/patch/resolve.js.map +1 -0
  185. package/dist/remediation/patch/syntax.js +50 -0
  186. package/dist/remediation/patch/syntax.js.map +1 -0
  187. package/dist/remediation/proof-of-fix/runner.js +359 -0
  188. package/dist/remediation/proof-of-fix/runner.js.map +1 -0
  189. package/dist/remediation/refactor/call-site-finder.js +286 -0
  190. package/dist/remediation/refactor/call-site-finder.js.map +1 -0
  191. package/dist/remediation/refactor/codemods.js +540 -0
  192. package/dist/remediation/refactor/codemods.js.map +1 -0
  193. package/dist/remediation/strategies/patch-utils.js +195 -0
  194. package/dist/remediation/strategies/patch-utils.js.map +1 -0
  195. package/dist/remediation/tools/apply-package-override/helpers.js +134 -0
  196. package/dist/remediation/tools/apply-package-override/helpers.js.map +1 -0
  197. package/dist/remediation/tools/apply-package-override/index.js +517 -0
  198. package/dist/remediation/tools/apply-package-override/index.js.map +1 -0
  199. package/dist/remediation/tools/apply-patch-file/helpers.js +246 -0
  200. package/dist/remediation/tools/apply-patch-file/helpers.js.map +1 -0
  201. package/dist/remediation/tools/apply-patch-file/index.js +562 -0
  202. package/dist/remediation/tools/apply-patch-file/index.js.map +1 -0
  203. package/dist/remediation/tools/apply-version-bump.js +425 -0
  204. package/dist/remediation/tools/apply-version-bump.js.map +1 -0
  205. package/dist/remediation/tools/check-exploit-signal.js +81 -0
  206. package/dist/remediation/tools/check-exploit-signal.js.map +1 -0
  207. package/dist/remediation/tools/check-inventory.js +132 -0
  208. package/dist/remediation/tools/check-inventory.js.map +1 -0
  209. package/dist/remediation/tools/check-reachability.js +464 -0
  210. package/dist/remediation/tools/check-reachability.js.map +1 -0
  211. package/dist/remediation/tools/fetch-package-source.js +134 -0
  212. package/dist/remediation/tools/fetch-package-source.js.map +1 -0
  213. package/dist/remediation/tools/tool-compat.js +8 -0
  214. package/dist/remediation/tools/tool-compat.js.map +1 -0
  215. package/dist/scanner/adapters/npm-audit.js +44 -0
  216. package/dist/scanner/adapters/npm-audit.js.map +1 -0
  217. package/dist/scanner/adapters/sarif.js +44 -0
  218. package/dist/scanner/adapters/sarif.js.map +1 -0
  219. package/dist/scanner/adapters/yarn-audit.js +58 -0
  220. package/dist/scanner/adapters/yarn-audit.js.map +1 -0
  221. package/dist/scanner/delta-scan.js +291 -0
  222. package/dist/scanner/delta-scan.js.map +1 -0
  223. package/dist/scanner/index.js +3 -0
  224. package/dist/scanner/index.js.map +1 -0
  225. package/dist/scanner/lockfile-diff.js +181 -0
  226. package/dist/scanner/lockfile-diff.js.map +1 -0
  227. package/dist/scanner/parse-input.js +98 -0
  228. package/dist/scanner/parse-input.js.map +1 -0
  229. package/dist/scanner/unique-cve-ids.js +4 -0
  230. package/dist/scanner/unique-cve-ids.js.map +1 -0
  231. package/dist/version.js +11 -0
  232. package/dist/version.js.map +1 -0
  233. package/package.json +7 -8
  234. package/dist/chunk-HJCLZB3P.js +0 -10181
  235. package/dist/cli.js +0 -1190
  236. package/dist/index.js +0 -10020
  237. package/dist/index.js.map +0 -1
@@ -0,0 +1,367 @@
1
+ export const PACKAGE_MANAGER_VALUES = ["npm", "pnpm", "yarn", "bun", "deno"];
2
+ export const PROVENANCE_SOURCE_VALUES = ["cli", "sdk", "mcp", "openapi", "unknown"];
3
+ export const OPTION_DESCRIPTIONS = {
4
+ cveId: "CVE ID, e.g. CVE-2021-23337",
5
+ inputPath: "Absolute path to the scanner output file",
6
+ cwd: "Absolute path to the project root (default: process.cwd())",
7
+ packageManager: "Package manager override (auto-detected by default)",
8
+ dryRun: "If true, plan changes but write nothing",
9
+ preview: "If true, enforce non-mutating preview mode",
10
+ simulationMode: "If true, attach deterministic simulation and rebuttal metadata for dry-run or preview execution",
11
+ runTests: "Run package-manager test command after applying fix",
12
+ model: 'Language model for the patch fallback as "<provider>:<model-id>", e.g. "anthropic:claude-sonnet-5-5" (default: AUTOREMEDIATOR_MODEL)',
13
+ patchConfidenceThresholdLow: "Patch acceptance confidence threshold for low-risk patches (0..1)",
14
+ patchConfidenceThresholdMedium: "Patch acceptance confidence threshold for medium-risk patches (0..1)",
15
+ patchConfidenceThresholdHigh: "Patch acceptance confidence threshold for high-risk patches (0..1)",
16
+ patchesDir: "Directory to write .patch files (default: ./patches)",
17
+ policy: "Optional path to .github/autoremediator.yml policy file",
18
+ requestId: "Request correlation ID",
19
+ sessionId: "Session correlation ID",
20
+ parentRunId: "Parent run correlation ID",
21
+ idempotencyKey: "Idempotency key for replay-safe execution",
22
+ resume: "Return cached result for matching idempotency key when available",
23
+ actor: "Actor identity for evidence provenance",
24
+ source: "Source system for provenance",
25
+ format: "Scanner format (default: auto)",
26
+ audit: "Run package-manager-native audit command instead of reading a scan file",
27
+ evidence: "Write evidence JSON to .autoremediator/evidence/ (default: true)",
28
+ directDependenciesOnly: "Restrict remediation to direct dependencies only",
29
+ preferVersionBump: "Reject override and patch remediation when version-bump-only policy is required",
30
+ installMode: "Install behavior profile: deterministic|prefer-offline|standard",
31
+ installPreferOffline: "Override prefer-offline flag behavior for install commands",
32
+ enforceFrozenLockfile: "Override frozen lockfile behavior for install commands",
33
+ workspace: "Workspace/package selector for scoped remediation in monorepos",
34
+ createChangeRequest: "Enable creation of native pull request / merge request after remediation",
35
+ changeRequestProvider: "Change request provider (github|gitlab)",
36
+ changeRequestGrouping: "Grouping strategy for change requests (all|per-cve|per-package)",
37
+ changeRequestRepository: "Repository slug override for change request creation",
38
+ changeRequestBaseBranch: "Base branch used for change request targeting",
39
+ changeRequestBranchPrefix: "Branch prefix for generated change request branches",
40
+ changeRequestTitlePrefix: "Title prefix for generated change requests",
41
+ includeTransitive: "Include transitive dependencies in the outdated check. Default: false.",
42
+ updateOutdated: "Run in update-outdated mode: bump all outdated npm packages without requiring a CVE.",
43
+ kevMandatory: "If true, CVEs with active CISA KEV status bypass severity filtering and are treated as mandatory",
44
+ epssThreshold: "EPSS probability threshold (0..1) above which a CVE is treated as mandatory regardless of severity",
45
+ suppressionsFile: "Path to a YAML file containing additional VEX suppression entries to merge with policy-inline suppressions",
46
+ slaCheck: "Compare CVE publication dates against configured SLA windows and include breach records in the report output",
47
+ skipUnreachable: "Skip remediation for CVEs where the vulnerable package cannot be reached from any project entry point (requires static import analysis)",
48
+ dispositionPolicy: "Autonomous disposition policy controlling when fixes are auto-applied, held, or escalated",
49
+ dispositionPolicyMinConfidenceForAutoApply: "Minimum patch confidence (0–1) required for auto-apply disposition",
50
+ dispositionPolicyHoldForTransitive: "Hold transitive dependency fixes for human review instead of auto-applying",
51
+ dispositionPolicyEscalateOnSlaBreachSeverities: "CVE severities that trigger escalate disposition on SLA breach",
52
+ dispositionPolicyEscalateOnKev: "Escalate disposition for CVEs with active CISA KEV status",
53
+ containmentMode: "Roll back applied results whose disposition is hold-for-approval (low confidence, held transitive) so they await approval; urgent escalate fixes (KEV, SLA) are kept",
54
+ campaignMode: "Enable portfolio campaign mode to risk-rank targets before execution",
55
+ escalationGraph: "Optional mapping from unresolved reasons to intended escalation actions",
56
+ offlineIntelligence: "Skip all network calls to intelligence sources. Only local inventory and npm-registry version resolution proceed.",
57
+ intelligenceSnapshotPath: "Path to a local JSON snapshot of pre-fetched CVE intelligence (keyed by CVE ID) used when offline mode is active.",
58
+ proofOfFix: "If true, enforce dual-stage exploit reproduction proof-of-fix verification (assert failure pre-patch, assert pass post-patch)",
59
+ requireProofOfFix: "If true, reject patches and roll back if proof-of-fix verification fails",
60
+ breakingChangeRefactor: "Experimental: when a major upgrade breaks type checking, rewrite consumer call sites using built-in codemods (currently rimraf and uuid only); reverted if checks still fail",
61
+ };
62
+ export function createConstraintSchemaProperties() {
63
+ return {
64
+ directDependenciesOnly: {
65
+ type: "boolean",
66
+ description: OPTION_DESCRIPTIONS.directDependenciesOnly,
67
+ },
68
+ preferVersionBump: { type: "boolean", description: OPTION_DESCRIPTIONS.preferVersionBump },
69
+ installMode: {
70
+ type: "string",
71
+ enum: ["deterministic", "prefer-offline", "standard"],
72
+ description: OPTION_DESCRIPTIONS.installMode,
73
+ },
74
+ installPreferOffline: {
75
+ type: "boolean",
76
+ description: OPTION_DESCRIPTIONS.installPreferOffline,
77
+ },
78
+ enforceFrozenLockfile: {
79
+ type: "boolean",
80
+ description: OPTION_DESCRIPTIONS.enforceFrozenLockfile,
81
+ },
82
+ workspace: { type: "string", description: OPTION_DESCRIPTIONS.workspace },
83
+ requireProofOfFix: { type: "boolean", description: OPTION_DESCRIPTIONS.requireProofOfFix },
84
+ enableBreakingChangeRefactor: {
85
+ type: "boolean",
86
+ description: OPTION_DESCRIPTIONS.breakingChangeRefactor,
87
+ },
88
+ };
89
+ }
90
+ export function createRemediateOptionSchemaProperties(options) {
91
+ const includeDryRun = options?.includeDryRun ?? true;
92
+ const includePreview = options?.includePreview ?? true;
93
+ const includeSimulationMode = options?.includeSimulationMode ?? true;
94
+ const includeEvidence = options?.includeEvidence ?? true;
95
+ return {
96
+ cwd: { type: "string", description: OPTION_DESCRIPTIONS.cwd },
97
+ packageManager: {
98
+ type: "string",
99
+ enum: [...PACKAGE_MANAGER_VALUES],
100
+ description: OPTION_DESCRIPTIONS.packageManager,
101
+ },
102
+ ...(includeDryRun
103
+ ? { dryRun: { type: "boolean", description: OPTION_DESCRIPTIONS.dryRun } }
104
+ : {}),
105
+ ...(includePreview
106
+ ? { preview: { type: "boolean", description: OPTION_DESCRIPTIONS.preview } }
107
+ : {}),
108
+ ...(includeSimulationMode
109
+ ? { simulationMode: { type: "boolean", description: OPTION_DESCRIPTIONS.simulationMode } }
110
+ : {}),
111
+ runTests: { type: "boolean", description: OPTION_DESCRIPTIONS.runTests },
112
+ model: { type: "string", description: OPTION_DESCRIPTIONS.model },
113
+ patchConfidenceThresholds: {
114
+ type: "object",
115
+ properties: {
116
+ low: {
117
+ type: "number",
118
+ minimum: 0,
119
+ maximum: 1,
120
+ description: OPTION_DESCRIPTIONS.patchConfidenceThresholdLow,
121
+ },
122
+ medium: {
123
+ type: "number",
124
+ minimum: 0,
125
+ maximum: 1,
126
+ description: OPTION_DESCRIPTIONS.patchConfidenceThresholdMedium,
127
+ },
128
+ high: {
129
+ type: "number",
130
+ minimum: 0,
131
+ maximum: 1,
132
+ description: OPTION_DESCRIPTIONS.patchConfidenceThresholdHigh,
133
+ },
134
+ },
135
+ },
136
+ patchesDir: { type: "string", description: OPTION_DESCRIPTIONS.patchesDir },
137
+ policy: { type: "string", description: OPTION_DESCRIPTIONS.policy },
138
+ ...(includeEvidence
139
+ ? { evidence: { type: "boolean", description: OPTION_DESCRIPTIONS.evidence } }
140
+ : {}),
141
+ requestId: { type: "string", description: OPTION_DESCRIPTIONS.requestId },
142
+ sessionId: { type: "string", description: OPTION_DESCRIPTIONS.sessionId },
143
+ parentRunId: { type: "string", description: OPTION_DESCRIPTIONS.parentRunId },
144
+ idempotencyKey: { type: "string", description: OPTION_DESCRIPTIONS.idempotencyKey },
145
+ resume: { type: "boolean", description: OPTION_DESCRIPTIONS.resume },
146
+ actor: { type: "string", description: OPTION_DESCRIPTIONS.actor },
147
+ source: {
148
+ type: "string",
149
+ enum: [...PROVENANCE_SOURCE_VALUES],
150
+ description: OPTION_DESCRIPTIONS.source,
151
+ },
152
+ constraints: {
153
+ type: "object",
154
+ properties: createConstraintSchemaProperties(),
155
+ },
156
+ changeRequest: {
157
+ type: "object",
158
+ properties: {
159
+ enabled: { type: "boolean", description: OPTION_DESCRIPTIONS.createChangeRequest },
160
+ provider: {
161
+ type: "string",
162
+ enum: ["github", "gitlab"],
163
+ description: OPTION_DESCRIPTIONS.changeRequestProvider,
164
+ },
165
+ grouping: {
166
+ type: "string",
167
+ enum: ["all", "per-cve", "per-package"],
168
+ description: OPTION_DESCRIPTIONS.changeRequestGrouping,
169
+ },
170
+ repository: { type: "string", description: OPTION_DESCRIPTIONS.changeRequestRepository },
171
+ baseBranch: { type: "string", description: OPTION_DESCRIPTIONS.changeRequestBaseBranch },
172
+ branchPrefix: {
173
+ type: "string",
174
+ description: OPTION_DESCRIPTIONS.changeRequestBranchPrefix,
175
+ },
176
+ titlePrefix: { type: "string", description: OPTION_DESCRIPTIONS.changeRequestTitlePrefix },
177
+ },
178
+ },
179
+ kevMandatory: { type: "boolean", description: OPTION_DESCRIPTIONS.kevMandatory },
180
+ epssThreshold: {
181
+ type: "number",
182
+ minimum: 0,
183
+ maximum: 1,
184
+ description: OPTION_DESCRIPTIONS.epssThreshold,
185
+ },
186
+ suppressionsFile: { type: "string", description: OPTION_DESCRIPTIONS.suppressionsFile },
187
+ slaCheck: { type: "boolean", description: OPTION_DESCRIPTIONS.slaCheck },
188
+ skipUnreachable: { type: "boolean", description: OPTION_DESCRIPTIONS.skipUnreachable },
189
+ dispositionPolicy: {
190
+ type: "object",
191
+ description: OPTION_DESCRIPTIONS.dispositionPolicy,
192
+ properties: {
193
+ minConfidenceForAutoApply: {
194
+ type: "number",
195
+ minimum: 0,
196
+ maximum: 1,
197
+ description: OPTION_DESCRIPTIONS.dispositionPolicyMinConfidenceForAutoApply,
198
+ },
199
+ holdForTransitive: {
200
+ type: "boolean",
201
+ description: OPTION_DESCRIPTIONS.dispositionPolicyHoldForTransitive,
202
+ },
203
+ escalateOnSlaBreachSeverities: {
204
+ type: "array",
205
+ items: { type: "string", enum: ["critical", "high", "medium", "low"] },
206
+ description: OPTION_DESCRIPTIONS.dispositionPolicyEscalateOnSlaBreachSeverities,
207
+ },
208
+ escalateOnKev: {
209
+ type: "boolean",
210
+ description: OPTION_DESCRIPTIONS.dispositionPolicyEscalateOnKev,
211
+ },
212
+ },
213
+ },
214
+ containmentMode: { type: "boolean", description: OPTION_DESCRIPTIONS.containmentMode },
215
+ campaignMode: { type: "boolean", description: OPTION_DESCRIPTIONS.campaignMode },
216
+ escalationGraph: {
217
+ type: "object",
218
+ description: OPTION_DESCRIPTIONS.escalationGraph,
219
+ properties: {
220
+ "constraint-blocked": {
221
+ type: "string",
222
+ enum: ["open-issue", "notify-channel", "create-draft-pr", "hold-branch", "none"],
223
+ },
224
+ "transitive-dependency": {
225
+ type: "string",
226
+ enum: ["open-issue", "notify-channel", "create-draft-pr", "hold-branch", "none"],
227
+ },
228
+ "install-failed": {
229
+ type: "string",
230
+ enum: ["open-issue", "notify-channel", "create-draft-pr", "hold-branch", "none"],
231
+ },
232
+ "major-bump-required": {
233
+ type: "string",
234
+ enum: ["open-issue", "notify-channel", "create-draft-pr", "hold-branch", "none"],
235
+ },
236
+ "no-safe-version": {
237
+ type: "string",
238
+ enum: ["open-issue", "notify-channel", "create-draft-pr", "hold-branch", "none"],
239
+ },
240
+ "override-apply-failed": {
241
+ type: "string",
242
+ enum: ["open-issue", "notify-channel", "create-draft-pr", "hold-branch", "none"],
243
+ },
244
+ "package-json-not-found": {
245
+ type: "string",
246
+ enum: ["open-issue", "notify-channel", "create-draft-pr", "hold-branch", "none"],
247
+ },
248
+ "patch-apply-failed": {
249
+ type: "string",
250
+ enum: ["open-issue", "notify-channel", "create-draft-pr", "hold-branch", "none"],
251
+ },
252
+ "patch-confidence-too-low": {
253
+ type: "string",
254
+ enum: ["open-issue", "notify-channel", "create-draft-pr", "hold-branch", "none"],
255
+ },
256
+ "patch-generation-failed": {
257
+ type: "string",
258
+ enum: ["open-issue", "notify-channel", "create-draft-pr", "hold-branch", "none"],
259
+ },
260
+ "patch-validation-failed": {
261
+ type: "string",
262
+ enum: ["open-issue", "notify-channel", "create-draft-pr", "hold-branch", "none"],
263
+ },
264
+ "policy-blocked": {
265
+ type: "string",
266
+ enum: ["open-issue", "notify-channel", "create-draft-pr", "hold-branch", "none"],
267
+ },
268
+ "requires-llm-fallback": {
269
+ type: "string",
270
+ enum: ["open-issue", "notify-channel", "create-draft-pr", "hold-branch", "none"],
271
+ },
272
+ "source-fetch-failed": {
273
+ type: "string",
274
+ enum: ["open-issue", "notify-channel", "create-draft-pr", "hold-branch", "none"],
275
+ },
276
+ "validation-failed": {
277
+ type: "string",
278
+ enum: ["open-issue", "notify-channel", "create-draft-pr", "hold-branch", "none"],
279
+ },
280
+ "proof-of-fix-failed": {
281
+ type: "string",
282
+ enum: ["open-issue", "notify-channel", "create-draft-pr", "hold-branch", "none"],
283
+ },
284
+ "breaking-change-unresolved": {
285
+ type: "string",
286
+ enum: ["open-issue", "notify-channel", "create-draft-pr", "hold-branch", "none"],
287
+ },
288
+ },
289
+ additionalProperties: false,
290
+ },
291
+ offlineIntelligence: { type: "boolean", description: OPTION_DESCRIPTIONS.offlineIntelligence },
292
+ intelligenceSnapshotPath: {
293
+ type: "string",
294
+ description: OPTION_DESCRIPTIONS.intelligenceSnapshotPath,
295
+ },
296
+ proofOfFix: { type: "boolean", description: OPTION_DESCRIPTIONS.proofOfFix },
297
+ requireProofOfFix: { type: "boolean", description: OPTION_DESCRIPTIONS.requireProofOfFix },
298
+ breakingChangeRefactor: {
299
+ type: "boolean",
300
+ description: OPTION_DESCRIPTIONS.breakingChangeRefactor,
301
+ },
302
+ };
303
+ }
304
+ export function createScanOptionSchemaProperties() {
305
+ return {
306
+ ...createRemediateOptionSchemaProperties({ includeEvidence: true }),
307
+ format: {
308
+ type: "string",
309
+ enum: ["npm-audit", "yarn-audit", "sarif", "auto"],
310
+ description: OPTION_DESCRIPTIONS.format,
311
+ },
312
+ audit: { type: "boolean", description: OPTION_DESCRIPTIONS.audit },
313
+ slaCheck: { type: "boolean", description: OPTION_DESCRIPTIONS.slaCheck },
314
+ };
315
+ }
316
+ export function createScanReportSchemaProperties() {
317
+ return {
318
+ schemaVersion: { type: "string" },
319
+ status: { type: "string", enum: ["ok", "partial", "failed"] },
320
+ generatedAt: { type: "string" },
321
+ cveIds: { type: "array", items: { type: "string" } },
322
+ reports: { type: "array", items: { type: "object" } },
323
+ successCount: { type: "number" },
324
+ failedCount: { type: "number" },
325
+ errors: { type: "array", items: { type: "object" } },
326
+ evidenceFile: { type: "string" },
327
+ patchCount: { type: "number" },
328
+ patchValidationFailures: { type: "array", items: { type: "object" } },
329
+ strategyCounts: {
330
+ type: "object",
331
+ additionalProperties: { type: "number" },
332
+ },
333
+ dependencyScopeCounts: {
334
+ type: "object",
335
+ additionalProperties: { type: "number" },
336
+ },
337
+ unresolvedByReason: {
338
+ type: "object",
339
+ additionalProperties: { type: "number" },
340
+ },
341
+ escalationCounts: {
342
+ type: "object",
343
+ additionalProperties: { type: "number" },
344
+ },
345
+ patchesDir: { type: "string" },
346
+ correlation: { type: "object" },
347
+ provenance: { type: "object" },
348
+ constraints: { type: "object" },
349
+ idempotencyKey: { type: "string" },
350
+ llmUsageCount: { type: "number" },
351
+ totalInputTokens: { type: "number" },
352
+ totalOutputTokens: { type: "number" },
353
+ totalLlmLatencyMs: { type: "number" },
354
+ changeRequests: { type: "array", items: { type: "object" } },
355
+ simulationSummary: { type: "object" },
356
+ };
357
+ }
358
+ export function createUpdateOutdatedOptionSchemaProperties() {
359
+ return {
360
+ ...createRemediateOptionSchemaProperties({
361
+ includeEvidence: true,
362
+ includeSimulationMode: false,
363
+ }),
364
+ includeTransitive: { type: "boolean", description: OPTION_DESCRIPTIONS.includeTransitive },
365
+ };
366
+ }
367
+ //# sourceMappingURL=options-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options-schema.js","sourceRoot":"","sources":["../../src/api/options-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import { existsSync } from "node:fs";
2
+ import { readFile } from "node:fs/promises";
3
+ import { isAbsolute, resolve, sep } from "node:path";
4
+ export const DEFAULT_PATCHES_DIR = "./patches";
5
+ export function resolvePatchesDir(cwd, patchesDir = DEFAULT_PATCHES_DIR) {
6
+ return isAbsolute(patchesDir) ? patchesDir : resolve(cwd, patchesDir);
7
+ }
8
+ export function resolveArtifactPath(cwd, patchFilePath) {
9
+ const resolved = isAbsolute(patchFilePath) ? patchFilePath : resolve(cwd, patchFilePath);
10
+ if (!resolved.endsWith(".patch")) {
11
+ throw new Error(`patchFilePath must point to a .patch file: ${patchFilePath}`);
12
+ }
13
+ const patchesRoot = resolvePatchesDir(cwd);
14
+ if (!resolved.startsWith(patchesRoot + sep)) {
15
+ throw new Error(`patchFilePath must be inside the patches directory: ${patchFilePath}`);
16
+ }
17
+ return resolved;
18
+ }
19
+ export async function readManifest(manifestFilePath) {
20
+ if (!existsSync(manifestFilePath)) {
21
+ return undefined;
22
+ }
23
+ try {
24
+ const raw = await readFile(manifestFilePath, "utf8");
25
+ const parsed = JSON.parse(raw);
26
+ if (parsed === null ||
27
+ typeof parsed !== "object" ||
28
+ parsed.schemaVersion !== "1.0" ||
29
+ typeof parsed.packageName !== "string" ||
30
+ typeof parsed.vulnerableVersion !== "string" ||
31
+ typeof parsed.patchFilePath !== "string" ||
32
+ typeof parsed.patchFileName !== "string" ||
33
+ typeof parsed.applied !== "boolean" ||
34
+ typeof parsed.dryRun !== "boolean" ||
35
+ typeof parsed.generatedAt !== "string") {
36
+ return undefined;
37
+ }
38
+ return parsed;
39
+ }
40
+ catch {
41
+ return undefined;
42
+ }
43
+ }
44
+ export function derivePatchMetadata(patchContent) {
45
+ const files = [
46
+ ...new Set(patchContent
47
+ .split(/\r?\n/)
48
+ .filter((line) => line.startsWith("+++ b/"))
49
+ .map((line) => line.slice("+++ b/".length))),
50
+ ];
51
+ const hunkCount = patchContent.split(/\r?\n/).filter((line) => line.startsWith("@@ ")).length;
52
+ return { files, hunkCount };
53
+ }
54
+ export function toSummary(inspection) {
55
+ return {
56
+ patchFilePath: inspection.patchFilePath,
57
+ manifestFilePath: inspection.manifestFilePath,
58
+ patchFileName: inspection.patchFileName,
59
+ cveId: inspection.cveId,
60
+ packageName: inspection.packageName,
61
+ vulnerableVersion: inspection.vulnerableVersion,
62
+ patchMode: inspection.patchMode,
63
+ confidence: inspection.confidence,
64
+ riskLevel: inspection.riskLevel,
65
+ generatedAt: inspection.generatedAt,
66
+ files: inspection.files,
67
+ hunkCount: inspection.hunkCount,
68
+ diffValid: inspection.diffValid,
69
+ };
70
+ }
71
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/api/patches/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { listPatchArtifacts, inspectPatchArtifact } from "./inspection.js";
2
+ export { validatePatchArtifact } from "./validation.js";
3
+ export { reconcilePatchArtifacts } from "./reconcile.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/patches/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,66 @@
1
+ import { existsSync } from "node:fs";
2
+ import { readdir, readFile, stat } from "node:fs/promises";
3
+ import { join } from "node:path";
4
+ import { validatePatchDiff } from "../../remediation/strategies/patch-utils.js";
5
+ import { readManifest, resolveArtifactPath, resolvePatchesDir, toSummary, derivePatchMetadata, } from "./helpers.js";
6
+ export async function listPatchArtifacts(options = {}) {
7
+ const cwd = options.cwd ?? process.cwd();
8
+ const patchesDirPath = resolvePatchesDir(cwd, options.patchesDir);
9
+ if (!existsSync(patchesDirPath)) {
10
+ return [];
11
+ }
12
+ const entries = await readdir(patchesDirPath, { withFileTypes: true });
13
+ const patchFiles = entries
14
+ .filter((entry) => entry.isFile() && entry.name.endsWith(".patch"))
15
+ .map((entry) => join(patchesDirPath, entry.name))
16
+ .toSorted((left, right) => left.localeCompare(right));
17
+ const summaries = await Promise.all(patchFiles.map(async (patchFilePath) => {
18
+ const inspection = await inspectPatchArtifact(patchFilePath, options);
19
+ return toSummary(inspection);
20
+ }));
21
+ return summaries;
22
+ }
23
+ export async function inspectPatchArtifact(patchFilePath, options = {}) {
24
+ const cwd = options.cwd ?? process.cwd();
25
+ const resolvedPatchPath = resolveArtifactPath(cwd, patchFilePath);
26
+ const patchFileName = resolvedPatchPath.split("/").pop() ?? resolvedPatchPath;
27
+ const manifestFilePath = `${resolvedPatchPath}.json`;
28
+ if (!existsSync(resolvedPatchPath)) {
29
+ return {
30
+ patchFilePath: resolvedPatchPath,
31
+ manifestFilePath: existsSync(manifestFilePath) ? manifestFilePath : undefined,
32
+ patchFileName,
33
+ exists: false,
34
+ diffValid: false,
35
+ formatError: "Patch file does not exist.",
36
+ };
37
+ }
38
+ const [patchContent, fileStats, manifest] = await Promise.all([
39
+ readFile(resolvedPatchPath, "utf8"),
40
+ stat(resolvedPatchPath),
41
+ readManifest(manifestFilePath),
42
+ ]);
43
+ const format = validatePatchDiff(patchContent);
44
+ const derived = derivePatchMetadata(patchContent);
45
+ return {
46
+ patchFilePath: resolvedPatchPath,
47
+ manifestFilePath: manifest ? manifestFilePath : undefined,
48
+ patchFileName,
49
+ cveId: manifest?.cveId,
50
+ packageName: manifest?.packageName,
51
+ vulnerableVersion: manifest?.vulnerableVersion,
52
+ patchMode: manifest?.patchMode,
53
+ confidence: manifest?.confidence,
54
+ riskLevel: manifest?.riskLevel,
55
+ generatedAt: manifest?.generatedAt,
56
+ files: manifest?.files ?? derived.files,
57
+ hunkCount: manifest?.hunkCount ?? derived.hunkCount,
58
+ exists: true,
59
+ diffValid: format.valid,
60
+ formatError: format.error,
61
+ patchSizeBytes: fileStats.size,
62
+ lineCount: patchContent.split(/\r?\n/).length,
63
+ manifest,
64
+ };
65
+ }
66
+ //# sourceMappingURL=inspection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspection.js","sourceRoot":"","sources":["../../../src/api/patches/inspection.ts"],"names":[],"mappings":"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"}