infraweaver 0.1.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 (524) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +244 -0
  3. package/dist/agents/claude.d.ts +113 -0
  4. package/dist/agents/claudePretoolGate.d.ts +137 -0
  5. package/dist/agents/dispatchMetrics.d.ts +77 -0
  6. package/dist/agents/gateServer.d.ts +7 -0
  7. package/dist/agents/index.d.ts +6 -0
  8. package/dist/agents/nativeFsDenies.d.ts +46 -0
  9. package/dist/agents/opencode.d.ts +284 -0
  10. package/dist/agents/opencodePlugin.d.ts +96 -0
  11. package/dist/agents/opencodeShared.d.ts +40 -0
  12. package/dist/agents/postRun.d.ts +126 -0
  13. package/dist/agents/reviewer.d.ts +41 -0
  14. package/dist/agents/sessionLabeler.d.ts +97 -0
  15. package/dist/agents/shared.d.ts +246 -0
  16. package/dist/agents/subagentModels.d.ts +19 -0
  17. package/dist/agents/tokenQuota.d.ts +118 -0
  18. package/dist/agents/writeGateSource.d.ts +22 -0
  19. package/dist/agents/writePolicy.d.ts +79 -0
  20. package/dist/brand.d.ts +67 -0
  21. package/dist/cli.mjs +247846 -0
  22. package/dist/external.d.ts +227 -0
  23. package/dist/i18n/scaffolding.d.ts +59 -0
  24. package/dist/index.d.ts +6 -0
  25. package/dist/index.js +247061 -0
  26. package/dist/internal/index.d.ts +18 -0
  27. package/dist/internal.js +2398 -0
  28. package/dist/lifecycle.d.ts +2 -0
  29. package/dist/main.d.ts +8 -0
  30. package/dist/mcp/arkConfig.d.ts +1 -0
  31. package/dist/mcp/assess.d.ts +157 -0
  32. package/dist/mcp/capabilityContext.d.ts +71 -0
  33. package/dist/mcp/changeSummary.d.ts +52 -0
  34. package/dist/mcp/checkSuite.d.ts +27 -0
  35. package/dist/mcp/checkout.d.ts +92 -0
  36. package/dist/mcp/comment.d.ts +127 -0
  37. package/dist/mcp/commitInfo.d.ts +11 -0
  38. package/dist/mcp/crosswalk.d.ts +178 -0
  39. package/dist/mcp/crosswalkDigest.d.ts +1 -0
  40. package/dist/mcp/cyberEssentials.d.ts +24 -0
  41. package/dist/mcp/dashboard.d.ts +125 -0
  42. package/dist/mcp/dependencies.d.ts +12 -0
  43. package/dist/mcp/frameworks.d.ts +74 -0
  44. package/dist/mcp/geminiSanitizer.d.ts +28 -0
  45. package/dist/mcp/git.d.ts +60 -0
  46. package/dist/mcp/guardrails.d.ts +222 -0
  47. package/dist/mcp/issue.d.ts +20 -0
  48. package/dist/mcp/issueComments.d.ts +11 -0
  49. package/dist/mcp/issueEvents.d.ts +11 -0
  50. package/dist/mcp/issueInfo.d.ts +11 -0
  51. package/dist/mcp/labels.d.ts +14 -0
  52. package/dist/mcp/localContext.d.ts +26 -0
  53. package/dist/mcp/moduleExtraction.d.ts +79 -0
  54. package/dist/mcp/moduleTests.d.ts +106 -0
  55. package/dist/mcp/modules.d.ts +198 -0
  56. package/dist/mcp/output.d.ts +16 -0
  57. package/dist/mcp/pathSafety.d.ts +14 -0
  58. package/dist/mcp/policy.d.ts +50 -0
  59. package/dist/mcp/pr.d.ts +64 -0
  60. package/dist/mcp/prInfo.d.ts +11 -0
  61. package/dist/mcp/providerSchema.d.ts +52 -0
  62. package/dist/mcp/review.d.ts +212 -0
  63. package/dist/mcp/reviewComments.d.ts +245 -0
  64. package/dist/mcp/roots.d.ts +60 -0
  65. package/dist/mcp/scope.d.ts +26 -0
  66. package/dist/mcp/selectMode.d.ts +20 -0
  67. package/dist/mcp/server.d.ts +61 -0
  68. package/dist/mcp/shared.d.ts +62 -0
  69. package/dist/mcp/shell.d.ts +58 -0
  70. package/dist/mcp/staleFix.d.ts +138 -0
  71. package/dist/mcp/terraform/azurePrices.d.ts +8 -0
  72. package/dist/mcp/terraform/baseline.d.ts +57 -0
  73. package/dist/mcp/terraform/concernResult.d.ts +38 -0
  74. package/dist/mcp/terraform/cost.d.ts +55 -0
  75. package/dist/mcp/terraform/cspm.d.ts +80 -0
  76. package/dist/mcp/terraform/currency.d.ts +110 -0
  77. package/dist/mcp/terraform/decisions.d.ts +178 -0
  78. package/dist/mcp/terraform/eidas.d.ts +100 -0
  79. package/dist/mcp/terraform/evidence.d.ts +343 -0
  80. package/dist/mcp/terraform/findings.d.ts +76 -0
  81. package/dist/mcp/terraform/fixMemory.d.ts +81 -0
  82. package/dist/mcp/terraform/governance.d.ts +56 -0
  83. package/dist/mcp/terraform/hcl.d.ts +115 -0
  84. package/dist/mcp/terraform/iacLanguages.d.ts +120 -0
  85. package/dist/mcp/terraform/idleFloor.d.ts +78 -0
  86. package/dist/mcp/terraform/keyless.d.ts +68 -0
  87. package/dist/mcp/terraform/moduleDocs.d.ts +56 -0
  88. package/dist/mcp/terraform/nativeRules.d.ts +38 -0
  89. package/dist/mcp/terraform/nativeScan.d.ts +11 -0
  90. package/dist/mcp/terraform/noiseProfile.d.ts +100 -0
  91. package/dist/mcp/terraform/normalization.d.ts +52 -0
  92. package/dist/mcp/terraform/oscal.d.ts +103 -0
  93. package/dist/mcp/terraform/packs/azurerm-3-4.d.ts +2 -0
  94. package/dist/mcp/terraform/packs/cloudflare-4-5.d.ts +2 -0
  95. package/dist/mcp/terraform/paths.d.ts +28 -0
  96. package/dist/mcp/terraform/plan.d.ts +157 -0
  97. package/dist/mcp/terraform/planDrift.d.ts +199 -0
  98. package/dist/mcp/terraform/policyAuthor.d.ts +191 -0
  99. package/dist/mcp/terraform/prowlerOcsf.d.ts +136 -0
  100. package/dist/mcp/terraform/refactor.d.ts +183 -0
  101. package/dist/mcp/terraform/registry.d.ts +108 -0
  102. package/dist/mcp/terraform/risk.d.ts +41 -0
  103. package/dist/mcp/terraform/scanSession.d.ts +116 -0
  104. package/dist/mcp/terraform/scannerCache.d.ts +15 -0
  105. package/dist/mcp/terraform/scannerEgress.d.ts +72 -0
  106. package/dist/mcp/terraform/scannerJson.d.ts +13 -0
  107. package/dist/mcp/terraform/scanners.d.ts +205 -0
  108. package/dist/mcp/terraform/signing.d.ts +61 -0
  109. package/dist/mcp/terraform/stateLocking.d.ts +18 -0
  110. package/dist/mcp/terraform/subprocess.d.ts +43 -0
  111. package/dist/mcp/terraform/suppressions.d.ts +90 -0
  112. package/dist/mcp/terraform/taxonomy.d.ts +39 -0
  113. package/dist/mcp/terraform/tfquery.d.ts +47 -0
  114. package/dist/mcp/terraform/toolchainIntegrity.d.ts +82 -0
  115. package/dist/mcp/terraform/tools/authorPolicy.d.ts +59 -0
  116. package/dist/mcp/terraform/tools/detectPlanDrift.d.ts +20 -0
  117. package/dist/mcp/terraform/tools/emitCost.d.ts +11 -0
  118. package/dist/mcp/terraform/tools/emitSarif.d.ts +14 -0
  119. package/dist/mcp/terraform/tools/fixMemory.d.ts +19 -0
  120. package/dist/mcp/terraform/tools/infracostDiff.d.ts +22 -0
  121. package/dist/mcp/terraform/tools/ingestExternalFindings.d.ts +21 -0
  122. package/dist/mcp/terraform/tools/moduleLookup.d.ts +14 -0
  123. package/dist/mcp/terraform/tools/moduleSearch.d.ts +23 -0
  124. package/dist/mcp/terraform/tools/plan.d.ts +59 -0
  125. package/dist/mcp/terraform/tools/providerUpgrade.d.ts +55 -0
  126. package/dist/mcp/terraform/tools/readFindings.d.ts +17 -0
  127. package/dist/mcp/terraform/tools/scan.d.ts +114 -0
  128. package/dist/mcp/terraform/tools/validate.d.ts +31 -0
  129. package/dist/mcp/terraform/tools/verifyRemediation.d.ts +31 -0
  130. package/dist/mcp/terraform/tools/versionCurrency.d.ts +5 -0
  131. package/dist/mcp/terraform/tools.d.ts +16 -0
  132. package/dist/mcp/terraform/transformPacks.d.ts +267 -0
  133. package/dist/mcp/terraform/types.d.ts +226 -0
  134. package/dist/mcp/terraform/verification.d.ts +81 -0
  135. package/dist/mcp/terraform/vex.d.ts +115 -0
  136. package/dist/mcp/terraform/writeOnly.d.ts +67 -0
  137. package/dist/mcp/terraform.d.ts +51 -0
  138. package/dist/mcp/terratest.d.ts +85 -0
  139. package/dist/mcp/untrustedContent.d.ts +76 -0
  140. package/dist/mcp/upload.d.ts +8 -0
  141. package/dist/models.d.ts +181 -0
  142. package/dist/modes/address-reviews.d.ts +2 -0
  143. package/dist/modes/assess.d.ts +2 -0
  144. package/dist/modes/build.d.ts +2 -0
  145. package/dist/modes/compliance-audit.d.ts +2 -0
  146. package/dist/modes/cost-optimization.d.ts +2 -0
  147. package/dist/modes/drift-detect.d.ts +2 -0
  148. package/dist/modes/fix.d.ts +2 -0
  149. package/dist/modes/incremental-review.d.ts +2 -0
  150. package/dist/modes/index.d.ts +24 -0
  151. package/dist/modes/modernize-deprecated.d.ts +2 -0
  152. package/dist/modes/plan.d.ts +2 -0
  153. package/dist/modes/policy-gate.d.ts +2 -0
  154. package/dist/modes/prFormats.d.ts +3 -0
  155. package/dist/modes/refactor.d.ts +2 -0
  156. package/dist/modes/refresh-remediation.d.ts +2 -0
  157. package/dist/modes/remediate-and-refactor.d.ts +2 -0
  158. package/dist/modes/remediate.d.ts +2 -0
  159. package/dist/modes/resolve-conflicts.d.ts +2 -0
  160. package/dist/modes/review.d.ts +2 -0
  161. package/dist/modes/summarize-pr.d.ts +2 -0
  162. package/dist/modes/task.d.ts +2 -0
  163. package/dist/modes/terraform-code-review.d.ts +2 -0
  164. package/dist/modes/types.d.ts +9 -0
  165. package/dist/modes/update-dependencies.d.ts +2 -0
  166. package/dist/prep/index.d.ts +7 -0
  167. package/dist/prep/installNodeDependencies.d.ts +2 -0
  168. package/dist/prep/installPythonDependencies.d.ts +2 -0
  169. package/dist/prep/types.d.ts +31 -0
  170. package/dist/reviewQuality.d.ts +107 -0
  171. package/dist/skills/terraform-best-practices/SKILL.md +379 -0
  172. package/dist/toolState.d.ts +123 -0
  173. package/dist/utils/activity.d.ts +40 -0
  174. package/dist/utils/agent.d.ts +47 -0
  175. package/dist/utils/agentHangReport.d.ts +38 -0
  176. package/dist/utils/annotations.d.ts +17 -0
  177. package/dist/utils/apiFetch.d.ts +11 -0
  178. package/dist/utils/apiKeys.d.ts +48 -0
  179. package/dist/utils/apiUrl.d.ts +28 -0
  180. package/dist/utils/assets.d.ts +8 -0
  181. package/dist/utils/baseRefConfig.d.ts +121 -0
  182. package/dist/utils/billingErrors.d.ts +85 -0
  183. package/dist/utils/body.d.ts +34 -0
  184. package/dist/utils/buildInfraweaverFooter.d.ts +29 -0
  185. package/dist/utils/byokFallback.d.ts +85 -0
  186. package/dist/utils/changeImpact.d.ts +101 -0
  187. package/dist/utils/claudeSubscription.d.ts +30 -0
  188. package/dist/utils/cli.d.ts +10 -0
  189. package/dist/utils/cloudClient.d.ts +33 -0
  190. package/dist/utils/cloudFetchCore.d.ts +42 -0
  191. package/dist/utils/cloudReport.d.ts +114 -0
  192. package/dist/utils/codexHome.d.ts +29 -0
  193. package/dist/utils/codexOAuth.d.ts +60 -0
  194. package/dist/utils/diffCoverage.d.ts +63 -0
  195. package/dist/utils/env.d.ts +46 -0
  196. package/dist/utils/errorReport.d.ts +17 -0
  197. package/dist/utils/exitHandler.d.ts +8 -0
  198. package/dist/utils/fixDoubleEscapedString.d.ts +1 -0
  199. package/dist/utils/gitAuth.d.ts +84 -0
  200. package/dist/utils/gitAuthServer.d.ts +24 -0
  201. package/dist/utils/github.d.ts +104 -0
  202. package/dist/utils/globals.d.ts +3 -0
  203. package/dist/utils/infraweaverConfig.d.ts +56 -0
  204. package/dist/utils/install.d.ts +37 -0
  205. package/dist/utils/instructions.d.ts +48 -0
  206. package/dist/utils/keylessOidc.d.ts +28 -0
  207. package/dist/utils/leapingComment.d.ts +11 -0
  208. package/dist/utils/learnings.d.ts +62 -0
  209. package/dist/utils/learningsTruncate.d.ts +25 -0
  210. package/dist/utils/lifecycle.d.ts +57 -0
  211. package/dist/utils/log.d.ts +111 -0
  212. package/dist/utils/modelResolver.d.ts +63 -0
  213. package/dist/utils/moduleFetch.d.ts +39 -0
  214. package/dist/utils/normalizeEnv.d.ts +30 -0
  215. package/dist/utils/openCodeModels.d.ts +11 -0
  216. package/dist/utils/openaiCompatible.d.ts +26 -0
  217. package/dist/utils/opentofuMcp.d.ts +50 -0
  218. package/dist/utils/overrides.d.ts +40 -0
  219. package/dist/utils/packageManager.d.ts +49 -0
  220. package/dist/utils/patchWorkflowRunFields.d.ts +29 -0
  221. package/dist/utils/payload.d.ts +249 -0
  222. package/dist/utils/prSummary.d.ts +61 -0
  223. package/dist/utils/presets.d.ts +36 -0
  224. package/dist/utils/progressComment.d.ts +146 -0
  225. package/dist/utils/providerErrors.d.ts +31 -0
  226. package/dist/utils/proxyModel.d.ts +76 -0
  227. package/dist/utils/rangeDiff.d.ts +51 -0
  228. package/dist/utils/redact.d.ts +33 -0
  229. package/dist/utils/registryAuth.d.ts +52 -0
  230. package/dist/utils/remediationCommand.d.ts +58 -0
  231. package/dist/utils/retry.d.ts +38 -0
  232. package/dist/utils/reviewCleanup.d.ts +14 -0
  233. package/dist/utils/run.d.ts +9 -0
  234. package/dist/utils/runContext.d.ts +112 -0
  235. package/dist/utils/runContextData.d.ts +42 -0
  236. package/dist/utils/runErrorRenderer.d.ts +64 -0
  237. package/dist/utils/runLifecycle.d.ts +89 -0
  238. package/dist/utils/runStartupLog.d.ts +15 -0
  239. package/dist/utils/secrets.d.ts +34 -0
  240. package/dist/utils/setup.d.ts +90 -0
  241. package/dist/utils/shell.d.ts +44 -0
  242. package/dist/utils/skills.d.ts +10 -0
  243. package/dist/utils/subprocess.d.ts +81 -0
  244. package/dist/utils/terraformMcp.d.ts +46 -0
  245. package/dist/utils/time.d.ts +15 -0
  246. package/dist/utils/timer.d.ts +23 -0
  247. package/dist/utils/todoTracking.d.ts +16 -0
  248. package/dist/utils/token.d.ts +52 -0
  249. package/dist/utils/toolLicensing.d.ts +56 -0
  250. package/dist/utils/toolSelection.d.ts +73 -0
  251. package/dist/utils/toon.d.ts +16 -0
  252. package/dist/utils/version.d.ts +2 -0
  253. package/dist/utils/versioning.d.ts +7 -0
  254. package/dist/utils/vertex.d.ts +16 -0
  255. package/dist/utils/workflow.d.ts +13 -0
  256. package/package.json +132 -0
  257. package/src/agents/claude.ts +1588 -0
  258. package/src/agents/claudePretoolGate.ts +286 -0
  259. package/src/agents/dispatchMetrics.ts +162 -0
  260. package/src/agents/gateServer.ts +178 -0
  261. package/src/agents/index.ts +10 -0
  262. package/src/agents/nativeFsDenies.ts +164 -0
  263. package/src/agents/opencode.ts +1600 -0
  264. package/src/agents/opencodePlugin.ts +304 -0
  265. package/src/agents/opencodeShared.ts +134 -0
  266. package/src/agents/postRun.ts +615 -0
  267. package/src/agents/reviewer.ts +134 -0
  268. package/src/agents/sessionLabeler.ts +185 -0
  269. package/src/agents/shared.ts +377 -0
  270. package/src/agents/subagentModels.ts +40 -0
  271. package/src/agents/tokenQuota.ts +203 -0
  272. package/src/agents/writeGateSource.ts +148 -0
  273. package/src/agents/writePolicy.ts +132 -0
  274. package/src/brand.ts +84 -0
  275. package/src/cli.ts +117 -0
  276. package/src/commands/gha.ts +188 -0
  277. package/src/commands/mcp.ts +126 -0
  278. package/src/commands/verifyEvidence.ts +100 -0
  279. package/src/entry.ts +7 -0
  280. package/src/entryPost.ts +109 -0
  281. package/src/external.ts +308 -0
  282. package/src/i18n/scaffolding.ts +191 -0
  283. package/src/index.ts +7 -0
  284. package/src/internal/index.ts +74 -0
  285. package/src/lifecycle.ts +2 -0
  286. package/src/main.ts +815 -0
  287. package/src/mcp/__fixtures__/infraweaver-scratch-pr-49-review-3485940013.json +110 -0
  288. package/src/mcp/__fixtures__/infraweaver-scratch-pr-64-review-3531000326.json +14 -0
  289. package/src/mcp/__fixtures__/infraweaver-test-repo-pr-1.diff.json +67 -0
  290. package/src/mcp/__snapshots__/checkout.test.ts.snap +109 -0
  291. package/src/mcp/__snapshots__/reviewComments.test.ts.snap +71 -0
  292. package/src/mcp/arkConfig.ts +7 -0
  293. package/src/mcp/assess.ts +723 -0
  294. package/src/mcp/capabilityContext.ts +80 -0
  295. package/src/mcp/changeSummary.ts +145 -0
  296. package/src/mcp/checkSuite.ts +261 -0
  297. package/src/mcp/checkout.ts +1015 -0
  298. package/src/mcp/comment.ts +683 -0
  299. package/src/mcp/commitInfo.ts +57 -0
  300. package/src/mcp/crosswalk.ts +1253 -0
  301. package/src/mcp/crosswalkDigest.ts +5 -0
  302. package/src/mcp/cyberEssentials.ts +60 -0
  303. package/src/mcp/dashboard.ts +232 -0
  304. package/src/mcp/dependencies.ts +190 -0
  305. package/src/mcp/frameworks.ts +236 -0
  306. package/src/mcp/geminiSanitizer.ts +212 -0
  307. package/src/mcp/git.ts +1116 -0
  308. package/src/mcp/guardrails.ts +771 -0
  309. package/src/mcp/issue.ts +74 -0
  310. package/src/mcp/issueComments.ts +48 -0
  311. package/src/mcp/issueEvents.ts +100 -0
  312. package/src/mcp/issueInfo.ts +72 -0
  313. package/src/mcp/labels.ts +35 -0
  314. package/src/mcp/localContext.ts +65 -0
  315. package/src/mcp/localServer.ts +217 -0
  316. package/src/mcp/moduleExtraction.ts +368 -0
  317. package/src/mcp/moduleTests.ts +421 -0
  318. package/src/mcp/modules.ts +752 -0
  319. package/src/mcp/output.ts +71 -0
  320. package/src/mcp/pathSafety.ts +28 -0
  321. package/src/mcp/policy.ts +226 -0
  322. package/src/mcp/pr.ts +238 -0
  323. package/src/mcp/prInfo.ts +91 -0
  324. package/src/mcp/providerSchema.ts +175 -0
  325. package/src/mcp/review.ts +1081 -0
  326. package/src/mcp/reviewComments.ts +1137 -0
  327. package/src/mcp/roots.ts +217 -0
  328. package/src/mcp/scope.ts +82 -0
  329. package/src/mcp/selectMode.ts +207 -0
  330. package/src/mcp/server.ts +498 -0
  331. package/src/mcp/shared.ts +120 -0
  332. package/src/mcp/shell.ts +631 -0
  333. package/src/mcp/staleFix.ts +557 -0
  334. package/src/mcp/terraform/__snapshots__/moduleDocs.test.ts.snap +40 -0
  335. package/src/mcp/terraform/azurePrices.ts +38 -0
  336. package/src/mcp/terraform/baseline.ts +172 -0
  337. package/src/mcp/terraform/concernResult.ts +111 -0
  338. package/src/mcp/terraform/cost.ts +175 -0
  339. package/src/mcp/terraform/cspm.ts +326 -0
  340. package/src/mcp/terraform/currency.ts +354 -0
  341. package/src/mcp/terraform/decisions.ts +590 -0
  342. package/src/mcp/terraform/eidas.ts +134 -0
  343. package/src/mcp/terraform/evidence.ts +771 -0
  344. package/src/mcp/terraform/findings.ts +383 -0
  345. package/src/mcp/terraform/fixMemory.ts +253 -0
  346. package/src/mcp/terraform/governance.ts +231 -0
  347. package/src/mcp/terraform/hcl.ts +273 -0
  348. package/src/mcp/terraform/iacLanguages.ts +431 -0
  349. package/src/mcp/terraform/idleFloor.ts +304 -0
  350. package/src/mcp/terraform/keyless.ts +123 -0
  351. package/src/mcp/terraform/moduleDocs.ts +303 -0
  352. package/src/mcp/terraform/nativeRules.ts +152 -0
  353. package/src/mcp/terraform/nativeScan.ts +67 -0
  354. package/src/mcp/terraform/noiseProfile.ts +183 -0
  355. package/src/mcp/terraform/normalization.ts +265 -0
  356. package/src/mcp/terraform/oscal.ts +283 -0
  357. package/src/mcp/terraform/packs/azurerm-3-4.ts +382 -0
  358. package/src/mcp/terraform/packs/cloudflare-4-5.ts +114 -0
  359. package/src/mcp/terraform/paths.ts +59 -0
  360. package/src/mcp/terraform/plan.ts +377 -0
  361. package/src/mcp/terraform/planDrift.ts +520 -0
  362. package/src/mcp/terraform/policyAuthor.ts +886 -0
  363. package/src/mcp/terraform/prowlerOcsf.ts +380 -0
  364. package/src/mcp/terraform/refactor.ts +879 -0
  365. package/src/mcp/terraform/registry.ts +317 -0
  366. package/src/mcp/terraform/risk.ts +99 -0
  367. package/src/mcp/terraform/scanSession.ts +242 -0
  368. package/src/mcp/terraform/scannerCache.ts +86 -0
  369. package/src/mcp/terraform/scannerEgress.ts +141 -0
  370. package/src/mcp/terraform/scannerJson.ts +22 -0
  371. package/src/mcp/terraform/scanners.ts +1134 -0
  372. package/src/mcp/terraform/signing.ts +151 -0
  373. package/src/mcp/terraform/stateLocking.ts +106 -0
  374. package/src/mcp/terraform/subprocess.ts +102 -0
  375. package/src/mcp/terraform/suppressions.ts +551 -0
  376. package/src/mcp/terraform/taxonomy.ts +0 -0
  377. package/src/mcp/terraform/tfquery.ts +159 -0
  378. package/src/mcp/terraform/toolchainIntegrity.ts +151 -0
  379. package/src/mcp/terraform/tools/authorPolicy.ts +185 -0
  380. package/src/mcp/terraform/tools/detectPlanDrift.ts +279 -0
  381. package/src/mcp/terraform/tools/emitCost.ts +130 -0
  382. package/src/mcp/terraform/tools/emitSarif.ts +108 -0
  383. package/src/mcp/terraform/tools/fixMemory.ts +82 -0
  384. package/src/mcp/terraform/tools/infracostDiff.ts +110 -0
  385. package/src/mcp/terraform/tools/ingestExternalFindings.ts +259 -0
  386. package/src/mcp/terraform/tools/moduleLookup.ts +86 -0
  387. package/src/mcp/terraform/tools/moduleSearch.ts +46 -0
  388. package/src/mcp/terraform/tools/plan.ts +384 -0
  389. package/src/mcp/terraform/tools/providerUpgrade.ts +217 -0
  390. package/src/mcp/terraform/tools/readFindings.ts +138 -0
  391. package/src/mcp/terraform/tools/scan.ts +303 -0
  392. package/src/mcp/terraform/tools/validate.ts +160 -0
  393. package/src/mcp/terraform/tools/verifyRemediation.ts +190 -0
  394. package/src/mcp/terraform/tools/versionCurrency.ts +64 -0
  395. package/src/mcp/terraform/tools.ts +62 -0
  396. package/src/mcp/terraform/transformPacks.ts +594 -0
  397. package/src/mcp/terraform/types.ts +382 -0
  398. package/src/mcp/terraform/verification.ts +150 -0
  399. package/src/mcp/terraform/vex.ts +367 -0
  400. package/src/mcp/terraform/writeOnly.ts +252 -0
  401. package/src/mcp/terraform.ts +52 -0
  402. package/src/mcp/terratest.ts +215 -0
  403. package/src/mcp/untrustedContent.ts +126 -0
  404. package/src/mcp/upload.ts +123 -0
  405. package/src/models.ts +753 -0
  406. package/src/modes/address-reviews.ts +35 -0
  407. package/src/modes/assess.ts +27 -0
  408. package/src/modes/build.ts +86 -0
  409. package/src/modes/compliance-audit.ts +25 -0
  410. package/src/modes/cost-optimization.ts +36 -0
  411. package/src/modes/drift-detect.ts +31 -0
  412. package/src/modes/fix.ts +29 -0
  413. package/src/modes/incremental-review.ts +103 -0
  414. package/src/modes/index.ts +94 -0
  415. package/src/modes/modernize-deprecated.ts +36 -0
  416. package/src/modes/plan.ts +21 -0
  417. package/src/modes/policy-gate.ts +27 -0
  418. package/src/modes/prFormats.ts +325 -0
  419. package/src/modes/refactor.ts +74 -0
  420. package/src/modes/refresh-remediation.ts +40 -0
  421. package/src/modes/remediate-and-refactor.ts +42 -0
  422. package/src/modes/remediate.ts +78 -0
  423. package/src/modes/resolve-conflicts.ts +32 -0
  424. package/src/modes/review.ts +135 -0
  425. package/src/modes/summarize-pr.ts +42 -0
  426. package/src/modes/task.ts +26 -0
  427. package/src/modes/terraform-code-review.ts +68 -0
  428. package/src/modes/types.ts +17 -0
  429. package/src/modes/update-dependencies.ts +44 -0
  430. package/src/prep/index.ts +96 -0
  431. package/src/prep/installNodeDependencies.ts +251 -0
  432. package/src/prep/installPythonDependencies.ts +235 -0
  433. package/src/prep/types.ts +38 -0
  434. package/src/reviewQuality.ts +237 -0
  435. package/src/runCli.ts +335 -0
  436. package/src/skills/terraform-best-practices/SKILL.md +379 -0
  437. package/src/toolState.ts +241 -0
  438. package/src/utils/activity.ts +210 -0
  439. package/src/utils/agent.ts +245 -0
  440. package/src/utils/agentHangReport.ts +180 -0
  441. package/src/utils/annotations.ts +56 -0
  442. package/src/utils/apiFetch.ts +19 -0
  443. package/src/utils/apiKeys.ts +305 -0
  444. package/src/utils/apiUrl.ts +42 -0
  445. package/src/utils/assets.ts +123 -0
  446. package/src/utils/baseRefConfig.ts +254 -0
  447. package/src/utils/billingErrors.ts +210 -0
  448. package/src/utils/body.ts +168 -0
  449. package/src/utils/buildInfraweaverFooter.ts +104 -0
  450. package/src/utils/byokFallback.ts +137 -0
  451. package/src/utils/changeImpact.ts +330 -0
  452. package/src/utils/claudeSubscription.ts +93 -0
  453. package/src/utils/cli.ts +36 -0
  454. package/src/utils/cloudClient.ts +57 -0
  455. package/src/utils/cloudFetchCore.ts +139 -0
  456. package/src/utils/cloudReport.ts +316 -0
  457. package/src/utils/codexHome.ts +204 -0
  458. package/src/utils/codexOAuth.ts +154 -0
  459. package/src/utils/codexRefreshDetect.ts +36 -0
  460. package/src/utils/diffCoverage.ts +404 -0
  461. package/src/utils/env.ts +84 -0
  462. package/src/utils/errorReport.ts +94 -0
  463. package/src/utils/exitHandler.ts +35 -0
  464. package/src/utils/fixDoubleEscapedString.ts +9 -0
  465. package/src/utils/ghaCore.ts +13 -0
  466. package/src/utils/gitAuth.ts +268 -0
  467. package/src/utils/gitAuthServer.ts +186 -0
  468. package/src/utils/github.ts +676 -0
  469. package/src/utils/globals.ts +9 -0
  470. package/src/utils/humanEditCapture.ts +198 -0
  471. package/src/utils/infraweaverConfig.ts +202 -0
  472. package/src/utils/install.ts +279 -0
  473. package/src/utils/instructions.ts +640 -0
  474. package/src/utils/keylessOidc.ts +47 -0
  475. package/src/utils/leapingComment.ts +20 -0
  476. package/src/utils/learnings.ts +145 -0
  477. package/src/utils/learningsTruncate.ts +42 -0
  478. package/src/utils/lifecycle.ts +198 -0
  479. package/src/utils/log.ts +452 -0
  480. package/src/utils/modelResolver.ts +105 -0
  481. package/src/utils/moduleFetch.ts +138 -0
  482. package/src/utils/normalizeEnv.ts +106 -0
  483. package/src/utils/openCodeModels.ts +86 -0
  484. package/src/utils/openaiCompatible.ts +52 -0
  485. package/src/utils/opentofuMcp.ts +61 -0
  486. package/src/utils/overrides.ts +100 -0
  487. package/src/utils/packageManager.ts +257 -0
  488. package/src/utils/patchWorkflowRunFields.ts +173 -0
  489. package/src/utils/payload.ts +1206 -0
  490. package/src/utils/prSummary.ts +148 -0
  491. package/src/utils/presets.ts +105 -0
  492. package/src/utils/progressComment.ts +266 -0
  493. package/src/utils/providerErrors.ts +189 -0
  494. package/src/utils/proxyModel.ts +239 -0
  495. package/src/utils/rangeDiff.ts +182 -0
  496. package/src/utils/redact.ts +86 -0
  497. package/src/utils/registryAuth.ts +115 -0
  498. package/src/utils/remediationCommand.ts +144 -0
  499. package/src/utils/retry.ts +180 -0
  500. package/src/utils/reviewCleanup.ts +116 -0
  501. package/src/utils/run.ts +100 -0
  502. package/src/utils/runContext.ts +276 -0
  503. package/src/utils/runContextData.ts +121 -0
  504. package/src/utils/runErrorRenderer.ts +282 -0
  505. package/src/utils/runFixture.ts +91 -0
  506. package/src/utils/runLifecycle.ts +360 -0
  507. package/src/utils/runStartupLog.ts +67 -0
  508. package/src/utils/secrets.ts +208 -0
  509. package/src/utils/setup.ts +368 -0
  510. package/src/utils/shell.ts +132 -0
  511. package/src/utils/skills.ts +67 -0
  512. package/src/utils/subprocess.ts +474 -0
  513. package/src/utils/terraformMcp.ts +99 -0
  514. package/src/utils/time.ts +59 -0
  515. package/src/utils/timer.ts +72 -0
  516. package/src/utils/todoTracking.ts +168 -0
  517. package/src/utils/token.ts +294 -0
  518. package/src/utils/toolLicensing.ts +152 -0
  519. package/src/utils/toolSelection.ts +239 -0
  520. package/src/utils/toon.ts +76 -0
  521. package/src/utils/version.ts +10 -0
  522. package/src/utils/versioning.ts +44 -0
  523. package/src/utils/vertex.ts +94 -0
  524. package/src/utils/workflow.ts +25 -0
