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.
- package/LICENSE +661 -0
- package/README.md +244 -0
- package/dist/agents/claude.d.ts +113 -0
- package/dist/agents/claudePretoolGate.d.ts +137 -0
- package/dist/agents/dispatchMetrics.d.ts +77 -0
- package/dist/agents/gateServer.d.ts +7 -0
- package/dist/agents/index.d.ts +6 -0
- package/dist/agents/nativeFsDenies.d.ts +46 -0
- package/dist/agents/opencode.d.ts +284 -0
- package/dist/agents/opencodePlugin.d.ts +96 -0
- package/dist/agents/opencodeShared.d.ts +40 -0
- package/dist/agents/postRun.d.ts +126 -0
- package/dist/agents/reviewer.d.ts +41 -0
- package/dist/agents/sessionLabeler.d.ts +97 -0
- package/dist/agents/shared.d.ts +246 -0
- package/dist/agents/subagentModels.d.ts +19 -0
- package/dist/agents/tokenQuota.d.ts +118 -0
- package/dist/agents/writeGateSource.d.ts +22 -0
- package/dist/agents/writePolicy.d.ts +79 -0
- package/dist/brand.d.ts +67 -0
- package/dist/cli.mjs +247846 -0
- package/dist/external.d.ts +227 -0
- package/dist/i18n/scaffolding.d.ts +59 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +247061 -0
- package/dist/internal/index.d.ts +18 -0
- package/dist/internal.js +2398 -0
- package/dist/lifecycle.d.ts +2 -0
- package/dist/main.d.ts +8 -0
- package/dist/mcp/arkConfig.d.ts +1 -0
- package/dist/mcp/assess.d.ts +157 -0
- package/dist/mcp/capabilityContext.d.ts +71 -0
- package/dist/mcp/changeSummary.d.ts +52 -0
- package/dist/mcp/checkSuite.d.ts +27 -0
- package/dist/mcp/checkout.d.ts +92 -0
- package/dist/mcp/comment.d.ts +127 -0
- package/dist/mcp/commitInfo.d.ts +11 -0
- package/dist/mcp/crosswalk.d.ts +178 -0
- package/dist/mcp/crosswalkDigest.d.ts +1 -0
- package/dist/mcp/cyberEssentials.d.ts +24 -0
- package/dist/mcp/dashboard.d.ts +125 -0
- package/dist/mcp/dependencies.d.ts +12 -0
- package/dist/mcp/frameworks.d.ts +74 -0
- package/dist/mcp/geminiSanitizer.d.ts +28 -0
- package/dist/mcp/git.d.ts +60 -0
- package/dist/mcp/guardrails.d.ts +222 -0
- package/dist/mcp/issue.d.ts +20 -0
- package/dist/mcp/issueComments.d.ts +11 -0
- package/dist/mcp/issueEvents.d.ts +11 -0
- package/dist/mcp/issueInfo.d.ts +11 -0
- package/dist/mcp/labels.d.ts +14 -0
- package/dist/mcp/localContext.d.ts +26 -0
- package/dist/mcp/moduleExtraction.d.ts +79 -0
- package/dist/mcp/moduleTests.d.ts +106 -0
- package/dist/mcp/modules.d.ts +198 -0
- package/dist/mcp/output.d.ts +16 -0
- package/dist/mcp/pathSafety.d.ts +14 -0
- package/dist/mcp/policy.d.ts +50 -0
- package/dist/mcp/pr.d.ts +64 -0
- package/dist/mcp/prInfo.d.ts +11 -0
- package/dist/mcp/providerSchema.d.ts +52 -0
- package/dist/mcp/review.d.ts +212 -0
- package/dist/mcp/reviewComments.d.ts +245 -0
- package/dist/mcp/roots.d.ts +60 -0
- package/dist/mcp/scope.d.ts +26 -0
- package/dist/mcp/selectMode.d.ts +20 -0
- package/dist/mcp/server.d.ts +61 -0
- package/dist/mcp/shared.d.ts +62 -0
- package/dist/mcp/shell.d.ts +58 -0
- package/dist/mcp/staleFix.d.ts +138 -0
- package/dist/mcp/terraform/azurePrices.d.ts +8 -0
- package/dist/mcp/terraform/baseline.d.ts +57 -0
- package/dist/mcp/terraform/concernResult.d.ts +38 -0
- package/dist/mcp/terraform/cost.d.ts +55 -0
- package/dist/mcp/terraform/cspm.d.ts +80 -0
- package/dist/mcp/terraform/currency.d.ts +110 -0
- package/dist/mcp/terraform/decisions.d.ts +178 -0
- package/dist/mcp/terraform/eidas.d.ts +100 -0
- package/dist/mcp/terraform/evidence.d.ts +343 -0
- package/dist/mcp/terraform/findings.d.ts +76 -0
- package/dist/mcp/terraform/fixMemory.d.ts +81 -0
- package/dist/mcp/terraform/governance.d.ts +56 -0
- package/dist/mcp/terraform/hcl.d.ts +115 -0
- package/dist/mcp/terraform/iacLanguages.d.ts +120 -0
- package/dist/mcp/terraform/idleFloor.d.ts +78 -0
- package/dist/mcp/terraform/keyless.d.ts +68 -0
- package/dist/mcp/terraform/moduleDocs.d.ts +56 -0
- package/dist/mcp/terraform/nativeRules.d.ts +38 -0
- package/dist/mcp/terraform/nativeScan.d.ts +11 -0
- package/dist/mcp/terraform/noiseProfile.d.ts +100 -0
- package/dist/mcp/terraform/normalization.d.ts +52 -0
- package/dist/mcp/terraform/oscal.d.ts +103 -0
- package/dist/mcp/terraform/packs/azurerm-3-4.d.ts +2 -0
- package/dist/mcp/terraform/packs/cloudflare-4-5.d.ts +2 -0
- package/dist/mcp/terraform/paths.d.ts +28 -0
- package/dist/mcp/terraform/plan.d.ts +157 -0
- package/dist/mcp/terraform/planDrift.d.ts +199 -0
- package/dist/mcp/terraform/policyAuthor.d.ts +191 -0
- package/dist/mcp/terraform/prowlerOcsf.d.ts +136 -0
- package/dist/mcp/terraform/refactor.d.ts +183 -0
- package/dist/mcp/terraform/registry.d.ts +108 -0
- package/dist/mcp/terraform/risk.d.ts +41 -0
- package/dist/mcp/terraform/scanSession.d.ts +116 -0
- package/dist/mcp/terraform/scannerCache.d.ts +15 -0
- package/dist/mcp/terraform/scannerEgress.d.ts +72 -0
- package/dist/mcp/terraform/scannerJson.d.ts +13 -0
- package/dist/mcp/terraform/scanners.d.ts +205 -0
- package/dist/mcp/terraform/signing.d.ts +61 -0
- package/dist/mcp/terraform/stateLocking.d.ts +18 -0
- package/dist/mcp/terraform/subprocess.d.ts +43 -0
- package/dist/mcp/terraform/suppressions.d.ts +90 -0
- package/dist/mcp/terraform/taxonomy.d.ts +39 -0
- package/dist/mcp/terraform/tfquery.d.ts +47 -0
- package/dist/mcp/terraform/toolchainIntegrity.d.ts +82 -0
- package/dist/mcp/terraform/tools/authorPolicy.d.ts +59 -0
- package/dist/mcp/terraform/tools/detectPlanDrift.d.ts +20 -0
- package/dist/mcp/terraform/tools/emitCost.d.ts +11 -0
- package/dist/mcp/terraform/tools/emitSarif.d.ts +14 -0
- package/dist/mcp/terraform/tools/fixMemory.d.ts +19 -0
- package/dist/mcp/terraform/tools/infracostDiff.d.ts +22 -0
- package/dist/mcp/terraform/tools/ingestExternalFindings.d.ts +21 -0
- package/dist/mcp/terraform/tools/moduleLookup.d.ts +14 -0
- package/dist/mcp/terraform/tools/moduleSearch.d.ts +23 -0
- package/dist/mcp/terraform/tools/plan.d.ts +59 -0
- package/dist/mcp/terraform/tools/providerUpgrade.d.ts +55 -0
- package/dist/mcp/terraform/tools/readFindings.d.ts +17 -0
- package/dist/mcp/terraform/tools/scan.d.ts +114 -0
- package/dist/mcp/terraform/tools/validate.d.ts +31 -0
- package/dist/mcp/terraform/tools/verifyRemediation.d.ts +31 -0
- package/dist/mcp/terraform/tools/versionCurrency.d.ts +5 -0
- package/dist/mcp/terraform/tools.d.ts +16 -0
- package/dist/mcp/terraform/transformPacks.d.ts +267 -0
- package/dist/mcp/terraform/types.d.ts +226 -0
- package/dist/mcp/terraform/verification.d.ts +81 -0
- package/dist/mcp/terraform/vex.d.ts +115 -0
- package/dist/mcp/terraform/writeOnly.d.ts +67 -0
- package/dist/mcp/terraform.d.ts +51 -0
- package/dist/mcp/terratest.d.ts +85 -0
- package/dist/mcp/untrustedContent.d.ts +76 -0
- package/dist/mcp/upload.d.ts +8 -0
- package/dist/models.d.ts +181 -0
- package/dist/modes/address-reviews.d.ts +2 -0
- package/dist/modes/assess.d.ts +2 -0
- package/dist/modes/build.d.ts +2 -0
- package/dist/modes/compliance-audit.d.ts +2 -0
- package/dist/modes/cost-optimization.d.ts +2 -0
- package/dist/modes/drift-detect.d.ts +2 -0
- package/dist/modes/fix.d.ts +2 -0
- package/dist/modes/incremental-review.d.ts +2 -0
- package/dist/modes/index.d.ts +24 -0
- package/dist/modes/modernize-deprecated.d.ts +2 -0
- package/dist/modes/plan.d.ts +2 -0
- package/dist/modes/policy-gate.d.ts +2 -0
- package/dist/modes/prFormats.d.ts +3 -0
- package/dist/modes/refactor.d.ts +2 -0
- package/dist/modes/refresh-remediation.d.ts +2 -0
- package/dist/modes/remediate-and-refactor.d.ts +2 -0
- package/dist/modes/remediate.d.ts +2 -0
- package/dist/modes/resolve-conflicts.d.ts +2 -0
- package/dist/modes/review.d.ts +2 -0
- package/dist/modes/summarize-pr.d.ts +2 -0
- package/dist/modes/task.d.ts +2 -0
- package/dist/modes/terraform-code-review.d.ts +2 -0
- package/dist/modes/types.d.ts +9 -0
- package/dist/modes/update-dependencies.d.ts +2 -0
- package/dist/prep/index.d.ts +7 -0
- package/dist/prep/installNodeDependencies.d.ts +2 -0
- package/dist/prep/installPythonDependencies.d.ts +2 -0
- package/dist/prep/types.d.ts +31 -0
- package/dist/reviewQuality.d.ts +107 -0
- package/dist/skills/terraform-best-practices/SKILL.md +379 -0
- package/dist/toolState.d.ts +123 -0
- package/dist/utils/activity.d.ts +40 -0
- package/dist/utils/agent.d.ts +47 -0
- package/dist/utils/agentHangReport.d.ts +38 -0
- package/dist/utils/annotations.d.ts +17 -0
- package/dist/utils/apiFetch.d.ts +11 -0
- package/dist/utils/apiKeys.d.ts +48 -0
- package/dist/utils/apiUrl.d.ts +28 -0
- package/dist/utils/assets.d.ts +8 -0
- package/dist/utils/baseRefConfig.d.ts +121 -0
- package/dist/utils/billingErrors.d.ts +85 -0
- package/dist/utils/body.d.ts +34 -0
- package/dist/utils/buildInfraweaverFooter.d.ts +29 -0
- package/dist/utils/byokFallback.d.ts +85 -0
- package/dist/utils/changeImpact.d.ts +101 -0
- package/dist/utils/claudeSubscription.d.ts +30 -0
- package/dist/utils/cli.d.ts +10 -0
- package/dist/utils/cloudClient.d.ts +33 -0
- package/dist/utils/cloudFetchCore.d.ts +42 -0
- package/dist/utils/cloudReport.d.ts +114 -0
- package/dist/utils/codexHome.d.ts +29 -0
- package/dist/utils/codexOAuth.d.ts +60 -0
- package/dist/utils/diffCoverage.d.ts +63 -0
- package/dist/utils/env.d.ts +46 -0
- package/dist/utils/errorReport.d.ts +17 -0
- package/dist/utils/exitHandler.d.ts +8 -0
- package/dist/utils/fixDoubleEscapedString.d.ts +1 -0
- package/dist/utils/gitAuth.d.ts +84 -0
- package/dist/utils/gitAuthServer.d.ts +24 -0
- package/dist/utils/github.d.ts +104 -0
- package/dist/utils/globals.d.ts +3 -0
- package/dist/utils/infraweaverConfig.d.ts +56 -0
- package/dist/utils/install.d.ts +37 -0
- package/dist/utils/instructions.d.ts +48 -0
- package/dist/utils/keylessOidc.d.ts +28 -0
- package/dist/utils/leapingComment.d.ts +11 -0
- package/dist/utils/learnings.d.ts +62 -0
- package/dist/utils/learningsTruncate.d.ts +25 -0
- package/dist/utils/lifecycle.d.ts +57 -0
- package/dist/utils/log.d.ts +111 -0
- package/dist/utils/modelResolver.d.ts +63 -0
- package/dist/utils/moduleFetch.d.ts +39 -0
- package/dist/utils/normalizeEnv.d.ts +30 -0
- package/dist/utils/openCodeModels.d.ts +11 -0
- package/dist/utils/openaiCompatible.d.ts +26 -0
- package/dist/utils/opentofuMcp.d.ts +50 -0
- package/dist/utils/overrides.d.ts +40 -0
- package/dist/utils/packageManager.d.ts +49 -0
- package/dist/utils/patchWorkflowRunFields.d.ts +29 -0
- package/dist/utils/payload.d.ts +249 -0
- package/dist/utils/prSummary.d.ts +61 -0
- package/dist/utils/presets.d.ts +36 -0
- package/dist/utils/progressComment.d.ts +146 -0
- package/dist/utils/providerErrors.d.ts +31 -0
- package/dist/utils/proxyModel.d.ts +76 -0
- package/dist/utils/rangeDiff.d.ts +51 -0
- package/dist/utils/redact.d.ts +33 -0
- package/dist/utils/registryAuth.d.ts +52 -0
- package/dist/utils/remediationCommand.d.ts +58 -0
- package/dist/utils/retry.d.ts +38 -0
- package/dist/utils/reviewCleanup.d.ts +14 -0
- package/dist/utils/run.d.ts +9 -0
- package/dist/utils/runContext.d.ts +112 -0
- package/dist/utils/runContextData.d.ts +42 -0
- package/dist/utils/runErrorRenderer.d.ts +64 -0
- package/dist/utils/runLifecycle.d.ts +89 -0
- package/dist/utils/runStartupLog.d.ts +15 -0
- package/dist/utils/secrets.d.ts +34 -0
- package/dist/utils/setup.d.ts +90 -0
- package/dist/utils/shell.d.ts +44 -0
- package/dist/utils/skills.d.ts +10 -0
- package/dist/utils/subprocess.d.ts +81 -0
- package/dist/utils/terraformMcp.d.ts +46 -0
- package/dist/utils/time.d.ts +15 -0
- package/dist/utils/timer.d.ts +23 -0
- package/dist/utils/todoTracking.d.ts +16 -0
- package/dist/utils/token.d.ts +52 -0
- package/dist/utils/toolLicensing.d.ts +56 -0
- package/dist/utils/toolSelection.d.ts +73 -0
- package/dist/utils/toon.d.ts +16 -0
- package/dist/utils/version.d.ts +2 -0
- package/dist/utils/versioning.d.ts +7 -0
- package/dist/utils/vertex.d.ts +16 -0
- package/dist/utils/workflow.d.ts +13 -0
- package/package.json +132 -0
- package/src/agents/claude.ts +1588 -0
- package/src/agents/claudePretoolGate.ts +286 -0
- package/src/agents/dispatchMetrics.ts +162 -0
- package/src/agents/gateServer.ts +178 -0
- package/src/agents/index.ts +10 -0
- package/src/agents/nativeFsDenies.ts +164 -0
- package/src/agents/opencode.ts +1600 -0
- package/src/agents/opencodePlugin.ts +304 -0
- package/src/agents/opencodeShared.ts +134 -0
- package/src/agents/postRun.ts +615 -0
- package/src/agents/reviewer.ts +134 -0
- package/src/agents/sessionLabeler.ts +185 -0
- package/src/agents/shared.ts +377 -0
- package/src/agents/subagentModels.ts +40 -0
- package/src/agents/tokenQuota.ts +203 -0
- package/src/agents/writeGateSource.ts +148 -0
- package/src/agents/writePolicy.ts +132 -0
- package/src/brand.ts +84 -0
- package/src/cli.ts +117 -0
- package/src/commands/gha.ts +188 -0
- package/src/commands/mcp.ts +126 -0
- package/src/commands/verifyEvidence.ts +100 -0
- package/src/entry.ts +7 -0
- package/src/entryPost.ts +109 -0
- package/src/external.ts +308 -0
- package/src/i18n/scaffolding.ts +191 -0
- package/src/index.ts +7 -0
- package/src/internal/index.ts +74 -0
- package/src/lifecycle.ts +2 -0
- package/src/main.ts +815 -0
- package/src/mcp/__fixtures__/infraweaver-scratch-pr-49-review-3485940013.json +110 -0
- package/src/mcp/__fixtures__/infraweaver-scratch-pr-64-review-3531000326.json +14 -0
- package/src/mcp/__fixtures__/infraweaver-test-repo-pr-1.diff.json +67 -0
- package/src/mcp/__snapshots__/checkout.test.ts.snap +109 -0
- package/src/mcp/__snapshots__/reviewComments.test.ts.snap +71 -0
- package/src/mcp/arkConfig.ts +7 -0
- package/src/mcp/assess.ts +723 -0
- package/src/mcp/capabilityContext.ts +80 -0
- package/src/mcp/changeSummary.ts +145 -0
- package/src/mcp/checkSuite.ts +261 -0
- package/src/mcp/checkout.ts +1015 -0
- package/src/mcp/comment.ts +683 -0
- package/src/mcp/commitInfo.ts +57 -0
- package/src/mcp/crosswalk.ts +1253 -0
- package/src/mcp/crosswalkDigest.ts +5 -0
- package/src/mcp/cyberEssentials.ts +60 -0
- package/src/mcp/dashboard.ts +232 -0
- package/src/mcp/dependencies.ts +190 -0
- package/src/mcp/frameworks.ts +236 -0
- package/src/mcp/geminiSanitizer.ts +212 -0
- package/src/mcp/git.ts +1116 -0
- package/src/mcp/guardrails.ts +771 -0
- package/src/mcp/issue.ts +74 -0
- package/src/mcp/issueComments.ts +48 -0
- package/src/mcp/issueEvents.ts +100 -0
- package/src/mcp/issueInfo.ts +72 -0
- package/src/mcp/labels.ts +35 -0
- package/src/mcp/localContext.ts +65 -0
- package/src/mcp/localServer.ts +217 -0
- package/src/mcp/moduleExtraction.ts +368 -0
- package/src/mcp/moduleTests.ts +421 -0
- package/src/mcp/modules.ts +752 -0
- package/src/mcp/output.ts +71 -0
- package/src/mcp/pathSafety.ts +28 -0
- package/src/mcp/policy.ts +226 -0
- package/src/mcp/pr.ts +238 -0
- package/src/mcp/prInfo.ts +91 -0
- package/src/mcp/providerSchema.ts +175 -0
- package/src/mcp/review.ts +1081 -0
- package/src/mcp/reviewComments.ts +1137 -0
- package/src/mcp/roots.ts +217 -0
- package/src/mcp/scope.ts +82 -0
- package/src/mcp/selectMode.ts +207 -0
- package/src/mcp/server.ts +498 -0
- package/src/mcp/shared.ts +120 -0
- package/src/mcp/shell.ts +631 -0
- package/src/mcp/staleFix.ts +557 -0
- package/src/mcp/terraform/__snapshots__/moduleDocs.test.ts.snap +40 -0
- package/src/mcp/terraform/azurePrices.ts +38 -0
- package/src/mcp/terraform/baseline.ts +172 -0
- package/src/mcp/terraform/concernResult.ts +111 -0
- package/src/mcp/terraform/cost.ts +175 -0
- package/src/mcp/terraform/cspm.ts +326 -0
- package/src/mcp/terraform/currency.ts +354 -0
- package/src/mcp/terraform/decisions.ts +590 -0
- package/src/mcp/terraform/eidas.ts +134 -0
- package/src/mcp/terraform/evidence.ts +771 -0
- package/src/mcp/terraform/findings.ts +383 -0
- package/src/mcp/terraform/fixMemory.ts +253 -0
- package/src/mcp/terraform/governance.ts +231 -0
- package/src/mcp/terraform/hcl.ts +273 -0
- package/src/mcp/terraform/iacLanguages.ts +431 -0
- package/src/mcp/terraform/idleFloor.ts +304 -0
- package/src/mcp/terraform/keyless.ts +123 -0
- package/src/mcp/terraform/moduleDocs.ts +303 -0
- package/src/mcp/terraform/nativeRules.ts +152 -0
- package/src/mcp/terraform/nativeScan.ts +67 -0
- package/src/mcp/terraform/noiseProfile.ts +183 -0
- package/src/mcp/terraform/normalization.ts +265 -0
- package/src/mcp/terraform/oscal.ts +283 -0
- package/src/mcp/terraform/packs/azurerm-3-4.ts +382 -0
- package/src/mcp/terraform/packs/cloudflare-4-5.ts +114 -0
- package/src/mcp/terraform/paths.ts +59 -0
- package/src/mcp/terraform/plan.ts +377 -0
- package/src/mcp/terraform/planDrift.ts +520 -0
- package/src/mcp/terraform/policyAuthor.ts +886 -0
- package/src/mcp/terraform/prowlerOcsf.ts +380 -0
- package/src/mcp/terraform/refactor.ts +879 -0
- package/src/mcp/terraform/registry.ts +317 -0
- package/src/mcp/terraform/risk.ts +99 -0
- package/src/mcp/terraform/scanSession.ts +242 -0
- package/src/mcp/terraform/scannerCache.ts +86 -0
- package/src/mcp/terraform/scannerEgress.ts +141 -0
- package/src/mcp/terraform/scannerJson.ts +22 -0
- package/src/mcp/terraform/scanners.ts +1134 -0
- package/src/mcp/terraform/signing.ts +151 -0
- package/src/mcp/terraform/stateLocking.ts +106 -0
- package/src/mcp/terraform/subprocess.ts +102 -0
- package/src/mcp/terraform/suppressions.ts +551 -0
- package/src/mcp/terraform/taxonomy.ts +0 -0
- package/src/mcp/terraform/tfquery.ts +159 -0
- package/src/mcp/terraform/toolchainIntegrity.ts +151 -0
- package/src/mcp/terraform/tools/authorPolicy.ts +185 -0
- package/src/mcp/terraform/tools/detectPlanDrift.ts +279 -0
- package/src/mcp/terraform/tools/emitCost.ts +130 -0
- package/src/mcp/terraform/tools/emitSarif.ts +108 -0
- package/src/mcp/terraform/tools/fixMemory.ts +82 -0
- package/src/mcp/terraform/tools/infracostDiff.ts +110 -0
- package/src/mcp/terraform/tools/ingestExternalFindings.ts +259 -0
- package/src/mcp/terraform/tools/moduleLookup.ts +86 -0
- package/src/mcp/terraform/tools/moduleSearch.ts +46 -0
- package/src/mcp/terraform/tools/plan.ts +384 -0
- package/src/mcp/terraform/tools/providerUpgrade.ts +217 -0
- package/src/mcp/terraform/tools/readFindings.ts +138 -0
- package/src/mcp/terraform/tools/scan.ts +303 -0
- package/src/mcp/terraform/tools/validate.ts +160 -0
- package/src/mcp/terraform/tools/verifyRemediation.ts +190 -0
- package/src/mcp/terraform/tools/versionCurrency.ts +64 -0
- package/src/mcp/terraform/tools.ts +62 -0
- package/src/mcp/terraform/transformPacks.ts +594 -0
- package/src/mcp/terraform/types.ts +382 -0
- package/src/mcp/terraform/verification.ts +150 -0
- package/src/mcp/terraform/vex.ts +367 -0
- package/src/mcp/terraform/writeOnly.ts +252 -0
- package/src/mcp/terraform.ts +52 -0
- package/src/mcp/terratest.ts +215 -0
- package/src/mcp/untrustedContent.ts +126 -0
- package/src/mcp/upload.ts +123 -0
- package/src/models.ts +753 -0
- package/src/modes/address-reviews.ts +35 -0
- package/src/modes/assess.ts +27 -0
- package/src/modes/build.ts +86 -0
- package/src/modes/compliance-audit.ts +25 -0
- package/src/modes/cost-optimization.ts +36 -0
- package/src/modes/drift-detect.ts +31 -0
- package/src/modes/fix.ts +29 -0
- package/src/modes/incremental-review.ts +103 -0
- package/src/modes/index.ts +94 -0
- package/src/modes/modernize-deprecated.ts +36 -0
- package/src/modes/plan.ts +21 -0
- package/src/modes/policy-gate.ts +27 -0
- package/src/modes/prFormats.ts +325 -0
- package/src/modes/refactor.ts +74 -0
- package/src/modes/refresh-remediation.ts +40 -0
- package/src/modes/remediate-and-refactor.ts +42 -0
- package/src/modes/remediate.ts +78 -0
- package/src/modes/resolve-conflicts.ts +32 -0
- package/src/modes/review.ts +135 -0
- package/src/modes/summarize-pr.ts +42 -0
- package/src/modes/task.ts +26 -0
- package/src/modes/terraform-code-review.ts +68 -0
- package/src/modes/types.ts +17 -0
- package/src/modes/update-dependencies.ts +44 -0
- package/src/prep/index.ts +96 -0
- package/src/prep/installNodeDependencies.ts +251 -0
- package/src/prep/installPythonDependencies.ts +235 -0
- package/src/prep/types.ts +38 -0
- package/src/reviewQuality.ts +237 -0
- package/src/runCli.ts +335 -0
- package/src/skills/terraform-best-practices/SKILL.md +379 -0
- package/src/toolState.ts +241 -0
- package/src/utils/activity.ts +210 -0
- package/src/utils/agent.ts +245 -0
- package/src/utils/agentHangReport.ts +180 -0
- package/src/utils/annotations.ts +56 -0
- package/src/utils/apiFetch.ts +19 -0
- package/src/utils/apiKeys.ts +305 -0
- package/src/utils/apiUrl.ts +42 -0
- package/src/utils/assets.ts +123 -0
- package/src/utils/baseRefConfig.ts +254 -0
- package/src/utils/billingErrors.ts +210 -0
- package/src/utils/body.ts +168 -0
- package/src/utils/buildInfraweaverFooter.ts +104 -0
- package/src/utils/byokFallback.ts +137 -0
- package/src/utils/changeImpact.ts +330 -0
- package/src/utils/claudeSubscription.ts +93 -0
- package/src/utils/cli.ts +36 -0
- package/src/utils/cloudClient.ts +57 -0
- package/src/utils/cloudFetchCore.ts +139 -0
- package/src/utils/cloudReport.ts +316 -0
- package/src/utils/codexHome.ts +204 -0
- package/src/utils/codexOAuth.ts +154 -0
- package/src/utils/codexRefreshDetect.ts +36 -0
- package/src/utils/diffCoverage.ts +404 -0
- package/src/utils/env.ts +84 -0
- package/src/utils/errorReport.ts +94 -0
- package/src/utils/exitHandler.ts +35 -0
- package/src/utils/fixDoubleEscapedString.ts +9 -0
- package/src/utils/ghaCore.ts +13 -0
- package/src/utils/gitAuth.ts +268 -0
- package/src/utils/gitAuthServer.ts +186 -0
- package/src/utils/github.ts +676 -0
- package/src/utils/globals.ts +9 -0
- package/src/utils/humanEditCapture.ts +198 -0
- package/src/utils/infraweaverConfig.ts +202 -0
- package/src/utils/install.ts +279 -0
- package/src/utils/instructions.ts +640 -0
- package/src/utils/keylessOidc.ts +47 -0
- package/src/utils/leapingComment.ts +20 -0
- package/src/utils/learnings.ts +145 -0
- package/src/utils/learningsTruncate.ts +42 -0
- package/src/utils/lifecycle.ts +198 -0
- package/src/utils/log.ts +452 -0
- package/src/utils/modelResolver.ts +105 -0
- package/src/utils/moduleFetch.ts +138 -0
- package/src/utils/normalizeEnv.ts +106 -0
- package/src/utils/openCodeModels.ts +86 -0
- package/src/utils/openaiCompatible.ts +52 -0
- package/src/utils/opentofuMcp.ts +61 -0
- package/src/utils/overrides.ts +100 -0
- package/src/utils/packageManager.ts +257 -0
- package/src/utils/patchWorkflowRunFields.ts +173 -0
- package/src/utils/payload.ts +1206 -0
- package/src/utils/prSummary.ts +148 -0
- package/src/utils/presets.ts +105 -0
- package/src/utils/progressComment.ts +266 -0
- package/src/utils/providerErrors.ts +189 -0
- package/src/utils/proxyModel.ts +239 -0
- package/src/utils/rangeDiff.ts +182 -0
- package/src/utils/redact.ts +86 -0
- package/src/utils/registryAuth.ts +115 -0
- package/src/utils/remediationCommand.ts +144 -0
- package/src/utils/retry.ts +180 -0
- package/src/utils/reviewCleanup.ts +116 -0
- package/src/utils/run.ts +100 -0
- package/src/utils/runContext.ts +276 -0
- package/src/utils/runContextData.ts +121 -0
- package/src/utils/runErrorRenderer.ts +282 -0
- package/src/utils/runFixture.ts +91 -0
- package/src/utils/runLifecycle.ts +360 -0
- package/src/utils/runStartupLog.ts +67 -0
- package/src/utils/secrets.ts +208 -0
- package/src/utils/setup.ts +368 -0
- package/src/utils/shell.ts +132 -0
- package/src/utils/skills.ts +67 -0
- package/src/utils/subprocess.ts +474 -0
- package/src/utils/terraformMcp.ts +99 -0
- package/src/utils/time.ts +59 -0
- package/src/utils/timer.ts +72 -0
- package/src/utils/todoTracking.ts +168 -0
- package/src/utils/token.ts +294 -0
- package/src/utils/toolLicensing.ts +152 -0
- package/src/utils/toolSelection.ts +239 -0
- package/src/utils/toon.ts +76 -0
- package/src/utils/version.ts +10 -0
- package/src/utils/versioning.ts +44 -0
- package/src/utils/vertex.ts +94 -0
- package/src/utils/workflow.ts +25 -0
package/dist/main.d.ts
ADDED
|
@@ -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
|
+
};
|