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
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-process cache for the read-only `terraform_scan` tool (the deferred 3.5
|
|
3
|
+
* "tool-result caching", scoped safely).
|
|
4
|
+
*
|
|
5
|
+
* The cache key is a CONTENT hash of the Terraform tree plus the active toolchain,
|
|
6
|
+
* which makes it self-invalidating: any file edit — a remediation fix above all —
|
|
7
|
+
* changes the hash, so a stale result can never be returned for a changed tree.
|
|
8
|
+
*
|
|
9
|
+
* It is DELIBERATELY wired only into `terraform_scan`. The ✗→✓ verifier
|
|
10
|
+
* (`terraform_verify_remediation`) ALWAYS re-scans fresh by calling `runScanners`
|
|
11
|
+
* directly, never through here — so a cache can never make the verifier read a
|
|
12
|
+
* fixed tree as still-broken or vice-versa. Within one run the only thing that
|
|
13
|
+
* varies between repeated `terraform_scan` calls on an UNCHANGED tree is nothing,
|
|
14
|
+
* so those repeats become instant; the first scan after any edit always re-runs.
|
|
15
|
+
*/
|
|
16
|
+
import { createHash } from "node:crypto";
|
|
17
|
+
import { readFileSync } from "node:fs";
|
|
18
|
+
import { join } from "node:path";
|
|
19
|
+
import { walkTfFiles } from "#app/mcp/modules";
|
|
20
|
+
import { type RunScannersOptions, runScanners } from "#app/mcp/terraform/scanners";
|
|
21
|
+
import type { ScannerOutcome } from "#app/mcp/terraform/types";
|
|
22
|
+
|
|
23
|
+
const cache = new Map<string, ScannerOutcome[]>();
|
|
24
|
+
|
|
25
|
+
/** Content hash of every Terraform file under `cwd` (sorted for determinism),
|
|
26
|
+
* mixed with an `extra` signature (the toolchain). Reading the files is cheap
|
|
27
|
+
* next to running Trivy/Checkov, and hashing CONTENT (not mtime) means an edit
|
|
28
|
+
* that rewrites a file in place still busts the key. */
|
|
29
|
+
export function treeHash(cwd: string, extra: string): string {
|
|
30
|
+
const h = createHash("sha256");
|
|
31
|
+
for (const rel of walkTfFiles(cwd).sort()) {
|
|
32
|
+
h.update(rel);
|
|
33
|
+
h.update("\0");
|
|
34
|
+
try {
|
|
35
|
+
h.update(readFileSync(join(cwd, rel)));
|
|
36
|
+
} catch {
|
|
37
|
+
h.update("<unreadable>");
|
|
38
|
+
}
|
|
39
|
+
h.update("\0");
|
|
40
|
+
}
|
|
41
|
+
h.update(extra);
|
|
42
|
+
return h.digest("hex");
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** Stable signature of the run's toolchain — the selected tools (the `enabled`
|
|
46
|
+
* method is dropped by JSON, leaving the gated/disabled config) plus whether a
|
|
47
|
+
* module-fetch credential is present (it can change private-module resolution). */
|
|
48
|
+
function toolchainSignature(opts: RunScannersOptions): string {
|
|
49
|
+
return JSON.stringify({
|
|
50
|
+
selection: opts.selection ?? null,
|
|
51
|
+
fetch: opts.terraformEnv ? Object.keys(opts.terraformEnv).sort() : null,
|
|
52
|
+
// external-module resolution changes WHICH code checkov scans, so a scan
|
|
53
|
+
// with it on must never be served a cached scan that had it off (else the
|
|
54
|
+
// b.4 internal findings would silently vanish — the laundering this guards).
|
|
55
|
+
externalModules: opts.downloadExternalModules ?? false,
|
|
56
|
+
// egress policy changes both the subprocess env AND the outcome's
|
|
57
|
+
// `egress_isolation` marker — a denied scan must not serve an open-scan
|
|
58
|
+
// cache entry (or vice versa), else the run summary lies about isolation.
|
|
59
|
+
network: opts.toolsNetwork
|
|
60
|
+
? {
|
|
61
|
+
base: opts.toolsNetwork.base,
|
|
62
|
+
perTool: [...opts.toolsNetwork.perTool.entries()].sort(),
|
|
63
|
+
allow: [...opts.toolsNetwork.extraAllowedHosts].sort(),
|
|
64
|
+
}
|
|
65
|
+
: null,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* `runScanners` with a per-process, tree-content-keyed cache — ONLY for the
|
|
71
|
+
* read-only scan path. Identical signature to `runScanners`. Never call this from
|
|
72
|
+
* the verifier; call `runScanners` there so it always re-scans fresh.
|
|
73
|
+
*/
|
|
74
|
+
export function runScannersCached(cwd: string, opts: RunScannersOptions = {}): ScannerOutcome[] {
|
|
75
|
+
const key = treeHash(cwd, toolchainSignature(opts));
|
|
76
|
+
const hit = cache.get(key);
|
|
77
|
+
if (hit) return hit;
|
|
78
|
+
const out = runScanners(cwd, opts);
|
|
79
|
+
cache.set(key, out);
|
|
80
|
+
return out;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/** Drop the cache (test isolation / explicit invalidation). */
|
|
84
|
+
export function clearScannerCache(): void {
|
|
85
|
+
cache.clear();
|
|
86
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-scanner network egress control (supply-chain phase 0.2).
|
|
3
|
+
*
|
|
4
|
+
* THE THREAT. The TeamPCP trivy payload dumped runner memory and *called home* —
|
|
5
|
+
* the breach was the exfiltration, not the dump. The 0.1 integrity gate refuses
|
|
6
|
+
* builds we KNOW are compromised; this bounds the ones we don't: a scanner that
|
|
7
|
+
* cannot egress is a local nuisance, not a breach.
|
|
8
|
+
*
|
|
9
|
+
* THE MECHANISM. Env-level proxy denial: the scanner subprocess gets
|
|
10
|
+
* `HTTP(S)_PROXY` pointed at a blackhole (a local port nothing listens on, so
|
|
11
|
+
* every proxied connection fails fast) and `NO_PROXY` naming only the hosts that
|
|
12
|
+
* tool legitimately needs (trivy's DB registries, tflint's ruleset releases —
|
|
13
|
+
* which bypass the proxy and connect directly). Go and Python HTTP stacks both
|
|
14
|
+
* honour these variables, which covers all three scanners.
|
|
15
|
+
*
|
|
16
|
+
* HONESTY. This is the *degrade path* of the roadmap item — an env contract,
|
|
17
|
+
* not a kernel boundary: a malicious binary can ignore proxy vars. So an
|
|
18
|
+
* outcome produced under this control records `egress_isolation: "partial"`,
|
|
19
|
+
* never a stronger claim. The netns default-deny (a real kernel boundary) is
|
|
20
|
+
* the unbuilt upgrade; when it lands, this stays as the fallback for runners
|
|
21
|
+
* that can't grant namespace privileges. Deny is OPT-IN (`tools_network`
|
|
22
|
+
* input): turning it on by default would break DB pulls on runners whose
|
|
23
|
+
* mirrors we can't know about.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
export type EgressPolicy = "open" | "deny";
|
|
27
|
+
|
|
28
|
+
/** the parsed `tools_network` input: a base policy + per-tool overrides. */
|
|
29
|
+
export interface ToolsNetworkDirective {
|
|
30
|
+
base: EgressPolicy;
|
|
31
|
+
perTool: Map<string, EgressPolicy>;
|
|
32
|
+
/** unrecognised tokens (warn, never fatal — matching `tools_enabled`). */
|
|
33
|
+
unknown: string[];
|
|
34
|
+
/** extra NO_PROXY hosts admitted for every denied tool (private mirrors). */
|
|
35
|
+
extraAllowedHosts: string[];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Hosts each scanner legitimately needs when its egress is denied. Deliberately
|
|
40
|
+
* MINIMAL — every entry is a documented, first-party distribution endpoint, not
|
|
41
|
+
* a convenience:
|
|
42
|
+
*
|
|
43
|
+
* - trivy: vulnerability-DB / checks-bundle OCI registries (`trivy-db`,
|
|
44
|
+
* `trivy-checks` live on GHCR with the ECR Public mirror as fallback).
|
|
45
|
+
* - tflint: ruleset plugins are GitHub release assets, fetched by
|
|
46
|
+
* `tflint --init`.
|
|
47
|
+
* - checkov: scans fully offline — needs nothing.
|
|
48
|
+
*
|
|
49
|
+
* An operator whose runner uses a private mirror adds it via
|
|
50
|
+
* `tools_network: "deny,allow=<host>"`.
|
|
51
|
+
*/
|
|
52
|
+
export const SCANNER_EGRESS_ALLOWLIST: Readonly<Record<string, readonly string[]>> = {
|
|
53
|
+
trivy: ["ghcr.io", "public.ecr.aws"],
|
|
54
|
+
tflint: ["github.com", "api.github.com", "objects.githubusercontent.com"],
|
|
55
|
+
checkov: [],
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Parse the `tools_network` input (comma- or newline-separated). Grammar
|
|
60
|
+
* mirrors `tools_enabled`:
|
|
61
|
+
*
|
|
62
|
+
* - `deny` / `open` — base policy for every scanner (default open);
|
|
63
|
+
* - `<tool>=deny|open` — per-tool override (`trivy=deny`);
|
|
64
|
+
* - `allow=<host>` — extra NO_PROXY host admitted for every denied tool
|
|
65
|
+
* (private DB mirrors).
|
|
66
|
+
*
|
|
67
|
+
* Unrecognised tokens are collected, never fatal — a typo must not silently
|
|
68
|
+
* change a security posture NOR fail the run.
|
|
69
|
+
*/
|
|
70
|
+
export function parseToolsNetwork(raw: string | undefined): ToolsNetworkDirective {
|
|
71
|
+
const directive: ToolsNetworkDirective = {
|
|
72
|
+
base: "open",
|
|
73
|
+
perTool: new Map<string, EgressPolicy>(),
|
|
74
|
+
unknown: [],
|
|
75
|
+
extraAllowedHosts: [],
|
|
76
|
+
};
|
|
77
|
+
for (const token of (raw ?? "").split(/[\n,]/)) {
|
|
78
|
+
const t = token.trim().toLowerCase();
|
|
79
|
+
if (!t) continue;
|
|
80
|
+
if (t === "deny" || t === "open") {
|
|
81
|
+
directive.base = t;
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
const eq = t.indexOf("=");
|
|
85
|
+
if (eq > 0) {
|
|
86
|
+
const key = t.slice(0, eq).trim();
|
|
87
|
+
const value = t.slice(eq + 1).trim();
|
|
88
|
+
if (key === "allow" && value) {
|
|
89
|
+
directive.extraAllowedHosts.push(value);
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (value === "deny" || value === "open") {
|
|
93
|
+
directive.perTool.set(key, value);
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
directive.unknown.push(token.trim());
|
|
98
|
+
}
|
|
99
|
+
return directive;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/** The effective policy for one tool under a directive. */
|
|
103
|
+
export function egressPolicyFor(
|
|
104
|
+
tool: string,
|
|
105
|
+
directive: ToolsNetworkDirective | undefined,
|
|
106
|
+
): EgressPolicy {
|
|
107
|
+
if (!directive) return "open";
|
|
108
|
+
return directive.perTool.get(tool) ?? directive.base;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// A local port with nothing listening: every proxied connection is refused
|
|
112
|
+
// immediately (fail-fast), rather than hanging on an unroutable address.
|
|
113
|
+
const BLACKHOLE_PROXY = "http://127.0.0.1:9";
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* The env overlay that denies a tool's egress, or null when its policy is open.
|
|
117
|
+
* Both case spellings are set — Go reads either, Python's requests prefers
|
|
118
|
+
* lowercase. `NO_PROXY` admits the tool's documented endpoints (plus loopback,
|
|
119
|
+
* which is never egress) so the tool keeps working while everything else dies
|
|
120
|
+
* at the blackhole.
|
|
121
|
+
*/
|
|
122
|
+
export function egressEnvFor(
|
|
123
|
+
tool: string,
|
|
124
|
+
directive: ToolsNetworkDirective | undefined,
|
|
125
|
+
): Record<string, string> | null {
|
|
126
|
+
if (egressPolicyFor(tool, directive) !== "deny") return null;
|
|
127
|
+
const allowed = [
|
|
128
|
+
"127.0.0.1",
|
|
129
|
+
"localhost",
|
|
130
|
+
...(SCANNER_EGRESS_ALLOWLIST[tool] ?? []),
|
|
131
|
+
...(directive?.extraAllowedHosts ?? []),
|
|
132
|
+
].join(",");
|
|
133
|
+
return {
|
|
134
|
+
HTTP_PROXY: BLACKHOLE_PROXY,
|
|
135
|
+
HTTPS_PROXY: BLACKHOLE_PROXY,
|
|
136
|
+
http_proxy: BLACKHOLE_PROXY,
|
|
137
|
+
https_proxy: BLACKHOLE_PROXY,
|
|
138
|
+
NO_PROXY: allowed,
|
|
139
|
+
no_proxy: allowed,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type, type Type } from "arktype";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Parse + shape-validate JSON from an external subprocess (terraform, tflint,
|
|
5
|
+
* trivy, checkov, infracost, reviewer findings). MCP tool inputs are already
|
|
6
|
+
* arktype-validated at the tool boundary; this applies the same rigor to the
|
|
7
|
+
* other untrusted boundary — scanner stdout — so a version bump that changes a
|
|
8
|
+
* tool's output shape fails that scanner loudly (callers degrade to `skipped`
|
|
9
|
+
* / empty) instead of feeding silently-wrong fields into concerns.
|
|
10
|
+
*
|
|
11
|
+
* Throws on invalid JSON (exactly like the bare `JSON.parse` it replaces) and
|
|
12
|
+
* on a shape mismatch, with the offending paths in the message.
|
|
13
|
+
*/
|
|
14
|
+
export function parseScannerJson<t>(schema: Type<t>, stdout: string, tool: string): t {
|
|
15
|
+
const out = schema(JSON.parse(stdout || "{}"));
|
|
16
|
+
if (out instanceof type.errors) {
|
|
17
|
+
throw new Error(`${tool} output shape mismatch: ${out.summary}`);
|
|
18
|
+
}
|
|
19
|
+
// the schemas here are morph-free, so the validated output IS the schema's t;
|
|
20
|
+
// TS just can't relate arktype's distilled call-result back to the generic.
|
|
21
|
+
return out as t;
|
|
22
|
+
}
|