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