voratiq 0.1.0-beta.2 → 0.1.0-beta.21
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/README.md +41 -29
- package/dist/agents/launch/chat.d.ts +23 -0
- package/dist/agents/launch/chat.js +44 -0
- package/dist/agents/launch/environment.d.ts +8 -0
- package/dist/{commands/run/agents/workspace-prep.js → agents/launch/environment.js} +5 -27
- package/dist/agents/launch/prompt.d.ts +6 -0
- package/dist/agents/launch/prompt.js +12 -0
- package/dist/agents/launch/provider-state.d.ts +39 -0
- package/dist/agents/launch/provider-state.js +103 -0
- package/dist/agents/runtime/auth.d.ts +27 -0
- package/dist/agents/runtime/auth.js +72 -0
- package/dist/agents/runtime/chat.d.ts +5 -0
- package/dist/agents/runtime/chat.js +7 -0
- package/dist/agents/runtime/errors.d.ts +27 -0
- package/dist/agents/runtime/errors.js +51 -0
- package/dist/{commands/run/agents → agents/runtime}/failures.d.ts +0 -1
- package/dist/agents/runtime/failures.js +136 -0
- package/dist/agents/runtime/harness.d.ts +2 -0
- package/dist/agents/runtime/harness.js +119 -0
- package/dist/{commands/run/agents/sandbox-launcher.d.ts → agents/runtime/launcher.d.ts} +18 -6
- package/dist/{commands/run/agents/sandbox-launcher.js → agents/runtime/launcher.js} +17 -39
- package/dist/{commands/run/agents/workspace-prep.d.ts → agents/runtime/manifest.d.ts} +6 -6
- package/dist/agents/runtime/manifest.js +34 -0
- package/dist/agents/runtime/policy.d.ts +32 -0
- package/dist/agents/runtime/policy.js +240 -0
- package/dist/agents/runtime/registry.d.ts +4 -0
- package/dist/agents/runtime/registry.js +54 -0
- package/dist/{commands/run → agents/runtime}/sandbox.d.ts +8 -2
- package/dist/{commands/run → agents/runtime}/sandbox.js +28 -67
- package/dist/agents/runtime/shim/run-agent-shim.d.ts +1 -0
- package/dist/agents/runtime/shim/run-agent-shim.js +276 -0
- package/dist/agents/runtime/types.d.ts +91 -0
- package/dist/{commands/run/agents → agents/runtime}/watchdog.d.ts +4 -3
- package/dist/{commands/run/agents → agents/runtime}/watchdog.js +155 -26
- package/dist/auth/providers/codex.js +7 -2
- package/dist/auth/providers/gemini.js +14 -6
- package/dist/auth/providers/types.d.ts +1 -0
- package/dist/auth/providers/utils.d.ts +0 -1
- package/dist/auth/providers/utils.js +1 -49
- package/dist/bin.js +369 -71
- package/dist/cli/apply.d.ts +4 -0
- package/dist/cli/apply.js +28 -9
- package/dist/cli/auto.d.ts +32 -0
- package/dist/cli/auto.js +232 -0
- package/dist/cli/contract.d.ts +328 -0
- package/dist/cli/contract.js +480 -0
- package/dist/cli/errors.d.ts +3 -0
- package/dist/cli/errors.js +21 -3
- package/dist/cli/init.d.ts +5 -0
- package/dist/cli/init.js +34 -6
- package/dist/cli/list.d.ts +6 -4
- package/dist/cli/list.js +39 -16
- package/dist/cli/mcp.d.ts +2 -0
- package/dist/cli/mcp.js +16 -0
- package/dist/cli/message.d.ts +28 -0
- package/dist/cli/message.js +147 -0
- package/dist/cli/operator-envelope.d.ts +180 -0
- package/dist/cli/operator-envelope.js +425 -0
- package/dist/cli/output.d.ts +15 -1
- package/dist/cli/output.js +153 -5
- package/dist/cli/prune.d.ts +7 -3
- package/dist/cli/prune.js +57 -12
- package/dist/cli/reduce.d.ts +29 -0
- package/dist/cli/reduce.js +211 -0
- package/dist/cli/root-launcher.d.ts +4 -0
- package/dist/cli/root-launcher.js +15 -0
- package/dist/cli/run.d.ts +27 -1
- package/dist/cli/run.js +108 -16
- package/dist/cli/spec.d.ts +31 -0
- package/dist/cli/spec.js +180 -0
- package/dist/cli/verify.d.ts +35 -0
- package/dist/cli/verify.js +297 -0
- package/dist/commands/apply/command.d.ts +2 -0
- package/dist/commands/apply/command.js +145 -6
- package/dist/commands/apply/errors.d.ts +43 -4
- package/dist/commands/apply/errors.js +100 -22
- package/dist/commands/apply/types.d.ts +2 -1
- package/dist/commands/auto/command.d.ts +145 -0
- package/dist/commands/auto/command.js +433 -0
- package/dist/commands/auto/errors.d.ts +19 -0
- package/dist/commands/auto/errors.js +19 -0
- package/dist/commands/auto/validation.d.ts +14 -0
- package/dist/commands/auto/validation.js +90 -0
- package/dist/commands/fetch.d.ts +2 -2
- package/dist/commands/fetch.js +4 -4
- package/dist/commands/init/agents.d.ts +2 -1
- package/dist/commands/init/agents.js +66 -63
- package/dist/commands/init/command.js +300 -16
- package/dist/commands/init/types.d.ts +18 -7
- package/dist/commands/interactive/lifecycle.d.ts +15 -0
- package/dist/commands/interactive/lifecycle.js +141 -0
- package/dist/commands/list/command.d.ts +10 -3
- package/dist/commands/list/command.js +597 -40
- package/dist/commands/message/command.d.ts +23 -0
- package/dist/commands/message/command.js +215 -0
- package/dist/commands/message/errors.d.ts +9 -0
- package/dist/commands/message/errors.js +20 -0
- package/dist/commands/message/lifecycle.d.ts +14 -0
- package/dist/commands/message/lifecycle.js +128 -0
- package/dist/commands/prune/command.d.ts +2 -1
- package/dist/commands/prune/command.js +61 -10
- package/dist/commands/prune/errors.d.ts +1 -1
- package/dist/commands/prune/errors.js +5 -5
- package/dist/commands/prune/types.d.ts +21 -0
- package/dist/commands/reduce/command.d.ts +26 -0
- package/dist/commands/reduce/command.js +145 -0
- package/dist/commands/reduce/errors.d.ts +17 -0
- package/dist/commands/reduce/errors.js +32 -0
- package/dist/commands/reduce/targets.d.ts +11 -0
- package/dist/commands/reduce/targets.js +271 -0
- package/dist/commands/root-launcher/command.d.ts +31 -0
- package/dist/commands/root-launcher/command.js +233 -0
- package/dist/commands/run/command.d.ts +6 -1
- package/dist/commands/run/command.js +70 -40
- package/dist/commands/run/lifecycle.d.ts +7 -5
- package/dist/commands/run/lifecycle.js +45 -23
- package/dist/commands/run/record-init.d.ts +4 -1
- package/dist/commands/run/record-init.js +5 -2
- package/dist/commands/run/shim/run-agent-shim.d.ts +2 -1
- package/dist/commands/run/shim/run-agent-shim.js +4 -219
- package/dist/commands/run/validation.d.ts +2 -3
- package/dist/commands/run/validation.js +54 -25
- package/dist/commands/shared/max-parallel.d.ts +5 -0
- package/dist/commands/shared/max-parallel.js +15 -0
- package/dist/commands/shared/preview.d.ts +10 -0
- package/dist/commands/shared/preview.js +60 -0
- package/dist/commands/shared/resolve-reduction-competitors.d.ts +15 -0
- package/dist/commands/shared/resolve-reduction-competitors.js +13 -0
- package/dist/commands/shared/resolve-stage-competitors.d.ts +19 -0
- package/dist/commands/shared/resolve-stage-competitors.js +171 -0
- package/dist/commands/shared/session-id.d.ts +1 -0
- package/dist/commands/shared/session-id.js +1 -0
- package/dist/commands/spec/command.d.ts +22 -0
- package/dist/commands/spec/command.js +330 -0
- package/dist/commands/spec/errors.d.ts +11 -0
- package/dist/commands/spec/errors.js +23 -0
- package/dist/commands/verify/agents.d.ts +8 -0
- package/dist/commands/verify/agents.js +29 -0
- package/dist/commands/verify/command.d.ts +23 -0
- package/dist/commands/verify/command.js +168 -0
- package/dist/commands/verify/lifecycle.d.ts +14 -0
- package/dist/commands/verify/lifecycle.js +229 -0
- package/dist/commands/verify/max-parallel.d.ts +7 -0
- package/dist/commands/verify/max-parallel.js +15 -0
- package/dist/commands/verify/targets.d.ts +18 -0
- package/dist/commands/verify/targets.js +420 -0
- package/dist/competition/command-adapter.d.ts +35 -0
- package/dist/competition/command-adapter.js +20 -0
- package/dist/competition/core.d.ts +41 -0
- package/dist/competition/core.js +181 -0
- package/dist/competition/shared/extra-context.d.ts +14 -0
- package/dist/competition/shared/extra-context.js +100 -0
- package/dist/competition/shared/preflight.d.ts +11 -0
- package/dist/competition/shared/preflight.js +39 -0
- package/dist/competition/shared/prompt-helpers.d.ts +16 -0
- package/dist/competition/shared/prompt-helpers.js +27 -0
- package/dist/competition/shared/prune.d.ts +1 -0
- package/dist/competition/shared/prune.js +4 -0
- package/dist/competition/shared/sandbox-policy.d.ts +9 -0
- package/dist/competition/shared/sandbox-policy.js +7 -0
- package/dist/competition/shared/teardown.d.ts +36 -0
- package/dist/competition/shared/teardown.js +101 -0
- package/dist/configs/agents/defaults.d.ts +31 -2
- package/dist/configs/agents/defaults.js +346 -30
- package/dist/configs/agents/errors.js +14 -11
- package/dist/configs/agents/loader.d.ts +11 -1
- package/dist/configs/agents/loader.js +71 -4
- package/dist/configs/agents/types.js +2 -2
- package/dist/configs/environment/detect.js +9 -4
- package/dist/configs/environment/errors.js +4 -4
- package/dist/configs/environment/loader.d.ts +1 -1
- package/dist/configs/environment/loader.js +3 -3
- package/dist/configs/orchestration/bootstrap.d.ts +16 -0
- package/dist/configs/orchestration/bootstrap.js +122 -0
- package/dist/configs/orchestration/errors.d.ts +15 -0
- package/dist/configs/orchestration/errors.js +28 -0
- package/dist/configs/orchestration/loader.d.ts +9 -0
- package/dist/configs/orchestration/loader.js +148 -0
- package/dist/configs/orchestration/types.d.ts +102 -0
- package/dist/configs/orchestration/types.js +65 -0
- package/dist/configs/sandbox/defaults.js +14 -4
- package/dist/configs/sandbox/errors.d.ts +1 -1
- package/dist/configs/sandbox/errors.js +1 -1
- package/dist/configs/sandbox/loader.js +6 -4
- package/dist/configs/sandbox/schemas.js +4 -2
- package/dist/configs/settings/loader.d.ts +7 -0
- package/dist/configs/settings/loader.js +81 -0
- package/dist/configs/settings/types.d.ts +47 -0
- package/dist/configs/settings/types.js +23 -0
- package/dist/configs/verification/errors.d.ts +11 -0
- package/dist/configs/verification/errors.js +21 -0
- package/dist/configs/verification/loader.d.ts +8 -0
- package/dist/configs/verification/loader.js +43 -0
- package/dist/configs/verification/methods.d.ts +35 -0
- package/dist/configs/verification/methods.js +41 -0
- package/dist/configs/verification/programmatic-defaults.d.ts +10 -0
- package/dist/configs/verification/programmatic-defaults.js +42 -0
- package/dist/configs/verification/programmatic-detect.d.ts +10 -0
- package/dist/configs/{evals/detect.js → verification/programmatic-detect.js} +22 -33
- package/dist/configs/verification/types.d.ts +49 -0
- package/dist/configs/verification/types.js +45 -0
- package/dist/contracts/list.d.ts +207 -0
- package/dist/contracts/list.js +154 -0
- package/dist/domain/interactive/model/types.d.ts +104 -0
- package/dist/domain/interactive/model/types.js +83 -0
- package/dist/domain/interactive/persistence/adapter.d.ts +39 -0
- package/dist/domain/interactive/persistence/adapter.js +144 -0
- package/dist/domain/interactive/prompt.d.ts +3 -0
- package/dist/domain/interactive/prompt.js +7 -0
- package/dist/domain/message/competition/adapter.d.ts +36 -0
- package/dist/domain/message/competition/adapter.js +197 -0
- package/dist/domain/message/competition/prompt.d.ts +8 -0
- package/dist/domain/message/competition/prompt.js +29 -0
- package/dist/domain/message/model/mutators.d.ts +17 -0
- package/dist/domain/message/model/mutators.js +107 -0
- package/dist/domain/message/model/types.d.ts +100 -0
- package/dist/domain/message/model/types.js +87 -0
- package/dist/domain/message/persistence/adapter.d.ts +43 -0
- package/dist/domain/message/persistence/adapter.js +124 -0
- package/dist/domain/reduce/competition/adapter.d.ts +42 -0
- package/dist/domain/reduce/competition/adapter.js +826 -0
- package/dist/domain/reduce/competition/output-validation.d.ts +4 -0
- package/dist/domain/reduce/competition/output-validation.js +18 -0
- package/dist/domain/reduce/competition/prompt.d.ts +10 -0
- package/dist/domain/reduce/competition/prompt.js +96 -0
- package/dist/domain/reduce/competition/reduction.d.ts +9 -0
- package/dist/domain/reduce/competition/reduction.js +32 -0
- package/dist/domain/reduce/model/types.d.ts +122 -0
- package/dist/domain/reduce/model/types.js +84 -0
- package/dist/domain/reduce/persistence/adapter.d.ts +43 -0
- package/dist/domain/reduce/persistence/adapter.js +126 -0
- package/dist/domain/run/competition/adapter.d.ts +30 -0
- package/dist/domain/run/competition/adapter.js +39 -0
- package/dist/domain/run/competition/agent-execution.d.ts +20 -0
- package/dist/domain/run/competition/agent-execution.js +45 -0
- package/dist/domain/run/competition/agent-preparation.d.ts +12 -0
- package/dist/domain/run/competition/agent-preparation.js +24 -0
- package/dist/domain/run/competition/agents/artifacts.d.ts +17 -0
- package/dist/domain/run/competition/agents/artifacts.js +173 -0
- package/dist/{commands/run → domain/run/competition}/agents/lifecycle.d.ts +3 -3
- package/dist/{commands/run → domain/run/competition}/agents/lifecycle.js +84 -64
- package/dist/domain/run/competition/agents/post-processing.d.ts +12 -0
- package/dist/domain/run/competition/agents/post-processing.js +4 -0
- package/dist/domain/run/competition/agents/preparation.js +64 -0
- package/dist/{commands/run → domain/run/competition}/agents/run-context.d.ts +9 -16
- package/dist/{commands/run → domain/run/competition}/agents/run-context.js +22 -70
- package/dist/{commands/run → domain/run/competition}/agents/types.d.ts +10 -13
- package/dist/domain/run/competition/agents/workspace.d.ts +21 -0
- package/dist/domain/run/competition/agents/workspace.js +47 -0
- package/dist/{commands/run → domain/run/competition}/errors.d.ts +8 -1
- package/dist/{commands/run → domain/run/competition}/errors.js +39 -9
- package/dist/{commands/run → domain/run/competition}/phases.d.ts +1 -2
- package/dist/domain/run/competition/phases.js +1 -0
- package/dist/domain/run/competition/prompt.d.ts +7 -0
- package/dist/domain/run/competition/prompt.js +27 -0
- package/dist/{commands/run → domain/run/competition}/reports.d.ts +5 -3
- package/dist/{commands/run → domain/run/competition}/reports.js +7 -19
- package/dist/domain/run/competition/termination-state.d.ts +4 -0
- package/dist/domain/run/competition/termination-state.js +12 -0
- package/dist/{records → domain/run/model}/enhanced.d.ts +6 -7
- package/dist/{records → domain/run/model}/enhanced.js +11 -11
- package/dist/{records → domain/run/model}/errors.d.ts +1 -1
- package/dist/{records → domain/run/model}/errors.js +5 -5
- package/dist/{records → domain/run/model}/mutators.d.ts +4 -3
- package/dist/{records → domain/run/model}/mutators.js +58 -36
- package/dist/domain/run/model/types.d.ts +376 -0
- package/dist/domain/run/model/types.js +192 -0
- package/dist/{records/persistence.d.ts → domain/run/persistence/adapter.d.ts} +9 -3
- package/dist/domain/run/persistence/adapter.js +340 -0
- package/dist/domain/run/persistence/error-mapping.d.ts +2 -0
- package/dist/domain/run/persistence/error-mapping.js +17 -0
- package/dist/domain/shared/lifecycle.d.ts +54 -0
- package/dist/domain/shared/lifecycle.js +165 -0
- package/dist/domain/shared/token-usage.d.ts +21 -0
- package/dist/domain/shared/token-usage.js +38 -0
- package/dist/domain/spec/competition/adapter.d.ts +31 -0
- package/dist/domain/spec/competition/adapter.js +196 -0
- package/dist/domain/spec/competition/prompt.d.ts +11 -0
- package/dist/domain/spec/competition/prompt.js +44 -0
- package/dist/domain/spec/model/output.d.ts +13 -0
- package/dist/domain/spec/model/output.js +36 -0
- package/dist/domain/spec/model/types.d.ts +98 -0
- package/dist/domain/spec/model/types.js +84 -0
- package/dist/domain/spec/persistence/adapter.d.ts +51 -0
- package/dist/domain/spec/persistence/adapter.js +140 -0
- package/dist/domain/verify/blinding/aliases.d.ts +7 -0
- package/dist/domain/verify/blinding/aliases.js +23 -0
- package/dist/domain/verify/competition/adapter.d.ts +54 -0
- package/dist/domain/verify/competition/adapter.js +444 -0
- package/dist/domain/verify/competition/artifacts.d.ts +6 -0
- package/dist/domain/verify/competition/artifacts.js +7 -0
- package/dist/domain/verify/competition/blinding.d.ts +24 -0
- package/dist/domain/verify/competition/blinding.js +109 -0
- package/dist/domain/verify/competition/finalize.d.ts +11 -0
- package/dist/domain/verify/competition/finalize.js +65 -0
- package/dist/domain/verify/competition/programmatic.d.ts +15 -0
- package/dist/domain/verify/competition/programmatic.js +352 -0
- package/dist/domain/verify/competition/prompt.d.ts +19 -0
- package/dist/domain/verify/competition/prompt.js +63 -0
- package/dist/domain/verify/competition/rubric.d.ts +23 -0
- package/dist/domain/verify/competition/rubric.js +77 -0
- package/dist/domain/verify/competition/shared-layout.d.ts +121 -0
- package/dist/domain/verify/competition/shared-layout.js +365 -0
- package/dist/domain/verify/competition/target.d.ts +47 -0
- package/dist/domain/verify/competition/target.js +1 -0
- package/dist/domain/verify/model/mutators.d.ts +16 -0
- package/dist/domain/verify/model/mutators.js +126 -0
- package/dist/domain/verify/model/types.d.ts +408 -0
- package/dist/domain/verify/model/types.js +289 -0
- package/dist/domain/verify/persistence/adapter.d.ts +43 -0
- package/dist/domain/verify/persistence/adapter.js +126 -0
- package/dist/domain/verify/programmatic/runner.d.ts +22 -0
- package/dist/domain/verify/programmatic/runner.js +209 -0
- package/dist/domain/verify/rubric-result.d.ts +28 -0
- package/dist/domain/verify/rubric-result.js +121 -0
- package/dist/extra-context/contract.d.ts +17 -0
- package/dist/extra-context/contract.js +60 -0
- package/dist/interactive/index.d.ts +2 -0
- package/dist/interactive/index.js +1 -0
- package/dist/interactive/providers/launch.d.ts +23 -0
- package/dist/interactive/providers/launch.js +203 -0
- package/dist/interactive/providers/mcp.d.ts +13 -0
- package/dist/interactive/providers/mcp.js +547 -0
- package/dist/interactive/providers/shared.d.ts +2 -0
- package/dist/interactive/providers/shared.js +1 -0
- package/dist/interactive/providers.d.ts +3 -0
- package/dist/interactive/providers.js +3 -0
- package/dist/interactive/records.d.ts +2 -0
- package/dist/interactive/records.js +1 -0
- package/dist/interactive/substrate.d.ts +21 -0
- package/dist/interactive/substrate.js +522 -0
- package/dist/interactive/types.d.ts +101 -0
- package/dist/interactive/types.js +1 -0
- package/dist/mcp/server.d.ts +88 -0
- package/dist/mcp/server.js +790 -0
- package/dist/persistence/error-mapping.d.ts +19 -0
- package/dist/persistence/error-mapping.js +44 -0
- package/dist/persistence/errors.d.ts +26 -0
- package/dist/persistence/errors.js +49 -0
- package/dist/persistence/extra-context.d.ts +9 -0
- package/dist/persistence/extra-context.js +60 -0
- package/dist/{records → persistence}/history-lock.js +2 -2
- package/dist/persistence/record-path-schema.d.ts +3 -0
- package/dist/persistence/record-path-schema.js +16 -0
- package/dist/persistence/session-store.d.ts +92 -0
- package/dist/persistence/session-store.js +412 -0
- package/dist/policy/auto.d.ts +13 -0
- package/dist/policy/auto.js +22 -0
- package/dist/policy/index.d.ts +5 -0
- package/dist/policy/index.js +5 -0
- package/dist/policy/resolution.d.ts +6 -0
- package/dist/policy/resolution.js +23 -0
- package/dist/policy/result.d.ts +53 -0
- package/dist/policy/result.js +15 -0
- package/dist/policy/selector.d.ts +11 -0
- package/dist/policy/selector.js +57 -0
- package/dist/policy/verification.d.ts +77 -0
- package/dist/policy/verification.js +365 -0
- package/dist/policy/verifier-selection.d.ts +13 -0
- package/dist/policy/verifier-selection.js +78 -0
- package/dist/preflight/branch.d.ts +9 -0
- package/dist/preflight/branch.js +48 -0
- package/dist/preflight/errors.d.ts +3 -0
- package/dist/preflight/errors.js +10 -3
- package/dist/preflight/index.d.ts +13 -0
- package/dist/preflight/index.js +43 -8
- package/dist/render/interactions/confirmation.js +4 -2
- package/dist/render/transcripts/apply.js +9 -10
- package/dist/render/transcripts/auto.d.ts +27 -0
- package/dist/render/transcripts/auto.js +21 -0
- package/dist/render/transcripts/init.d.ts +4 -15
- package/dist/render/transcripts/init.js +71 -72
- package/dist/render/transcripts/list.d.ts +10 -1
- package/dist/render/transcripts/list.js +121 -15
- package/dist/render/transcripts/message.d.ts +72 -0
- package/dist/render/transcripts/message.js +362 -0
- package/dist/render/transcripts/prune.d.ts +7 -2
- package/dist/render/transcripts/prune.js +64 -17
- package/dist/render/transcripts/reduce.d.ts +74 -0
- package/dist/render/transcripts/reduce.js +395 -0
- package/dist/render/transcripts/root-launcher.d.ts +19 -0
- package/dist/render/transcripts/root-launcher.js +40 -0
- package/dist/render/transcripts/run.d.ts +35 -6
- package/dist/render/transcripts/run.js +241 -165
- package/dist/render/transcripts/shared.d.ts +2 -0
- package/dist/render/transcripts/shared.js +11 -4
- package/dist/render/transcripts/spec.d.ts +74 -0
- package/dist/render/transcripts/spec.js +394 -0
- package/dist/render/transcripts/stage-progress.d.ts +22 -0
- package/dist/render/transcripts/stage-progress.js +6 -0
- package/dist/render/transcripts/update-check.d.ts +2 -0
- package/dist/render/transcripts/update-check.js +22 -0
- package/dist/render/transcripts/verify.d.ts +74 -0
- package/dist/render/transcripts/verify.js +409 -0
- package/dist/render/utils/agents.d.ts +10 -9
- package/dist/render/utils/agents.js +30 -82
- package/dist/render/utils/badges.d.ts +3 -20
- package/dist/render/utils/badges.js +3 -36
- package/dist/render/utils/duration.d.ts +12 -0
- package/dist/render/utils/duration.js +37 -0
- package/dist/render/utils/interactive-frame.d.ts +6 -0
- package/dist/render/utils/interactive-frame.js +38 -0
- package/dist/render/utils/records.js +4 -4
- package/dist/render/utils/runs.d.ts +3 -9
- package/dist/render/utils/runs.js +16 -48
- package/dist/render/utils/stage-output.d.ts +20 -0
- package/dist/render/utils/stage-output.js +44 -0
- package/dist/render/utils/timezone.d.ts +2 -0
- package/dist/render/utils/timezone.js +42 -0
- package/dist/render/utils/transcript-shell.d.ts +66 -0
- package/dist/render/utils/transcript-shell.js +155 -0
- package/dist/render/utils/transcript.d.ts +7 -1
- package/dist/render/utils/transcript.js +12 -2
- package/dist/render/utils/wrap.d.ts +1 -0
- package/dist/render/utils/wrap.js +20 -0
- package/dist/status/colors.d.ts +2 -3
- package/dist/status/colors.js +3 -3
- package/dist/status/index.d.ts +108 -8
- package/dist/status/index.js +164 -5
- package/dist/update-check/checker.d.ts +24 -0
- package/dist/update-check/checker.js +130 -0
- package/dist/update-check/prompt.d.ts +25 -0
- package/dist/update-check/prompt.js +62 -0
- package/dist/update-check/semver.d.ts +17 -0
- package/dist/update-check/semver.js +36 -0
- package/dist/update-check/state-path.d.ts +8 -0
- package/dist/update-check/state-path.js +18 -0
- package/dist/utils/binaries.js +14 -8
- package/dist/utils/errors.d.ts +3 -1
- package/dist/utils/errors.js +3 -1
- package/dist/utils/git.d.ts +10 -0
- package/dist/utils/git.js +15 -3
- package/dist/utils/output.d.ts +5 -1
- package/dist/utils/output.js +4 -2
- package/dist/utils/process.d.ts +2 -1
- package/dist/utils/process.js +7 -3
- package/dist/utils/session-id.d.ts +1 -0
- package/dist/utils/session-id.js +22 -0
- package/dist/utils/slug.d.ts +2 -0
- package/dist/utils/slug.js +15 -0
- package/dist/utils/voratiq-cli-target.d.ts +9 -0
- package/dist/utils/voratiq-cli-target.js +58 -0
- package/dist/workspace/agents.d.ts +13 -16
- package/dist/workspace/agents.js +22 -147
- package/dist/workspace/chat/artifacts.d.ts +9 -0
- package/dist/workspace/chat/artifacts.js +82 -12
- package/dist/workspace/chat/native-usage.d.ts +13 -0
- package/dist/workspace/chat/native-usage.js +60 -0
- package/dist/workspace/chat/sources.d.ts +9 -5
- package/dist/workspace/chat/sources.js +89 -23
- package/dist/workspace/chat/token-usage-result.d.ts +23 -0
- package/dist/workspace/chat/token-usage-result.js +7 -0
- package/dist/workspace/chat/usage-extractor.d.ts +30 -0
- package/dist/workspace/chat/usage-extractor.js +461 -0
- package/dist/workspace/chat/usage-mappings.d.ts +20 -0
- package/dist/workspace/chat/usage-mappings.js +136 -0
- package/dist/workspace/credential-guard.js +1 -1
- package/dist/workspace/dependencies.js +4 -4
- package/dist/workspace/errors.d.ts +5 -0
- package/dist/workspace/errors.js +13 -3
- package/dist/workspace/layout.d.ts +17 -6
- package/dist/workspace/layout.js +51 -32
- package/dist/workspace/promotion.d.ts +32 -0
- package/dist/workspace/promotion.js +34 -0
- package/dist/workspace/prune.d.ts +1 -1
- package/dist/workspace/run.d.ts +1 -3
- package/dist/workspace/run.js +6 -15
- package/dist/workspace/setup.d.ts +8 -0
- package/dist/workspace/setup.js +359 -56
- package/dist/workspace/shim.js +1 -1
- package/dist/workspace/structure.d.ts +91 -26
- package/dist/workspace/structure.js +227 -43
- package/dist/workspace/templates.d.ts +9 -3
- package/dist/workspace/templates.js +26 -15
- package/dist/workspace/verification-defaults.d.ts +12 -0
- package/dist/workspace/verification-defaults.js +1017 -0
- package/package.json +30 -24
- package/dist/cli/review.d.ts +0 -12
- package/dist/cli/review.js +0 -33
- package/dist/commands/errors.d.ts +0 -4
- package/dist/commands/errors.js +0 -7
- package/dist/commands/init/evals.d.ts +0 -4
- package/dist/commands/init/evals.js +0 -219
- package/dist/commands/review/command.d.ts +0 -10
- package/dist/commands/review/command.js +0 -26
- package/dist/commands/run/agent-execution.d.ts +0 -19
- package/dist/commands/run/agent-execution.js +0 -63
- package/dist/commands/run/agents/auth-stage.d.ts +0 -23
- package/dist/commands/run/agents/auth-stage.js +0 -108
- package/dist/commands/run/agents/chat-preserver.d.ts +0 -9
- package/dist/commands/run/agents/chat-preserver.js +0 -35
- package/dist/commands/run/agents/eval-runner.d.ts +0 -19
- package/dist/commands/run/agents/eval-runner.js +0 -27
- package/dist/commands/run/agents/failures.js +0 -32
- package/dist/commands/run/agents/preparation.js +0 -123
- package/dist/commands/run/agents.d.ts +0 -14
- package/dist/commands/run/agents.js +0 -47
- package/dist/commands/run/prompts.d.ts +0 -4
- package/dist/commands/run/prompts.js +0 -16
- package/dist/commands/run/sandbox-registry.d.ts +0 -4
- package/dist/commands/run/sandbox-registry.js +0 -54
- package/dist/configs/evals/defaults.d.ts +0 -8
- package/dist/configs/evals/defaults.js +0 -28
- package/dist/configs/evals/detect.d.ts +0 -10
- package/dist/configs/evals/errors.d.ts +0 -16
- package/dist/configs/evals/errors.js +0 -29
- package/dist/configs/evals/loader.d.ts +0 -9
- package/dist/configs/evals/loader.js +0 -46
- package/dist/configs/evals/types.d.ts +0 -42
- package/dist/configs/evals/types.js +0 -74
- package/dist/evals/runner.d.ts +0 -16
- package/dist/evals/runner.js +0 -132
- package/dist/records/persistence.js +0 -469
- package/dist/records/types.d.ts +0 -255
- package/dist/records/types.js +0 -160
- package/dist/render/transcripts/review.d.ts +0 -2
- package/dist/render/transcripts/review.js +0 -36
- /package/dist/{commands/run → agents/runtime}/shim/agent-manifest.d.ts +0 -0
- /package/dist/{commands/run → agents/runtime}/shim/agent-manifest.js +0 -0
- /package/dist/{commands/run → agents/runtime/shim}/argv.d.ts +0 -0
- /package/dist/{commands/run → agents/runtime/shim}/argv.js +0 -0
- /package/dist/{commands/run/agents → agents/runtime}/types.js +0 -0
- /package/dist/{commands/run → domain/run/competition}/agents/preparation.d.ts +0 -0
- /package/dist/{commands/run/phases.js → domain/run/competition/agents/types.js} +0 -0
- /package/dist/{commands/run → domain/run/model}/id.d.ts +0 -0
- /package/dist/{commands/run → domain/run/model}/id.js +0 -0
- /package/dist/{records → persistence}/history-lock.d.ts +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { basename } from "node:path";
|
|
1
2
|
import process from "node:process";
|
|
2
3
|
import { assertTestHookRegistrationEnabled } from "../../testing/test-hooks.js";
|
|
3
4
|
import { relativeToRoot } from "../../utils/path.js";
|
|
@@ -27,12 +28,13 @@ const sandboxConfigLoader = createConfigLoader({
|
|
|
27
28
|
resolveFilePath: (root, options) => resolveSandboxFilePath(root, options),
|
|
28
29
|
selectReadFile: (options) => options.readFile,
|
|
29
30
|
handleMissing: ({ root, filePath }) => {
|
|
30
|
-
throw new SandboxConfigurationError(`Missing
|
|
31
|
+
throw new SandboxConfigurationError(`Missing \`${basename(relativeToRoot(root, filePath))}\`.`);
|
|
31
32
|
},
|
|
32
33
|
prepareContent: (content, { root, filePath }) => {
|
|
33
34
|
const trimmed = content.trim();
|
|
34
35
|
if (trimmed.length === 0) {
|
|
35
|
-
|
|
36
|
+
const displayPath = basename(relativeToRoot(root, filePath));
|
|
37
|
+
throw new SandboxConfigurationError(`${DEFAULT_SANDBOX_ERROR_CONTEXT}: \`${displayPath}\` is empty.`);
|
|
36
38
|
}
|
|
37
39
|
return trimmed;
|
|
38
40
|
},
|
|
@@ -123,7 +125,7 @@ export function loadSandboxProviderConfig(options, providerIdOverride) {
|
|
|
123
125
|
const config = loadSandboxConfiguration(options);
|
|
124
126
|
const providerConfig = config.providers[resolvedProviderId];
|
|
125
127
|
if (!providerConfig) {
|
|
126
|
-
throw new SandboxConfigurationError(`${DEFAULT_SANDBOX_ERROR_CONTEXT}: Unsupported sandbox provider
|
|
128
|
+
throw new SandboxConfigurationError(`${DEFAULT_SANDBOX_ERROR_CONTEXT}: Unsupported sandbox provider \`${resolvedProviderId}\` in \`${basename(config.displayPath)}\`.`);
|
|
127
129
|
}
|
|
128
130
|
return {
|
|
129
131
|
providerId: providerConfig.providerId,
|
|
@@ -172,7 +174,7 @@ function validateProviderOverrides(providerOverrides, displayPath) {
|
|
|
172
174
|
const supportedProviders = new Set(listSandboxProviderIds());
|
|
173
175
|
for (const providerId of Object.keys(providerOverrides)) {
|
|
174
176
|
if (!supportedProviders.has(providerId)) {
|
|
175
|
-
throw new SandboxConfigurationError(`${DEFAULT_SANDBOX_ERROR_CONTEXT}: Unknown provider
|
|
177
|
+
throw new SandboxConfigurationError(`${DEFAULT_SANDBOX_ERROR_CONTEXT}: Unknown provider \`${providerId}\` in \`${basename(displayPath)}\`.`);
|
|
176
178
|
}
|
|
177
179
|
}
|
|
178
180
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { basename } from "node:path";
|
|
1
2
|
import { z } from "zod";
|
|
2
3
|
import { relativeToRoot } from "../../utils/path.js";
|
|
3
4
|
import { DEFAULT_SANDBOX_ERROR_CONTEXT, SandboxConfigurationError, } from "./errors.js";
|
|
@@ -73,9 +74,10 @@ export function validateSandboxOverrides(document, root, filePath) {
|
|
|
73
74
|
const issue = error.issues[0];
|
|
74
75
|
const path = issue?.path?.join(".") ?? "";
|
|
75
76
|
const detail = issue?.message ?? "Invalid configuration";
|
|
77
|
+
const displayPath = basename(relativeToRoot(root, filePath));
|
|
76
78
|
const scopedDetail = path.length > 0
|
|
77
|
-
? `${DEFAULT_SANDBOX_ERROR_CONTEXT}:
|
|
78
|
-
: `${DEFAULT_SANDBOX_ERROR_CONTEXT}:
|
|
79
|
+
? `${DEFAULT_SANDBOX_ERROR_CONTEXT}: \`${displayPath}\` (\`${path}\`): ${detail}.`
|
|
80
|
+
: `${DEFAULT_SANDBOX_ERROR_CONTEXT}: \`${displayPath}\`: ${detail}.`;
|
|
79
81
|
throw new SandboxConfigurationError(scopedDetail);
|
|
80
82
|
}
|
|
81
83
|
throw error;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import { parseYamlDocument } from "../../utils/yaml-reader.js";
|
|
3
|
+
import { resolveWorkspacePath } from "../../workspace/structure.js";
|
|
4
|
+
import { createConfigLoader } from "../shared/loader-factory.js";
|
|
5
|
+
import { repoSettingsSchema } from "./types.js";
|
|
6
|
+
const SETTINGS_CONFIG_FILENAME = "settings.yaml";
|
|
7
|
+
const DEFAULT_SETTINGS = {
|
|
8
|
+
bounded: {
|
|
9
|
+
codex: {
|
|
10
|
+
globalConfigPolicy: "ignore",
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
mcp: {
|
|
14
|
+
codex: "ask",
|
|
15
|
+
claude: "ask",
|
|
16
|
+
gemini: "ask",
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
function cloneSettings(settings) {
|
|
20
|
+
return {
|
|
21
|
+
bounded: {
|
|
22
|
+
codex: {
|
|
23
|
+
globalConfigPolicy: settings.bounded.codex.globalConfigPolicy,
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
mcp: {
|
|
27
|
+
codex: settings.mcp.codex,
|
|
28
|
+
claude: settings.mcp.claude,
|
|
29
|
+
gemini: settings.mcp.gemini,
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const repoSettingsLoader = createConfigLoader({
|
|
34
|
+
resolveFilePath: (root, options) => options.filePath ?? resolveWorkspacePath(root, SETTINGS_CONFIG_FILENAME),
|
|
35
|
+
selectReadFile: (options) => options.readFile,
|
|
36
|
+
handleMissing: () => cloneSettings(DEFAULT_SETTINGS),
|
|
37
|
+
parse: (content, context) => {
|
|
38
|
+
const parsed = parseSettingsYaml(content, context);
|
|
39
|
+
const { bounded, mcp } = parsed;
|
|
40
|
+
return {
|
|
41
|
+
bounded: {
|
|
42
|
+
codex: {
|
|
43
|
+
globalConfigPolicy: bounded?.codex?.globalConfigPolicy ??
|
|
44
|
+
DEFAULT_SETTINGS.bounded.codex.globalConfigPolicy,
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
mcp: {
|
|
48
|
+
codex: mcp?.codex ?? "ask",
|
|
49
|
+
claude: mcp?.claude ?? "ask",
|
|
50
|
+
gemini: mcp?.gemini ?? "ask",
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
export function loadRepoSettings(options = {}) {
|
|
56
|
+
const root = options.root ?? process.cwd();
|
|
57
|
+
return repoSettingsLoader({ ...options, root });
|
|
58
|
+
}
|
|
59
|
+
function parseSettingsYaml(content, context) {
|
|
60
|
+
let document;
|
|
61
|
+
try {
|
|
62
|
+
document = parseYamlDocument(content, {
|
|
63
|
+
formatError: (detail) => {
|
|
64
|
+
const reason = detail.reason ?? detail.message ?? "Unknown YAML error";
|
|
65
|
+
return new Error(reason);
|
|
66
|
+
},
|
|
67
|
+
emptyValue: {},
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
const message = error instanceof Error ? error.message : "Unknown YAML error";
|
|
72
|
+
throw new Error(`Invalid settings file at ${context.filePath}: ${message.replace(/\s+/gu, " ").trim()}`);
|
|
73
|
+
}
|
|
74
|
+
const result = repoSettingsSchema.safeParse(document);
|
|
75
|
+
if (!result.success) {
|
|
76
|
+
const issue = result.error.issues[0];
|
|
77
|
+
const detail = issue?.message ? issue.message : "Invalid settings value";
|
|
78
|
+
throw new Error(`Invalid settings file at ${context.filePath}: ${detail}`);
|
|
79
|
+
}
|
|
80
|
+
return result.data;
|
|
81
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const codexGlobalConfigPolicySchema: z.ZodEnum<{
|
|
3
|
+
apply: "apply";
|
|
4
|
+
ignore: "ignore";
|
|
5
|
+
}>;
|
|
6
|
+
export declare const mcpPreferenceSchema: z.ZodEnum<{
|
|
7
|
+
never: "never";
|
|
8
|
+
ask: "ask";
|
|
9
|
+
}>;
|
|
10
|
+
export type CodexGlobalConfigPolicy = z.infer<typeof codexGlobalConfigPolicySchema>;
|
|
11
|
+
export type McpPreference = z.infer<typeof mcpPreferenceSchema>;
|
|
12
|
+
export interface RepoSettings {
|
|
13
|
+
bounded: {
|
|
14
|
+
codex: {
|
|
15
|
+
globalConfigPolicy: CodexGlobalConfigPolicy;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
mcp: {
|
|
19
|
+
codex: McpPreference;
|
|
20
|
+
claude: McpPreference;
|
|
21
|
+
gemini: McpPreference;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export declare const repoSettingsSchema: z.ZodObject<{
|
|
25
|
+
bounded: z.ZodOptional<z.ZodObject<{
|
|
26
|
+
codex: z.ZodOptional<z.ZodObject<{
|
|
27
|
+
globalConfigPolicy: z.ZodOptional<z.ZodEnum<{
|
|
28
|
+
apply: "apply";
|
|
29
|
+
ignore: "ignore";
|
|
30
|
+
}>>;
|
|
31
|
+
}, z.core.$strip>>;
|
|
32
|
+
}, z.core.$strip>>;
|
|
33
|
+
mcp: z.ZodOptional<z.ZodObject<{
|
|
34
|
+
codex: z.ZodOptional<z.ZodEnum<{
|
|
35
|
+
never: "never";
|
|
36
|
+
ask: "ask";
|
|
37
|
+
}>>;
|
|
38
|
+
claude: z.ZodOptional<z.ZodEnum<{
|
|
39
|
+
never: "never";
|
|
40
|
+
ask: "ask";
|
|
41
|
+
}>>;
|
|
42
|
+
gemini: z.ZodOptional<z.ZodEnum<{
|
|
43
|
+
never: "never";
|
|
44
|
+
ask: "ask";
|
|
45
|
+
}>>;
|
|
46
|
+
}, z.core.$strip>>;
|
|
47
|
+
}, z.core.$loose>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const codexGlobalConfigPolicySchema = z.enum(["ignore", "apply"]);
|
|
3
|
+
export const mcpPreferenceSchema = z.enum(["ask", "never"]);
|
|
4
|
+
export const repoSettingsSchema = z
|
|
5
|
+
.object({
|
|
6
|
+
bounded: z
|
|
7
|
+
.object({
|
|
8
|
+
codex: z
|
|
9
|
+
.object({
|
|
10
|
+
globalConfigPolicy: codexGlobalConfigPolicySchema.optional(),
|
|
11
|
+
})
|
|
12
|
+
.optional(),
|
|
13
|
+
})
|
|
14
|
+
.optional(),
|
|
15
|
+
mcp: z
|
|
16
|
+
.object({
|
|
17
|
+
codex: mcpPreferenceSchema.optional(),
|
|
18
|
+
claude: mcpPreferenceSchema.optional(),
|
|
19
|
+
gemini: mcpPreferenceSchema.optional(),
|
|
20
|
+
})
|
|
21
|
+
.optional(),
|
|
22
|
+
})
|
|
23
|
+
.passthrough();
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const DEFAULT_VERIFICATION_ERROR_CONTEXT: "Verification config `.voratiq/verification.yaml`";
|
|
2
|
+
export declare class VerificationConfigError extends Error {
|
|
3
|
+
constructor(message: string);
|
|
4
|
+
}
|
|
5
|
+
export declare class MissingVerificationConfigError extends VerificationConfigError {
|
|
6
|
+
readonly filePath: string;
|
|
7
|
+
constructor(filePath: string);
|
|
8
|
+
}
|
|
9
|
+
export declare class VerificationYamlParseError extends VerificationConfigError {
|
|
10
|
+
constructor(message: string);
|
|
11
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export const DEFAULT_VERIFICATION_ERROR_CONTEXT = "Verification config `.voratiq/verification.yaml`";
|
|
2
|
+
export class VerificationConfigError extends Error {
|
|
3
|
+
constructor(message) {
|
|
4
|
+
super(message);
|
|
5
|
+
this.name = "VerificationConfigError";
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export class MissingVerificationConfigError extends VerificationConfigError {
|
|
9
|
+
filePath;
|
|
10
|
+
constructor(filePath) {
|
|
11
|
+
super(`${DEFAULT_VERIFICATION_ERROR_CONTEXT} not found: ${filePath}`);
|
|
12
|
+
this.name = "MissingVerificationConfigError";
|
|
13
|
+
this.filePath = filePath;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export class VerificationYamlParseError extends VerificationConfigError {
|
|
17
|
+
constructor(message) {
|
|
18
|
+
super(message);
|
|
19
|
+
this.name = "VerificationYamlParseError";
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type VerificationConfig } from "./types.js";
|
|
2
|
+
export declare function readVerificationConfig(content: string): VerificationConfig;
|
|
3
|
+
export interface LoadVerificationConfigOptions {
|
|
4
|
+
root?: string;
|
|
5
|
+
filePath?: string;
|
|
6
|
+
readFile?: (path: string) => string;
|
|
7
|
+
}
|
|
8
|
+
export declare function loadVerificationConfig(options?: LoadVerificationConfigOptions): VerificationConfig;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ZodError } from "zod";
|
|
2
|
+
import { parseYamlDocument, } from "../../utils/yaml-reader.js";
|
|
3
|
+
import { resolveWorkspacePath, VORATIQ_VERIFICATION_CONFIG_FILE, } from "../../workspace/structure.js";
|
|
4
|
+
import { createConfigLoader } from "../shared/loader-factory.js";
|
|
5
|
+
import { formatYamlErrorMessage } from "../shared/yaml-error-formatter.js";
|
|
6
|
+
import { DEFAULT_VERIFICATION_ERROR_CONTEXT, MissingVerificationConfigError, VerificationConfigError, VerificationYamlParseError, } from "./errors.js";
|
|
7
|
+
import { verificationConfigSchema } from "./types.js";
|
|
8
|
+
export function readVerificationConfig(content) {
|
|
9
|
+
const parsed = parseYamlDocument(content, {
|
|
10
|
+
formatError: formatVerificationYamlError,
|
|
11
|
+
});
|
|
12
|
+
try {
|
|
13
|
+
return verificationConfigSchema.parse(parsed);
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
if (error instanceof ZodError) {
|
|
17
|
+
const detail = error.issues
|
|
18
|
+
.map((issue) => issue.message)
|
|
19
|
+
.join("; ")
|
|
20
|
+
.trim();
|
|
21
|
+
throw new VerificationConfigError(`${DEFAULT_VERIFICATION_ERROR_CONTEXT}: ${detail || "invalid mapping"}`);
|
|
22
|
+
}
|
|
23
|
+
throw error;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function formatVerificationYamlError(detail) {
|
|
27
|
+
const message = formatYamlErrorMessage(detail, {
|
|
28
|
+
context: DEFAULT_VERIFICATION_ERROR_CONTEXT,
|
|
29
|
+
});
|
|
30
|
+
return new VerificationYamlParseError(message);
|
|
31
|
+
}
|
|
32
|
+
const loadVerificationConfigInternal = createConfigLoader({
|
|
33
|
+
resolveFilePath: (root, options) => options.filePath ??
|
|
34
|
+
resolveWorkspacePath(root, VORATIQ_VERIFICATION_CONFIG_FILE),
|
|
35
|
+
selectReadFile: (options) => options.readFile,
|
|
36
|
+
handleMissing: ({ filePath }) => {
|
|
37
|
+
throw new MissingVerificationConfigError(filePath);
|
|
38
|
+
},
|
|
39
|
+
parse: (content) => readVerificationConfig(content),
|
|
40
|
+
});
|
|
41
|
+
export function loadVerificationConfig(options = {}) {
|
|
42
|
+
return loadVerificationConfigInternal(options);
|
|
43
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { CHECK_STATUS_VALUES, type CheckStatus } from "../../status/index.js";
|
|
3
|
+
export declare const programmaticSlugSchema: z.ZodString;
|
|
4
|
+
export type ProgrammaticSlug = z.infer<typeof programmaticSlugSchema>;
|
|
5
|
+
export declare const programmaticStatusSchema: z.ZodEnum<{
|
|
6
|
+
succeeded: "succeeded";
|
|
7
|
+
failed: "failed";
|
|
8
|
+
errored: "errored";
|
|
9
|
+
skipped: "skipped";
|
|
10
|
+
}>;
|
|
11
|
+
export type ProgrammaticStatus = (typeof CHECK_STATUS_VALUES)[number];
|
|
12
|
+
export declare const programmaticCommandSchema: z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodNull, z.ZodUndefined]>, z.ZodTransform<string | undefined, string | null | undefined>>;
|
|
13
|
+
export interface ProgrammaticCommandEntry {
|
|
14
|
+
slug: ProgrammaticSlug;
|
|
15
|
+
command?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare const rubricTemplateSchema: z.ZodString;
|
|
18
|
+
export type RubricTemplate = z.infer<typeof rubricTemplateSchema>;
|
|
19
|
+
export declare const programmaticCheckResultSchema: z.ZodObject<{
|
|
20
|
+
slug: z.ZodString;
|
|
21
|
+
status: z.ZodEnum<{
|
|
22
|
+
succeeded: "succeeded";
|
|
23
|
+
failed: "failed";
|
|
24
|
+
errored: "errored";
|
|
25
|
+
skipped: "skipped";
|
|
26
|
+
}>;
|
|
27
|
+
command: z.ZodOptional<z.ZodString>;
|
|
28
|
+
exitCode: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
29
|
+
logPath: z.ZodOptional<z.ZodString>;
|
|
30
|
+
error: z.ZodOptional<z.ZodString>;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
export type ProgrammaticCheckResult = z.infer<typeof programmaticCheckResultSchema>;
|
|
33
|
+
export declare function normalizeProgrammaticCommand(command: string | undefined): string | undefined;
|
|
34
|
+
export declare function sanitizeSlugForFilename(slug: string): string;
|
|
35
|
+
export type { CheckStatus };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { checkStatusSchema, } from "../../status/index.js";
|
|
3
|
+
const PROGRAMMATIC_SLUG_PATTERN = /^[a-z0-9]+(?:[.-][a-z0-9]+)*$/u;
|
|
4
|
+
const RUBRIC_TEMPLATE_PATTERN = /^[a-z0-9]+(?:[./-][a-z0-9]+)*$/u;
|
|
5
|
+
export const programmaticSlugSchema = z
|
|
6
|
+
.string()
|
|
7
|
+
.min(1, "programmatic slug is required")
|
|
8
|
+
.regex(PROGRAMMATIC_SLUG_PATTERN, "programmatic slug must contain only lowercase letters, numbers, dots, or hyphens");
|
|
9
|
+
export const programmaticStatusSchema = checkStatusSchema;
|
|
10
|
+
export const programmaticCommandSchema = z
|
|
11
|
+
.union([z.string(), z.null(), z.undefined()])
|
|
12
|
+
.transform((value) => {
|
|
13
|
+
if (value === null || value === undefined) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
const trimmed = value.trim();
|
|
17
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
18
|
+
});
|
|
19
|
+
export const rubricTemplateSchema = z
|
|
20
|
+
.string()
|
|
21
|
+
.trim()
|
|
22
|
+
.min(1, "rubric template is required")
|
|
23
|
+
.regex(RUBRIC_TEMPLATE_PATTERN, "rubric template must contain only lowercase letters, numbers, dots, slashes, or hyphens");
|
|
24
|
+
export const programmaticCheckResultSchema = z.object({
|
|
25
|
+
slug: programmaticSlugSchema,
|
|
26
|
+
status: programmaticStatusSchema,
|
|
27
|
+
command: z.string().optional(),
|
|
28
|
+
exitCode: z.number().nullable().optional(),
|
|
29
|
+
logPath: z.string().optional(),
|
|
30
|
+
error: z.string().optional(),
|
|
31
|
+
});
|
|
32
|
+
export function normalizeProgrammaticCommand(command) {
|
|
33
|
+
if (command === undefined) {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
const trimmed = command.trim();
|
|
37
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
38
|
+
}
|
|
39
|
+
export function sanitizeSlugForFilename(slug) {
|
|
40
|
+
return slug.replace(/[^a-z0-9.-]/gu, "-");
|
|
41
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ProgrammaticSlug } from "./methods.js";
|
|
2
|
+
import { type ProgrammaticSuggestion } from "./programmatic-detect.js";
|
|
3
|
+
export interface ProgrammaticDefault {
|
|
4
|
+
readonly slug: string;
|
|
5
|
+
readonly command?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const DEFAULT_PROGRAMMATIC_TEMPLATE_HEADER: readonly string[];
|
|
8
|
+
export declare const DEFAULT_PROGRAMMATIC_DEFAULTS: readonly ProgrammaticDefault[];
|
|
9
|
+
export declare function combineSuggestedProgrammaticCommands(suggestions: readonly ProgrammaticSuggestion[]): Map<ProgrammaticSlug, string | undefined>;
|
|
10
|
+
export declare function listDetectedProgrammaticDefaults(suggestions: readonly ProgrammaticSuggestion[]): ProgrammaticDefault[];
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { CANONICAL_PROGRAMMATIC_SLUGS, } from "./programmatic-detect.js";
|
|
2
|
+
export const DEFAULT_PROGRAMMATIC_TEMPLATE_HEADER = [
|
|
3
|
+
"# Repo-level verification config.",
|
|
4
|
+
"# Configure only the stages and methods you use.",
|
|
5
|
+
"# `run.programmatic` commands execute in candidate workspaces after a run finishes.",
|
|
6
|
+
"# Leave any command blank (or delete it entirely) to skip that check.",
|
|
7
|
+
"",
|
|
8
|
+
];
|
|
9
|
+
export const DEFAULT_PROGRAMMATIC_DEFAULTS = [
|
|
10
|
+
{ slug: "format" },
|
|
11
|
+
{ slug: "lint" },
|
|
12
|
+
{ slug: "typecheck" },
|
|
13
|
+
{ slug: "tests" },
|
|
14
|
+
];
|
|
15
|
+
export function combineSuggestedProgrammaticCommands(suggestions) {
|
|
16
|
+
const combined = new Map();
|
|
17
|
+
for (const suggestion of suggestions) {
|
|
18
|
+
for (const [slug, command] of suggestion.commands) {
|
|
19
|
+
const commands = combined.get(slug);
|
|
20
|
+
if (!commands) {
|
|
21
|
+
combined.set(slug, [command]);
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
if (!commands.includes(command)) {
|
|
25
|
+
commands.push(command);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const resolved = new Map();
|
|
30
|
+
for (const slug of CANONICAL_PROGRAMMATIC_SLUGS) {
|
|
31
|
+
const commands = combined.get(slug);
|
|
32
|
+
resolved.set(slug, commands && commands.length > 0 ? commands.join(" && ") : undefined);
|
|
33
|
+
}
|
|
34
|
+
return resolved;
|
|
35
|
+
}
|
|
36
|
+
export function listDetectedProgrammaticDefaults(suggestions) {
|
|
37
|
+
const commands = combineSuggestedProgrammaticCommands(suggestions);
|
|
38
|
+
return CANONICAL_PROGRAMMATIC_SLUGS.map((slug) => ({
|
|
39
|
+
slug,
|
|
40
|
+
command: commands.get(slug),
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type EnvironmentConfig } from "../environment/types.js";
|
|
2
|
+
import type { ProgrammaticSlug } from "./methods.js";
|
|
3
|
+
export declare const CANONICAL_PROGRAMMATIC_SLUGS: ProgrammaticSlug[];
|
|
4
|
+
export interface ProgrammaticSuggestion {
|
|
5
|
+
source: "node" | "python";
|
|
6
|
+
commands: Map<ProgrammaticSlug, string>;
|
|
7
|
+
notes: string[];
|
|
8
|
+
warnings: string[];
|
|
9
|
+
}
|
|
10
|
+
export declare function detectProgrammaticSuggestions(root: string, environment: EnvironmentConfig): Promise<ProgrammaticSuggestion[]>;
|
|
@@ -2,25 +2,25 @@ import { readFile } from "node:fs/promises";
|
|
|
2
2
|
import { pathExists } from "../../utils/fs.js";
|
|
3
3
|
import { resolvePath } from "../../utils/path.js";
|
|
4
4
|
import { getPythonEnvironmentPath, isNodeEnvironmentDisabled, isPythonEnvironmentDisabled, } from "../environment/types.js";
|
|
5
|
-
export const
|
|
5
|
+
export const CANONICAL_PROGRAMMATIC_SLUGS = [
|
|
6
6
|
"format",
|
|
7
7
|
"lint",
|
|
8
8
|
"typecheck",
|
|
9
9
|
"tests",
|
|
10
10
|
];
|
|
11
|
-
export async function
|
|
11
|
+
export async function detectProgrammaticSuggestions(root, environment) {
|
|
12
12
|
const suggestions = [];
|
|
13
|
-
const nodeSuggestion = await
|
|
13
|
+
const nodeSuggestion = await detectNodeSuggestion(root, environment);
|
|
14
14
|
if (nodeSuggestion) {
|
|
15
15
|
suggestions.push(nodeSuggestion);
|
|
16
16
|
}
|
|
17
|
-
const pythonSuggestion = await
|
|
17
|
+
const pythonSuggestion = await detectPythonSuggestion(root, environment);
|
|
18
18
|
if (pythonSuggestion) {
|
|
19
19
|
suggestions.push(pythonSuggestion);
|
|
20
20
|
}
|
|
21
21
|
return suggestions;
|
|
22
22
|
}
|
|
23
|
-
async function
|
|
23
|
+
async function detectNodeSuggestion(root, environment) {
|
|
24
24
|
if (isNodeEnvironmentDisabled(environment)) {
|
|
25
25
|
return undefined;
|
|
26
26
|
}
|
|
@@ -77,7 +77,7 @@ async function detectNodeEvalSuggestion(root, environment) {
|
|
|
77
77
|
warnings,
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
|
-
async function
|
|
80
|
+
async function detectPythonSuggestion(root, environment) {
|
|
81
81
|
if (isPythonEnvironmentDisabled(environment)) {
|
|
82
82
|
return undefined;
|
|
83
83
|
}
|
|
@@ -185,40 +185,29 @@ async function readPythonDependencies(root) {
|
|
|
185
185
|
return result;
|
|
186
186
|
}
|
|
187
187
|
function extractPyprojectDependencies(content, result) {
|
|
188
|
-
const
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
if (normalized.includes("pyright")) {
|
|
198
|
-
result.add("pyright");
|
|
199
|
-
}
|
|
188
|
+
const patterns = [
|
|
189
|
+
/^\s*dependencies\s*=\s*\[/imu,
|
|
190
|
+
/^\s*\[project.optional-dependencies\]\s*$/imu,
|
|
191
|
+
];
|
|
192
|
+
if (!patterns.some((pattern) => pattern.test(content))) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
for (const match of content.matchAll(/"([A-Za-z0-9_.-]+)\\b[^"]*"/gu)) {
|
|
196
|
+
result.add(match[1].toLowerCase());
|
|
200
197
|
}
|
|
201
198
|
}
|
|
202
199
|
function extractRequirementDependencies(content, result) {
|
|
203
|
-
const
|
|
204
|
-
for (const line of lines) {
|
|
200
|
+
for (const line of content.split("\n")) {
|
|
205
201
|
const trimmed = line.trim();
|
|
206
|
-
if (trimmed
|
|
202
|
+
if (!trimmed || trimmed.startsWith("#")) {
|
|
207
203
|
continue;
|
|
208
204
|
}
|
|
209
|
-
const
|
|
210
|
-
if (
|
|
211
|
-
result.add(
|
|
212
|
-
}
|
|
213
|
-
if (normalized.startsWith("pytest")) {
|
|
214
|
-
result.add("pytest");
|
|
215
|
-
}
|
|
216
|
-
if (normalized.startsWith("pyright")) {
|
|
217
|
-
result.add("pyright");
|
|
205
|
+
const match = trimmed.match(/^([A-Za-z0-9_.-]+)/u);
|
|
206
|
+
if (match?.[1]) {
|
|
207
|
+
result.add(match[1].toLowerCase());
|
|
218
208
|
}
|
|
219
209
|
}
|
|
220
210
|
}
|
|
221
|
-
function hasDependency(
|
|
222
|
-
|
|
223
|
-
return Boolean(dependencies[name] ?? devDependencies[name]);
|
|
211
|
+
function hasDependency(pkg, name) {
|
|
212
|
+
return Boolean(pkg.dependencies?.[name] ?? pkg.devDependencies?.[name]);
|
|
224
213
|
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const verificationRubricEntrySchema: z.ZodObject<{
|
|
3
|
+
template: z.ZodString;
|
|
4
|
+
}, z.core.$strict>;
|
|
5
|
+
export type VerificationRubricEntry = z.infer<typeof verificationRubricEntrySchema>;
|
|
6
|
+
declare const verificationRubricOnlyStageConfigSchema: z.ZodObject<{
|
|
7
|
+
rubric: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
8
|
+
template: z.ZodString;
|
|
9
|
+
}, z.core.$strict>>>>;
|
|
10
|
+
}, z.core.$strict>;
|
|
11
|
+
declare const verificationRunStageConfigSchema: z.ZodObject<{
|
|
12
|
+
programmatic: z.ZodDefault<z.ZodOptional<z.ZodPipe<z.ZodRecord<z.ZodString, z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodNull, z.ZodUndefined]>, z.ZodTransform<string | undefined, string | null | undefined>>>, z.ZodTransform<{
|
|
13
|
+
slug: string;
|
|
14
|
+
command?: string;
|
|
15
|
+
}[], Record<string, string | undefined>>>>>;
|
|
16
|
+
rubric: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
17
|
+
template: z.ZodString;
|
|
18
|
+
}, z.core.$strict>>>>;
|
|
19
|
+
}, z.core.$strict>;
|
|
20
|
+
export type VerificationRubricOnlyStageConfig = z.infer<typeof verificationRubricOnlyStageConfigSchema>;
|
|
21
|
+
export type VerificationRunStageConfig = z.infer<typeof verificationRunStageConfigSchema>;
|
|
22
|
+
export declare const verificationConfigSchema: z.ZodObject<{
|
|
23
|
+
spec: z.ZodDefault<z.ZodOptional<z.ZodObject<{
|
|
24
|
+
rubric: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
25
|
+
template: z.ZodString;
|
|
26
|
+
}, z.core.$strict>>>>;
|
|
27
|
+
}, z.core.$strict>>>;
|
|
28
|
+
run: z.ZodDefault<z.ZodOptional<z.ZodObject<{
|
|
29
|
+
programmatic: z.ZodDefault<z.ZodOptional<z.ZodPipe<z.ZodRecord<z.ZodString, z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodNull, z.ZodUndefined]>, z.ZodTransform<string | undefined, string | null | undefined>>>, z.ZodTransform<{
|
|
30
|
+
slug: string;
|
|
31
|
+
command?: string;
|
|
32
|
+
}[], Record<string, string | undefined>>>>>;
|
|
33
|
+
rubric: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
34
|
+
template: z.ZodString;
|
|
35
|
+
}, z.core.$strict>>>>;
|
|
36
|
+
}, z.core.$strict>>>;
|
|
37
|
+
reduce: z.ZodDefault<z.ZodOptional<z.ZodObject<{
|
|
38
|
+
rubric: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
39
|
+
template: z.ZodString;
|
|
40
|
+
}, z.core.$strict>>>>;
|
|
41
|
+
}, z.core.$strict>>>;
|
|
42
|
+
message: z.ZodDefault<z.ZodOptional<z.ZodObject<{
|
|
43
|
+
rubric: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
44
|
+
template: z.ZodString;
|
|
45
|
+
}, z.core.$strict>>>>;
|
|
46
|
+
}, z.core.$strict>>>;
|
|
47
|
+
}, z.core.$strict>;
|
|
48
|
+
export type VerificationConfig = z.infer<typeof verificationConfigSchema>;
|
|
49
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { programmaticCommandSchema, programmaticSlugSchema, } from "./methods.js";
|
|
3
|
+
export const verificationRubricEntrySchema = z
|
|
4
|
+
.object({
|
|
5
|
+
template: z.string().trim().min(1),
|
|
6
|
+
})
|
|
7
|
+
.strict();
|
|
8
|
+
const verificationProgrammaticMapSchema = z
|
|
9
|
+
.record(z.string(), programmaticCommandSchema)
|
|
10
|
+
.transform((value) => {
|
|
11
|
+
const entries = [];
|
|
12
|
+
for (const [rawSlug, rawCommand] of Object.entries(value)) {
|
|
13
|
+
const slug = programmaticSlugSchema.parse(rawSlug.trim());
|
|
14
|
+
const command = rawCommand ?? undefined;
|
|
15
|
+
entries.push({ slug, ...(command ? { command } : {}) });
|
|
16
|
+
}
|
|
17
|
+
return entries;
|
|
18
|
+
});
|
|
19
|
+
const verificationRubricOnlyStageConfigSchema = z
|
|
20
|
+
.object({
|
|
21
|
+
rubric: z.array(verificationRubricEntrySchema).optional().default([]),
|
|
22
|
+
})
|
|
23
|
+
.strict();
|
|
24
|
+
const verificationRunStageConfigSchema = z
|
|
25
|
+
.object({
|
|
26
|
+
programmatic: verificationProgrammaticMapSchema.optional().default([]),
|
|
27
|
+
rubric: z.array(verificationRubricEntrySchema).optional().default([]),
|
|
28
|
+
})
|
|
29
|
+
.strict();
|
|
30
|
+
export const verificationConfigSchema = z
|
|
31
|
+
.object({
|
|
32
|
+
spec: verificationRubricOnlyStageConfigSchema
|
|
33
|
+
.optional()
|
|
34
|
+
.default({ rubric: [] }),
|
|
35
|
+
run: verificationRunStageConfigSchema
|
|
36
|
+
.optional()
|
|
37
|
+
.default({ programmatic: [], rubric: [] }),
|
|
38
|
+
reduce: verificationRubricOnlyStageConfigSchema
|
|
39
|
+
.optional()
|
|
40
|
+
.default({ rubric: [] }),
|
|
41
|
+
message: verificationRubricOnlyStageConfigSchema
|
|
42
|
+
.optional()
|
|
43
|
+
.default({ rubric: [] }),
|
|
44
|
+
})
|
|
45
|
+
.strict();
|