@@ -0,0 +1,178 @@
1
+ import type { LocalToolContext } from "#app/mcp/localContext";
2
+ import type { Concern } from "#app/mcp/terraform/types";
3
+ import { type ConcernVerificationStatus } from "#app/mcp/terraform/verification";
4
+ /**
5
+ * Compliance crosswalk ("explain like I'm the auditor", the
6
+ * seed of the moat). Maps a best-practice concern → the control families
7
+ * it touches across UK public-sector + general frameworks, so a remediation can
8
+ * be narrated to an assessor in their own language ("this closes NCSC Cloud
9
+ * Principle 2 / Cyber Essentials Secure Configuration") rather than as a raw
10
+ * scanner rule id.
11
+ *
12
+ * SCOPE / HONESTY: this is a deterministic STARTER rule-pack keyed on the
13
+ * defect's THEME (encryption, public exposure, least-privilege, logging, …),
14
+ * not a certified control-by-control mapping. The durable product is a
15
+ * versioned, framework-revision-pinned crosswalk — so every mapping
16
+ * carries the pack version + date and is labelled indicative, never an audit
17
+ * verdict. No open crosswalk to UK frameworks exists; this is the wedge.
18
+ */
19
+ export declare const CROSSWALK_VERSION = "0.6.0";
20
+ /** the date this rule-pack's framework references were last reviewed (absolute). */
21
+ export declare const CROSSWALK_REVIEWED = "2026-07-26";
22
+ export interface ControlRef {
23
+ /** the framework, e.g. "NCSC Cloud Security Principles". */
24
+ framework: string;
25
+ /** the control id within that framework, e.g. "Principle 2". */
26
+ control: string;
27
+ /** the control's short title. */
28
+ title: string;
29
+ }
30
+ /**
31
+ * THE HUB TABLE (§5.14 step 2): defect theme → the 800-53 rev 5 controls it
32
+ * evidences. Hand-curated to the technically-enforceable band an IaC scan can
33
+ * honestly speak to (crypto, IAM, segmentation, logging, secure-config, backup
34
+ * topology) — never the organisational/process/physical bands. The theme layer
35
+ * insulates every downstream framework from an 800-53 rev 6 restructure.
36
+ */
37
+ export declare const THEME_TO_NIST: Record<string, string[]>;
38
+ /**
39
+ * The hub-derived control refs for a set of themes: the 800-53 spine controls
40
+ * (sorted) plus every hub-layer requirement whose anchors intersect those spine
41
+ * ids. Deterministic + pure. Conservative fan-out is by design — an exposure
42
+ * finding lights all boundary controls rather than risk a false pass on a
43
+ * related one.
44
+ */
45
+ export declare function hubControlsForThemes(themes: string[]): ControlRef[];
46
+ /**
47
+ * Map a single concern to the indicative control references it touches. Matches
48
+ * the concern's `rule_id` + `evidence` (and an optional `category`) against the
49
+ * crosswalk themes; unions the controls of every theme that fires. Pure.
50
+ * Returns an empty array when nothing matches (honest — better than a forced
51
+ * mapping). De-duplicates identical control refs.
52
+ */
53
+ export declare function mapConcernToControls(concern: {
54
+ rule_id: string;
55
+ evidence: string;
56
+ category?: string;
57
+ }): {
58
+ themes: string[];
59
+ controls: ControlRef[];
60
+ };
61
+ /** The canonical payload of the curated crosswalk tables + version stamps. Pure. */
62
+ export declare function canonicalCrosswalkPayload(): string;
63
+ /** sha256 (hex) of the canonical crosswalk payload. Pure. */
64
+ export declare function crosswalkDigest(): string;
65
+ /** The digest of the crosswalk actually loaded in this build (computed once). */
66
+ export declare const CROSSWALK_DIGEST: string;
67
+ /**
68
+ * Fail-closed integrity gate. Throws when the loaded crosswalk doesn't match the
69
+ * pinned, reviewed digest — so no compliance verdict can be produced from a tampered
70
+ * or poisoned table. Every verdict-producing entry calls this. The args are injectable
71
+ * so a test can exercise the mismatch path without corrupting the real module.
72
+ */
73
+ export declare function assertCrosswalkIntegrity(actual?: string, expected?: string): void;
74
+ /** The maintained-pack control ids a concern's themes evidence (deduped, sorted).
75
+ * Empty when nothing maps. Pure. See {@link THEME_TO_PACK_CONTROLS}. */
76
+ export declare function packControlsForThemes(themes: string[]): string[];
77
+ /**
78
+ * The maintained Cloud-pack control ids a single concern maps to — the values
79
+ * the cloud report puts in each finding's `compliance[]` so the dashboard's
80
+ * control verdicts and required-control gate join on real findings. Pure.
81
+ */
82
+ export declare function packControlsForConcern(concern: {
83
+ rule_id: string;
84
+ evidence: string;
85
+ category?: string;
86
+ }): string[];
87
+ export interface ConcernForCrosswalk {
88
+ id: string;
89
+ rule_id: string;
90
+ evidence: string;
91
+ category?: string;
92
+ severity?: string;
93
+ location?: {
94
+ file: string;
95
+ line: number | null;
96
+ };
97
+ }
98
+ export interface CrosswalkEntry {
99
+ concern_id: string;
100
+ rule_id: string;
101
+ themes: string[];
102
+ controls: ControlRef[];
103
+ /** the five-status verdict for this control statement: `fail` (code-verified
104
+ * violation) or `not-code-verifiable` (a human-decision control the engine can
105
+ * flag but not prove). Lets an assessor read the crosswalk honestly. */
106
+ status: ConcernVerificationStatus;
107
+ }
108
+ export interface CrosswalkReport {
109
+ version: string;
110
+ reviewed: string;
111
+ /** per-concern control mappings (only concerns that mapped to ≥1 control). */
112
+ entries: CrosswalkEntry[];
113
+ /** framework → the distinct controls this scan touched, for an auditor index. */
114
+ by_framework: Record<string, {
115
+ control: string;
116
+ title: string;
117
+ }[]>;
118
+ /** concerns that did not map to any control (honest coverage signal). */
119
+ unmapped_concern_ids: string[];
120
+ }
121
+ /**
122
+ * Build the auditor crosswalk for a set of concerns: per-concern control refs
123
+ * plus a `by_framework` index (which controls this scan touched, deduped) and an
124
+ * honest `unmapped` list. Pure + deterministic. Carries the pack version + date
125
+ * so the report is reproducible and clearly indicative.
126
+ */
127
+ export declare function buildCrosswalkReport(concerns: ConcernForCrosswalk[]): CrosswalkReport;
128
+ /**
129
+ * The tokens a `required_controls` policy can match a concern on (lower-cased):
130
+ * each mapped control's framework, control id, `framework|control` key and title,
131
+ * the defect themes, AND the maintained-pack control ids the concern evidences.
132
+ * So a policy entry can require a whole framework ("Cyber Essentials"), a single
133
+ * control ("Secure Configuration" or "Cyber Essentials|Secure Configuration"), a
134
+ * theme ("encryption-at-rest"), or a Cloud-pack control id ("A2.1") — the last is
135
+ * what the Cloud "required controls" policy sends down via run-context. Pure.
136
+ */
137
+ export declare function controlMatchTokens(concern: {
138
+ rule_id: string;
139
+ evidence: string;
140
+ category?: string;
141
+ }): string[];
142
+ /**
143
+ * The OPEN concerns that map to at least one REQUIRED compliance control — these
144
+ * fail the CI gate regardless of severity (the 2g-vi "required control" policy:
145
+ * a CISO marks the controls that MUST stay clean, e.g. encryption-at-rest for
146
+ * SOC 2). `required` is matched case-insensitively against each concern's
147
+ * framework / control / `framework|control` / title / theme (see
148
+ * `controlMatchTokens`). Suppressed (accepted) concerns never count. Pure.
149
+ */
150
+ export declare function requiredControlViolations(concerns: Concern[], required: string[]): Concern[];
151
+ export declare const ComplianceCrosswalkParams: import("arktype/internal/variants/object.ts").ObjectType<{
152
+ concerns: {
153
+ id: string;
154
+ rule_id: string;
155
+ evidence: string;
156
+ category?: string;
157
+ severity?: string;
158
+ }[];
159
+ }, {}>;
160
+ export declare function ComplianceCrosswalkTool(ctx: LocalToolContext): import("fastmcp").Tool<any, import("@standard-schema/spec").StandardSchemaV1<{
161
+ concerns: {
162
+ id: string;
163
+ rule_id: string;
164
+ evidence: string;
165
+ category?: string;
166
+ severity?: string;
167
+ }[];
168
+ }, {
169
+ concerns: {
170
+ id: string;
171
+ rule_id: string;
172
+ evidence: string;
173
+ category?: string;
174
+ severity?: string;
175
+ }[];
176
+ }>> & {
177
+ mutates?: boolean;
178
+ };
@@ -0,0 +1 @@
1
+ export declare const EXPECTED_CROSSWALK_DIGEST = "a42bd438bbc32ba302c3bc7a74238adb97560e534f5c94d908f4e81ffe7c6a05";
@@ -0,0 +1,24 @@
1
+ import type { Concern } from "#app/mcp/terraform/types";
2
+ /**
3
+ * Cyber Essentials posture, derived from the indicative crosswalk. Pure and
4
+ * dependency-light (crosswalk + types only) so BOTH the read-only Assess report
5
+ * and the Cloud report compute the identical number from the identical inputs —
6
+ * the score is never the model's word.
7
+ */
8
+ export declare const CE_FRAMEWORK = "Cyber Essentials";
9
+ /** The Cyber Essentials control labels a concern touches (via the indicative
10
+ * crosswalk), or `[]` when it maps to none — what the finding-detail "Maps to
11
+ * Cyber Essentials" panel renders. */
12
+ export declare function cyberEssentialsControls(concern: Concern): string[];
13
+ /**
14
+ * The repo's Cyber Essentials posture as a deterministic 0–100 score — what the
15
+ * dashboard's "CE SCORE" shows. Honest by construction: only OPEN (non-suppressed)
16
+ * concerns that map to a Cyber Essentials control deduct from a perfect 100, so a
17
+ * suppressed/accepted finding or one that doesn't touch a CE control never moves
18
+ * the score, and a clean repo scores 100. Pure.
19
+ */
20
+ export declare function cyberEssentialsScore(concerns: Concern[]): number;
21
+ /** The distinct Cyber Essentials controls left at risk by the OPEN concern set —
22
+ * the "N control(s) at risk" the assessment headline names. Sorted for a stable
23
+ * report; empty when nothing open maps to a CE control. */
24
+ export declare function cyberEssentialsControlsAtRisk(concerns: Concern[]): string[];
@@ -0,0 +1,125 @@
1
+ import type { GitHubToolContext } from "#app/mcp/capabilityContext";
2
+ import type { UserFacingLanguage } from "#app/utils/payload";
3
+ /**
4
+ * The per-repo "Remediation Dashboard" issue (Renovate's single pinned
5
+ * Dependency Dashboard, mapped to Infraweaver). ONE issue per repo gives the
6
+ * maintainer a stable, at-a-glance view of the Terraform remediation state:
7
+ * which remediation PRs are open, which concern-groups are waiting (held back by
8
+ * the per-run/concurrency caps), and which findings are suppressed. A waiting
9
+ * group is opened on demand from the dashboard's Remediate button or a
10
+ * `@infraweaver fix …` comment — the surfaces that actually dispatch a run.
11
+ *
12
+ * This file is the engine seam: a pure body renderer (`buildDashboardBody`) and
13
+ * an upsert tool that finds-or-creates the single issue. Each waiting row carries
14
+ * a hidden `<!-- group:ID -->` anchor reserved for a future tick-to-request
15
+ * consumer (a Renovate-style checkbox read back on the next run); that consumer
16
+ * is not yet wired, so the body renders a plain list rather than a checkbox that
17
+ * would silently do nothing. In keeping with the product's hard rule, the
18
+ * dashboard never merges or deploys anything.
19
+ */
20
+ /** trailing marker that identifies the dashboard issue when we search for it. */
21
+ export declare const DASHBOARD_MARKER = "<!-- infraweaver:remediation-dashboard -->";
22
+ /** label applied to the dashboard issue (the primary find key + a pin target). */
23
+ export declare const DASHBOARD_LABEL = "infraweaver-dashboard";
24
+ export declare const DASHBOARD_TITLE = "Infraweaver \u2014 Remediation Dashboard";
25
+ export interface DashboardOpenPr {
26
+ number: number;
27
+ title: string;
28
+ url: string;
29
+ group_id?: string;
30
+ zombie?: boolean;
31
+ }
32
+ export interface DashboardPending {
33
+ title: string;
34
+ severity?: string;
35
+ files?: string;
36
+ group_id?: string;
37
+ reason?: string;
38
+ }
39
+ export interface DashboardSuppressed {
40
+ title: string;
41
+ reason?: string;
42
+ }
43
+ export interface DashboardData {
44
+ open_prs: DashboardOpenPr[];
45
+ pending: DashboardPending[];
46
+ suppressed?: DashboardSuppressed[];
47
+ note?: string;
48
+ }
49
+ /**
50
+ * Render the dashboard issue body (pure — no I/O). The trailing {@link
51
+ * DASHBOARD_MARKER} lets the upsert recognise the issue on the next run. The
52
+ * fixed section headers/notes are localized by the run's `language` (default
53
+ * English); the data rows (PR titles, counts, group markers) are unchanged.
54
+ */
55
+ export declare function buildDashboardBody(data: DashboardData, language?: UserFacingLanguage): string;
56
+ export declare const RemediationDashboardParams: import("arktype/internal/variants/object.ts").ObjectType<{
57
+ open_prs: {
58
+ number: number;
59
+ title: string;
60
+ url: string;
61
+ group_id?: string;
62
+ zombie?: boolean;
63
+ }[];
64
+ pending: {
65
+ title: string;
66
+ severity?: string;
67
+ files?: string;
68
+ group_id?: string;
69
+ reason?: string;
70
+ }[];
71
+ suppressed?: {
72
+ title: string;
73
+ reason?: string;
74
+ }[];
75
+ note?: string;
76
+ }, {}>;
77
+ /**
78
+ * Create or update the single per-repo Remediation Dashboard issue. Idempotent:
79
+ * finds the existing issue by the {@link DASHBOARD_LABEL} + marker and updates
80
+ * its body, else creates it. Bound by the same `push: disabled` read-only gate as
81
+ * the other issue/PR writes.
82
+ */
83
+ export declare function UpsertRemediationDashboardTool(ctx: GitHubToolContext): import("fastmcp").Tool<any, import("@standard-schema/spec").StandardSchemaV1<{
84
+ open_prs: {
85
+ number: number;
86
+ title: string;
87
+ url: string;
88
+ group_id?: string;
89
+ zombie?: boolean;
90
+ }[];
91
+ pending: {
92
+ title: string;
93
+ severity?: string;
94
+ files?: string;
95
+ group_id?: string;
96
+ reason?: string;
97
+ }[];
98
+ suppressed?: {
99
+ title: string;
100
+ reason?: string;
101
+ }[];
102
+ note?: string;
103
+ }, {
104
+ open_prs: {
105
+ number: number;
106
+ title: string;
107
+ url: string;
108
+ group_id?: string;
109
+ zombie?: boolean;
110
+ }[];
111
+ pending: {
112
+ title: string;
113
+ severity?: string;
114
+ files?: string;
115
+ group_id?: string;
116
+ reason?: string;
117
+ }[];
118
+ suppressed?: {
119
+ title: string;
120
+ reason?: string;
121
+ }[];
122
+ note?: string;
123
+ }>> & {
124
+ mutates?: boolean;
125
+ };
@@ -0,0 +1,12 @@
1
+ import type { ToolContext } from "#app/mcp/server";
2
+ /**
3
+ * start dependency installation in the background (non-blocking, idempotent).
4
+ * called eagerly from main.ts at startup and also available via MCP tools.
5
+ */
6
+ export declare function startInstallation(ctx: ToolContext): void;
7
+ export declare function StartDependencyInstallationTool(ctx: ToolContext): import("fastmcp").Tool<any, import("@standard-schema/spec").StandardSchemaV1<object, object>> & {
8
+ mutates?: boolean;
9
+ };
10
+ export declare function AwaitDependencyInstallationTool(ctx: ToolContext): import("fastmcp").Tool<any, import("@standard-schema/spec").StandardSchemaV1<object, object>> & {
11
+ mutates?: boolean;
12
+ };
@@ -0,0 +1,74 @@
1
+ /**
2
+ * The unified framework registry (§5.14 step 1).
3
+ *
4
+ * One `FrameworkDef` per compliance framework the crosswalk references, shared
5
+ * by the engine's indicative crosswalk (`crosswalk.ts`) and — by hand-sync,
6
+ * exactly like the report wire schema — the Cloud pack
7
+ * (infraweaver-ui `src/features/crosswalk/pack.ts`). Before this registry the
8
+ * engine used free-text framework names and the Cloud pack used slug ids: two
9
+ * hand-synced naming systems with nothing enforcing either.
10
+ *
11
+ * The `licence` field makes the free-only constraint MACHINE-ENFORCED: we build
12
+ * only on frameworks whose text is free to access and lawful to use
13
+ * commercially (we pay for nothing), and for paywalled/no-derivative texts we
14
+ * ship control IDS + short editorial titles only, never framework text — the
15
+ * lawful lane NIST OLIR itself uses for its ISO mappings. `crosswalk.test.ts`
16
+ * fails any crosswalk entry that embeds text against an `ids-only` licence.
17
+ */
18
+ /** What we may lawfully ship for a framework, commercially, at zero cost. */
19
+ export type FrameworkLicence =
20
+ /** US-government work / CC0 (e.g. NIST OSCAL) — full control text embeddable. */
21
+ "public-domain"
22
+ /** OGL v3 / EUR-Lex (Decision 2011/833/EU) — reproducible with attribution. */
23
+ | "open-government"
24
+ /** CC BY 4.0 — reproducible with attribution. */
25
+ | "cc-by-4.0"
26
+ /** Paywalled or no-derivatives text (ISO, CIS, AICPA) — control ids + short
27
+ * editorial titles ONLY; never reproduce the framework's own text. */
28
+ | "ids-only";
29
+ /** Whether a framework ships free in the OSS engine (`starter`) or is part of the
30
+ * maintained subscription pack (`maintained`). NOTE this is the ENGINE view: the
31
+ * Cloud `STARTER_FRAMEWORK_IDS` gate is narrower (Cyber Essentials only) because
32
+ * most `starter` frameworks here exist solely as the engine`s indicative
33
+ * narration and have no Cloud pack rows to gate. */
34
+ export type FrameworkTier = "starter" | "maintained";
35
+ export interface FrameworkDef {
36
+ /** Stable slug id — the Cloud pack / API join key. */
37
+ id: string;
38
+ /** Display name — the value the engine's `ControlRef.framework` carries. */
39
+ name: string;
40
+ /** Publishing authority, e.g. "NIST", "NCSC". */
41
+ authority: string;
42
+ /** Where the framework applies, e.g. "UK", "EU", "US", "International". */
43
+ jurisdiction: string;
44
+ /** The pinned upstream revision this crosswalk layer was authored against. */
45
+ revision: string;
46
+ /** ISO date this REGISTRY ENTRY (name/revision/licence classification) was
47
+ * last reviewed. Mapping-layer review dates live with each layer (the engine
48
+ * `CROSSWALK_REVIEWED`, the Cloud pack's per-framework `reviewed`) and
49
+ * version independently (§5.14 step 5). */
50
+ reviewed: string;
51
+ licence: FrameworkLicence;
52
+ tier: FrameworkTier;
53
+ /** Mapped through the themes → NIST 800-53 hub (`THEME_TO_NIST`) rather than
54
+ * hand-themed directly — the §5.14 "one mechanical, auditable hop" path. */
55
+ hubAnchored: boolean;
56
+ }
57
+ /** True when the licence permits embedding the framework's own control text. */
58
+ export declare function canEmbedControlText(licence: FrameworkLicence): boolean;
59
+ /**
60
+ * Every framework the crosswalk references. Ordered starter-first, then the
61
+ * NIST hub, then the remaining maintained layers.
62
+ *
63
+ * NB the slug for NCSC Cloud Security Principles is the legacy `ncsc-caf` —
64
+ * the Cloud pack and persisted `framework_reporting` rows already use it, so a
65
+ * rename is a data migration. The real CAF therefore ships as `ncsc-caf-v4`
66
+ * (B.2); when the legacy slug is eventually migrated, THAT is the moment to
67
+ * consider collapsing the version suffix — not before, because two frameworks
68
+ * would briefly answer to the same key.
69
+ */
70
+ export declare const FRAMEWORKS: readonly FrameworkDef[];
71
+ /** Look up a framework by its display name (the engine `ControlRef.framework`). */
72
+ export declare function frameworkByName(name: string): FrameworkDef | undefined;
73
+ /** Look up a framework by its slug id (the Cloud pack / API join key). */
74
+ export declare function frameworkById(id: string): FrameworkDef | undefined;
@@ -0,0 +1,28 @@
1
+ import type { StandardSchemaV1 } from "@standard-schema/spec";
2
+ import type { Tool } from "fastmcp";
3
+ import type { ToolContext } from "#app/mcp/server";
4
+ /**
5
+ * Recursively transform a JSON schema to gemini's stricter subset.
6
+ * See module header for the exact transforms applied.
7
+ */
8
+ export declare function sanitizeForGemini(schema: unknown): unknown;
9
+ export declare function wrapSchemaForGemini<S extends StandardSchemaV1<any>>(schema: S): S;
10
+ export declare function sanitizeToolForGemini<T extends Tool<any, any>>(tool: T): T;
11
+ /**
12
+ * true when the effective upstream model is — or might become — google
13
+ * generative language API traffic. matches:
14
+ * - direct `google/*`, opencode `opencode/gemini-*`, openrouter
15
+ * `openrouter/google/gemini-*` (slug substring "gemini" wins).
16
+ * - any unresolved specifier: `undefined`, `"auto"`, or a slug that
17
+ * didn't map through the alias registry (no `provider/` prefix).
18
+ * these flow through the agent's own auto-select, which may land
19
+ * on gemini *after* the MCP server has already registered tools —
20
+ * at which point sanitization is too late to apply. erring on the
21
+ * side of sanitizing is safe: cases 1 + 2 are universally
22
+ * compatible JSON-Schema normalizations (enum-only → typed string,
23
+ * collapsible const-unions → string enum); case 3 is gemini-
24
+ * specific but only fires on non-collapsible unions, which arktype
25
+ * does not emit for our current tool schemas. see issue #676 for
26
+ * the prod failure that motivated this widening.
27
+ */
28
+ export declare function isGeminiRouted(ctx: ToolContext): boolean;
@@ -0,0 +1,60 @@
1
+ import type { GitToolContext } from "#app/mcp/capabilityContext";
2
+ export declare function rejectIfLeadingDash(value: string, kind: string): void;
3
+ export declare function rejectSpecialRef(value: string, kind: string): void;
4
+ export declare function validateTagName(tag: string): void;
5
+ export declare const PushBranch: import("arktype/internal/variants/object.ts").ObjectType<{
6
+ branchName?: string;
7
+ force: import("arktype/internal/attributes.ts").Default<boolean, false>;
8
+ }, {}>;
9
+ export type PushErrorKind = "concurrent-push" | "transient" | "transient-auth" | "unknown";
10
+ export declare function classifyPushError(msg: string): PushErrorKind;
11
+ export declare function PushBranchTool(ctx: GitToolContext): import("fastmcp").Tool<any, import("@standard-schema/spec").StandardSchemaV1<{
12
+ branchName?: string;
13
+ force?: boolean;
14
+ }, {
15
+ branchName?: string;
16
+ force?: boolean;
17
+ }>> & {
18
+ mutates?: boolean;
19
+ };
20
+ export declare const AUTH_REQUIRED_REDIRECT: Record<string, string>;
21
+ export declare const NOSHELL_BLOCKED_SUBCOMMANDS: Record<string, string>;
22
+ export declare const NOSHELL_BLOCKED_ARGS: string[];
23
+ export declare const NOSHELL_BLOCKED_WRITE_ARGS: string[];
24
+ /** true when `arg` is a native-file-write flag: `--output`, `--output=<path>`,
25
+ * `-o`, or attached `-o<path>`. */
26
+ export declare function isBlockedWriteArg(arg: string): boolean;
27
+ export declare function GitTool(ctx: GitToolContext): import("fastmcp").Tool<any, import("@standard-schema/spec").StandardSchemaV1<{
28
+ command: string;
29
+ args?: string[];
30
+ }, {
31
+ command: string;
32
+ args?: string[];
33
+ }>> & {
34
+ mutates?: boolean;
35
+ };
36
+ export declare function GitFetchTool(ctx: GitToolContext): import("fastmcp").Tool<any, import("@standard-schema/spec").StandardSchemaV1<{
37
+ ref: string;
38
+ depth?: number;
39
+ }, {
40
+ ref: string;
41
+ depth?: number;
42
+ }>> & {
43
+ mutates?: boolean;
44
+ };
45
+ export declare function DeleteBranchTool(ctx: GitToolContext): import("fastmcp").Tool<any, import("@standard-schema/spec").StandardSchemaV1<{
46
+ branchName: string;
47
+ }, {
48
+ branchName: string;
49
+ }>> & {
50
+ mutates?: boolean;
51
+ };
52
+ export declare function PushTagsTool(ctx: GitToolContext): import("fastmcp").Tool<any, import("@standard-schema/spec").StandardSchemaV1<{
53
+ tag: string;
54
+ force?: boolean;
55
+ }, {
56
+ tag: string;
57
+ force?: boolean;
58
+ }>> & {
59
+ mutates?: boolean;
60
+ };