@allocator-one/rcl 4.4.19
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 +21 -0
- package/README.md +1415 -0
- package/dist/ci.d.ts +16 -0
- package/dist/ci.js +42 -0
- package/dist/ci.js.map +1 -0
- package/dist/config/data-dir.d.ts +6 -0
- package/dist/config/data-dir.js +12 -0
- package/dist/config/data-dir.js.map +1 -0
- package/dist/config/defaults.d.ts +82 -0
- package/dist/config/defaults.js +89 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/harness.d.ts +40 -0
- package/dist/config/harness.js +151 -0
- package/dist/config/harness.js.map +1 -0
- package/dist/config/loader.d.ts +13 -0
- package/dist/config/loader.js +131 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/provider-concurrency.d.ts +4 -0
- package/dist/config/provider-concurrency.js +6 -0
- package/dist/config/provider-concurrency.js.map +1 -0
- package/dist/config/providers.d.ts +3 -0
- package/dist/config/providers.js +9 -0
- package/dist/config/providers.js.map +1 -0
- package/dist/config/schema.d.ts +179 -0
- package/dist/config/schema.js +115 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/consensus/claim-contract.d.ts +9 -0
- package/dist/consensus/claim-contract.js +307 -0
- package/dist/consensus/claim-contract.js.map +1 -0
- package/dist/consensus/claim-identity.d.ts +5 -0
- package/dist/consensus/claim-identity.js +39 -0
- package/dist/consensus/claim-identity.js.map +1 -0
- package/dist/consensus/deduper.d.ts +43 -0
- package/dist/consensus/deduper.js +1052 -0
- package/dist/consensus/deduper.js.map +1 -0
- package/dist/consensus/finding-identity.d.ts +20 -0
- package/dist/consensus/finding-identity.js +49 -0
- package/dist/consensus/finding-identity.js.map +1 -0
- package/dist/consensus/gating.d.ts +215 -0
- package/dist/consensus/gating.js +699 -0
- package/dist/consensus/gating.js.map +1 -0
- package/dist/consensus/parser.d.ts +22 -0
- package/dist/consensus/parser.js +255 -0
- package/dist/consensus/parser.js.map +1 -0
- package/dist/consensus/semantic-deduper.d.ts +10 -0
- package/dist/consensus/semantic-deduper.js +70 -0
- package/dist/consensus/semantic-deduper.js.map +1 -0
- package/dist/consensus/types.d.ts +196 -0
- package/dist/consensus/types.js +2 -0
- package/dist/consensus/types.js.map +1 -0
- package/dist/consensus/verification-contract.d.ts +8 -0
- package/dist/consensus/verification-contract.js +95 -0
- package/dist/consensus/verification-contract.js.map +1 -0
- package/dist/consensus/voter.d.ts +29 -0
- package/dist/consensus/voter.js +394 -0
- package/dist/consensus/voter.js.map +1 -0
- package/dist/converge/attempt-budget.d.ts +88 -0
- package/dist/converge/attempt-budget.js +717 -0
- package/dist/converge/attempt-budget.js.map +1 -0
- package/dist/converge/bound-fix-recovery-source.d.ts +24 -0
- package/dist/converge/bound-fix-recovery-source.js +25 -0
- package/dist/converge/bound-fix-recovery-source.js.map +1 -0
- package/dist/converge/bound-fix-recovery.d.ts +15 -0
- package/dist/converge/bound-fix-recovery.js +65 -0
- package/dist/converge/bound-fix-recovery.js.map +1 -0
- package/dist/converge/correction-anchors.d.ts +1 -0
- package/dist/converge/correction-anchors.js +2 -0
- package/dist/converge/correction-anchors.js.map +1 -0
- package/dist/converge/cycle-remote.d.ts +6 -0
- package/dist/converge/cycle-remote.js +41 -0
- package/dist/converge/cycle-remote.js.map +1 -0
- package/dist/converge/delivery-reconciliation.d.ts +17 -0
- package/dist/converge/delivery-reconciliation.js +53 -0
- package/dist/converge/delivery-reconciliation.js.map +1 -0
- package/dist/converge/finding-identity.d.ts +6 -0
- package/dist/converge/finding-identity.js +7 -0
- package/dist/converge/finding-identity.js.map +1 -0
- package/dist/converge/fresh-review.d.ts +37 -0
- package/dist/converge/fresh-review.js +351 -0
- package/dist/converge/fresh-review.js.map +1 -0
- package/dist/converge/launch-guard.d.ts +55 -0
- package/dist/converge/launch-guard.js +363 -0
- package/dist/converge/launch-guard.js.map +1 -0
- package/dist/converge/launch-preflight.d.ts +5 -0
- package/dist/converge/launch-preflight.js +41 -0
- package/dist/converge/launch-preflight.js.map +1 -0
- package/dist/converge/launch-record.d.ts +136 -0
- package/dist/converge/launch-record.js +86 -0
- package/dist/converge/launch-record.js.map +1 -0
- package/dist/converge/legacy-launch-health.d.ts +311 -0
- package/dist/converge/legacy-launch-health.js +159 -0
- package/dist/converge/legacy-launch-health.js.map +1 -0
- package/dist/converge/legacy-roster.d.ts +29 -0
- package/dist/converge/legacy-roster.js +268 -0
- package/dist/converge/legacy-roster.js.map +1 -0
- package/dist/converge/native-lock.d.ts +18 -0
- package/dist/converge/native-lock.js +122 -0
- package/dist/converge/native-lock.js.map +1 -0
- package/dist/converge/ordinary-pending-export.d.ts +67 -0
- package/dist/converge/ordinary-pending-export.js +175 -0
- package/dist/converge/ordinary-pending-export.js.map +1 -0
- package/dist/converge/ordinary-pending-package.d.ts +28 -0
- package/dist/converge/ordinary-pending-package.js +36 -0
- package/dist/converge/ordinary-pending-package.js.map +1 -0
- package/dist/converge/pending-legacy-resume.d.ts +119 -0
- package/dist/converge/pending-legacy-resume.js +720 -0
- package/dist/converge/pending-legacy-resume.js.map +1 -0
- package/dist/converge/pending-recovery-source.d.ts +131 -0
- package/dist/converge/pending-recovery-source.js +71 -0
- package/dist/converge/pending-recovery-source.js.map +1 -0
- package/dist/converge/recovery-launch.d.ts +66 -0
- package/dist/converge/recovery-launch.js +518 -0
- package/dist/converge/recovery-launch.js.map +1 -0
- package/dist/converge/retained-report.d.ts +29 -0
- package/dist/converge/retained-report.js +218 -0
- package/dist/converge/retained-report.js.map +1 -0
- package/dist/converge/retry-source.d.ts +25 -0
- package/dist/converge/retry-source.js +13 -0
- package/dist/converge/retry-source.js.map +1 -0
- package/dist/converge/review-cycle.d.ts +49 -0
- package/dist/converge/review-cycle.js +26 -0
- package/dist/converge/review-cycle.js.map +1 -0
- package/dist/converge/round-gap-schema.d.ts +66 -0
- package/dist/converge/round-gap-schema.js +51 -0
- package/dist/converge/round-gap-schema.js.map +1 -0
- package/dist/converge/round-gap.d.ts +38 -0
- package/dist/converge/round-gap.js +334 -0
- package/dist/converge/round-gap.js.map +1 -0
- package/dist/converge/run-state.d.ts +224 -0
- package/dist/converge/run-state.js +564 -0
- package/dist/converge/run-state.js.map +1 -0
- package/dist/converge/stale-report-schema.d.ts +42 -0
- package/dist/converge/stale-report-schema.js +79 -0
- package/dist/converge/stale-report-schema.js.map +1 -0
- package/dist/converge/stale-report-storage.d.ts +47 -0
- package/dist/converge/stale-report-storage.js +172 -0
- package/dist/converge/stale-report-storage.js.map +1 -0
- package/dist/converge/stale-report.d.ts +14 -0
- package/dist/converge/stale-report.js +213 -0
- package/dist/converge/stale-report.js.map +1 -0
- package/dist/converge/target-ownership.d.ts +29 -0
- package/dist/converge/target-ownership.js +95 -0
- package/dist/converge/target-ownership.js.map +1 -0
- package/dist/converge/terminal-rejection-schema.d.ts +42 -0
- package/dist/converge/terminal-rejection-schema.js +39 -0
- package/dist/converge/terminal-rejection-schema.js.map +1 -0
- package/dist/converge/terminal-rejection.d.ts +13 -0
- package/dist/converge/terminal-rejection.js +275 -0
- package/dist/converge/terminal-rejection.js.map +1 -0
- package/dist/coordination/registry-lock.d.ts +82 -0
- package/dist/coordination/registry-lock.js +498 -0
- package/dist/coordination/registry-lock.js.map +1 -0
- package/dist/discuss.d.ts +53 -0
- package/dist/discuss.js +112 -0
- package/dist/discuss.js.map +1 -0
- package/dist/dispatch/adapter.d.ts +32 -0
- package/dist/dispatch/adapter.js +2 -0
- package/dist/dispatch/adapter.js.map +1 -0
- package/dist/dispatch/anthropic.d.ts +10 -0
- package/dist/dispatch/anthropic.js +235 -0
- package/dist/dispatch/anthropic.js.map +1 -0
- package/dist/dispatch/async-lane.d.ts +127 -0
- package/dist/dispatch/async-lane.js +414 -0
- package/dist/dispatch/async-lane.js.map +1 -0
- package/dist/dispatch/capture-council.d.ts +63 -0
- package/dist/dispatch/capture-council.js +137 -0
- package/dist/dispatch/capture-council.js.map +1 -0
- package/dist/dispatch/captured-async.d.ts +67 -0
- package/dist/dispatch/captured-async.js +40 -0
- package/dist/dispatch/captured-async.js.map +1 -0
- package/dist/dispatch/captured-inputs.d.ts +50 -0
- package/dist/dispatch/captured-inputs.js +190 -0
- package/dist/dispatch/captured-inputs.js.map +1 -0
- package/dist/dispatch/checkpoint-async-context.d.ts +27 -0
- package/dist/dispatch/checkpoint-async-context.js +51 -0
- package/dist/dispatch/checkpoint-async-context.js.map +1 -0
- package/dist/dispatch/checkpoint-async-execution.d.ts +22 -0
- package/dist/dispatch/checkpoint-async-execution.js +130 -0
- package/dist/dispatch/checkpoint-async-execution.js.map +1 -0
- package/dist/dispatch/checkpoint-async-store.d.ts +134 -0
- package/dist/dispatch/checkpoint-async-store.js +534 -0
- package/dist/dispatch/checkpoint-async-store.js.map +1 -0
- package/dist/dispatch/checkpoint-async-unknown.d.ts +19 -0
- package/dist/dispatch/checkpoint-async-unknown.js +46 -0
- package/dist/dispatch/checkpoint-async-unknown.js.map +1 -0
- package/dist/dispatch/checkpoint-async.d.ts +252 -0
- package/dist/dispatch/checkpoint-async.js +270 -0
- package/dist/dispatch/checkpoint-async.js.map +1 -0
- package/dist/dispatch/checkpoint-gating-execution.d.ts +26 -0
- package/dist/dispatch/checkpoint-gating-execution.js +84 -0
- package/dist/dispatch/checkpoint-gating-execution.js.map +1 -0
- package/dist/dispatch/checkpoint-phase-limits.d.ts +5 -0
- package/dist/dispatch/checkpoint-phase-limits.js +11 -0
- package/dist/dispatch/checkpoint-phase-limits.js.map +1 -0
- package/dist/dispatch/checkpoint-verification-context.d.ts +15 -0
- package/dist/dispatch/checkpoint-verification-context.js +48 -0
- package/dist/dispatch/checkpoint-verification-context.js.map +1 -0
- package/dist/dispatch/checkpoint-verification.d.ts +213 -0
- package/dist/dispatch/checkpoint-verification.js +381 -0
- package/dist/dispatch/checkpoint-verification.js.map +1 -0
- package/dist/dispatch/checkpoint.d.ts +329 -0
- package/dist/dispatch/checkpoint.js +1418 -0
- package/dist/dispatch/checkpoint.js.map +1 -0
- package/dist/dispatch/google.d.ts +10 -0
- package/dist/dispatch/google.js +158 -0
- package/dist/dispatch/google.js.map +1 -0
- package/dist/dispatch/late-audit.d.ts +23 -0
- package/dist/dispatch/late-audit.js +133 -0
- package/dist/dispatch/late-audit.js.map +1 -0
- package/dist/dispatch/merge.d.ts +29 -0
- package/dist/dispatch/merge.js +112 -0
- package/dist/dispatch/merge.js.map +1 -0
- package/dist/dispatch/openai-compat.d.ts +30 -0
- package/dist/dispatch/openai-compat.js +166 -0
- package/dist/dispatch/openai-compat.js.map +1 -0
- package/dist/dispatch/openai.d.ts +10 -0
- package/dist/dispatch/openai.js +159 -0
- package/dist/dispatch/openai.js.map +1 -0
- package/dist/dispatch/original-execution.d.ts +30 -0
- package/dist/dispatch/original-execution.js +91 -0
- package/dist/dispatch/original-execution.js.map +1 -0
- package/dist/dispatch/original-launch.d.ts +37 -0
- package/dist/dispatch/original-launch.js +117 -0
- package/dist/dispatch/original-launch.js.map +1 -0
- package/dist/dispatch/quorum.d.ts +15 -0
- package/dist/dispatch/quorum.js +33 -0
- package/dist/dispatch/quorum.js.map +1 -0
- package/dist/dispatch/recovery-operation.d.ts +44 -0
- package/dist/dispatch/recovery-operation.js +146 -0
- package/dist/dispatch/recovery-operation.js.map +1 -0
- package/dist/dispatch/recovery-policy.d.ts +54 -0
- package/dist/dispatch/recovery-policy.js +157 -0
- package/dist/dispatch/recovery-policy.js.map +1 -0
- package/dist/dispatch/recovery.d.ts +78 -0
- package/dist/dispatch/recovery.js +299 -0
- package/dist/dispatch/recovery.js.map +1 -0
- package/dist/dispatch/retained-async.d.ts +13 -0
- package/dist/dispatch/retained-async.js +101 -0
- package/dist/dispatch/retained-async.js.map +1 -0
- package/dist/dispatch/reviewer-identity.d.ts +10 -0
- package/dist/dispatch/reviewer-identity.js +19 -0
- package/dist/dispatch/reviewer-identity.js.map +1 -0
- package/dist/dispatch/runner.d.ts +76 -0
- package/dist/dispatch/runner.js +415 -0
- package/dist/dispatch/runner.js.map +1 -0
- package/dist/dispatch/utils.d.ts +159 -0
- package/dist/dispatch/utils.js +381 -0
- package/dist/dispatch/utils.js.map +1 -0
- package/dist/dispatch/verification-execution.d.ts +48 -0
- package/dist/dispatch/verification-execution.js +252 -0
- package/dist/dispatch/verification-execution.js.map +1 -0
- package/dist/dispatch/verification-late-audit.d.ts +17 -0
- package/dist/dispatch/verification-late-audit.js +117 -0
- package/dist/dispatch/verification-late-audit.js.map +1 -0
- package/dist/evidence/claim-recovery/authenticated-carrier-projection.d.ts +30 -0
- package/dist/evidence/claim-recovery/authenticated-carrier-projection.js +100 -0
- package/dist/evidence/claim-recovery/authenticated-carrier-projection.js.map +1 -0
- package/dist/evidence/claim-recovery/authenticated-receipts.d.ts +46 -0
- package/dist/evidence/claim-recovery/authenticated-receipts.js +120 -0
- package/dist/evidence/claim-recovery/authenticated-receipts.js.map +1 -0
- package/dist/evidence/claim-recovery/carrier-inventory.d.ts +49 -0
- package/dist/evidence/claim-recovery/carrier-inventory.js +340 -0
- package/dist/evidence/claim-recovery/carrier-inventory.js.map +1 -0
- package/dist/evidence/claim-recovery/claim-index.d.ts +12 -0
- package/dist/evidence/claim-recovery/claim-index.js +56 -0
- package/dist/evidence/claim-recovery/claim-index.js.map +1 -0
- package/dist/evidence/claim-recovery/confirmation.d.ts +53 -0
- package/dist/evidence/claim-recovery/confirmation.js +151 -0
- package/dist/evidence/claim-recovery/confirmation.js.map +1 -0
- package/dist/evidence/claim-recovery/context.d.ts +15 -0
- package/dist/evidence/claim-recovery/context.js +40 -0
- package/dist/evidence/claim-recovery/context.js.map +1 -0
- package/dist/evidence/claim-recovery/proof-storage.d.ts +6 -0
- package/dist/evidence/claim-recovery/proof-storage.js +97 -0
- package/dist/evidence/claim-recovery/proof-storage.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/anchors.d.ts +20 -0
- package/dist/evidence/claim-recovery/validation/anchors.js +22 -0
- package/dist/evidence/claim-recovery/validation/anchors.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/carrier-projection.d.ts +9 -0
- package/dist/evidence/claim-recovery/validation/carrier-projection.js +364 -0
- package/dist/evidence/claim-recovery/validation/carrier-projection.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/carrier-types.d.ts +83 -0
- package/dist/evidence/claim-recovery/validation/carrier-types.js +2 -0
- package/dist/evidence/claim-recovery/validation/carrier-types.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/claim-split.d.ts +57 -0
- package/dist/evidence/claim-recovery/validation/claim-split.js +209 -0
- package/dist/evidence/claim-recovery/validation/claim-split.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/claims.d.ts +20 -0
- package/dist/evidence/claim-recovery/validation/claims.js +108 -0
- package/dist/evidence/claim-recovery/validation/claims.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/current-projection.d.ts +36 -0
- package/dist/evidence/claim-recovery/validation/current-projection.js +424 -0
- package/dist/evidence/claim-recovery/validation/current-projection.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/lexical.d.ts +18 -0
- package/dist/evidence/claim-recovery/validation/lexical.js +91 -0
- package/dist/evidence/claim-recovery/validation/lexical.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/materials.d.ts +19 -0
- package/dist/evidence/claim-recovery/validation/materials.js +160 -0
- package/dist/evidence/claim-recovery/validation/materials.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/native-material.d.ts +27 -0
- package/dist/evidence/claim-recovery/validation/native-material.js +35 -0
- package/dist/evidence/claim-recovery/validation/native-material.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/native-occurrences.d.ts +79 -0
- package/dist/evidence/claim-recovery/validation/native-occurrences.js +187 -0
- package/dist/evidence/claim-recovery/validation/native-occurrences.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/native-state.d.ts +45 -0
- package/dist/evidence/claim-recovery/validation/native-state.js +385 -0
- package/dist/evidence/claim-recovery/validation/native-state.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/obligations.d.ts +15 -0
- package/dist/evidence/claim-recovery/validation/obligations.js +65 -0
- package/dist/evidence/claim-recovery/validation/obligations.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/occurrence-source.d.ts +45 -0
- package/dist/evidence/claim-recovery/validation/occurrence-source.js +208 -0
- package/dist/evidence/claim-recovery/validation/occurrence-source.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/occurrence-types.d.ts +101 -0
- package/dist/evidence/claim-recovery/validation/occurrence-types.js +2 -0
- package/dist/evidence/claim-recovery/validation/occurrence-types.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/occurrence.d.ts +30 -0
- package/dist/evidence/claim-recovery/validation/occurrence.js +227 -0
- package/dist/evidence/claim-recovery/validation/occurrence.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/primitives.d.ts +11 -0
- package/dist/evidence/claim-recovery/validation/primitives.js +41 -0
- package/dist/evidence/claim-recovery/validation/primitives.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/receipts.d.ts +37 -0
- package/dist/evidence/claim-recovery/validation/receipts.js +83 -0
- package/dist/evidence/claim-recovery/validation/receipts.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/recovery-json.d.ts +8 -0
- package/dist/evidence/claim-recovery/validation/recovery-json.js +42 -0
- package/dist/evidence/claim-recovery/validation/recovery-json.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/semantic-cache.d.ts +3 -0
- package/dist/evidence/claim-recovery/validation/semantic-cache.js +22 -0
- package/dist/evidence/claim-recovery/validation/semantic-cache.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/semantic-validation.d.ts +9 -0
- package/dist/evidence/claim-recovery/validation/semantic-validation.js +347 -0
- package/dist/evidence/claim-recovery/validation/semantic-validation.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/sighting.d.ts +2 -0
- package/dist/evidence/claim-recovery/validation/sighting.js +15 -0
- package/dist/evidence/claim-recovery/validation/sighting.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/sources.d.ts +15 -0
- package/dist/evidence/claim-recovery/validation/sources.js +2 -0
- package/dist/evidence/claim-recovery/validation/sources.js.map +1 -0
- package/dist/evidence/claim-recovery/validation/types.d.ts +126 -0
- package/dist/evidence/claim-recovery/validation/types.js +2 -0
- package/dist/evidence/claim-recovery/validation/types.js.map +1 -0
- package/dist/evidence/claim-split.d.ts +1 -0
- package/dist/evidence/claim-split.js +2 -0
- package/dist/evidence/claim-split.js.map +1 -0
- package/dist/evidence/event-receipts.d.ts +16 -0
- package/dist/evidence/event-receipts.js +41 -0
- package/dist/evidence/event-receipts.js.map +1 -0
- package/dist/evidence/finding-recovery.d.ts +23 -0
- package/dist/evidence/finding-recovery.js +74 -0
- package/dist/evidence/finding-recovery.js.map +1 -0
- package/dist/evidence/finding-retriage.d.ts +14 -0
- package/dist/evidence/finding-retriage.js +57 -0
- package/dist/evidence/finding-retriage.js.map +1 -0
- package/dist/evidence/format.d.ts +18 -0
- package/dist/evidence/format.js +152 -0
- package/dist/evidence/format.js.map +1 -0
- package/dist/evidence/original-run/decode.d.ts +30 -0
- package/dist/evidence/original-run/decode.js +208 -0
- package/dist/evidence/original-run/decode.js.map +1 -0
- package/dist/evidence/original-run/journal.d.ts +31 -0
- package/dist/evidence/original-run/journal.js +157 -0
- package/dist/evidence/original-run/journal.js.map +1 -0
- package/dist/evidence/original-run/lock-path.d.ts +17 -0
- package/dist/evidence/original-run/lock-path.js +116 -0
- package/dist/evidence/original-run/lock-path.js.map +1 -0
- package/dist/evidence/original-run/lock-scope.d.ts +21 -0
- package/dist/evidence/original-run/lock-scope.js +61 -0
- package/dist/evidence/original-run/lock-scope.js.map +1 -0
- package/dist/evidence/original-run/lock.d.ts +33 -0
- package/dist/evidence/original-run/lock.js +259 -0
- package/dist/evidence/original-run/lock.js.map +1 -0
- package/dist/evidence/original-run/remote.d.ts +23 -0
- package/dist/evidence/original-run/remote.js +110 -0
- package/dist/evidence/original-run/remote.js.map +1 -0
- package/dist/evidence/original-run/source.d.ts +61 -0
- package/dist/evidence/original-run/source.js +267 -0
- package/dist/evidence/original-run/source.js.map +1 -0
- package/dist/evidence/reads.d.ts +11 -0
- package/dist/evidence/reads.js +16 -0
- package/dist/evidence/reads.js.map +1 -0
- package/dist/evidence/recover-finding.d.ts +17 -0
- package/dist/evidence/recover-finding.js +65 -0
- package/dist/evidence/recover-finding.js.map +1 -0
- package/dist/evidence/recover-run.d.ts +26 -0
- package/dist/evidence/recover-run.js +180 -0
- package/dist/evidence/recover-run.js.map +1 -0
- package/dist/evidence/retained-time-budget.d.ts +9 -0
- package/dist/evidence/retained-time-budget.js +14 -0
- package/dist/evidence/retained-time-budget.js.map +1 -0
- package/dist/evidence/retriage-finding.d.ts +12 -0
- package/dist/evidence/retriage-finding.js +67 -0
- package/dist/evidence/retriage-finding.js.map +1 -0
- package/dist/evidence/reviewer-lineage.d.ts +35 -0
- package/dist/evidence/reviewer-lineage.js +293 -0
- package/dist/evidence/reviewer-lineage.js.map +1 -0
- package/dist/evidence/reviewer-original.d.ts +67 -0
- package/dist/evidence/reviewer-original.js +148 -0
- package/dist/evidence/reviewer-original.js.map +1 -0
- package/dist/evidence/reviewer-recovery.d.ts +74 -0
- package/dist/evidence/reviewer-recovery.js +179 -0
- package/dist/evidence/reviewer-recovery.js.map +1 -0
- package/dist/evidence/reviewer-status.d.ts +145 -0
- package/dist/evidence/reviewer-status.js +302 -0
- package/dist/evidence/reviewer-status.js.map +1 -0
- package/dist/evidence/show.d.ts +10 -0
- package/dist/evidence/show.js +41 -0
- package/dist/evidence/show.js.map +1 -0
- package/dist/evidence/status.d.ts +38 -0
- package/dist/evidence/status.js +73 -0
- package/dist/evidence/status.js.map +1 -0
- package/dist/evidence/target.d.ts +17 -0
- package/dist/evidence/target.js +74 -0
- package/dist/evidence/target.js.map +1 -0
- package/dist/evidence/types.d.ts +176 -0
- package/dist/evidence/types.js +109 -0
- package/dist/evidence/types.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2688 -0
- package/dist/index.js.map +1 -0
- package/dist/models/seed.d.ts +44 -0
- package/dist/models/seed.js +175 -0
- package/dist/models/seed.js.map +1 -0
- package/dist/models/server-stats.d.ts +80 -0
- package/dist/models/server-stats.js +109 -0
- package/dist/models/server-stats.js.map +1 -0
- package/dist/models/stats-store.d.ts +84 -0
- package/dist/models/stats-store.js +572 -0
- package/dist/models/stats-store.js.map +1 -0
- package/dist/output/artifacts.d.ts +16 -0
- package/dist/output/artifacts.js +29 -0
- package/dist/output/artifacts.js.map +1 -0
- package/dist/output/assembly-refusal.d.ts +8 -0
- package/dist/output/assembly-refusal.js +14 -0
- package/dist/output/assembly-refusal.js.map +1 -0
- package/dist/output/github.d.ts +12 -0
- package/dist/output/github.js +214 -0
- package/dist/output/github.js.map +1 -0
- package/dist/output/json.d.ts +3 -0
- package/dist/output/json.js +8 -0
- package/dist/output/json.js.map +1 -0
- package/dist/output/markdown.d.ts +3 -0
- package/dist/output/markdown.js +281 -0
- package/dist/output/markdown.js.map +1 -0
- package/dist/output/progress.d.ts +55 -0
- package/dist/output/progress.js +180 -0
- package/dist/output/progress.js.map +1 -0
- package/dist/output/sanitize.d.ts +18 -0
- package/dist/output/sanitize.js +46 -0
- package/dist/output/sanitize.js.map +1 -0
- package/dist/output/terminal.d.ts +2 -0
- package/dist/output/terminal.js +172 -0
- package/dist/output/terminal.js.map +1 -0
- package/dist/prepare/chunker.d.ts +18 -0
- package/dist/prepare/chunker.js +325 -0
- package/dist/prepare/chunker.js.map +1 -0
- package/dist/prepare/language.d.ts +1 -0
- package/dist/prepare/language.js +99 -0
- package/dist/prepare/language.js.map +1 -0
- package/dist/prepare/prompt-builder.d.ts +44 -0
- package/dist/prepare/prompt-builder.js +102 -0
- package/dist/prepare/prompt-builder.js.map +1 -0
- package/dist/prepare/unified-diff.d.ts +40 -0
- package/dist/prepare/unified-diff.js +135 -0
- package/dist/prepare/unified-diff.js.map +1 -0
- package/dist/prompts/base.d.ts +3 -0
- package/dist/prompts/base.js +53 -0
- package/dist/prompts/base.js.map +1 -0
- package/dist/prompts/hardening.d.ts +19 -0
- package/dist/prompts/hardening.js +67 -0
- package/dist/prompts/hardening.js.map +1 -0
- package/dist/prompts/languages/elixir.d.ts +1 -0
- package/dist/prompts/languages/elixir.js +13 -0
- package/dist/prompts/languages/elixir.js.map +1 -0
- package/dist/prompts/languages/generic.d.ts +1 -0
- package/dist/prompts/languages/generic.js +11 -0
- package/dist/prompts/languages/generic.js.map +1 -0
- package/dist/prompts/languages/python.d.ts +1 -0
- package/dist/prompts/languages/python.js +14 -0
- package/dist/prompts/languages/python.js.map +1 -0
- package/dist/prompts/languages/typescript.d.ts +1 -0
- package/dist/prompts/languages/typescript.js +13 -0
- package/dist/prompts/languages/typescript.js.map +1 -0
- package/dist/prompts/plan.d.ts +15 -0
- package/dist/prompts/plan.js +55 -0
- package/dist/prompts/plan.js.map +1 -0
- package/dist/report/aggregation-inputs.d.ts +52 -0
- package/dist/report/aggregation-inputs.js +114 -0
- package/dist/report/aggregation-inputs.js.map +1 -0
- package/dist/report/assembly.d.ts +43 -0
- package/dist/report/assembly.js +133 -0
- package/dist/report/assembly.js.map +1 -0
- package/dist/report/blocking-health.d.ts +64 -0
- package/dist/report/blocking-health.js +156 -0
- package/dist/report/blocking-health.js.map +1 -0
- package/dist/report/checkpoint-assembly.d.ts +10 -0
- package/dist/report/checkpoint-assembly.js +17 -0
- package/dist/report/checkpoint-assembly.js.map +1 -0
- package/dist/report/checkpoint-consensus.d.ts +59 -0
- package/dist/report/checkpoint-consensus.js +197 -0
- package/dist/report/checkpoint-consensus.js.map +1 -0
- package/dist/report/checkpoint-gating.d.ts +36 -0
- package/dist/report/checkpoint-gating.js +110 -0
- package/dist/report/checkpoint-gating.js.map +1 -0
- package/dist/report/checkpoint-projection.d.ts +76 -0
- package/dist/report/checkpoint-projection.js +122 -0
- package/dist/report/checkpoint-projection.js.map +1 -0
- package/dist/report/consensus-assembly.d.ts +37 -0
- package/dist/report/consensus-assembly.js +33 -0
- package/dist/report/consensus-assembly.js.map +1 -0
- package/dist/report/recovery-source.d.ts +7 -0
- package/dist/report/recovery-source.js +7 -0
- package/dist/report/recovery-source.js.map +1 -0
- package/dist/report/reviewer-artifact.d.ts +118 -0
- package/dist/report/reviewer-artifact.js +381 -0
- package/dist/report/reviewer-artifact.js.map +1 -0
- package/dist/report/reviewer-evidence-schema.d.ts +42 -0
- package/dist/report/reviewer-evidence-schema.js +28 -0
- package/dist/report/reviewer-evidence-schema.js.map +1 -0
- package/dist/report/reviewer-evidence.d.ts +54 -0
- package/dist/report/reviewer-evidence.js +229 -0
- package/dist/report/reviewer-evidence.js.map +1 -0
- package/dist/report/reviewer-health.d.ts +62 -0
- package/dist/report/reviewer-health.js +105 -0
- package/dist/report/reviewer-health.js.map +1 -0
- package/dist/report/run-header.d.ts +219 -0
- package/dist/report/run-header.js +307 -0
- package/dist/report/run-header.js.map +1 -0
- package/dist/report/supplemental-async.d.ts +19 -0
- package/dist/report/supplemental-async.js +85 -0
- package/dist/report/supplemental-async.js.map +1 -0
- package/dist/report/uuid.d.ts +16 -0
- package/dist/report/uuid.js +41 -0
- package/dist/report/uuid.js.map +1 -0
- package/dist/resolver/git.d.ts +16 -0
- package/dist/resolver/git.js +77 -0
- package/dist/resolver/git.js.map +1 -0
- package/dist/resolver/github-client.d.ts +82 -0
- package/dist/resolver/github-client.js +27 -0
- package/dist/resolver/github-client.js.map +1 -0
- package/dist/resolver/github.d.ts +29 -0
- package/dist/resolver/github.js +166 -0
- package/dist/resolver/github.js.map +1 -0
- package/dist/resolver/local.d.ts +3 -0
- package/dist/resolver/local.js +75 -0
- package/dist/resolver/local.js.map +1 -0
- package/dist/resolver/plan.d.ts +8 -0
- package/dist/resolver/plan.js +44 -0
- package/dist/resolver/plan.js.map +1 -0
- package/dist/resolver/target.d.ts +35 -0
- package/dist/resolver/target.js +112 -0
- package/dist/resolver/target.js.map +1 -0
- package/dist/resolver/types.d.ts +43 -0
- package/dist/resolver/types.js +2 -0
- package/dist/resolver/types.js.map +1 -0
- package/dist/roles/builtin.d.ts +4 -0
- package/dist/roles/builtin.js +282 -0
- package/dist/roles/builtin.js.map +1 -0
- package/dist/roles/dispatcher.d.ts +26 -0
- package/dist/roles/dispatcher.js +96 -0
- package/dist/roles/dispatcher.js.map +1 -0
- package/dist/roles/legacy-4.1.10.d.ts +2 -0
- package/dist/roles/legacy-4.1.10.js +320 -0
- package/dist/roles/legacy-4.1.10.js.map +1 -0
- package/dist/roles/legacy-4.4.9.d.ts +4 -0
- package/dist/roles/legacy-4.4.9.js +282 -0
- package/dist/roles/legacy-4.4.9.js.map +1 -0
- package/dist/roles/loader.d.ts +10 -0
- package/dist/roles/loader.js +104 -0
- package/dist/roles/loader.js.map +1 -0
- package/dist/roles/types.d.ts +13 -0
- package/dist/roles/types.js +2 -0
- package/dist/roles/types.js.map +1 -0
- package/dist/telemetry/abort-signal.d.ts +13 -0
- package/dist/telemetry/abort-signal.js +40 -0
- package/dist/telemetry/abort-signal.js.map +1 -0
- package/dist/telemetry/attest.d.ts +98 -0
- package/dist/telemetry/attest.js +331 -0
- package/dist/telemetry/attest.js.map +1 -0
- package/dist/telemetry/attested-retry.d.ts +79 -0
- package/dist/telemetry/attested-retry.js +195 -0
- package/dist/telemetry/attested-retry.js.map +1 -0
- package/dist/telemetry/attested-reviewer-delivery.d.ts +58 -0
- package/dist/telemetry/attested-reviewer-delivery.js +238 -0
- package/dist/telemetry/attested-reviewer-delivery.js.map +1 -0
- package/dist/telemetry/backfill.d.ts +95 -0
- package/dist/telemetry/backfill.js +460 -0
- package/dist/telemetry/backfill.js.map +1 -0
- package/dist/telemetry/credentials.d.ts +44 -0
- package/dist/telemetry/credentials.js +87 -0
- package/dist/telemetry/credentials.js.map +1 -0
- package/dist/telemetry/deliver.d.ts +152 -0
- package/dist/telemetry/deliver.js +662 -0
- package/dist/telemetry/deliver.js.map +1 -0
- package/dist/telemetry/envelope-validation.d.ts +13 -0
- package/dist/telemetry/envelope-validation.js +196 -0
- package/dist/telemetry/envelope-validation.js.map +1 -0
- package/dist/telemetry/envelope.d.ts +159 -0
- package/dist/telemetry/envelope.js +288 -0
- package/dist/telemetry/envelope.js.map +1 -0
- package/dist/telemetry/events.d.ts +68 -0
- package/dist/telemetry/events.js +79 -0
- package/dist/telemetry/events.js.map +1 -0
- package/dist/telemetry/notice.d.ts +15 -0
- package/dist/telemetry/notice.js +67 -0
- package/dist/telemetry/notice.js.map +1 -0
- package/dist/telemetry/outbox.d.ts +166 -0
- package/dist/telemetry/outbox.js +741 -0
- package/dist/telemetry/outbox.js.map +1 -0
- package/dist/telemetry/quarantine.d.ts +105 -0
- package/dist/telemetry/quarantine.js +224 -0
- package/dist/telemetry/quarantine.js.map +1 -0
- package/dist/telemetry/read-sink.d.ts +31 -0
- package/dist/telemetry/read-sink.js +25 -0
- package/dist/telemetry/read-sink.js.map +1 -0
- package/dist/telemetry/recovery/command.d.ts +16 -0
- package/dist/telemetry/recovery/command.js +70 -0
- package/dist/telemetry/recovery/command.js.map +1 -0
- package/dist/telemetry/recovery/discovery.d.ts +8 -0
- package/dist/telemetry/recovery/discovery.js +277 -0
- package/dist/telemetry/recovery/discovery.js.map +1 -0
- package/dist/telemetry/recovery/files.d.ts +20 -0
- package/dist/telemetry/recovery/files.js +123 -0
- package/dist/telemetry/recovery/files.js.map +1 -0
- package/dist/telemetry/recovery/plan.d.ts +10 -0
- package/dist/telemetry/recovery/plan.js +325 -0
- package/dist/telemetry/recovery/plan.js.map +1 -0
- package/dist/telemetry/recovery/source.d.ts +328 -0
- package/dist/telemetry/recovery/source.js +253 -0
- package/dist/telemetry/recovery/source.js.map +1 -0
- package/dist/telemetry/recovery/types.d.ts +100 -0
- package/dist/telemetry/recovery/types.js +2 -0
- package/dist/telemetry/recovery/types.js.map +1 -0
- package/dist/telemetry/recovery-request-budget.d.ts +39 -0
- package/dist/telemetry/recovery-request-budget.js +102 -0
- package/dist/telemetry/recovery-request-budget.js.map +1 -0
- package/dist/telemetry/report-consistency.d.ts +11 -0
- package/dist/telemetry/report-consistency.js +111 -0
- package/dist/telemetry/report-consistency.js.map +1 -0
- package/dist/telemetry/reviewer-delivery.d.ts +39 -0
- package/dist/telemetry/reviewer-delivery.js +279 -0
- package/dist/telemetry/reviewer-delivery.js.map +1 -0
- package/dist/telemetry/reviewer-preflight.d.ts +13 -0
- package/dist/telemetry/reviewer-preflight.js +56 -0
- package/dist/telemetry/reviewer-preflight.js.map +1 -0
- package/dist/telemetry/scrub.d.ts +53 -0
- package/dist/telemetry/scrub.js +205 -0
- package/dist/telemetry/scrub.js.map +1 -0
- package/dist/telemetry/sink.d.ts +212 -0
- package/dist/telemetry/sink.js +813 -0
- package/dist/telemetry/sink.js.map +1 -0
- package/dist/telemetry/terminal-reviewer-delivery.d.ts +18 -0
- package/dist/telemetry/terminal-reviewer-delivery.js +27 -0
- package/dist/telemetry/terminal-reviewer-delivery.js.map +1 -0
- package/dist/telemetry/transient-input.d.ts +2 -0
- package/dist/telemetry/transient-input.js +37 -0
- package/dist/telemetry/transient-input.js.map +1 -0
- package/dist/telemetry/verification.d.ts +9 -0
- package/dist/telemetry/verification.js +12 -0
- package/dist/telemetry/verification.js.map +1 -0
- package/package.json +73 -0
package/dist/ci.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ReviewResult } from './consensus/types.js';
|
|
2
|
+
import { type ReviewerHealth } from './report/reviewer-health.js';
|
|
3
|
+
export interface CiVerdict {
|
|
4
|
+
exitCode: number;
|
|
5
|
+
message?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Decide the CI exit status for a completed review.
|
|
9
|
+
*
|
|
10
|
+
* A run where every reviewer errored produces zero findings — which without
|
|
11
|
+
* this check looks identical to "clean" and exits 0, greenlighting code that
|
|
12
|
+
* was never actually reviewed. That case fails first; blocking findings fail
|
|
13
|
+
* second. New proof-bearing reports pass a validated frozen-matrix health
|
|
14
|
+
* projection; legacy callers retain the original zero-success rule.
|
|
15
|
+
*/
|
|
16
|
+
export declare function evaluateCiGate(result: ReviewResult, health?: ReviewerHealth): CiVerdict;
|
package/dist/ci.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { assertReviewerHealth } from './report/reviewer-health.js';
|
|
2
|
+
/**
|
|
3
|
+
* Decide the CI exit status for a completed review.
|
|
4
|
+
*
|
|
5
|
+
* A run where every reviewer errored produces zero findings — which without
|
|
6
|
+
* this check looks identical to "clean" and exits 0, greenlighting code that
|
|
7
|
+
* was never actually reviewed. That case fails first; blocking findings fail
|
|
8
|
+
* second. New proof-bearing reports pass a validated frozen-matrix health
|
|
9
|
+
* projection; legacy callers retain the original zero-success rule.
|
|
10
|
+
*/
|
|
11
|
+
export function evaluateCiGate(result, health) {
|
|
12
|
+
if (health !== undefined) {
|
|
13
|
+
assertReviewerHealth(health);
|
|
14
|
+
if (!health.conclusive) {
|
|
15
|
+
return {
|
|
16
|
+
exitCode: 1,
|
|
17
|
+
message: `CI: ${health.successfulSeats.length}/${health.policy.seatCount} blocking reviewers completed every required chunk; ${health.policy.minimumSuccessful} required. Reviewer health is inconclusive. Exiting with code 1.`,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (result.stats.successfulReviews === 0) {
|
|
22
|
+
return {
|
|
23
|
+
exitCode: 1,
|
|
24
|
+
message: `CI: 0/${result.stats.totalReviews} reviewers succeeded — nothing was reviewed. Exiting with code 1.`,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
// Gating-annotated findings (RCL-23) block on their gating reason —
|
|
28
|
+
// consensus, critical, or verified — so a refuted single-model claim no
|
|
29
|
+
// longer fails CI. Legacy reports without annotations keep the pure
|
|
30
|
+
// severity gate.
|
|
31
|
+
const blocking = result.findings.filter((f) => f.gating
|
|
32
|
+
? f.gating.reason !== 'none'
|
|
33
|
+
: f.severity === 'critical' || f.severity === 'important');
|
|
34
|
+
if (blocking.length > 0) {
|
|
35
|
+
return {
|
|
36
|
+
exitCode: 1,
|
|
37
|
+
message: `CI: ${blocking.length} blocking finding(s) found. Exiting with code 1.`,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return { exitCode: 0 };
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=ci.js.map
|
package/dist/ci.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../src/ci.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAuB,MAAM,6BAA6B,CAAC;AAOxF;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,MAAoB,EAAE,MAAuB;IAC1E,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO;gBACL,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,OAAO,MAAM,CAAC,eAAe,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,uDAAuD,MAAM,CAAC,MAAM,CAAC,iBAAiB,kEAAkE;aACjO,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,CAAC,iBAAiB,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO;YACL,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,SAAS,MAAM,CAAC,KAAK,CAAC,YAAY,mEAAmE;SAC/G,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,wEAAwE;IACxE,oEAAoE;IACpE,iBAAiB;IACjB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5C,CAAC,CAAC,MAAM;QACN,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM;QAC5B,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,KAAK,WAAW,CAC5D,CAAC;IACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,QAAQ,EAAE,CAAC;YACX,OAAO,EAAE,OAAO,QAAQ,CAAC,MAAM,kDAAkD;SAClF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where rcl keeps its per-machine state (model stats, the telemetry outbox,
|
|
3
|
+
* the consent notice): `RCL_DATA_DIR`, or `~/.rcl`. Shared here so no
|
|
4
|
+
* feature module depends on another for the location.
|
|
5
|
+
*/
|
|
6
|
+
export declare function resolveDataDir(env?: NodeJS.ProcessEnv): string;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { homedir } from 'node:os';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
/**
|
|
4
|
+
* Where rcl keeps its per-machine state (model stats, the telemetry outbox,
|
|
5
|
+
* the consent notice): `RCL_DATA_DIR`, or `~/.rcl`. Shared here so no
|
|
6
|
+
* feature module depends on another for the location.
|
|
7
|
+
*/
|
|
8
|
+
export function resolveDataDir(env = process.env) {
|
|
9
|
+
const override = env['RCL_DATA_DIR']?.trim();
|
|
10
|
+
return override && override.length > 0 ? override : join(homedir(), '.rcl');
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=data-dir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-dir.js","sourceRoot":"","sources":["../../src/config/data-dir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,MAAyB,OAAO,CAAC,GAAG;IACjE,MAAM,QAAQ,GAAG,GAAG,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC;IAC7C,OAAO,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Primary council — general reviewers; specialists also use secondary models.
|
|
3
|
+
* Direct-API models only: the RCL-21 audit (922 rounds, 15,268 calls) found
|
|
4
|
+
* the OpenRouter wing at p50 7–9.5 min per call with 19–39% dead calls,
|
|
5
|
+
* last-finisher in 97.6% of rounds; the audited direct trio answered in
|
|
6
|
+
* 45–70 s with ~0% dead calls. Replaying the corpus with that direct-provider
|
|
7
|
+
* topology drops the median round from 14.4 to 2.0 min while 91% of
|
|
8
|
+
* multi-model findings still surface.
|
|
9
|
+
*/
|
|
10
|
+
export declare const DEFAULT_MODELS: readonly ["anthropic/claude-opus-5-5", "openai/gpt-6-sol"];
|
|
11
|
+
/**
|
|
12
|
+
* Async bonus reviewers — fired with the round but never awaited; whatever
|
|
13
|
+
* has arrived by the NEXT round's dedup is merged then, marked async in the
|
|
14
|
+
* report. kimi-k3 keeps a seat here because it has the council's best
|
|
15
|
+
* corroboration rate (62%) but is ~6× slower than the core trio.
|
|
16
|
+
*/
|
|
17
|
+
export declare const DEFAULT_ASYNC_MODELS: readonly ["openrouter/moonshotai/kimi-k3"];
|
|
18
|
+
/** Gemini contributes specialist reviews without adding a general-review seat. */
|
|
19
|
+
export declare const DEFAULT_SECONDARY_MODELS: readonly ["google/gemini-3.8-flash"];
|
|
20
|
+
export declare const DEFAULT_THRESHOLDS: {
|
|
21
|
+
readonly minConsensusScore: 0.4;
|
|
22
|
+
readonly minConfidence: 0.2;
|
|
23
|
+
readonly dedupeLineWindow: 5;
|
|
24
|
+
/**
|
|
25
|
+
* Threshold for the weighted title+description similarity
|
|
26
|
+
* (0.6 * title + 0.4 * description). Calibrated against the fixture
|
|
27
|
+
* corpus: genuine cross-model duplicates score 0.29-0.55 (descriptions
|
|
28
|
+
* diverge heavily across models), so higher thresholds split real
|
|
29
|
+
* duplicates. The strictness gain over the old max(title, desc) check
|
|
30
|
+
* comes from the formula: a title-only match now needs 0.5+ title
|
|
31
|
+
* overlap to merge instead of 0.3.
|
|
32
|
+
*/
|
|
33
|
+
readonly jaccardThreshold: 0.3;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Blocking-path per-call timeout. The RCL-21 corpus put every direct-API
|
|
37
|
+
* model's p90 under 260 s, but the 2.0.0 rollout (RCL-29) showed heavier
|
|
38
|
+
* reasoning defaults pushing real calls past 300 s; losing a reviewer costs
|
|
39
|
+
* more than waiting, so the blocking path now gets 540 s. Slow-by-design
|
|
40
|
+
* models still belong in the async lane, which has its own cap below.
|
|
41
|
+
*/
|
|
42
|
+
export declare const DEFAULT_TIMEOUT_MS = 540000;
|
|
43
|
+
/**
|
|
44
|
+
* Quorum round closure (RCL-26): a round closes once this fraction of its
|
|
45
|
+
* planned calls has completed; outstanding non-core calls are canceled and
|
|
46
|
+
* recorded. ⅔ matches the converge reviewer-health threshold, so a round
|
|
47
|
+
* closed exactly at quorum can still be conclusive. Corpus replay: −51%
|
|
48
|
+
* total review wall even with the pre-RCL-25 roster. Set to 1 to disable.
|
|
49
|
+
*/
|
|
50
|
+
export declare const DEFAULT_QUORUM_FRACTION: number;
|
|
51
|
+
/**
|
|
52
|
+
* Per-call timeout for the async (non-blocking) lane. Async reviewers are
|
|
53
|
+
* slow by definition — kimi-k3's p50 is 7–9.5 min — and nothing waits on
|
|
54
|
+
* them, so they get more headroom than the blocking council.
|
|
55
|
+
*/
|
|
56
|
+
export declare const DEFAULT_ASYNC_TIMEOUT_MS = 900000;
|
|
57
|
+
export declare const DEFAULT_MAX_RETRIES = 3;
|
|
58
|
+
/**
|
|
59
|
+
* Reasoning budget for OpenRouter-hosted models. Unbounded, they spend the
|
|
60
|
+
* whole completion budget (and many minutes) thinking before emitting any
|
|
61
|
+
* findings. Kimi K3, the default async model, supports low/high/max, not
|
|
62
|
+
* medium. Use the supported low level while retaining the output/time caps;
|
|
63
|
+
* explicit configuration can still select another effort for other models.
|
|
64
|
+
*/
|
|
65
|
+
export declare const DEFAULT_REASONING_EFFORT = "low";
|
|
66
|
+
export declare const DEFAULT_CONCURRENCY = 9;
|
|
67
|
+
/**
|
|
68
|
+
* Provider admission limits inside the blocking runner. The default prevents
|
|
69
|
+
* the observed five-seat high-effort Anthropic burst while preserving the
|
|
70
|
+
* existing per-call deadline. Providers absent from this map remain bounded
|
|
71
|
+
* only by the global concurrency limit.
|
|
72
|
+
*/
|
|
73
|
+
export declare const DEFAULT_PROVIDER_CONCURRENCY: {
|
|
74
|
+
readonly anthropic: 2;
|
|
75
|
+
};
|
|
76
|
+
export declare const DEFAULT_SEVERITY_ORDER: readonly ["critical", "important", "minor", "nitpick"];
|
|
77
|
+
export declare const CONFIDENCE_THRESHOLDS: {
|
|
78
|
+
readonly veryHigh: 0.8;
|
|
79
|
+
readonly high: 0.6;
|
|
80
|
+
readonly medium: 0.4;
|
|
81
|
+
readonly low: 0.2;
|
|
82
|
+
};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Primary council — general reviewers; specialists also use secondary models.
|
|
3
|
+
* Direct-API models only: the RCL-21 audit (922 rounds, 15,268 calls) found
|
|
4
|
+
* the OpenRouter wing at p50 7–9.5 min per call with 19–39% dead calls,
|
|
5
|
+
* last-finisher in 97.6% of rounds; the audited direct trio answered in
|
|
6
|
+
* 45–70 s with ~0% dead calls. Replaying the corpus with that direct-provider
|
|
7
|
+
* topology drops the median round from 14.4 to 2.0 min while 91% of
|
|
8
|
+
* multi-model findings still surface.
|
|
9
|
+
*/
|
|
10
|
+
export const DEFAULT_MODELS = [
|
|
11
|
+
'anthropic/claude-opus-5-5',
|
|
12
|
+
'openai/gpt-6-sol',
|
|
13
|
+
];
|
|
14
|
+
/**
|
|
15
|
+
* Async bonus reviewers — fired with the round but never awaited; whatever
|
|
16
|
+
* has arrived by the NEXT round's dedup is merged then, marked async in the
|
|
17
|
+
* report. kimi-k3 keeps a seat here because it has the council's best
|
|
18
|
+
* corroboration rate (62%) but is ~6× slower than the core trio.
|
|
19
|
+
*/
|
|
20
|
+
export const DEFAULT_ASYNC_MODELS = ['openrouter/moonshotai/kimi-k3'];
|
|
21
|
+
/** Gemini contributes specialist reviews without adding a general-review seat. */
|
|
22
|
+
export const DEFAULT_SECONDARY_MODELS = ['google/gemini-3.8-flash'];
|
|
23
|
+
export const DEFAULT_THRESHOLDS = {
|
|
24
|
+
minConsensusScore: 0.4,
|
|
25
|
+
minConfidence: 0.2,
|
|
26
|
+
dedupeLineWindow: 5,
|
|
27
|
+
/**
|
|
28
|
+
* Threshold for the weighted title+description similarity
|
|
29
|
+
* (0.6 * title + 0.4 * description). Calibrated against the fixture
|
|
30
|
+
* corpus: genuine cross-model duplicates score 0.29-0.55 (descriptions
|
|
31
|
+
* diverge heavily across models), so higher thresholds split real
|
|
32
|
+
* duplicates. The strictness gain over the old max(title, desc) check
|
|
33
|
+
* comes from the formula: a title-only match now needs 0.5+ title
|
|
34
|
+
* overlap to merge instead of 0.3.
|
|
35
|
+
*/
|
|
36
|
+
jaccardThreshold: 0.3,
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Blocking-path per-call timeout. The RCL-21 corpus put every direct-API
|
|
40
|
+
* model's p90 under 260 s, but the 2.0.0 rollout (RCL-29) showed heavier
|
|
41
|
+
* reasoning defaults pushing real calls past 300 s; losing a reviewer costs
|
|
42
|
+
* more than waiting, so the blocking path now gets 540 s. Slow-by-design
|
|
43
|
+
* models still belong in the async lane, which has its own cap below.
|
|
44
|
+
*/
|
|
45
|
+
export const DEFAULT_TIMEOUT_MS = 540_000;
|
|
46
|
+
/**
|
|
47
|
+
* Quorum round closure (RCL-26): a round closes once this fraction of its
|
|
48
|
+
* planned calls has completed; outstanding non-core calls are canceled and
|
|
49
|
+
* recorded. ⅔ matches the converge reviewer-health threshold, so a round
|
|
50
|
+
* closed exactly at quorum can still be conclusive. Corpus replay: −51%
|
|
51
|
+
* total review wall even with the pre-RCL-25 roster. Set to 1 to disable.
|
|
52
|
+
*/
|
|
53
|
+
export const DEFAULT_QUORUM_FRACTION = 2 / 3;
|
|
54
|
+
/**
|
|
55
|
+
* Per-call timeout for the async (non-blocking) lane. Async reviewers are
|
|
56
|
+
* slow by definition — kimi-k3's p50 is 7–9.5 min — and nothing waits on
|
|
57
|
+
* them, so they get more headroom than the blocking council.
|
|
58
|
+
*/
|
|
59
|
+
export const DEFAULT_ASYNC_TIMEOUT_MS = 900_000;
|
|
60
|
+
export const DEFAULT_MAX_RETRIES = 3;
|
|
61
|
+
/**
|
|
62
|
+
* Reasoning budget for OpenRouter-hosted models. Unbounded, they spend the
|
|
63
|
+
* whole completion budget (and many minutes) thinking before emitting any
|
|
64
|
+
* findings. Kimi K3, the default async model, supports low/high/max, not
|
|
65
|
+
* medium. Use the supported low level while retaining the output/time caps;
|
|
66
|
+
* explicit configuration can still select another effort for other models.
|
|
67
|
+
*/
|
|
68
|
+
export const DEFAULT_REASONING_EFFORT = 'low';
|
|
69
|
+
export const DEFAULT_CONCURRENCY = 9;
|
|
70
|
+
/**
|
|
71
|
+
* Provider admission limits inside the blocking runner. The default prevents
|
|
72
|
+
* the observed five-seat high-effort Anthropic burst while preserving the
|
|
73
|
+
* existing per-call deadline. Providers absent from this map remain bounded
|
|
74
|
+
* only by the global concurrency limit.
|
|
75
|
+
*/
|
|
76
|
+
export const DEFAULT_PROVIDER_CONCURRENCY = { anthropic: 2 };
|
|
77
|
+
export const DEFAULT_SEVERITY_ORDER = [
|
|
78
|
+
'critical',
|
|
79
|
+
'important',
|
|
80
|
+
'minor',
|
|
81
|
+
'nitpick',
|
|
82
|
+
];
|
|
83
|
+
export const CONFIDENCE_THRESHOLDS = {
|
|
84
|
+
veryHigh: 0.8,
|
|
85
|
+
high: 0.6,
|
|
86
|
+
medium: 0.4,
|
|
87
|
+
low: 0.2,
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,2BAA2B;IAC3B,kBAAkB;CACV,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,+BAA+B,CAAU,CAAC;AAE/E,kFAAkF;AAClF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,yBAAyB,CAAU,CAAC;AAE7E,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,iBAAiB,EAAE,GAAG;IACtB,aAAa,EAAE,GAAG;IAClB,gBAAgB,EAAE,CAAC;IACnB;;;;;;;;OAQG;IACH,gBAAgB,EAAE,GAAG;CACb,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,CAAC,CAAC;AAE7C;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAO,CAAC;AAChD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAC9C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AACrC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,SAAS,EAAE,CAAC,EAAW,CAAC;AAEtE,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,UAAU;IACV,WAAW;IACX,OAAO;IACP,SAAS;CACD,CAAC;AAEX,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,QAAQ,EAAE,GAAG;IACb,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,GAAG;IACX,GAAG,EAAE,GAAG;CACA,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export interface HarnessKeyResult {
|
|
2
|
+
/** Providers whose keys were injected into the env. */
|
|
3
|
+
injected: string[];
|
|
4
|
+
/** One human-readable line worth showing, when there is something to say. */
|
|
5
|
+
note?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface HarnessKeyOptions {
|
|
8
|
+
cwd?: string;
|
|
9
|
+
/** Injectable for tests; defaults to process.env and is MUTATED on inject. */
|
|
10
|
+
env?: Record<string, string | undefined>;
|
|
11
|
+
credentialsPath?: string;
|
|
12
|
+
fetchImpl?: typeof fetch;
|
|
13
|
+
/**
|
|
14
|
+
* A credential already in hand — the run-bound one `rcl review --attest`
|
|
15
|
+
* minted (RCL-40). Used instead of the stored login, and the attestation
|
|
16
|
+
* stands in for the repository's `.harness-cli/config.json`.
|
|
17
|
+
*/
|
|
18
|
+
credential?: {
|
|
19
|
+
url: string;
|
|
20
|
+
token: string;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/** Walk up from `startDir` looking for `.harness-cli/config.json`. */
|
|
24
|
+
export declare function findHarnessRepoConfig(startDir: string): string | null;
|
|
25
|
+
/**
|
|
26
|
+
* The credential `harness login` stores. The format is frozen on the
|
|
27
|
+
* harness-cli side (exactly {url, token}) — see its core/credentials.ts.
|
|
28
|
+
*/
|
|
29
|
+
export declare function defaultCredentialsPath(env: Record<string, string | undefined>): string;
|
|
30
|
+
export declare function readStoredCredentials(path: string): Promise<{
|
|
31
|
+
url: string;
|
|
32
|
+
token: string;
|
|
33
|
+
} | null>;
|
|
34
|
+
export declare function missingProviders(env: Record<string, string | undefined>): string[];
|
|
35
|
+
/**
|
|
36
|
+
* The one entry point: called before config loading (default-model
|
|
37
|
+
* degradation for a missing OPENROUTER_API_KEY happens there, so the key
|
|
38
|
+
* must exist earlier). No-op unless keys are missing AND the repo opted in.
|
|
39
|
+
*/
|
|
40
|
+
export declare function applyHarnessModelKeys(options?: HarnessKeyOptions): Promise<HarnessKeyResult>;
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { accessSync } from 'fs';
|
|
2
|
+
import { readFile } from 'fs/promises';
|
|
3
|
+
import { homedir } from 'os';
|
|
4
|
+
import { dirname, isAbsolute, join, parse } from 'path';
|
|
5
|
+
/**
|
|
6
|
+
* Key distribution via Harness. When the repo under review carries a
|
|
7
|
+
* committed `.harness-cli/config.json` (the "this repo belongs to the org"
|
|
8
|
+
* signal, discovered git-style by walking up from the working directory)
|
|
9
|
+
* and the user has run `harness login`, provider API keys missing from the
|
|
10
|
+
* environment are fetched from the Harness backend
|
|
11
|
+
* (GET /api/v1/model-keys) and injected into the process environment.
|
|
12
|
+
*
|
|
13
|
+
* Rules this module must never break:
|
|
14
|
+
* - The environment always wins: only keys absent from the env are injected.
|
|
15
|
+
* - The stored {url, token} credential pair is indivisible: the token is
|
|
16
|
+
* only ever sent to the host that minted it — NEVER to a URL named by the
|
|
17
|
+
* repo's own config, which is attacker-controlled input in a cloned repo.
|
|
18
|
+
* - Every failure degrades silently to today's behavior (missing keys warn
|
|
19
|
+
* or fail exactly as before); the fetch runs under a short timeout so an
|
|
20
|
+
* offline machine never hangs a review.
|
|
21
|
+
* - Keys land in the (injected) env only — never on disk, never in logs.
|
|
22
|
+
*/
|
|
23
|
+
/** Provider names the backend may serve, mapped to the env var rcl reads. */
|
|
24
|
+
const PROVIDER_ENV_VARS = {
|
|
25
|
+
anthropic: 'ANTHROPIC_API_KEY',
|
|
26
|
+
openai: 'OPENAI_API_KEY',
|
|
27
|
+
google: 'GEMINI_API_KEY',
|
|
28
|
+
openrouter: 'OPENROUTER_API_KEY',
|
|
29
|
+
};
|
|
30
|
+
/** Long enough for a healthy backend, short enough to never stall a review. */
|
|
31
|
+
const FETCH_TIMEOUT_MS = 3_000;
|
|
32
|
+
/** Walk up from `startDir` looking for `.harness-cli/config.json`. */
|
|
33
|
+
export function findHarnessRepoConfig(startDir) {
|
|
34
|
+
let dir = startDir;
|
|
35
|
+
const { root } = parse(startDir);
|
|
36
|
+
for (;;) {
|
|
37
|
+
const candidate = join(dir, '.harness-cli', 'config.json');
|
|
38
|
+
try {
|
|
39
|
+
// Presence is the signal; the file's contents (team, url) are not
|
|
40
|
+
// trusted for anything here.
|
|
41
|
+
accessSync(candidate);
|
|
42
|
+
return candidate;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// keep walking
|
|
46
|
+
}
|
|
47
|
+
if (dir === root)
|
|
48
|
+
return null;
|
|
49
|
+
dir = dirname(dir);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* The credential `harness login` stores. The format is frozen on the
|
|
54
|
+
* harness-cli side (exactly {url, token}) — see its core/credentials.ts.
|
|
55
|
+
*/
|
|
56
|
+
export function defaultCredentialsPath(env) {
|
|
57
|
+
const xdg = env['XDG_CONFIG_HOME'];
|
|
58
|
+
const base = xdg !== undefined && xdg !== '' && isAbsolute(xdg) ? xdg : join(homedir(), '.config');
|
|
59
|
+
return join(base, 'harness', 'credentials.json');
|
|
60
|
+
}
|
|
61
|
+
export async function readStoredCredentials(path) {
|
|
62
|
+
try {
|
|
63
|
+
const parsed = JSON.parse(await readFile(path, 'utf-8'));
|
|
64
|
+
if (typeof parsed === 'object' && parsed !== null) {
|
|
65
|
+
const { url, token } = parsed;
|
|
66
|
+
if (typeof url === 'string' && typeof token === 'string' && url !== '' && token !== '') {
|
|
67
|
+
return { url: url.replace(/\/+$/, ''), token };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// Missing or malformed reads as "not logged in".
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
async function fetchModelKeys(baseUrl, token, fetchImpl) {
|
|
77
|
+
try {
|
|
78
|
+
const response = await fetchImpl(`${baseUrl}/api/v1/model-keys`, {
|
|
79
|
+
headers: { authorization: `Bearer ${token}` },
|
|
80
|
+
signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
|
|
81
|
+
});
|
|
82
|
+
if (!response.ok)
|
|
83
|
+
return null;
|
|
84
|
+
const body = await response.json();
|
|
85
|
+
const keys = body?.data?.keys;
|
|
86
|
+
if (typeof keys !== 'object' || keys === null)
|
|
87
|
+
return null;
|
|
88
|
+
const out = {};
|
|
89
|
+
for (const [provider, key] of Object.entries(keys)) {
|
|
90
|
+
if (typeof key === 'string' && key !== '')
|
|
91
|
+
out[provider] = key;
|
|
92
|
+
}
|
|
93
|
+
return out;
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
// Timeout, offline, older backend without the endpoint — all read as
|
|
97
|
+
// "no keys from Harness".
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
export function missingProviders(env) {
|
|
102
|
+
const isSet = (name) => (env[name] ?? '').trim() !== '';
|
|
103
|
+
return Object.entries(PROVIDER_ENV_VARS)
|
|
104
|
+
.filter(([provider, envVar]) => {
|
|
105
|
+
// The Google adapter reads either variable; respect both.
|
|
106
|
+
if (provider === 'google' && isSet('GOOGLE_API_KEY'))
|
|
107
|
+
return false;
|
|
108
|
+
return !isSet(envVar);
|
|
109
|
+
})
|
|
110
|
+
.map(([provider]) => provider);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* The one entry point: called before config loading (default-model
|
|
114
|
+
* degradation for a missing OPENROUTER_API_KEY happens there, so the key
|
|
115
|
+
* must exist earlier). No-op unless keys are missing AND the repo opted in.
|
|
116
|
+
*/
|
|
117
|
+
export async function applyHarnessModelKeys(options = {}) {
|
|
118
|
+
const env = options.env ?? process.env;
|
|
119
|
+
if ((env['RCL_NO_HARNESS_KEYS'] ?? '') !== '')
|
|
120
|
+
return { injected: [] };
|
|
121
|
+
const missing = missingProviders(env);
|
|
122
|
+
if (missing.length === 0)
|
|
123
|
+
return { injected: [] };
|
|
124
|
+
if (options.credential === undefined && findHarnessRepoConfig(options.cwd ?? process.cwd()) === null)
|
|
125
|
+
return { injected: [] };
|
|
126
|
+
const credentials = options.credential ??
|
|
127
|
+
(await readStoredCredentials(options.credentialsPath ?? defaultCredentialsPath(env)));
|
|
128
|
+
if (credentials === null) {
|
|
129
|
+
return {
|
|
130
|
+
injected: [],
|
|
131
|
+
note: `Missing ${missing.map((p) => PROVIDER_ENV_VARS[p]).join(', ')} — this repo is Harness-managed; run \`harness login\` and rcl will fetch the keys for you.`,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
const keys = await fetchModelKeys(credentials.url, credentials.token, options.fetchImpl ?? fetch);
|
|
135
|
+
if (keys === null) {
|
|
136
|
+
return { injected: [], note: `Could not fetch model keys from ${credentials.url} — continuing with the environment as-is.` };
|
|
137
|
+
}
|
|
138
|
+
const injected = [];
|
|
139
|
+
for (const provider of missing) {
|
|
140
|
+
const key = keys[provider];
|
|
141
|
+
if (key !== undefined) {
|
|
142
|
+
env[PROVIDER_ENV_VARS[provider]] = key;
|
|
143
|
+
injected.push(provider);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
injected,
|
|
148
|
+
note: injected.length > 0 ? `Using ${injected.join(', ')} key(s) from Harness (${credentials.url}).` : undefined,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=harness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness.js","sourceRoot":"","sources":["../../src/config/harness.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Config } from './schema.js';
|
|
2
|
+
/**
|
|
3
|
+
* A config file was found but could not be used. Never silently recover
|
|
4
|
+
* from this: falling back to defaults would send code to cloud providers
|
|
5
|
+
* the user may have explicitly configured away from.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ConfigError extends Error {
|
|
8
|
+
constructor(message: string);
|
|
9
|
+
}
|
|
10
|
+
export declare const SEARCH_PLACES: string[];
|
|
11
|
+
export declare function loadConfig(configPath?: string, searchFrom?: string, options?: {
|
|
12
|
+
preserveDefaultRoster?: boolean;
|
|
13
|
+
}): Promise<Config>;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { cosmiconfig } from 'cosmiconfig';
|
|
2
|
+
import { ConfigSchema } from './schema.js';
|
|
3
|
+
import { DEFAULT_MODELS, DEFAULT_SECONDARY_MODELS, DEFAULT_ASYNC_MODELS, DEFAULT_THRESHOLDS, DEFAULT_TIMEOUT_MS, DEFAULT_ASYNC_TIMEOUT_MS, DEFAULT_QUORUM_FRACTION, DEFAULT_MAX_RETRIES, DEFAULT_CONCURRENCY, DEFAULT_REASONING_EFFORT, } from './defaults.js';
|
|
4
|
+
/**
|
|
5
|
+
* A config file was found but could not be used. Never silently recover
|
|
6
|
+
* from this: falling back to defaults would send code to cloud providers
|
|
7
|
+
* the user may have explicitly configured away from.
|
|
8
|
+
*/
|
|
9
|
+
export class ConfigError extends Error {
|
|
10
|
+
constructor(message) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.name = 'ConfigError';
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
// Declarative formats only. Executable config (.js/.cjs) is deliberately
|
|
16
|
+
// unsupported for discovery: rcl is routinely run inside untrusted
|
|
17
|
+
// checkouts, and search-loading attacker-controlled JS would execute it
|
|
18
|
+
// with the user's API keys in env.
|
|
19
|
+
export const SEARCH_PLACES = [
|
|
20
|
+
'.review-council.yml',
|
|
21
|
+
'.review-council.yaml',
|
|
22
|
+
'.review-council.json',
|
|
23
|
+
];
|
|
24
|
+
export async function loadConfig(configPath, searchFrom, options = {}) {
|
|
25
|
+
const cwd = searchFrom ?? process.cwd();
|
|
26
|
+
const explorer = cosmiconfig('review-council', {
|
|
27
|
+
searchPlaces: SEARCH_PLACES,
|
|
28
|
+
// 'none' searches only the starting directory — no parent-directory walk
|
|
29
|
+
// and no global (~/.config) dir, which would otherwise be probed with
|
|
30
|
+
// cosmiconfig's default executable-config loaders. (stopDir is rejected
|
|
31
|
+
// alongside a non-'global' strategy, and is unnecessary here.)
|
|
32
|
+
searchStrategy: 'none',
|
|
33
|
+
});
|
|
34
|
+
let result;
|
|
35
|
+
try {
|
|
36
|
+
result = configPath
|
|
37
|
+
? await explorer.load(configPath)
|
|
38
|
+
: await explorer.search(cwd);
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
const source = configPath ?? 'discovered config';
|
|
42
|
+
throw new ConfigError(`Failed to load config from ${source}: ${String(err)}`);
|
|
43
|
+
}
|
|
44
|
+
if (!result || result.isEmpty) {
|
|
45
|
+
return buildDefaultConfig(options.preserveDefaultRoster);
|
|
46
|
+
}
|
|
47
|
+
const parsed = ConfigSchema.safeParse(result.config);
|
|
48
|
+
if (!parsed.success) {
|
|
49
|
+
const issues = parsed.error.issues
|
|
50
|
+
.map((issue) => ` ${issue.path.join('.') || '(root)'}: ${issue.message}`)
|
|
51
|
+
.join('\n');
|
|
52
|
+
throw new ConfigError(`Invalid config at ${result.filepath}:\n${issues}`);
|
|
53
|
+
}
|
|
54
|
+
return mergeWithDefaults(parsed.data, options.preserveDefaultRoster);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* The default fleet includes openrouter/ models. When OPENROUTER_API_KEY is
|
|
58
|
+
* absent those voters would fail on every run (the runner refuses to fall
|
|
59
|
+
* back to OPENAI_API_KEY), silently breaking upgrades from pre-OpenRouter
|
|
60
|
+
* versions whose users only hold the big-three keys. Defaults therefore
|
|
61
|
+
* degrade gracefully: openrouter/ entries are dropped with a warning.
|
|
62
|
+
* Models the user configured explicitly are never filtered — those still
|
|
63
|
+
* fail loudly per review.
|
|
64
|
+
*/
|
|
65
|
+
function dropOpenRouterDefaultsWithoutKey(models, listName, preserveDefaultRoster = false) {
|
|
66
|
+
if (preserveDefaultRoster || process.env['OPENROUTER_API_KEY']?.trim())
|
|
67
|
+
return [...models];
|
|
68
|
+
const kept = models.filter((m) => !m.startsWith('openrouter/'));
|
|
69
|
+
const dropped = models.length - kept.length;
|
|
70
|
+
if (dropped > 0) {
|
|
71
|
+
// Name the resulting fleet, not just the count: the default secondary
|
|
72
|
+
// list is entirely openrouter/, so without the key it degrades to
|
|
73
|
+
// empty and every specialist role falls back to the primary models.
|
|
74
|
+
const remaining = kept.length > 0 ? kept.join(', ') : '(none)';
|
|
75
|
+
console.warn(`OPENROUTER_API_KEY is not set — dropping ${dropped} openrouter/ model(s) from the default ${listName}; remaining: ${remaining}. Set the key to run the full default fleet.`);
|
|
76
|
+
}
|
|
77
|
+
return kept;
|
|
78
|
+
}
|
|
79
|
+
function buildDefaultConfig(preserveDefaultRoster = false) {
|
|
80
|
+
return {
|
|
81
|
+
models: dropOpenRouterDefaultsWithoutKey(DEFAULT_MODELS, 'models', preserveDefaultRoster),
|
|
82
|
+
secondaryModels: dropOpenRouterDefaultsWithoutKey(DEFAULT_SECONDARY_MODELS, 'secondary models', preserveDefaultRoster),
|
|
83
|
+
asyncModels: dropOpenRouterDefaultsWithoutKey(DEFAULT_ASYNC_MODELS, 'async models', preserveDefaultRoster),
|
|
84
|
+
thresholds: { ...DEFAULT_THRESHOLDS },
|
|
85
|
+
timeout: DEFAULT_TIMEOUT_MS,
|
|
86
|
+
asyncTimeout: DEFAULT_ASYNC_TIMEOUT_MS,
|
|
87
|
+
quorumFraction: DEFAULT_QUORUM_FRACTION,
|
|
88
|
+
maxRetries: DEFAULT_MAX_RETRIES,
|
|
89
|
+
concurrency: DEFAULT_CONCURRENCY,
|
|
90
|
+
reasoningEffort: DEFAULT_REASONING_EFFORT,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function mergeWithDefaults(config, preserveDefaultRoster = false) {
|
|
94
|
+
return {
|
|
95
|
+
models: config.models ?? dropOpenRouterDefaultsWithoutKey(DEFAULT_MODELS, 'models', preserveDefaultRoster),
|
|
96
|
+
secondaryModels: config.secondaryModels ??
|
|
97
|
+
(config.models
|
|
98
|
+
? []
|
|
99
|
+
: dropOpenRouterDefaultsWithoutKey(DEFAULT_SECONDARY_MODELS, 'secondary models', preserveDefaultRoster)),
|
|
100
|
+
// Same containment rule as secondaryModels: an explicit `models` list
|
|
101
|
+
// means "send code to exactly these providers" — default async reviewers
|
|
102
|
+
// must not leak the diff to a provider the user configured away from.
|
|
103
|
+
asyncModels: config.asyncModels ??
|
|
104
|
+
(config.models
|
|
105
|
+
? []
|
|
106
|
+
: dropOpenRouterDefaultsWithoutKey(DEFAULT_ASYNC_MODELS, 'async models', preserveDefaultRoster)),
|
|
107
|
+
roles: config.roles,
|
|
108
|
+
reviewers: config.reviewers,
|
|
109
|
+
customRoles: config.customRoles,
|
|
110
|
+
thresholds: {
|
|
111
|
+
...DEFAULT_THRESHOLDS,
|
|
112
|
+
...config.thresholds,
|
|
113
|
+
},
|
|
114
|
+
// Resolved (and validated) at use by resolveGatingConfig.
|
|
115
|
+
gating: config.gating,
|
|
116
|
+
output: config.output,
|
|
117
|
+
timeout: config.timeout ?? DEFAULT_TIMEOUT_MS,
|
|
118
|
+
asyncTimeout: config.asyncTimeout ?? DEFAULT_ASYNC_TIMEOUT_MS,
|
|
119
|
+
quorumFraction: config.quorumFraction ?? DEFAULT_QUORUM_FRACTION,
|
|
120
|
+
maxRetries: config.maxRetries ?? DEFAULT_MAX_RETRIES,
|
|
121
|
+
concurrency: config.concurrency ?? DEFAULT_CONCURRENCY,
|
|
122
|
+
providerConcurrency: config.providerConcurrency ? { ...config.providerConcurrency } : undefined,
|
|
123
|
+
reasoningEffort: config.reasoningEffort ?? DEFAULT_REASONING_EFFORT,
|
|
124
|
+
githubToken: config.githubToken ?? process.env['GITHUB_TOKEN'],
|
|
125
|
+
context: config.context,
|
|
126
|
+
spec: config.spec,
|
|
127
|
+
focus: config.focus,
|
|
128
|
+
harness: config.harness,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Config } from './schema.js';
|
|
2
|
+
export type ProviderConcurrency = NonNullable<Config['providerConcurrency']>;
|
|
3
|
+
/** Version-owned defaults plus source-bound project overrides. */
|
|
4
|
+
export declare function resolveProviderConcurrency(configured?: Readonly<ProviderConcurrency>): ProviderConcurrency;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DEFAULT_PROVIDER_CONCURRENCY } from './defaults.js';
|
|
2
|
+
/** Version-owned defaults plus source-bound project overrides. */
|
|
3
|
+
export function resolveProviderConcurrency(configured) {
|
|
4
|
+
return { ...DEFAULT_PROVIDER_CONCURRENCY, ...configured };
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=provider-concurrency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-concurrency.js","sourceRoot":"","sources":["../../src/config/provider-concurrency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAK7D,kEAAkE;AAClE,MAAM,UAAU,0BAA0B,CACxC,UAA0C;IAE1C,OAAO,EAAE,GAAG,4BAA4B,EAAE,GAAG,UAAU,EAAE,CAAC;AAC5D,CAAC"}
|