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,2 @@
1
+ /** timeout for lifecycle hook scripts */
2
+ export declare const LIFECYCLE_HOOK_TIMEOUT_MS = 600000;
package/dist/main.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ export { Inputs } from "#app/utils/payload";
2
+ export interface MainResult {
3
+ success: boolean;
4
+ output?: string | undefined;
5
+ error?: string | undefined;
6
+ result?: string | undefined;
7
+ }
8
+ export declare function main(): Promise<MainResult>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,157 @@
1
+ import { type CrosswalkReport } from "#app/mcp/crosswalk";
2
+ import type { LocalToolContext } from "#app/mcp/localContext";
3
+ import { type BaselineDelta } from "#app/mcp/terraform/baseline";
4
+ import { type IacLanguage, type LanguageScope } from "#app/mcp/terraform/iacLanguages";
5
+ import { type Concern, type ScannerOutcome, type Severity } from "#app/mcp/terraform/types";
6
+ import { type VerificationSummary } from "#app/mcp/terraform/verification";
7
+ import { type ResolvedToolSelection } from "#app/utils/toolSelection";
8
+ /**
9
+ * Assess pillar — the read-only product. Infraweaver's scanner
10
+ * engine has two modes off ONE codebase: Remediate = engine + fix loop + verify;
11
+ * **Assess = engine, read-only**. This surfaces that read-only half as a
12
+ * first-class deliverable: run the deterministic scanners, normalise into the
13
+ * findings schema, map to the compliance crosswalk, and produce a
14
+ * **scorecard** + an auditor-facing markdown report — WITHOUT touching the
15
+ * Terraform or opening a PR. No cloud credentials, no writes.
16
+ *
17
+ * The scorecard is deterministic (computed from tool results, never the model's
18
+ * word) so a CI gate can branch on `posture` and an assessor gets a reproducible,
19
+ * framework-mapped report.
20
+ */
21
+ export type AssessPosture = "clean" | "advisory" | "action-required";
22
+ export interface AssessTopRisk {
23
+ rule_id: string;
24
+ severity: Severity;
25
+ file: string;
26
+ line: number | null;
27
+ evidence: string;
28
+ }
29
+ /** A finding a human explicitly accepted (a suppression with a mandatory reason).
30
+ * Surfaced as the report's audit trail — who waived what, why, and until when. */
31
+ export interface AssessWaiver {
32
+ rule_id: string;
33
+ severity: Severity;
34
+ file: string;
35
+ line: number | null;
36
+ reason: string;
37
+ source: "inline" | "policy";
38
+ expires: string | null;
39
+ }
40
+ /** Per-language breadth line for the multi-language Assess scorecard. Honest by
41
+ * construction: a language is either `scanned` (a scanner covered it) or listed
42
+ * in `unsupported` (detected, but no static scanner can assess it — e.g. Pulumi),
43
+ * never silently dropped. `by_language` counts OPEN concerns per scanned language. */
44
+ export interface AssessmentLanguages {
45
+ /** every IaC language detected in the tree (superset of scanned + unsupported). */
46
+ detected: IacLanguage[];
47
+ /** languages this run reported on (scope ∩ what a scanner can read). */
48
+ scanned: IacLanguage[];
49
+ /** file count per detected language — the breadth signal. */
50
+ file_counts: Partial<Record<IacLanguage, number>>;
51
+ /** open-concern count per scanned language (0 for a clean language). */
52
+ by_language: Partial<Record<IacLanguage, number>>;
53
+ /** detected languages NO installed scanner can statically assess — surfaced,
54
+ * never scanned-and-silent (each with the honest reason). */
55
+ unsupported: {
56
+ language: IacLanguage;
57
+ reason: string;
58
+ }[];
59
+ }
60
+ export interface AssessmentScorecard {
61
+ /** clean (0 concerns) · advisory (only medium/low/info) · action-required (≥1 critical/high). */
62
+ posture: AssessPosture;
63
+ total: number;
64
+ by_severity: Record<Severity, number>;
65
+ /** multi-language breadth: which IaC languages were detected/scanned/unsupported
66
+ * and the open-concern count per scanned language. Terraform-only trees still
67
+ * report here (just one scanned language). */
68
+ languages: AssessmentLanguages;
69
+ /** highest-severity concerns first, capped — the "what to look at first" list. */
70
+ top_risks: AssessTopRisk[];
71
+ compliance: {
72
+ /** frameworks this scan touched (from the crosswalk's by_framework index). */
73
+ frameworks: string[];
74
+ /** distinct controls touched across all frameworks. */
75
+ controls_touched: number;
76
+ /** concerns that mapped to ≥1 control vs none (honest coverage signal). */
77
+ mapped: number;
78
+ unmapped: number;
79
+ version: string;
80
+ reviewed: string;
81
+ };
82
+ /** Cyber Essentials posture (0–100, indicative) + the distinct CE controls the
83
+ * OPEN concerns leave at risk — the report headline a CISO reads first. */
84
+ cyber_essentials: {
85
+ score: number;
86
+ controls_at_risk: string[];
87
+ };
88
+ /** findings a human explicitly accepted — the report's de-emphasised audit
89
+ * trail (excluded from posture/counts above; an expired waiver auto-resurfaces). */
90
+ waivers: AssessWaiver[];
91
+ /** five-status verification taxonomy: per-concern fail / not-code-verifiable +
92
+ * the scanner coverage (verified vs inconclusive). Keeps a "clean" posture
93
+ * honest — e.g. "clean, but tflint inconclusive (not run)". */
94
+ verification: VerificationSummary;
95
+ }
96
+ /** posture from the severity distribution: any critical/high ⇒ action-required;
97
+ * any lower-severity concern ⇒ advisory; nothing ⇒ clean. */
98
+ export declare function assessPosture(bySeverity: Record<Severity, number>): AssessPosture;
99
+ /**
100
+ * Build the deterministic assessment scorecard from a scan's concerns + their
101
+ * crosswalk report. Pure. `concerns` is the OPEN (non-suppressed) severity-sorted,
102
+ * deduped, Terraform-only set — posture, counts and the CE score reflect only what
103
+ * is unresolved; `suppressed` carries the accepted findings for the audit trail.
104
+ * `crosswalk` is `buildCrosswalkReport(concerns)`.
105
+ */
106
+ export declare function buildAssessment(concerns: Concern[], crosswalk: CrosswalkReport, verification: VerificationSummary, suppressed?: Concern[], languageScope?: LanguageScope): AssessmentScorecard;
107
+ /** Optional render-time context the scorecard can't hold on its own. `delta` is
108
+ * the run-to-run change vs the committed baseline checkpoint (null when no
109
+ * baseline exists — there's nothing to compare against). */
110
+ export interface AssessRenderContext {
111
+ delta?: {
112
+ delta: BaselineDelta;
113
+ since: string | null;
114
+ } | null;
115
+ }
116
+ /**
117
+ * Render the scorecard as a deterministic, auditor-facing markdown report (the
118
+ * Assess deliverable). Built entirely from the scorecard so it's reproducible and
119
+ * model-independent. Pure.
120
+ */
121
+ export declare function renderAssessmentMarkdown(s: AssessmentScorecard, ctx?: AssessRenderContext): string;
122
+ export declare const TerraformAssessParams: import("arktype/internal/variants/object.ts").ObjectType<{
123
+ severity_threshold?: "critical" | "high" | "info" | "low" | "medium";
124
+ }, {}>;
125
+ /** the full read-only assessment pipeline: scan (honouring the licence gate
126
+ * + module-fetch credential) → crosswalk → verification taxonomy → scorecard.
127
+ * Shared by `terraform_assess` and the evidence-bundle emitter so both report the
128
+ * identical posture from the identical toolchain. Pure-ish (only the scanners do
129
+ * I/O); no writes. */
130
+ export declare function runAssessmentPipeline(ctx: LocalToolContext, threshold: Severity): {
131
+ cwd: string;
132
+ selection: ResolvedToolSelection;
133
+ /** the resolved multi-language scope (detected / scanned / unsupported). */
134
+ languageScope: LanguageScope;
135
+ outcomes: ScannerOutcome[];
136
+ /** the full annotated set (suppression metadata attached) — what the Cloud report needs. */
137
+ concerns: Concern[];
138
+ /** the OPEN subset — what posture/score/crosswalk reflect. */
139
+ open: Concern[];
140
+ /** the accepted/waived subset — the audit trail. */
141
+ suppressed: Concern[];
142
+ crosswalk: CrosswalkReport;
143
+ verification: VerificationSummary;
144
+ scorecard: AssessmentScorecard;
145
+ /** run-to-run change vs the committed baseline; null when no baseline exists. */
146
+ delta: {
147
+ delta: BaselineDelta;
148
+ since: string | null;
149
+ } | null;
150
+ };
151
+ export declare function TerraformAssessTool(ctx: LocalToolContext): import("fastmcp").Tool<any, import("@standard-schema/spec").StandardSchemaV1<{
152
+ severity_threshold?: "critical" | "high" | "info" | "low" | "medium";
153
+ }, {
154
+ severity_threshold?: "critical" | "high" | "info" | "low" | "medium";
155
+ }>> & {
156
+ mutates?: boolean;
157
+ };
@@ -0,0 +1,71 @@
1
+ import type { AgentId } from "#app/external";
2
+ import type { ToolState } from "#app/toolState";
3
+ import type { OctokitWithPlugins } from "#app/utils/github";
4
+ import type { ResolvedPayload } from "#app/utils/payload";
5
+ import type { RunContextData } from "#app/utils/runContextData";
6
+ /**
7
+ * Capability contexts: the narrow, per-family subsets of the 28-field
8
+ * `ToolContext` (see `mcp/server.ts`). Each interface is a structural subset, so
9
+ * the full `ToolContext` is assignable to it — the server wires every tool with
10
+ * one `ToolContext` and each factory sees only the capability it declares.
11
+ *
12
+ * The point is the TEST SURFACE. A git tool typed `GitToolContext` is unit-tested
13
+ * by constructing seven real fields with real types — not a 28-field object cast
14
+ * `as unknown as ToolContext`, whose cast hides whichever field the tool actually
15
+ * reaches for. `LocalToolContext` (see `mcp/localContext.ts`) is the cwd-scoped
16
+ * member of this same family; these three add the GitHub / git / cloud surfaces.
17
+ *
18
+ * `payload` and `toolState` stay their full shared types — they are legitimately
19
+ * broad state carriers every family reads, and narrowing them buys nothing for
20
+ * the test surface (a fixture builds them either way). What each interface drops
21
+ * is the top-level capability fields a family never touches: a cloud tool needn't
22
+ * fabricate an `octokit`, a git tool needn't fabricate an `apiToken`.
23
+ */
24
+ /**
25
+ * GitHub REST/GraphQL capability: the authenticated `octokit` client, the repo
26
+ * coordinates it addresses, the installation token (raw-asset fetch), and the
27
+ * review-surface fields (`agentId` for tool-ref rendering, `prApproveEnabled`).
28
+ * The home of the ~15 issue/PR/review/comment/label tools.
29
+ */
30
+ export interface GitHubToolContext {
31
+ octokit: OctokitWithPlugins;
32
+ githubInstallationToken: string;
33
+ repo: RunContextData["repo"];
34
+ payload: ResolvedPayload;
35
+ toolState: ToolState;
36
+ tmpdir: string;
37
+ agentId: AgentId;
38
+ prApproveEnabled: boolean;
39
+ }
40
+ /**
41
+ * Git capability: the token pushes authenticate with, the single-flight re-minter
42
+ * (`refreshGitToken`), the prepush lifecycle hook, and the repo/payload/state the
43
+ * push guardrails read. No `octokit` — the git tools shell out, they don't call
44
+ * the API.
45
+ */
46
+ export interface GitToolContext {
47
+ gitToken: string;
48
+ refreshGitToken?: ((stale: string) => Promise<string>) | undefined;
49
+ prepushScript: string | null;
50
+ repo: RunContextData["repo"];
51
+ payload: ResolvedPayload;
52
+ toolState: ToolState;
53
+ tmpdir: string;
54
+ }
55
+ /**
56
+ * Cloud capability: the identity a tool presents to Infraweaver Cloud — the run's
57
+ * `api_token` (a `tmnd_`/`tmpx_` bearer) and its `runId`. Consumed by the upload
58
+ * tool and by `patchWorkflowRunFields`. See `utils/cloudClient.ts` (E3).
59
+ */
60
+ export interface CloudToolContext {
61
+ apiToken: string;
62
+ runId: number | undefined;
63
+ }
64
+ /**
65
+ * The write tools that create a GitHub artifact AND report its node-id back to
66
+ * Cloud via `patchWorkflowRunFields` (create_pull_request, create_issue,
67
+ * create_review, the plan-comment writers) genuinely span two capabilities: the
68
+ * GitHub surface plus the cloud identity. Naming the intersection keeps their
69
+ * signatures honest about both.
70
+ */
71
+ export type GitHubWriteToolContext = GitHubToolContext & CloudToolContext;
@@ -0,0 +1,52 @@
1
+ import type { BaseBranchContext } from "#app/mcp/pr";
2
+ /**
3
+ * AI PR summaries — the deterministic Terraform-change anchor. A PR summary
4
+ * written purely by the model drifts (miscounts resources, invents changes). This
5
+ * parses the PR's unified diff for Terraform BLOCK changes (which resource /
6
+ * module / data / variable / output addresses were added or removed, which files
7
+ * were touched) so the human-readable summary is anchored to facts, not prose.
8
+ *
9
+ * Pure parser (`summarizeTerraformResourceDiff`) + a tool that runs the
10
+ * merge-base diff and feeds it in. Block ADDED/REMOVED is precise (a block header
11
+ * on a +/- line); in-place edits to an existing block surface as a touched FILE
12
+ * (attributing a sub-block edit to a specific address needs full-file parsing —
13
+ * we stay honest and report the file rather than guess).
14
+ */
15
+ export interface TerraformChangeSummary {
16
+ /** addresses of blocks added in this diff (e.g. `aws_s3_bucket.logs`, `module.vpc`). */
17
+ added: string[];
18
+ /** addresses of blocks removed in this diff. */
19
+ removed: string[];
20
+ /** Terraform files touched (a superset signal — includes in-place edits). */
21
+ files: string[];
22
+ counts: {
23
+ added: number;
24
+ removed: number;
25
+ files: number;
26
+ };
27
+ }
28
+ /**
29
+ * Parse a Terraform block header into its address, or null when the line is not a
30
+ * top-level block header. Handles two-label blocks (`resource`/`data`) and
31
+ * single-label blocks (`module`/`variable`/`output`/`provider`). The line is the
32
+ * raw HCL (diff +/- prefix already stripped). Pure.
33
+ */
34
+ export declare function parseBlockAddress(line: string): string | null;
35
+ /**
36
+ * Summarise a unified `git diff` into added/removed Terraform block addresses +
37
+ * the touched Terraform files. Tracks the current file from `+++ b/<path>`
38
+ * headers and only considers `.tf`/`.tfvars` files. Pure; deterministic ordering
39
+ * (sorted, de-duplicated). A block counted as both added and removed (moved) is
40
+ * left in both lists — the prose can describe the move.
41
+ */
42
+ export declare function summarizeTerraformResourceDiff(diff: string): TerraformChangeSummary;
43
+ export declare const TerraformChangeSummaryParams: import("arktype/internal/variants/object.ts").ObjectType<{
44
+ base?: string;
45
+ }, {}>;
46
+ export declare function TerraformChangeSummaryTool(ctx: BaseBranchContext): import("fastmcp").Tool<any, import("@standard-schema/spec").StandardSchemaV1<{
47
+ base?: string;
48
+ }, {
49
+ base?: string;
50
+ }>> & {
51
+ mutates?: boolean;
52
+ };
@@ -0,0 +1,27 @@
1
+ import type { GitHubToolContext } from "#app/mcp/capabilityContext";
2
+ export declare const GetCheckSuiteLogs: import("arktype/internal/variants/object.ts").ObjectType<{
3
+ check_suite_id: number;
4
+ }, {}>;
5
+ type LogLine = {
6
+ line: number;
7
+ content: string;
8
+ type: "error" | "warning" | "failure" | "trace";
9
+ };
10
+ type LogAnalysis = {
11
+ totalLines: number;
12
+ index: LogLine[];
13
+ excerpt: {
14
+ content: string;
15
+ startLine: number;
16
+ endLine: number;
17
+ };
18
+ };
19
+ export declare function analyzeLog(logs: string, excerptLines?: number): LogAnalysis;
20
+ export declare function GetCheckSuiteLogsTool(ctx: GitHubToolContext): import("fastmcp").Tool<any, import("@standard-schema/spec").StandardSchemaV1<{
21
+ check_suite_id: number;
22
+ }, {
23
+ check_suite_id: number;
24
+ }>> & {
25
+ mutates?: boolean;
26
+ };
27
+ export {};
@@ -0,0 +1,92 @@
1
+ import type { RestEndpointMethodTypes } from "@octokit/rest";
2
+ import type { GitHubToolContext, GitToolContext } from "#app/mcp/capabilityContext";
3
+ /**
4
+ * checkout_pr genuinely spans two capabilities: it reads the PR + its files over
5
+ * the GitHub API AND fetches/checks-out the branch over git, then runs the
6
+ * post-checkout lifecycle hook. Its context is the honest intersection of both
7
+ * surfaces plus that one lifecycle script.
8
+ */
9
+ type CheckoutToolContext = GitHubToolContext & GitToolContext & {
10
+ postCheckoutScript: string | null;
11
+ };
12
+ type PullFile = RestEndpointMethodTypes["pulls"]["listFiles"]["response"]["data"][number];
13
+ export type FormatFilesResult = {
14
+ content: string;
15
+ toc: string;
16
+ };
17
+ export type FetchAndFormatPrDiffResult = FormatFilesResult & {
18
+ files: PullFile[];
19
+ };
20
+ /**
21
+ * formats PR files with explicit line numbers for each code line.
22
+ * preserves all original diff info (file headers, hunk headers) and adds:
23
+ * | OLD | NEW | TYPE | code
24
+ * returns both the formatted content and a TOC with line ranges per file.
25
+ */
26
+ export declare function formatFilesWithLineNumbers(files: PullFile[]): FormatFilesResult;
27
+ export declare const CheckoutPr: import("arktype/internal/variants/object.ts").ObjectType<{
28
+ pull_number: number;
29
+ }, {}>;
30
+ export type CheckoutPrResult = {
31
+ success: true;
32
+ number: number;
33
+ title: string;
34
+ body: string | null;
35
+ base: string;
36
+ localBranch: string;
37
+ remoteBranch: string;
38
+ isFork: boolean;
39
+ maintainerCanModify: boolean;
40
+ url: string;
41
+ headRepo: string;
42
+ diffPath: string;
43
+ incrementalDiffPath?: string | undefined;
44
+ /** supplemental, explicitly-incomplete change-impact leads (references to the
45
+ * PR's changed HCL declarations). Absent when no TF declarations changed or
46
+ * generation was disabled/failed. Never a coverage source. */
47
+ impactPath?: string | undefined;
48
+ toc: string;
49
+ commitCount: number;
50
+ commitLog: string;
51
+ /** true when commitLog was capped because the PR has more commits than we render */
52
+ commitLogTruncated: boolean;
53
+ /** true when commit metadata could not be computed (e.g. base ref unreachable after shallow fetch). commitCount/commitLog are zero/empty in that case, not "no commits". */
54
+ commitLogUnavailable: boolean;
55
+ /** non-fatal warning from the post-checkout lifecycle hook, if any */
56
+ hookWarning?: string | undefined;
57
+ instructions: string;
58
+ };
59
+ /**
60
+ * fetches PR files from GitHub and formats them with line numbers and TOC.
61
+ * this is the core diff formatting logic, extracted for testability.
62
+ */
63
+ export declare function fetchAndFormatPrDiff(ctx: CheckoutToolContext, pullNumber: number): Promise<FetchAndFormatPrDiffResult>;
64
+ import { type GitContext } from "#app/utils/setup";
65
+ export type PrData = {
66
+ number: number;
67
+ headSha: string;
68
+ headRef: string;
69
+ headRepoFullName: string;
70
+ baseRef: string;
71
+ baseRepoFullName: string;
72
+ maintainerCanModify: boolean;
73
+ };
74
+ type CheckoutPrBranchParams = GitContext & {
75
+ beforeSha?: string | undefined;
76
+ };
77
+ /**
78
+ * Shared helper to checkout a PR branch and configure fork remotes.
79
+ * Assumes origin remote is already configured with authentication.
80
+ * Updates toolState.issueNumber, toolState.checkoutSha, and toolState.pushUrl (for fork PRs).
81
+ */
82
+ export declare function checkoutPrBranch(pr: PrData, params: CheckoutPrBranchParams): Promise<{
83
+ hookWarning?: string | undefined;
84
+ }>;
85
+ export declare function CheckoutPrTool(ctx: CheckoutToolContext): import("fastmcp").Tool<any, import("@standard-schema/spec").StandardSchemaV1<{
86
+ pull_number: number;
87
+ }, {
88
+ pull_number: number;
89
+ }>> & {
90
+ mutates?: boolean;
91
+ };
92
+ export {};
@@ -0,0 +1,127 @@
1
+ import type { GitHubToolContext, GitHubWriteToolContext } from "#app/mcp/capabilityContext";
2
+ export { isLeapingIntoActionCommentBody, LEAPING_INTO_ACTION_PREFIX, } from "#app/utils/leapingComment";
3
+ export declare function addFooter(ctx: GitHubToolContext, body: string): string;
4
+ export declare const Comment: import("arktype/internal/variants/object.ts").ObjectType<{
5
+ issueNumber: number;
6
+ body: string;
7
+ type?: "Comment" | "Plan";
8
+ }, {}>;
9
+ export declare function CreateCommentTool(ctx: GitHubWriteToolContext): import("fastmcp").Tool<any, import("@standard-schema/spec").StandardSchemaV1<{
10
+ issueNumber: number;
11
+ body: string;
12
+ type?: "Comment" | "Plan";
13
+ }, {
14
+ issueNumber: number;
15
+ body: string;
16
+ type?: "Comment" | "Plan";
17
+ }>> & {
18
+ mutates?: boolean;
19
+ };
20
+ export declare const EditComment: import("arktype/internal/variants/object.ts").ObjectType<{
21
+ commentId: number;
22
+ body: string;
23
+ }, {}>;
24
+ export declare function EditCommentTool(ctx: GitHubWriteToolContext): import("fastmcp").Tool<any, import("@standard-schema/spec").StandardSchemaV1<{
25
+ commentId: number;
26
+ body: string;
27
+ }, {
28
+ commentId: number;
29
+ body: string;
30
+ }>> & {
31
+ mutates?: boolean;
32
+ };
33
+ export declare const ReportProgress: import("arktype/internal/variants/object.ts").ObjectType<{
34
+ body: string;
35
+ target_plan_comment?: boolean;
36
+ }, {}>;
37
+ /**
38
+ * Report progress to a GitHub comment.
39
+ *
40
+ * progressComment has three states:
41
+ * - undefined: no comment yet — will create one if an issue/PR target exists
42
+ * - object: active comment — will update it in place via the right REST endpoint for its type
43
+ * - null: deliberately deleted (e.g. after submitting a PR review) — skips silently
44
+ *
45
+ * The body is tracked in lastProgressBody for the job summary regardless of comment state,
46
+ * EXCEPT for `liveProgress` (todo-tracker) writes — see the param note below.
47
+ *
48
+ * The "existing plan comment" path always targets a top-level issue comment (plan comments are
49
+ * created by create_issue_comment with type:"Plan", never as review-thread replies).
50
+ */
51
+ export declare function reportProgress(ctx: GitHubWriteToolContext, params: {
52
+ body: string;
53
+ target_plan_comment?: boolean;
54
+ liveProgress?: boolean;
55
+ }): Promise<{
56
+ commentId?: number;
57
+ url?: string;
58
+ body: string;
59
+ action: "created" | "updated" | "skipped";
60
+ }>;
61
+ export declare function ReportProgressTool(ctx: GitHubWriteToolContext): import("fastmcp").Tool<any, import("@standard-schema/spec").StandardSchemaV1<{
62
+ body: string;
63
+ target_plan_comment?: boolean;
64
+ }, {
65
+ body: string;
66
+ target_plan_comment?: boolean;
67
+ }>> & {
68
+ mutates?: boolean;
69
+ };
70
+ /**
71
+ * Delete the progress comment if it exists.
72
+ * Used by main.ts for stranded-comment cleanup (orphaned "Leaping into action" or
73
+ * checklist left by the todo tracker when the agent didn't call report_progress).
74
+ * Sets progressComment to null so subsequent report_progress calls are no-ops.
75
+ */
76
+ export declare function deleteProgressComment(ctx: GitHubWriteToolContext): Promise<boolean>;
77
+ export declare const ReplyToReviewComment: import("arktype/internal/variants/object.ts").ObjectType<{
78
+ pull_number: number;
79
+ comment_id: number;
80
+ body: string;
81
+ }, {}>;
82
+ /**
83
+ * decision returned by `duplicateReplyDecision` when a session has already
84
+ * posted an identical reply to the same parent review comment.
85
+ */
86
+ export interface DuplicateReplyDecision {
87
+ kind: "already-replied";
88
+ commentId: number;
89
+ url: string | undefined;
90
+ reason: string;
91
+ }
92
+ /**
93
+ * decide whether a second reply_to_review_comment call in the same session
94
+ * is a duplicate of an earlier reply to the same parent comment.
95
+ *
96
+ * the agent is instructed to call reply_to_review_comment exactly once per
97
+ * parent comment per AddressReviews session, but in practice it sometimes
98
+ * emits the same call twice. PR #610 reproduced this with Kimi K2:
99
+ * identical body posted 3 seconds apart, only one tool_use event in the
100
+ * agent log. the second post is always redundant and clutters the PR thread.
101
+ *
102
+ * we key on (comment_id, bodyWithFooter) so a legitimate follow-up reply
103
+ * with different content still goes through. within a single run the
104
+ * footer is constant (workflow run + model + jobId), so byte-equal bodies
105
+ * catch the stutter without blocking real follow-ups.
106
+ *
107
+ * mirrors the shape of `duplicateReviewDecision` in mcp/review.ts.
108
+ */
109
+ export declare function duplicateReplyDecision(params: {
110
+ existing: {
111
+ commentId: number;
112
+ url: string | undefined;
113
+ bodyWithFooter: string;
114
+ } | undefined;
115
+ bodyWithFooter: string;
116
+ }): DuplicateReplyDecision | null;
117
+ export declare function ReplyToReviewCommentTool(ctx: GitHubWriteToolContext): import("fastmcp").Tool<any, import("@standard-schema/spec").StandardSchemaV1<{
118
+ pull_number: number;
119
+ comment_id: number;
120
+ body: string;
121
+ }, {
122
+ pull_number: number;
123
+ comment_id: number;
124
+ body: string;
125
+ }>> & {
126
+ mutates?: boolean;
127
+ };
@@ -0,0 +1,11 @@
1
+ import type { GitHubToolContext } from "#app/mcp/capabilityContext";
2
+ export declare const CommitInfo: import("arktype/internal/variants/object.ts").ObjectType<{
3
+ sha: string;
4
+ }, {}>;
5
+ export declare function CommitInfoTool(ctx: GitHubToolContext): import("fastmcp").Tool<any, import("@standard-schema/spec").StandardSchemaV1<{
6
+ sha: string;
7
+ }, {
8
+ sha: string;
9
+ }>> & {
10
+ mutates?: boolean;
11
+ };