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,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Track per-session labels so log lines from parallel subagents can be
|
|
3
|
+
* differentiated. The orchestrator dispatches lens subagents
|
|
4
|
+
* via the Task tool; each subagent runs in its own opencode/claude Session
|
|
5
|
+
* with its own `sessionID` (or `session_id`) tag on the NDJSON event stream.
|
|
6
|
+
*
|
|
7
|
+
* Without per-session prefixing, parallel subagent tool_use / tool_result /
|
|
8
|
+
* text events appear as a single interleaved stream tagged with `[Infraweaver]`,
|
|
9
|
+
* making it impossible for a human reading the logs to attribute work to a
|
|
10
|
+
* specific lens.
|
|
11
|
+
*
|
|
12
|
+
* The labeler is deliberately runtime-agnostic — both opencode.ts and
|
|
13
|
+
* claude.ts feed it the same shape. The contract is FIFO: when the orchestrator
|
|
14
|
+
* dispatches N task tool_use blocks in a single assistant turn (the parallel
|
|
15
|
+
* fan-out the multi-lens prompt requires), the i-th new sessionID is assumed
|
|
16
|
+
* to belong to the i-th task dispatch. This is correct as long as parallel
|
|
17
|
+
* dispatches are emitted in source-order and the runtimes respect that order
|
|
18
|
+
* when assigning child sessions; we do not depend on it for correctness of
|
|
19
|
+
* the read-only contract — only for log readability.
|
|
20
|
+
*/
|
|
21
|
+
export interface TaskDispatchInput {
|
|
22
|
+
description?: string | undefined;
|
|
23
|
+
subagent_type?: string | undefined;
|
|
24
|
+
prompt?: string | undefined;
|
|
25
|
+
}
|
|
26
|
+
export declare const ORCHESTRATOR_LABEL = "orchestrator";
|
|
27
|
+
/**
|
|
28
|
+
* Extract a human-readable label from a Task tool's input. Tries (in order):
|
|
29
|
+
* 1. explicit `lens: <name>` marker on a line in the prompt — preferred,
|
|
30
|
+
* lets the orchestrator name the lens deterministically
|
|
31
|
+
* 2. the Task tool's `description` field — short, written by orchestrator
|
|
32
|
+
* per call, usually enough
|
|
33
|
+
* 3. the `subagent_type` — falls back to the named
|
|
34
|
+
* subagent identity when description is missing
|
|
35
|
+
* 4. generic "subagent" — last resort
|
|
36
|
+
*/
|
|
37
|
+
export declare function deriveLabelFromTaskInput(input: TaskDispatchInput): string;
|
|
38
|
+
/**
|
|
39
|
+
* Stateful tracker mapping subagent activity back to human-readable labels.
|
|
40
|
+
*
|
|
41
|
+
* Two attribution channels are supported because the runtimes differ:
|
|
42
|
+
*
|
|
43
|
+
* - **OpenCode** spawns each subagent as its own opencode `Session` with
|
|
44
|
+
* a distinct `sessionID`. The harness records each Task dispatch into a
|
|
45
|
+
* pending FIFO queue; the next previously-unseen sessionID consumes the
|
|
46
|
+
* head of the queue and binds it to that label.
|
|
47
|
+
*
|
|
48
|
+
* - **Claude Code** runs subagents inside the orchestrator's session — they
|
|
49
|
+
* all share `session_id` — and instead stamps every subagent message with
|
|
50
|
+
* `parent_tool_use_id` pointing at the Agent tool_use id that spawned them.
|
|
51
|
+
* The harness binds each Agent tool_use id to its dispatched label up
|
|
52
|
+
* front, then `labelFor` looks the label up directly when an event arrives
|
|
53
|
+
* carrying that `parent_tool_use_id`.
|
|
54
|
+
*
|
|
55
|
+
* `labelFor(sessionID, parentToolUseId?)` accepts both: when
|
|
56
|
+
* `parentToolUseId` is set and known it short-circuits to the direct mapping;
|
|
57
|
+
* otherwise it falls through to the FIFO/sessionID path.
|
|
58
|
+
*/
|
|
59
|
+
export declare class SessionLabeler {
|
|
60
|
+
private readonly labels;
|
|
61
|
+
private readonly labelsByToolUseId;
|
|
62
|
+
private readonly pendingLabels;
|
|
63
|
+
private fallbackCounter;
|
|
64
|
+
/**
|
|
65
|
+
* Record a Task/Agent tool dispatch.
|
|
66
|
+
*
|
|
67
|
+
* @param input Task tool input — used to derive the lens label.
|
|
68
|
+
* @param toolUseId Optional Agent tool_use id. When provided, future events
|
|
69
|
+
* carrying `parent_tool_use_id === toolUseId` resolve
|
|
70
|
+
* directly to this label without consuming the FIFO queue
|
|
71
|
+
* (Claude path). Always also pushed to the FIFO queue so
|
|
72
|
+
* the OpenCode path still works when toolUseId is absent.
|
|
73
|
+
*/
|
|
74
|
+
recordTaskDispatch(input: TaskDispatchInput, toolUseId?: string | null): string;
|
|
75
|
+
/**
|
|
76
|
+
* Return a label for the given event.
|
|
77
|
+
*
|
|
78
|
+
* @param sessionID Session id from the event (OpenCode: per-session;
|
|
79
|
+
* Claude: shared across orchestrator + subagents).
|
|
80
|
+
* @param parentToolUseId Claude's `parent_tool_use_id` — non-null on
|
|
81
|
+
* subagent messages. When set and known, takes
|
|
82
|
+
* priority over the FIFO/sessionID path.
|
|
83
|
+
*/
|
|
84
|
+
labelFor(sessionID: string | undefined | null, parentToolUseId?: string | null): string;
|
|
85
|
+
/** number of distinct sessions seen so far (for diagnostics) */
|
|
86
|
+
size(): number;
|
|
87
|
+
/** all (sessionID, label) pairs, oldest first */
|
|
88
|
+
entries(): Array<[string, string]>;
|
|
89
|
+
/** how many pending labels are queued waiting to bind to a new session */
|
|
90
|
+
pendingDispatchCount(): number;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Format a log message with a session label prefix in magenta. Mirrors the
|
|
94
|
+
* style of utils/log.ts:prefixLines() so per-session prefixes look the same
|
|
95
|
+
* as the dormant withLogPrefix-based ones.
|
|
96
|
+
*/
|
|
97
|
+
export declare function formatWithLabel(label: string, message: string): string;
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import type { RunTokenQuota } from "#app/agents/tokenQuota";
|
|
2
|
+
import type { AgentId } from "#app/external";
|
|
3
|
+
import type { ToolState } from "#app/toolState";
|
|
4
|
+
import type { ResolvedInstructions } from "#app/utils/instructions";
|
|
5
|
+
import type { ResolvedPayload } from "#app/utils/payload";
|
|
6
|
+
import type { TodoTracker } from "#app/utils/todoTracking";
|
|
7
|
+
export declare const MAX_STDERR_LINES = 20;
|
|
8
|
+
/**
|
|
9
|
+
* how many times the post-run loop may resume the agent to fix a dirty tree
|
|
10
|
+
* or a failing stop hook before giving up.
|
|
11
|
+
*/
|
|
12
|
+
export declare const MAX_POST_RUN_RETRIES = 3;
|
|
13
|
+
export declare function getGitStatus(): string;
|
|
14
|
+
export declare function buildCommitPrompt(status: string): string;
|
|
15
|
+
export interface StopHookFailure {
|
|
16
|
+
exitCode: number;
|
|
17
|
+
output: string;
|
|
18
|
+
}
|
|
19
|
+
export interface SummaryStale {
|
|
20
|
+
/** absolute path to the seeded snapshot file the agent was meant to edit. */
|
|
21
|
+
filePath: string;
|
|
22
|
+
}
|
|
23
|
+
export interface PostRunIssues {
|
|
24
|
+
stopHook?: StopHookFailure;
|
|
25
|
+
dirtyTree?: string;
|
|
26
|
+
/** populated when the rolling PR summary file is byte-identical to its
|
|
27
|
+
* seed, i.e. the agent never touched it. soft gate — nudges once via a
|
|
28
|
+
* resume turn but never fails the run, parallel to dirtyTree semantics. */
|
|
29
|
+
summaryStale?: SummaryStale;
|
|
30
|
+
/**
|
|
31
|
+
* populated when the agent selected a review mode but the post-run check
|
|
32
|
+
* over toolState shows neither a `create_pull_request_review` submission
|
|
33
|
+
* nor a final `report_progress` write happened. derived inline from
|
|
34
|
+
* `toolState.selectedMode` + `toolState.review` + `toolState.finalSummaryWritten`
|
|
35
|
+
* via {@link getUnsubmittedReview} — no parallel toolState flag is stored.
|
|
36
|
+
* carries the mode name so the resume prompt can reference it. handled like
|
|
37
|
+
* `stopHook`: nudge via resume, hard-fail if still unsatisfied after
|
|
38
|
+
* `MAX_POST_RUN_RETRIES`.
|
|
39
|
+
*/
|
|
40
|
+
unsubmittedReview?: "Review" | "IncrementalReview" | "TerraformCodeReview";
|
|
41
|
+
}
|
|
42
|
+
export declare function hasPostRunIssues(issues: PostRunIssues): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* token/cost usage data from a single agent run.
|
|
45
|
+
*
|
|
46
|
+
* NOTE on semantics: `inputTokens` here is the *total* billable input for the
|
|
47
|
+
* run — non-cached input + cache read + cache write — matching the per-agent
|
|
48
|
+
* SDK conventions. This is what gets persisted to `WorkflowRun.inputTokens`.
|
|
49
|
+
*
|
|
50
|
+
* The stdout token table and markdown step summary display a different "Input"
|
|
51
|
+
* column that shows only the non-cached portion (derivable as
|
|
52
|
+
* `inputTokens - cacheReadTokens - cacheWriteTokens`) so humans can see the
|
|
53
|
+
* cache hit ratio at a glance. Dashboards that query `WorkflowRun.inputTokens`
|
|
54
|
+
* directly are seeing the full total, not the log column.
|
|
55
|
+
*/
|
|
56
|
+
export interface AgentUsage {
|
|
57
|
+
agent: string;
|
|
58
|
+
/** full billable input: non-cached + cache read + cache write */
|
|
59
|
+
inputTokens: number;
|
|
60
|
+
outputTokens: number;
|
|
61
|
+
cacheReadTokens?: number | undefined;
|
|
62
|
+
cacheWriteTokens?: number | undefined;
|
|
63
|
+
costUsd?: number | undefined;
|
|
64
|
+
}
|
|
65
|
+
export interface AgentToolUseEvent {
|
|
66
|
+
toolName: string;
|
|
67
|
+
input: unknown;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Result returned by agent execution
|
|
71
|
+
*/
|
|
72
|
+
export interface AgentResult {
|
|
73
|
+
success: boolean;
|
|
74
|
+
output?: string | undefined;
|
|
75
|
+
error?: string | undefined;
|
|
76
|
+
metadata?: Record<string, unknown>;
|
|
77
|
+
usage?: AgentUsage | undefined;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Env var that carries the per-run MCP bearer token to BOTH agent harnesses,
|
|
81
|
+
* which reference it from their MCP client config so the on-disk/in-config form
|
|
82
|
+
* holds only a placeholder, never the raw token:
|
|
83
|
+
* - Claude Code expands `${INFRAWEAVER_MCP_TOKEN}` in .mcp.json headers.
|
|
84
|
+
* - opencode expands `{env:INFRAWEAVER_MCP_TOKEN}` in remote-MCP headers.
|
|
85
|
+
* The `_TOKEN` suffix also makes filterEnv() strip it from the MCP shell
|
|
86
|
+
* sandbox. Set only on the agent/server spawn env (never process.env), so a
|
|
87
|
+
* co-located dependency-install subprocess never inherits it. See
|
|
88
|
+
* ToolContext.mcpServerToken and gateServer.ts for the same pattern.
|
|
89
|
+
*/
|
|
90
|
+
export declare const MCP_SERVER_TOKEN_ENV = "INFRAWEAVER_MCP_TOKEN";
|
|
91
|
+
/**
|
|
92
|
+
* Context passed to agent.run() and threaded through the post-run loop.
|
|
93
|
+
*
|
|
94
|
+
* design rule: this is the single object that flows through the harness and
|
|
95
|
+
* downstream utilities by reference. derived predicates (e.g.
|
|
96
|
+
* `getUnsubmittedReview`), tmpfile paths, and seed bytes live on
|
|
97
|
+
* `toolState` — read them at the call site, do not duplicate them onto this
|
|
98
|
+
* interface. utilities that need run state should accept `ctx` whole, not
|
|
99
|
+
* destructure a narrow subset.
|
|
100
|
+
*/
|
|
101
|
+
export interface AgentRunContext {
|
|
102
|
+
payload: ResolvedPayload;
|
|
103
|
+
resolvedModel?: string | undefined;
|
|
104
|
+
mcpServerUrl: string;
|
|
105
|
+
/** per-run bearer token the agent's MCP client presents to mcpServerUrl. See
|
|
106
|
+
* ToolContext.mcpServerToken — delivered to the client config out-of-band so
|
|
107
|
+
* it never lands in a readable file. */
|
|
108
|
+
mcpServerToken: string;
|
|
109
|
+
tmpdir: string;
|
|
110
|
+
/** harness-owned secret paths that agent filesystem tools must never read. */
|
|
111
|
+
secretDenyPaths?: string[] | undefined;
|
|
112
|
+
/**
|
|
113
|
+
* canonical bare names of the state-mutating MCP tools subagents must not
|
|
114
|
+
* call, derived from each tool's `mutates` flag (`subagentDeniedToolNames`).
|
|
115
|
+
* Embedded into the claude/opencode subagent gate sources written at startup.
|
|
116
|
+
*/
|
|
117
|
+
subagentDeniedTools: readonly string[];
|
|
118
|
+
instructions: ResolvedInstructions;
|
|
119
|
+
todoTracker?: TodoTracker | undefined;
|
|
120
|
+
/**
|
|
121
|
+
* user-configured stop hook script. runs after the agent finishes each
|
|
122
|
+
* attempt; non-zero exit resumes the agent with the hook output as
|
|
123
|
+
* guidance. null when the repo has no stop hook configured.
|
|
124
|
+
*/
|
|
125
|
+
stopScript?: string | null | undefined;
|
|
126
|
+
/**
|
|
127
|
+
* mutable per-run state shared with the MCP server (by reference). post-run
|
|
128
|
+
* gates read fresh values from it after each agent attempt — `summaryFilePath`,
|
|
129
|
+
* `summarySeed`, `selectedMode`, `review`, `finalSummaryWritten`,
|
|
130
|
+
* `hadProgressComment` are all consulted by `collectPostRunIssues`. see
|
|
131
|
+
* `action/toolState.ts` for the literal-state design rule.
|
|
132
|
+
*/
|
|
133
|
+
toolState: ToolState;
|
|
134
|
+
/**
|
|
135
|
+
* called synchronously when the agent subprocess is killed for inner
|
|
136
|
+
* activity timeout. lets main.ts tear down shared resources (MCP HTTP
|
|
137
|
+
* server) so lingering SSE reconnects don't keep the outer timer alive.
|
|
138
|
+
*/
|
|
139
|
+
onActivityTimeout?: (() => void) | undefined;
|
|
140
|
+
onToolUse?: ((event: AgentToolUseEvent) => void) | undefined;
|
|
141
|
+
/**
|
|
142
|
+
* Per-run token ceiling (OWASP LLM10). Harnesses report their running total
|
|
143
|
+
* to `observe()` as usage arrives and must stop the run when it returns true
|
|
144
|
+
* — the activity watchdogs bound idleness, and a runaway loop is never idle.
|
|
145
|
+
* Absent for call sites with nothing to bound (subagents, tests); use
|
|
146
|
+
* `unlimitedTokenQuota()` rather than a null check when one is required.
|
|
147
|
+
*/
|
|
148
|
+
tokenQuota?: RunTokenQuota | undefined;
|
|
149
|
+
/**
|
|
150
|
+
* Infraweaver API JWT scoped to this run. agents only need this when they
|
|
151
|
+
* have to write state back to Infraweaver mid-run (today: opencode.ts uses
|
|
152
|
+
* it to seed the post-hook's writeback envelope for Codex auth refresh).
|
|
153
|
+
* empty string when the run wasn't context-resolved (e.g. local dry-runs).
|
|
154
|
+
*/
|
|
155
|
+
apiToken: string;
|
|
156
|
+
}
|
|
157
|
+
export interface Agent {
|
|
158
|
+
name: AgentId;
|
|
159
|
+
install: (token?: string) => Promise<string>;
|
|
160
|
+
run: (ctx: AgentRunContext) => Promise<AgentResult>;
|
|
161
|
+
}
|
|
162
|
+
export declare const agent: (input: Agent) => Agent;
|
|
163
|
+
/** format a USD cost to 4 decimal places, always showing the leading zero */
|
|
164
|
+
export declare function formatCostUsd(costUsd: number): string;
|
|
165
|
+
/**
|
|
166
|
+
* Redirect the sub-agent's HOME / XDG config into the run tmpdir so it never
|
|
167
|
+
* reads or writes the runner's real home. Both harnesses build this identically
|
|
168
|
+
* (then `mkdir` under `XDG_CONFIG_HOME` for their provider config).
|
|
169
|
+
*/
|
|
170
|
+
export declare function agentHomeEnv(tmpdir: string): {
|
|
171
|
+
HOME: string;
|
|
172
|
+
XDG_CONFIG_HOME: string;
|
|
173
|
+
};
|
|
174
|
+
/**
|
|
175
|
+
* The base spawn env every harness starts from: the process env, the tmpdir
|
|
176
|
+
* HOME/XDG redirect, and `PWD` pinned to the repo dir.
|
|
177
|
+
*
|
|
178
|
+
* PWD is load-bearing: opencode (≥1.14) resolves the session `directory` from
|
|
179
|
+
* `process.env.PWD`, and claude-code (2.1.x) registers `PWD` as a "session"
|
|
180
|
+
* additional working dir when it differs from `process.cwd()` — so inheriting
|
|
181
|
+
* the harness's own PWD via `...process.env` would add the wrong dir to the
|
|
182
|
+
* agent's allowed working set under `pnpm runtest`/`dev:run`. Providers spread
|
|
183
|
+
* this and layer their own keys (config content, credentials) on top.
|
|
184
|
+
*/
|
|
185
|
+
export declare function baseAgentEnv(homeEnv: {
|
|
186
|
+
HOME: string;
|
|
187
|
+
XDG_CONFIG_HOME: string;
|
|
188
|
+
}, repoDir: string): NodeJS.ProcessEnv;
|
|
189
|
+
/**
|
|
190
|
+
* Normalize a run's raw token/cost components into an {@link AgentUsage}, or
|
|
191
|
+
* `undefined` when the run produced nothing billable. The single home for the
|
|
192
|
+
* convention both harnesses previously re-implemented in their `buildUsage`:
|
|
193
|
+
* - total `inputTokens` = non-cached input + cache read + cache write
|
|
194
|
+
* - a zero cache / cost field collapses to `undefined` (symmetry with
|
|
195
|
+
* {@link mergeAgentUsage})
|
|
196
|
+
* - all-zero input/output/cost → `undefined` (no empty usage rows)
|
|
197
|
+
*/
|
|
198
|
+
export declare function buildAgentUsage(parts: {
|
|
199
|
+
agent: string;
|
|
200
|
+
/** non-cached input tokens sent this run. */
|
|
201
|
+
input: number;
|
|
202
|
+
output: number;
|
|
203
|
+
cacheRead: number;
|
|
204
|
+
cacheWrite: number;
|
|
205
|
+
costUsd: number;
|
|
206
|
+
}): AgentUsage | undefined;
|
|
207
|
+
/**
|
|
208
|
+
* merge two AgentUsage snapshots into one running total.
|
|
209
|
+
*
|
|
210
|
+
* both agent harnesses invoke their runner multiple times per `run()` when the
|
|
211
|
+
* post-run retry loop kicks in (MAX_POST_RUN_RETRIES). each invocation
|
|
212
|
+
* produces its own AgentUsage; we sum them so downstream callers (usage
|
|
213
|
+
* summary, WorkflowRun persistence) see the whole session — not just the
|
|
214
|
+
* final retry's slice.
|
|
215
|
+
*
|
|
216
|
+
* returns `undefined` when both sides are empty so callers can short-circuit
|
|
217
|
+
* without a special case. zero-valued cache / cost fields are dropped to
|
|
218
|
+
* `undefined` for symmetry with each harness's `buildUsage`.
|
|
219
|
+
*/
|
|
220
|
+
export declare function mergeAgentUsage(a: AgentUsage | undefined, b: AgentUsage | undefined): AgentUsage | undefined;
|
|
221
|
+
/**
|
|
222
|
+
* unified per-run token table used by every agent harness.
|
|
223
|
+
*
|
|
224
|
+
* columns are kept stable across agents and models so downstream log parsers
|
|
225
|
+
* (scripts/token-usage.ts, cost dashboards) only have to understand one format:
|
|
226
|
+
*
|
|
227
|
+
* Input non-cached input tokens sent this run
|
|
228
|
+
* Cache Read input tokens served from prompt cache (Anthropic, etc.)
|
|
229
|
+
* Cache Write input tokens written to prompt cache this run
|
|
230
|
+
* Output assistant output tokens
|
|
231
|
+
* Total sum of the four columns — the real billable quantity
|
|
232
|
+
* Cost ($) USD cost reported by the provider (only rendered when known)
|
|
233
|
+
*
|
|
234
|
+
* models that don't report prompt caching leave Cache Read / Write at 0.
|
|
235
|
+
* OpenCode emits per-step `part.cost` sourced from models.dev (works across
|
|
236
|
+
* Anthropic, OpenAI, Google, xAI, DeepSeek, Moonshot, OpenRouter, etc.);
|
|
237
|
+
* Claude CLI emits `total_cost_usd` on its final `result` event. pass the
|
|
238
|
+
* accumulated value via `costUsd` to render the Cost column.
|
|
239
|
+
*/
|
|
240
|
+
export declare function logTokenTable(t: {
|
|
241
|
+
input: number;
|
|
242
|
+
cacheRead: number;
|
|
243
|
+
cacheWrite: number;
|
|
244
|
+
output: number;
|
|
245
|
+
costUsd?: number | undefined;
|
|
246
|
+
}): void;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derive a cheaper subagent model override from the orchestrator's resolved
|
|
3
|
+
* model spec.
|
|
4
|
+
*
|
|
5
|
+
* This is a pure registry lookup: every alias in `action/models.ts` declares
|
|
6
|
+
* its own `subagentModel` (alias key in the same provider). At runtime we
|
|
7
|
+
* reverse-lookup the orchestrator's resolved slug to find the alias that
|
|
8
|
+
* produced it, follow the `subagentModel` pointer, and return the target
|
|
9
|
+
* alias's resolve / openRouterResolve depending on which route the
|
|
10
|
+
* orchestrator was using.
|
|
11
|
+
*
|
|
12
|
+
* Returns `{ reviewer: undefined }` when the orchestrator's alias has no
|
|
13
|
+
* `subagentModel` (e.g. it's already at a sufficiently cheap tier, or its
|
|
14
|
+
* provider doesn't have a clean cheaper-but-capable sibling). See models.ts
|
|
15
|
+
* for the wiring + per-provider rationale.
|
|
16
|
+
*/
|
|
17
|
+
export declare function deriveSubagentModels(orchestratorSpec: string | undefined): {
|
|
18
|
+
reviewer: string | undefined;
|
|
19
|
+
};
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-run token quota (OWASP **LLM10**, unbounded consumption).
|
|
3
|
+
*
|
|
4
|
+
* WHAT WAS ACTUALLY UNBOUNDED. The engine already bounds a run in *time* — an
|
|
5
|
+
* outer process-output timer, an inner event-silence watchdog, one agent per
|
|
6
|
+
* run — and Infraweaver Cloud already bounds *spend* per run and per tenant. What
|
|
7
|
+
* neither bounds is **tokens inside a single, continuously-progressing run**: an
|
|
8
|
+
* agent that keeps emitting tokens never trips an activity watchdog, because it
|
|
9
|
+
* is not idle. A hostile repository can steer a remediation loop into exactly
|
|
10
|
+
* that shape (a fix that re-breaks its own check, a file that always re-scans
|
|
11
|
+
* dirty), and on a **self-hosted** run there is no Cloud meter watching. Time
|
|
12
|
+
* says nothing about consumption; this module is the missing bound.
|
|
13
|
+
*
|
|
14
|
+
* FAIL-CLOSED, NOT TRUNCATED. When the quota is reached the run STOPS and says
|
|
15
|
+
* so. It does not quietly finish with whatever it had — a truncated compliance
|
|
16
|
+
* run that reports as complete is worse than no run, because the output looks
|
|
17
|
+
* like an assessment and is not one. {@link RunTokenQuota.gap} is the sentence
|
|
18
|
+
* that goes to the operator, phrased as a coverage gap rather than a crash.
|
|
19
|
+
*
|
|
20
|
+
* WHY MONOTONIC-BY-SOURCE. The harnesses do not report deltas. Claude Code
|
|
21
|
+
* accumulates per-message usage and then *replaces* the running total with the
|
|
22
|
+
* authoritative figure from the terminal `result` event; opencode sums per-turn
|
|
23
|
+
* and retries produce a fresh accumulator. Feeding either straight into a `+=`
|
|
24
|
+
* would double-count. So callers report a running TOTAL under a stable source
|
|
25
|
+
* key and the quota charges only the increase — correct whether the harness
|
|
26
|
+
* accumulates, replaces, or restarts, and never decreasing.
|
|
27
|
+
*
|
|
28
|
+
* INPUT-ONLY, NEVER `.infraweaver.yml`. This is a safety limit, so it is settable
|
|
29
|
+
* from the workflow input alone. A quota a pull request could raise in the run
|
|
30
|
+
* that reviews it would not be a quota — the A.1 lesson, applied at birth (the
|
|
31
|
+
* same call TC-0.2 made for `tools_network`).
|
|
32
|
+
*/
|
|
33
|
+
/**
|
|
34
|
+
* Thrown (as an abort reason) when a run reaches its token ceiling.
|
|
35
|
+
*
|
|
36
|
+
* A distinct class because the retry paths must be able to tell this apart
|
|
37
|
+
* from a transient provider failure: retrying a run that was stopped for
|
|
38
|
+
* spending too much is precisely the wrong response, and would double the
|
|
39
|
+
* consumption the quota exists to bound.
|
|
40
|
+
*/
|
|
41
|
+
export declare class TokenQuotaExceededError extends Error {
|
|
42
|
+
readonly code = "TOKEN_QUOTA_EXCEEDED";
|
|
43
|
+
constructor(message: string);
|
|
44
|
+
}
|
|
45
|
+
/** True when an unknown error is (or wraps) a token-quota abort. */
|
|
46
|
+
export declare function isTokenQuotaError(err: unknown): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Default ceiling on billable tokens for one run.
|
|
49
|
+
*
|
|
50
|
+
* Sized to bound a runaway, not to ration real work: a heavy Review over a
|
|
51
|
+
* large repository lands in the low millions once cache reads are counted, so
|
|
52
|
+
* this sits roughly an order of magnitude above the worst legitimate run we
|
|
53
|
+
* expect. A limit tuned close to normal usage would turn a control into an
|
|
54
|
+
* outage, which is how safety limits get switched off for good.
|
|
55
|
+
*/
|
|
56
|
+
export declare const DEFAULT_RUN_TOKEN_QUOTA = 10000000;
|
|
57
|
+
/** The workflow input that overrides {@link DEFAULT_RUN_TOKEN_QUOTA}. */
|
|
58
|
+
export declare const RUN_TOKEN_QUOTA_INPUT = "max_run_tokens";
|
|
59
|
+
/** The four token components a run is charged for. Cache reads are cheap per
|
|
60
|
+
* token but they are still work performed on the model's behalf, and a
|
|
61
|
+
* runaway loop is visible mostly in cache reads — excluding them would leave
|
|
62
|
+
* the loudest signal of the very failure this bounds outside the count. */
|
|
63
|
+
export interface TokenComponents {
|
|
64
|
+
input?: number | undefined;
|
|
65
|
+
output?: number | undefined;
|
|
66
|
+
cacheRead?: number | undefined;
|
|
67
|
+
cacheWrite?: number | undefined;
|
|
68
|
+
}
|
|
69
|
+
/** Sum the components that count against the quota. Negative and non-finite
|
|
70
|
+
* values are dropped rather than trusted — the numbers come from a provider
|
|
71
|
+
* response, which is not ours. */
|
|
72
|
+
export declare function billableTokens(t: TokenComponents): number;
|
|
73
|
+
export interface RunTokenQuota {
|
|
74
|
+
/** The ceiling, in billable tokens. */
|
|
75
|
+
readonly limit: number;
|
|
76
|
+
/** Billable tokens charged so far across every source. */
|
|
77
|
+
used(): number;
|
|
78
|
+
/**
|
|
79
|
+
* Report a source's running TOTAL (not a delta) and return whether the quota
|
|
80
|
+
* is exhausted as of this observation. `source` must be stable for the life
|
|
81
|
+
* of one accumulator — an attempt id, not a message id.
|
|
82
|
+
*/
|
|
83
|
+
observe(source: string, total: TokenComponents | number): boolean;
|
|
84
|
+
/** True once {@link used} has reached the limit. Latches: a quota cannot
|
|
85
|
+
* un-exhaust, so a late-arriving smaller figure can't reopen a stopped run. */
|
|
86
|
+
exhausted(): boolean;
|
|
87
|
+
/** The operator-facing sentence. Stable text — the error renderer and the
|
|
88
|
+
* tests both key on it. */
|
|
89
|
+
gap(): string;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* A quota that never trips. Returned when the operator sets the input to `0`,
|
|
93
|
+
* and used by call sites that have no quota to enforce (subagent harnesses,
|
|
94
|
+
* tests) so they need no null checks.
|
|
95
|
+
*/
|
|
96
|
+
export declare function unlimitedTokenQuota(): RunTokenQuota;
|
|
97
|
+
/**
|
|
98
|
+
* Create a per-run token quota.
|
|
99
|
+
*
|
|
100
|
+
* `limit <= 0` yields {@link unlimitedTokenQuota} — the explicit opt-out, which
|
|
101
|
+
* an operator has to ask for. There is no accidental path to unlimited.
|
|
102
|
+
*/
|
|
103
|
+
export declare function createTokenQuota(limit: number): RunTokenQuota;
|
|
104
|
+
/**
|
|
105
|
+
* Parse the `max_run_tokens` input. A non-negative integer; `0` means unlimited.
|
|
106
|
+
* Anything unparseable returns undefined so the caller applies the default —
|
|
107
|
+
* a typo'd limit must not silently become "no limit".
|
|
108
|
+
*
|
|
109
|
+
* Deliberately stricter than the other numeric input parsers, which use a bare
|
|
110
|
+
* `parseInt`. `parseInt("1e6")` is `1` and `parseInt("5.5")` is `5`: for
|
|
111
|
+
* `max_prs` a prefix-parse is merely surprising, but here it would turn a
|
|
112
|
+
* plausible-looking limit into a one-token quota that aborts every run at the
|
|
113
|
+
* first message. Underscore separators are accepted because a limit of
|
|
114
|
+
* `10_000_000` is far easier to read — and to get right — than `10000000`.
|
|
115
|
+
*/
|
|
116
|
+
export declare function parseRunTokenQuota(raw: string | undefined): number | undefined;
|
|
117
|
+
/** Resolve the effective limit from the parsed input, applying the default. */
|
|
118
|
+
export declare function resolveRunTokenQuota(parsed: number | undefined): number;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The path-decision half of the write-time gates, emitted as source text that
|
|
3
|
+
* both agent runtimes embed into the standalone scripts they drop in the run
|
|
4
|
+
* tmpdir (see action/agents/claudePretoolGate.ts and
|
|
5
|
+
* action/agents/opencodePlugin.ts).
|
|
6
|
+
*
|
|
7
|
+
* It lives in one place because the two runtimes previously derived their base
|
|
8
|
+
* directory differently (the hook payload's `cwd` vs `process.cwd()`), which
|
|
9
|
+
* would silently misalign every glob the moment one of them changed. Sharing
|
|
10
|
+
* the source keeps a single definition of "is this write allowed", and keeps it
|
|
11
|
+
* aligned with the push-time gates in action/mcp/guardrails.ts that re-check
|
|
12
|
+
* the same globs.
|
|
13
|
+
*
|
|
14
|
+
* The emitted code is dependency-free (node builtins only) because the scripts
|
|
15
|
+
* run outside the bundle, with no module resolution available to them.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Shared helper source. Defines `refuseWrite(policy, rawPath, root)` returning
|
|
19
|
+
* a refusal string or null, plus the primitives it needs. Callers supply their
|
|
20
|
+
* own `targetPathOf` because the two runtimes name tool arguments differently.
|
|
21
|
+
*/
|
|
22
|
+
export declare const WRITE_GATE_HELPERS_SOURCE: string;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The write-time counterpart to the push-time path guardrails in
|
|
3
|
+
* `action/mcp/guardrails.ts`.
|
|
4
|
+
*
|
|
5
|
+
* Those gates (`enforceRemediationPaths`, `enforceProtectedPaths`,
|
|
6
|
+
* `assertNoVendoredModuleEdits`) all read `git diff <run-start> HEAD` — so they
|
|
7
|
+
* only fire once a change is already committed and heading for a push. That is
|
|
8
|
+
* fail-safe but LATE: between the write and the push the modified tree is what
|
|
9
|
+
* every subsequent subprocess sees, so a `terraform plan` or a re-scan can run
|
|
10
|
+
* against a file the guardrails would ultimately refuse. This module moves the
|
|
11
|
+
* same allow/deny decision to the moment of the write itself.
|
|
12
|
+
*
|
|
13
|
+
* SCOPE — this covers the agent's file-writing TOOLS, not every possible write.
|
|
14
|
+
* It deliberately does not cover:
|
|
15
|
+
* - the MCP `shell` tool (`cat > f`, `tee`, `sed -i`), which is bounded by
|
|
16
|
+
* the OS sandbox in `action/mcp/shell.ts` rather than by these globs;
|
|
17
|
+
* - the file-emitting MCP tools (`terraform_emit_sarif`, `_emit_evidence`,
|
|
18
|
+
* `_emit_oscal`, `_emit_vex`, `terraform_module_docs`), whose output paths
|
|
19
|
+
* are confined to the workspace by `resolveWithinCwd` but not to
|
|
20
|
+
* `allowed_paths`.
|
|
21
|
+
* Both remain covered by the push-time gates, which still fail closed, so
|
|
22
|
+
* neither is a route to a merged PR — but neither is stopped at write time.
|
|
23
|
+
*
|
|
24
|
+
* The policy is published as a small JSON file in the run's tmpdir rather than
|
|
25
|
+
* baked into the agent's gate script, because `select_mode` sets
|
|
26
|
+
* `toolState.selectedMode` DURING the run (see action/mcp/selectMode.ts) while
|
|
27
|
+
* the gate script is written before the agent launches. The gate re-reads this
|
|
28
|
+
* file on every tool call, so an auto-selected mode is picked up without
|
|
29
|
+
* restarting the agent. No file (or a non-guarded mode) means no restriction —
|
|
30
|
+
* exactly matching the push-time gates, which no-op outside a guarded mode.
|
|
31
|
+
*
|
|
32
|
+
* Both agent runtimes consume it: action/agents/claudePretoolGate.ts (Claude
|
|
33
|
+
* Code `PreToolUse`) and action/agents/opencodePlugin.ts
|
|
34
|
+
* (`tool.execute.before`).
|
|
35
|
+
*/
|
|
36
|
+
import { type GuardrailContext } from "#app/mcp/guardrails";
|
|
37
|
+
export declare const WRITE_POLICY_FILENAME: "infraweaver-write-policy.json";
|
|
38
|
+
/**
|
|
39
|
+
* What the gate scripts read. Deliberately a flat, dependency-free shape: the
|
|
40
|
+
* gates are plain `.mjs` with no imports, so anything richer would have to be
|
|
41
|
+
* re-modelled on the other side.
|
|
42
|
+
*/
|
|
43
|
+
export interface WritePolicy {
|
|
44
|
+
/** the guarded mode in force — surfaced in the refusal so the model can reason about it. */
|
|
45
|
+
mode: string;
|
|
46
|
+
/**
|
|
47
|
+
* The repo root every glob is resolved against. Carried in the policy rather
|
|
48
|
+
* than derived inside the gates because `main.ts` chdir()s into the `cwd`
|
|
49
|
+
* input for monorepo subdirectories, so neither gate's own process cwd is a
|
|
50
|
+
* safe base — and the push-time globs are always repo-root-relative.
|
|
51
|
+
*/
|
|
52
|
+
root: string;
|
|
53
|
+
/** globs a write MUST match (the `allowed_paths` allow-list). */
|
|
54
|
+
allowed: string[];
|
|
55
|
+
/** globs a write must NOT match (the `protected_paths` deny-list). */
|
|
56
|
+
protected: string[];
|
|
57
|
+
/** fetched/vendored module code, which is read-only by the refactor contract. */
|
|
58
|
+
vendored: string[];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Derive the policy for the current run, or `null` when no restriction applies
|
|
62
|
+
* (no mode selected yet, or a mode outside the guarded set — Review, Plan,
|
|
63
|
+
* Assess and friends legitimately write files the Terraform-only allow-list
|
|
64
|
+
* would reject, so gating them would break them).
|
|
65
|
+
*/
|
|
66
|
+
export declare function buildWritePolicy(ctx: GuardrailContext): WritePolicy | null;
|
|
67
|
+
export declare function writePolicyPath(tmpdir: string): string;
|
|
68
|
+
/**
|
|
69
|
+
* Publish (or clear) the policy for the gates to read.
|
|
70
|
+
*
|
|
71
|
+
* Written via a temp file + `rename` so a gate that reads concurrently sees
|
|
72
|
+
* either the old policy or the new one, never a half-written file — `rename` is
|
|
73
|
+
* atomic within a filesystem, and the temp file is created in the same tmpdir.
|
|
74
|
+
*
|
|
75
|
+
* Best-effort by design: the push-time guardrails remain the authoritative,
|
|
76
|
+
* fail-closed backstop, so a failure to publish must not abort a run that would
|
|
77
|
+
* otherwise be blocked correctly a few steps later. It is logged, not thrown.
|
|
78
|
+
*/
|
|
79
|
+
export declare function refreshWritePolicy(ctx: GuardrailContext): void;
|
package/dist/brand.d.ts
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single source of truth for the product brand on the engine side.
|
|
3
|
+
*
|
|
4
|
+
* Every user-visible product name, slug, prefix, and brand-derived filename
|
|
5
|
+
* must come from this module — a rebrand (or a white-label build) is then a
|
|
6
|
+
* handful of one-line edits here. The one permitted exception is `action.yml`,
|
|
7
|
+
* which is static YAML and cannot import; src/brand.test.ts asserts it stays
|
|
8
|
+
* in sync with these values.
|
|
9
|
+
*
|
|
10
|
+
* The reviewer subagent name is NOT defined here — it is a separate sub-brand
|
|
11
|
+
* owned by `REVIEWER_AGENT_NAME` in src/agents/reviewer.ts.
|
|
12
|
+
*/
|
|
13
|
+
/** Display name — PR bodies, review comments, run summaries, agent labels. */
|
|
14
|
+
export declare const PRODUCT_NAME = "Infraweaver";
|
|
15
|
+
/** Lowercase wordmark — package/dir names, CLI usage strings, slugs. */
|
|
16
|
+
export declare const PRODUCT_SLUG = "infraweaver";
|
|
17
|
+
/** PR comment trigger, e.g. `@infraweaver fix`. */
|
|
18
|
+
export declare const COMMENT_COMMAND = "@infraweaver";
|
|
19
|
+
/** SARIF `driver.name`, CycloneDX VEX tool component, evidence `tool.name` —
|
|
20
|
+
* the emitted artifacts all use the lowercase wordmark. */
|
|
21
|
+
export declare const TOOL_NAME = "infraweaver";
|
|
22
|
+
/** Cloud API token prefix — must match the Cloud UI's `TOKEN_PREFIX`. */
|
|
23
|
+
export declare const TOKEN_PREFIX = "tmnd_";
|
|
24
|
+
/** Prefix for all brand-scoped environment variables. */
|
|
25
|
+
export declare const ENV_PREFIX = "INFRAWEAVER_";
|
|
26
|
+
/** Primary domain — the Cloud API's default host and bearer-credential allowlist root. */
|
|
27
|
+
export declare const PRIMARY_DOMAIN = "infraweaver.dev";
|
|
28
|
+
/** Default Cloud API base URL. */
|
|
29
|
+
export declare const DEFAULT_API_URL = "https://infraweaver.dev";
|
|
30
|
+
/** Docs subdomain, used in in-product setup links. */
|
|
31
|
+
export declare const DOCS_URL = "https://docs.infraweaver.dev";
|
|
32
|
+
/** Status-page subdomain, linked from transient-error messages. */
|
|
33
|
+
export declare const STATUS_URL = "https://status.infraweaver.dev";
|
|
34
|
+
/** Asset-hosting subdomain, used for static images embedded in PR/issue markdown. */
|
|
35
|
+
export declare const UPLOADS_URL = "https://uploads.infraweaver.dev";
|
|
36
|
+
/** Repo config file (YAML). */
|
|
37
|
+
export declare const CONFIG_FILE = ".infraweaver.yml";
|
|
38
|
+
/** Repo config file (`.yaml` spelling variant). */
|
|
39
|
+
export declare const CONFIG_FILE_YAML = ".infraweaver.yaml";
|
|
40
|
+
/** Repo config file (JSON variant). */
|
|
41
|
+
export declare const CONFIG_FILE_JSON = ".infraweaver.json";
|
|
42
|
+
/** Committed baseline of accepted pre-existing findings. */
|
|
43
|
+
export declare const BASELINE_FILE = ".infraweaver.baseline.json";
|
|
44
|
+
/** Committed fix-memory (proven-fix recall) file. */
|
|
45
|
+
export declare const FIX_MEMORY_FILE = ".infraweaver.fix-memory.json";
|
|
46
|
+
/** Repo-committed reviewer learnings file seeded by the server. */
|
|
47
|
+
export declare const LEARNINGS_FILE = "infraweaver-learnings.md";
|
|
48
|
+
/** Rolling PR summary snapshot file. */
|
|
49
|
+
export declare const SUMMARY_FILE = "infraweaver-summary.md";
|
|
50
|
+
/** Signed evidence bundle. */
|
|
51
|
+
export declare const EVIDENCE_FILE = "infraweaver-evidence.json";
|
|
52
|
+
/** Detached signature for the evidence bundle. */
|
|
53
|
+
export declare const EVIDENCE_SIG_FILE = "infraweaver-evidence.json.sig";
|
|
54
|
+
/** SARIF report. */
|
|
55
|
+
export declare const SARIF_FILE = "infraweaver.sarif";
|
|
56
|
+
/** CycloneDX VEX document. */
|
|
57
|
+
export declare const VEX_FILE = "infraweaver-vex.cdx.json";
|
|
58
|
+
/** OSCAL Assessment Results document. */
|
|
59
|
+
export declare const OSCAL_FILE = "infraweaver-oscal.json";
|
|
60
|
+
/** Credential-free cost-analysis artifact committed to the PR (§5.19). */
|
|
61
|
+
export declare const COST_FILE = "cost.md";
|
|
62
|
+
/** The product's GitHub App bot login. */
|
|
63
|
+
export declare const BOT_LOGIN = "infraweaver[bot]";
|
|
64
|
+
/** The bot's GitHub noreply commit-author email. */
|
|
65
|
+
export declare const BOT_EMAIL = "infraweaver[bot]@users.noreply.github.com";
|
|
66
|
+
/** Default GitHub Actions OIDC audience for the product API. */
|
|
67
|
+
export declare const OIDC_AUDIENCE = "infraweaver-api";
|