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,49 @@
1
+ export type SupportedPackageManager = "npm" | "pnpm" | "yarn" | "bun";
2
+ export interface PackageManagerSpec {
3
+ name: SupportedPackageManager;
4
+ /**
5
+ * either a concrete semver (e.g. "11.1.1") or a range (e.g. "^11.0.0").
6
+ * `concrete` distinguishes — corepack only accepts concrete versions.
7
+ */
8
+ version: string;
9
+ concrete: boolean;
10
+ /** which package.json field this came from */
11
+ source: "devEngines" | "packageManager";
12
+ }
13
+ /**
14
+ * resolve the project's intended package manager from package.json. precedence
15
+ * matches pnpm 11+: `devEngines.packageManager` wins over `packageManager`.
16
+ * when both are present, a concrete `packageManager` that satisfies a
17
+ * `devEngines` range is preferred (we can pin it via corepack); otherwise
18
+ * we warn on disagreement and stick with `devEngines`.
19
+ */
20
+ export declare function resolvePackageManagerSpec(cwd: string): Promise<PackageManagerSpec | null>;
21
+ /** the per-run directory the corepack shim is installed into. deliberately
22
+ * NOT the node bin dir: that's npm's `-g` target, and a corepack shim sitting
23
+ * there makes a customer setup script's `npm i -g pnpm` abort with EEXIST
24
+ * (npm refuses to clobber a binary it doesn't own). lives under the run
25
+ * tmpdir so it's cleaned up with everything else. */
26
+ export declare function packageManagerBinDir(tmpdir: string): string;
27
+ export interface EnsurePackageManagerParams {
28
+ spec: PackageManagerSpec;
29
+ /** directory to install the corepack shim into (see `packageManagerBinDir`).
30
+ * prepended to PATH so the pinned binary resolves by name. */
31
+ binDir: string;
32
+ }
33
+ /**
34
+ * ensure the requested package manager is on PATH at the declared version,
35
+ * provisioning via corepack when applicable. returns true if PATH now
36
+ * resolves to that version, false if we couldn't pin it (in which case
37
+ * the caller should treat PATH as untrusted and may fall back to its
38
+ * legacy install path).
39
+ *
40
+ * the corepack shim is installed into `params.binDir` (prepended to PATH),
41
+ * not the node bin dir, so a later `npm i -g pnpm` in a setup hook can't
42
+ * collide with it. our dir wins the PATH lookup, so the pinned version is
43
+ * also what resolves even if that `npm i -g` succeeds into the node bin dir.
44
+ *
45
+ * never throws: network failure, missing corepack, range-only versions —
46
+ * all degrade to "log warning, return false". the existing PATH binary
47
+ * still works; we just don't get our version guarantee.
48
+ */
49
+ export declare function ensurePackageManager(params: EnsurePackageManagerParams): Promise<boolean>;
@@ -0,0 +1,29 @@
1
+ import type { AgentUsage } from "#app/agents/shared";
2
+ import type { CloudToolContext } from "#app/mcp/capabilityContext";
3
+ /**
4
+ * Artifact tracking fields — one-off PATCHes from MCP tools as GitHub entities
5
+ * are created during the run. Strings only (GraphQL node IDs).
6
+ * Keep in sync with `STRING_FIELDS` in `app/api/workflow-run/[runId]/route.ts`.
7
+ */
8
+ export type WorkflowRunArtifactPatchKey = "prNodeId" | "issueNodeId" | "reviewNodeId" | "planCommentNodeId" | "summarySnapshot";
9
+ /**
10
+ * Usage fields — aggregated across all agent calls and PATCHed once at
11
+ * end-of-run. Token counts are Int4 on the DB side (ample for any realistic
12
+ * run); `costUsd` is a Decimal populated by provider-reported dollar amounts.
13
+ * Keep in sync with `INT_FIELDS` + `DECIMAL_FIELDS` in the server route.
14
+ */
15
+ export type WorkflowRunUsagePatchKey = "inputTokens" | "outputTokens" | "cacheReadTokens" | "cacheWriteTokens" | "costUsd";
16
+ export type WorkflowRunPatch = Partial<Record<WorkflowRunArtifactPatchKey, string>> & Partial<Record<WorkflowRunUsagePatchKey, number>>;
17
+ /** PATCH workflow-run fields (Infraweaver JWT, not GitHub). */
18
+ export declare function patchWorkflowRunFields(ctx: CloudToolContext, fields: WorkflowRunPatch): Promise<void>;
19
+ /**
20
+ * Sum per-agent usage entries into a single WorkflowRunPatch payload.
21
+ * Returns an empty object when there's nothing to report, which causes
22
+ * `patchWorkflowRunFields` to no-op — safe to call unconditionally from
23
+ * end-of-run paths. Zero-valued fields are dropped so the DB only stores
24
+ * positive sums (and NULL means "not reported").
25
+ *
26
+ * Token sums are clamped to INT4_MAX to guarantee the payload the server
27
+ * sees is always self-consistent across all numeric columns.
28
+ */
29
+ export declare function aggregateUsage(entries: AgentUsage[]): WorkflowRunPatch;
@@ -0,0 +1,249 @@
1
+ import type { PayloadEvent } from "#app/external";
2
+ import type { RepoSettings } from "#app/utils/runContext";
3
+ export declare const JsonPayload: import("arktype/internal/variants/object.ts").ObjectType<{
4
+ "~infraweaver": true;
5
+ version: string;
6
+ model?: string | undefined;
7
+ prompt: string;
8
+ triggerer?: string | undefined;
9
+ eventInstructions?: string;
10
+ previousRunsNote?: string;
11
+ event?: object;
12
+ timeout?: string | undefined;
13
+ progressComment?: {
14
+ id: string;
15
+ type: "issue" | "review";
16
+ } | undefined;
17
+ generateSummary?: boolean | undefined;
18
+ }, {}>;
19
+ export declare const Inputs: import("arktype/internal/variants/object.ts").ObjectType<{
20
+ prompt: string;
21
+ model?: string | undefined;
22
+ mode?: string | undefined;
23
+ timeout?: string | undefined;
24
+ push?: "disabled" | "enabled" | "restricted" | undefined;
25
+ shell?: "disabled" | "enabled" | "restricted" | undefined;
26
+ cwd?: string | undefined;
27
+ output_schema?: string | undefined;
28
+ scan_scope?: string | undefined;
29
+ iac_languages?: string | undefined;
30
+ language?: string | undefined;
31
+ severity_threshold?: string | undefined;
32
+ concern_ids?: string | undefined;
33
+ grouping?: string | undefined;
34
+ max_prs?: string | undefined;
35
+ max_run_tokens?: string | undefined;
36
+ pr_concurrent_limit?: string | undefined;
37
+ pr_hourly_limit?: string | undefined;
38
+ allowed_paths?: string | undefined;
39
+ base_branch?: string | undefined;
40
+ allow_replace?: string | undefined;
41
+ protected_paths?: string | undefined;
42
+ autonomy_threshold?: string | undefined;
43
+ required_controls?: string | undefined;
44
+ gitleaks?: string | undefined;
45
+ cost_increase_block_usd?: string | undefined;
46
+ module_catalogue?: string | undefined;
47
+ terratest?: string | undefined;
48
+ docs?: string | undefined;
49
+ terraform_mcp?: string | undefined;
50
+ opentofu_mcp?: string | undefined;
51
+ fix_memory?: string | undefined;
52
+ tools_enabled?: string | undefined;
53
+ tools_network?: string | undefined;
54
+ module_fetch_token?: string | undefined;
55
+ module_fetch_ssh_key?: string | undefined;
56
+ registry_token?: string | undefined;
57
+ registry_host?: string | undefined;
58
+ refactor_source?: string | undefined;
59
+ review_instructions?: string | undefined;
60
+ fp_filtering_instructions?: string | undefined;
61
+ remediation_instructions?: string | undefined;
62
+ refactor_instructions?: string | undefined;
63
+ api_token?: string | undefined;
64
+ }, {}>;
65
+ export type Inputs = typeof Inputs.infer;
66
+ export type ResolvedPromptInput = string | typeof JsonPayload.infer;
67
+ /**
68
+ * Built-in, VETTED prompts for the deterministic Terraform CI modes. When one of
69
+ * these modes is pinned via the action `mode:` input, the engine OWNS the prompt —
70
+ * a workflow-supplied prompt is ignored (see {@link resolveEffectivePrompt}) so a
71
+ * managed / Cloud-dispatched run can never be steered by free-form prompt text.
72
+ * Keyed by the canonical mode name returned by {@link parseMode}.
73
+ */
74
+ export declare const VETTED_MODE_PROMPTS: Readonly<Record<string, string>>;
75
+ export declare function resolvePromptInput(): ResolvedPromptInput;
76
+ /**
77
+ * The prompt a run actually uses. For a pinned mode that ships a vetted standard
78
+ * (the Terraform CI modes in {@link VETTED_MODE_PROMPTS}), the engine owns the
79
+ * prompt: a FREE-FORM workflow prompt is IGNORED (and warned) so it can't steer a
80
+ * managed/CI run — this is the security boundary. Two things are deliberately NOT
81
+ * overridden: the internal JSON dispatch payload (trusted), and a recognised
82
+ * `@infraweaver fix …` command (`isRemediationCommand`) — the comment-driven flow
83
+ * needs the structured command to reach the agent. Otherwise the workflow prompt is
84
+ * used, and is required when no vetted mode supplies one.
85
+ */
86
+ export declare function resolveEffectivePrompt(rawPrompt: string, fromJsonPayload: boolean, mode: string | undefined, isRemediationCommand: boolean): string;
87
+ /**
88
+ * Canonicalize the `mode` input against the built-in mode names
89
+ * (case-insensitive), resolving any control-plane alias first. Returns the
90
+ * canonical name (e.g. "remediate" → "Remediate", "refresh" →
91
+ * "RefreshRemediation") when it matches a built-in mode, letting CI pin a mode
92
+ * deterministically. Unknown non-empty values warn and return undefined so the
93
+ * agent falls back to prompt-driven `select_mode` — mirroring how an unknown
94
+ * `model` slug degrades to auto-select rather than hard-failing the run.
95
+ */
96
+ export declare function parseMode(raw: string | undefined): string | undefined;
97
+ /** parse the comma-separated `concern_ids` focus list — the specific concern ids a
98
+ * dashboard "Remediate" dispatch targets. Structured scope (like severity/paths),
99
+ * NOT task text. undefined when unset. */
100
+ export declare function parseConcernIds(raw: string | undefined): string[] | undefined;
101
+ /**
102
+ * Append an engine-owned "fix exactly these concern ids" directive to a Remediate
103
+ * run's task when the dispatch targeted specific findings (the Cloud "Remediate"
104
+ * button). The task text stays engine-owned — only the id list comes from the
105
+ * trusted dispatch — so this narrows scope without letting a customer author the
106
+ * prompt. A no-op when there are no targeted ids.
107
+ */
108
+ export declare function withConcernFocus(prompt: string, concernIds: string[] | undefined): string;
109
+ /**
110
+ * The five module-source variants a Refactor run can be pinned to. `auto` (the
111
+ * default) lets the engine pick the lowest-risk BEHAVIOUR-PRESERVING source
112
+ * (b.2 → b.1 → b.3) and deliberately excludes the behaviour-altering b.4. The
113
+ * other four map 1:1 onto the spec's b-variants and let the operator force one:
114
+ * - `same-repo` → b.2 (a module already in this repo, `./modules/x`)
115
+ * - `org-repo` → b.1 (a module in a separate org repo, fetched read-only)
116
+ * - `author` → b.3 (mechanically extract a new module)
117
+ * - `third-party` → b.4 (adopt a registry/community module — ALTERS behaviour)
118
+ * The value is structured SCOPE, never task text: the engine still owns the
119
+ * Refactor prompt (the security boundary), and this only narrows which source
120
+ * the agent may resolve to. See {@link withRefactorSource}.
121
+ */
122
+ export type RefactorSource = "auto" | "same-repo" | "org-repo" | "author" | "third-party";
123
+ /** parse the `refactor_source` input into a canonical {@link RefactorSource}.
124
+ * Unset → undefined (the consumer treats that as `auto`). An unknown value
125
+ * warns and falls back to `auto` rather than hard-failing the run (mirrors how
126
+ * an unknown `mode`/`model` degrades). */
127
+ export declare function parseRefactorSource(raw: string | undefined): RefactorSource | undefined;
128
+ /**
129
+ * Append the engine-owned module-source directive to a Refactor run's task when
130
+ * the operator pinned a `refactor_source` variant (the Cloud refactor picker, or
131
+ * the `refactor_source` action input). The task text stays engine-owned — only
132
+ * the enum comes from the trusted dispatch/input — so this narrows WHICH source
133
+ * the agent may resolve to without letting a customer author the prompt (the same
134
+ * boundary as {@link withConcernFocus}). A no-op when the variant is unset (the
135
+ * vetted prompt's own risk-ordered guidance applies).
136
+ */
137
+ export declare function withRefactorSource(prompt: string, source: RefactorSource | undefined): string;
138
+ /**
139
+ * The languages a run's user-facing PROSE can be written in. English is the
140
+ * source/default; the others are the L1 marketing languages (see
141
+ * `docs/I18N-AND-MULTI-REGION-PLAN.md` A.5). This governs LLM-authored
142
+ * explanations only — never the Terraform, the identifiers, or the evidence.
143
+ */
144
+ export type UserFacingLanguage = "en" | "de" | "es" | "pl" | "ro";
145
+ /** parse the `language:` input into a {@link UserFacingLanguage}. Unset → "en".
146
+ * Accepts a code (`de`), a regional tag (`de-DE`), or a name (`German`). An
147
+ * unknown value warns and falls back to "en" rather than hard-failing the run —
148
+ * mirroring how an unknown `mode`/`model`/`refactor_source` degrades. */
149
+ export declare function parseLanguage(raw: string | undefined): UserFacingLanguage;
150
+ /**
151
+ * Append the engine-owned "write user-facing prose in <language>" directive to a
152
+ * run's task. Structured enum input, never workflow prose — the engine still owns
153
+ * the prompt (the security boundary, same as {@link withConcernFocus} /
154
+ * {@link withRefactorSource}). A no-op for English (the default), so existing runs
155
+ * are byte-for-byte unchanged. The directive is glossary-aware: it localizes the
156
+ * EXPLANATIONS a human reads and holds every identifier, code block, path, rule
157
+ * id, control name, and the product terms verbatim in English — so a translated
158
+ * PR body never corrupts the Terraform it describes.
159
+ */
160
+ export declare function withLanguageDirective(prompt: string, language: UserFacingLanguage): string;
161
+ /** parse the base_branch override; trims and strips a leading `refs/heads/`,
162
+ * undefined when unset (downstream resolves the run-start branch / default). */
163
+ export declare function parseBaseBranch(raw: string | undefined): string | undefined;
164
+ /** parse the comma-separated allow_replace list — resource addresses (or globs,
165
+ * or `*`/`all`) permitted to be destroyed/replaced; undefined when unset. */
166
+ export declare function parseAllowReplace(raw: string | undefined): string[] | undefined;
167
+ /**
168
+ * true when `actor` is Infraweaver's own GitHub identity — the bot login
169
+ * (`infraweaver[bot]` / `infraweaverdev[bot]`) or the bare account. used to skip
170
+ * self-triggered events and to recognise Infraweaver-originated review threads
171
+ * (the never-approve-with-outstanding-findings gate). matches with or without
172
+ * the `[bot]` suffix since GraphQL and REST report the login differently.
173
+ */
174
+ export declare const isInfraweaver: (actor: string | null | undefined) => boolean;
175
+ export declare function resolvePayload(resolvedPromptInput: ResolvedPromptInput, repoSettings: RepoSettings,
176
+ /** The org's mandatory pack-control ids from the Cloud run-context (org-scoped).
177
+ * Merged with the local `required_controls` so the dashboard policy gates CI. */
178
+ orgRequiredControls?: string[],
179
+ /** Cloud-managed module credentials from the run-context (the dashboard Refactor
180
+ * dialog). A FALLBACK only — an explicit `module_fetch_token` / `registry_token`
181
+ * input always wins. undefined when none are stored for the repo. */
182
+ managedCredentials?: {
183
+ moduleFetchToken?: string;
184
+ registryToken?: string;
185
+ }): {
186
+ "~infraweaver": true;
187
+ version: string;
188
+ model: string | undefined;
189
+ mode: string | undefined;
190
+ prompt: string;
191
+ triggerer: string | undefined;
192
+ eventInstructions: string | undefined;
193
+ previousRunsNote: string | undefined;
194
+ event: PayloadEvent;
195
+ timeout: string | undefined;
196
+ cwd: string | undefined;
197
+ progressComment: {
198
+ id: string;
199
+ type: "issue" | "review";
200
+ } | undefined;
201
+ generateSummary: boolean | undefined;
202
+ push: import("#app/external").PushPermission;
203
+ shell: import("#app/external").ShellPermission;
204
+ scanScope: "diff" | "full" | undefined;
205
+ iacLanguages: string | undefined;
206
+ severityThreshold: string | undefined;
207
+ grouping: "file" | "rule" | undefined;
208
+ concernIds: string[] | undefined;
209
+ maxPrs: number | undefined;
210
+ maxRunTokens: number | undefined;
211
+ prConcurrentLimit: number | undefined;
212
+ prHourlyLimit: number | undefined;
213
+ allowedPaths: string[] | undefined;
214
+ protectedPaths: string[] | undefined;
215
+ autonomyThreshold: string | undefined;
216
+ requiredControls: string[] | undefined;
217
+ gitleaks: boolean;
218
+ costIncreaseBlockUsd: number | undefined;
219
+ moduleCatalogue: string | undefined;
220
+ terratest: boolean;
221
+ docs: boolean;
222
+ terraformMcp: boolean;
223
+ opentofuMcp: boolean;
224
+ language: UserFacingLanguage;
225
+ fixMemory: boolean;
226
+ toolsEnabled: import("#app/utils/toolSelection").ToolDirective | undefined;
227
+ toolsNetwork: import("#app/mcp/terraform/scannerEgress").ToolsNetworkDirective | undefined;
228
+ moduleFetchToken: string | undefined;
229
+ moduleFetchSshKey: string | undefined;
230
+ registryToken: string | undefined;
231
+ registryHost: string | undefined;
232
+ refactorSource: RefactorSource | undefined;
233
+ remediationCommand: import("#app/utils/remediationCommand").RemediationCommand | null;
234
+ baseBranch: string | undefined;
235
+ allowReplace: string[] | undefined;
236
+ reviewInstructions: string | undefined;
237
+ fpFilteringInstructions: string | undefined;
238
+ remediationInstructions: string | undefined;
239
+ refactorInstructions: string | undefined;
240
+ cloudApiToken: string | undefined;
241
+ };
242
+ export type ResolvedPayload = ReturnType<typeof resolvePayload>;
243
+ /**
244
+ * Parse and validate the optional `output_schema` action input. Returns the
245
+ * parsed object when present, or `undefined` when absent. Throws on invalid
246
+ * JSON or non-object payloads — these are workflow-author errors that should
247
+ * surface immediately, not silently degrade to "no schema".
248
+ */
249
+ export declare function resolveOutputSchema(): Record<string, unknown> | undefined;
@@ -0,0 +1,61 @@
1
+ import type { ToolContext } from "#app/mcp/server";
2
+ /**
3
+ * The PR-level summary snapshot is a markdown file the agent edits in place
4
+ * during a Review / IncrementalReview run. The server seeds the file with
5
+ * either the previous run's snapshot (incremental) or a stub scaffold (first
6
+ * run), lets the agent edit it with its native file-editing tools, then
7
+ * reads it back at end-of-run and persists it to `WorkflowRun.summarySnapshot`.
8
+ *
9
+ * The snapshot is an internal artifact — it is consumed by future agent runs
10
+ * as durable cross-run context, not surfaced to humans. User-visible summary
11
+ * content lives in the Review / IncrementalReview review bodies, governed by
12
+ * `src/modes/` (review.ts / incremental-review.ts).
13
+ *
14
+ * Edit-in-place avoids the output-token tax of a tool call that regurgitates
15
+ * the full snapshot, and gives incremental runs a clean surface that
16
+ * range-diffs cleanly across runs because the section headings are stable.
17
+ */
18
+ export declare const SUMMARY_FILE_NAME = "infraweaver-summary.md";
19
+ /**
20
+ * minimal seed for first-run PRs. just a header + a one-line note about
21
+ * what this file is for. structure is intentionally NOT prescribed —
22
+ * different PRs warrant different organization, and the agent should pick
23
+ * a shape that fits this PR. the agent's prompt (see selectMode.ts
24
+ * `buildSummaryAddendum`) carries the actual instructions for what to
25
+ * capture and how.
26
+ *
27
+ * keeping the seed short also makes the unchanged-from-seed gate more
28
+ * sensitive — any meaningful edit moves the file off the seed, so
29
+ * `persistSummary` can reliably skip the DB write when the agent didn't
30
+ * touch the file.
31
+ */
32
+ export declare const SUMMARY_SCAFFOLD = "# PR summary\n\n<!-- durable cross-run context. edit in place; the next agent run reads this\n before reviewing new commits. structure however serves the PR best. -->\n";
33
+ export declare function summaryFilePath(tmpdir: string): string;
34
+ /** seed the summary file with previous snapshot (incremental) or scaffold (first run). */
35
+ export declare function seedSummaryFile(params: {
36
+ tmpdir: string;
37
+ previousSnapshot: string | null;
38
+ }): Promise<string>;
39
+ /** read + validate the summary file written by the agent.
40
+ * returns null when the file is missing or fails sanity checks. */
41
+ export declare function readSummaryFile(path: string): Promise<string | null>;
42
+ /**
43
+ * Fetch the most recent persisted PR summary snapshot for this PR.
44
+ * Returns null on first-time PRs, when summary is disabled, or on any error.
45
+ * Best-effort: a transient API failure should not block the run.
46
+ */
47
+ export declare function fetchPreviousSnapshot(ctx: ToolContext, prNumber: number): Promise<string | null>;
48
+ /**
49
+ * Read the agent-edited PR summary tmpfile and persist to
50
+ * `WorkflowRun.summarySnapshot`.
51
+ *
52
+ * Best-effort: any failure is logged and does not affect the run's success
53
+ * status. Skips the PATCH when the file is byte-identical to its seed —
54
+ * persisting the seed verbatim would either re-write what the DB already has
55
+ * (on incremental runs) or serialize the placeholder scaffold (on first
56
+ * runs), neither of which is useful.
57
+ *
58
+ * Funnels through both the success path and the SIGINT/SIGTERM handler;
59
+ * `summaryPersistAttempted` guards against double-execution.
60
+ */
61
+ export declare function persistSummary(ctx: ToolContext): Promise<void>;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Shareable config presets — the Renovate `extends:` analog.
3
+ *
4
+ * A repo can write `extends: [infraweaver:recommended]` (or `:strict`,
5
+ * `:ukCyberEssentials`) in `.infraweaver.yml`/`.infraweaver.json` instead of spelling
6
+ * out every policy knob. A preset is just a named bundle of the SAME repo-level
7
+ * keys the file already supports, so resolution is a plain merge with a strict
8
+ * precedence chain:
9
+ *
10
+ * action input > the file's own keys > later preset > earlier preset
11
+ *
12
+ * i.e. an explicit value always wins over a preset, and a later entry in
13
+ * `extends` wins over an earlier one. Presets only RELAX/tune within the same
14
+ * structure the inputs validate — they can't introduce new keys or bypass the
15
+ * licence gate (a named non-permissive tool is still the repo owner's opt-in).
16
+ */
17
+ import type { InfraweaverFileValues } from "#app/utils/infraweaverConfig";
18
+ /** A preset is a partial bundle of the repo-level config keys. */
19
+ export type Preset = InfraweaverFileValues;
20
+ /**
21
+ * The built-in preset registry. Values are written in the SAME normalized string
22
+ * shape the file parser produces, so they feed the existing input parsers as-is.
23
+ */
24
+ export declare const INFRAWEAVER_PRESETS: Readonly<Record<string, Preset>>;
25
+ export interface ResolvedPresets {
26
+ values: InfraweaverFileValues;
27
+ warnings: string[];
28
+ }
29
+ /**
30
+ * Resolve an `extends` list into a merged set of config values. Unknown preset
31
+ * names are warned and skipped (degrade-green). Later presets override earlier
32
+ * ones; the caller then overlays the file's own explicit keys on top.
33
+ */
34
+ export declare function resolvePresets(names: readonly string[]): ResolvedPresets;
35
+ /** Normalize the raw `extends` value (string | string[]) into a clean name list. */
36
+ export declare function normalizeExtends(value: unknown): string[];
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Single source of truth for reading, updating, deleting, and creating "progress comments" —
3
+ * the GitHub comments Infraweaver uses to surface a run's status.
4
+ *
5
+ * A progress comment can be one of two distinct GitHub entities with non-overlapping IDs and
6
+ * distinct REST endpoints:
7
+ * - "issue": a top-level issue/PR timeline comment (octokit.rest.issues.*Comment)
8
+ * - "review": an inline PR review-thread comment (octokit.rest.pulls.*ReviewComment)
9
+ *
10
+ * Callers carry a `ProgressComment` (id + type) value end-to-end so the right endpoint is always
11
+ * picked. Adding a third comment type later means one new branch in this file, not six.
12
+ */
13
+ export type ProgressCommentType = "issue" | "review";
14
+ export type ProgressComment = {
15
+ id: number;
16
+ type: ProgressCommentType;
17
+ };
18
+ /**
19
+ * Parse the on-the-wire `{ id: string; type }` shape (the form carried in `JsonPayload`)
20
+ * into the in-memory `ProgressComment` shape. Returns undefined when the id isn't a
21
+ * positive integer so callers can short-circuit cleanly. Callers handle logging.
22
+ */
23
+ export declare function parseProgressComment(raw: {
24
+ id: string;
25
+ type: ProgressCommentType;
26
+ } | null | undefined): ProgressComment | undefined;
27
+ interface CommentResponse {
28
+ data: {
29
+ id: number;
30
+ body?: string | null | undefined;
31
+ html_url: string;
32
+ node_id?: string;
33
+ };
34
+ }
35
+ export interface ProgressCommentOctokit {
36
+ rest: {
37
+ issues: {
38
+ createComment: (params: {
39
+ owner: string;
40
+ repo: string;
41
+ issue_number: number;
42
+ body: string;
43
+ }) => Promise<CommentResponse>;
44
+ getComment: (params: {
45
+ owner: string;
46
+ repo: string;
47
+ comment_id: number;
48
+ }) => Promise<CommentResponse>;
49
+ updateComment: (params: {
50
+ owner: string;
51
+ repo: string;
52
+ comment_id: number;
53
+ body: string;
54
+ }) => Promise<CommentResponse>;
55
+ deleteComment: (params: {
56
+ owner: string;
57
+ repo: string;
58
+ comment_id: number;
59
+ }) => Promise<unknown>;
60
+ };
61
+ pulls: {
62
+ createReplyForReviewComment: (params: {
63
+ owner: string;
64
+ repo: string;
65
+ pull_number: number;
66
+ comment_id: number;
67
+ body: string;
68
+ }) => Promise<CommentResponse>;
69
+ getReviewComment: (params: {
70
+ owner: string;
71
+ repo: string;
72
+ comment_id: number;
73
+ }) => Promise<CommentResponse>;
74
+ updateReviewComment: (params: {
75
+ owner: string;
76
+ repo: string;
77
+ comment_id: number;
78
+ body: string;
79
+ }) => Promise<CommentResponse>;
80
+ deleteReviewComment: (params: {
81
+ owner: string;
82
+ repo: string;
83
+ comment_id: number;
84
+ }) => Promise<unknown>;
85
+ };
86
+ };
87
+ }
88
+ interface ApiCtx {
89
+ octokit: ProgressCommentOctokit;
90
+ owner: string;
91
+ repo: string;
92
+ }
93
+ /**
94
+ * Fetch a progress comment via the appropriate REST endpoint for its type.
95
+ * Returns the common subset of fields callers actually use.
96
+ */
97
+ export declare function getProgressComment(ctx: ApiCtx, comment: ProgressComment): Promise<{
98
+ id: number;
99
+ body: string | undefined;
100
+ html_url: string;
101
+ }>;
102
+ /**
103
+ * Update a progress comment in place via the appropriate REST endpoint.
104
+ * Returns the common subset of fields callers actually use.
105
+ */
106
+ export declare function updateProgressComment(ctx: ApiCtx, comment: ProgressComment, body: string): Promise<{
107
+ id: number;
108
+ body: string | undefined;
109
+ html_url: string;
110
+ node_id: string | undefined;
111
+ }>;
112
+ /**
113
+ * Delete a progress comment via the appropriate REST endpoint.
114
+ * Lower-level than `deleteProgressComment` in mcp/comment.ts — that one also clears
115
+ * tool state. Callers that don't have a ToolContext (post cleanup, error handlers)
116
+ * should use this directly; the higher-level wrapper delegates here.
117
+ */
118
+ export declare function deleteProgressCommentApi(ctx: ApiCtx, comment: ProgressComment): Promise<void>;
119
+ /**
120
+ * Discriminated target for `createLeapingProgressComment`. The two variants map to the two
121
+ * distinct GitHub create endpoints; review-reply additionally needs the parent comment ID.
122
+ */
123
+ export type CreateProgressCommentTarget = {
124
+ kind: "issue";
125
+ issueNumber: number;
126
+ } | {
127
+ kind: "reviewReply";
128
+ pullNumber: number;
129
+ replyToCommentId: number;
130
+ };
131
+ export interface CreatedProgressComment {
132
+ comment: ProgressComment;
133
+ body: string | undefined;
134
+ html_url: string;
135
+ }
136
+ /**
137
+ * Create the initial "Leaping into action..." progress comment.
138
+ *
139
+ * Reliability: when `kind: "reviewReply"` fails (e.g. the parent comment was deleted or the
140
+ * thread is otherwise unreachable), falls back to a top-level issue comment on the same PR
141
+ * rather than leaving the run with no progress surface. The fallback is logged.
142
+ *
143
+ * (PR # === issue # in GitHub's number space, so `pullNumber` doubles as the fallback target.)
144
+ */
145
+ export declare function createLeapingProgressComment(ctx: ApiCtx, target: CreateProgressCommentTarget, body: string): Promise<CreatedProgressComment>;
146
+ export {};
@@ -0,0 +1,31 @@
1
+ /** Stable label for the BYOK provider-billing-exhausted classification. */
2
+ export declare const PROVIDER_BILLING_EXHAUSTED_LABEL = "provider billing exhausted";
3
+ /**
4
+ * Result of a provider-error scan: the classification label plus a
5
+ * human-readable excerpt centered on the matched line. The excerpt is what
6
+ * gets surfaced in `» provider error detected (...)` log lines — see
7
+ * `extractExcerpt` for the windowing/byte-cap policy.
8
+ */
9
+ export type ProviderErrorMatch = {
10
+ label: string;
11
+ excerpt: string;
12
+ };
13
+ export declare function findProviderErrorMatch(text: string): ProviderErrorMatch | null;
14
+ export declare function detectProviderError(text: string): string | null;
15
+ export declare function isRouterKeylimitExhaustedError(text: string): boolean;
16
+ /**
17
+ * BYOK billing-exhausted: provider rejected the request because the user's
18
+ * provider wallet is empty (DeepSeek "Insufficient Balance", Anthropic
19
+ * "credit balance is too low", OpenCode Zen `CreditsError` /
20
+ * `FreeUsageLimitError`, Gemini "spending cap"). Distinct from
21
+ * `isRouterKeylimitExhaustedError` — that's Infraweaver's Router wallet, this
22
+ * is the user's own provider account.
23
+ */
24
+ export declare function isProviderBillingExhausted(text: string): boolean;
25
+ /**
26
+ * Extract `providerID=foo` from agent error logs (OpenCode emits this on
27
+ * `provider error detected (...)` lines). Returns the lowercase provider
28
+ * slug, or null when absent. Used to render a provider-specific dashboard
29
+ * link in the BYOK billing-exhausted summary.
30
+ */
31
+ export declare function extractProviderId(text: string): string | null;