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,22 +1,30 @@
|
|
|
1
|
+
import { getAgentDefaultId, getSupportedAgentDefaults, } from "../../configs/agents/defaults.js";
|
|
1
2
|
import { readAgentsConfig } from "../../configs/agents/loader.js";
|
|
2
|
-
import { renderAgentPromptPreface } from "../../render/transcripts/init.js";
|
|
3
3
|
import { detectBinary } from "../../utils/binaries.js";
|
|
4
4
|
import { isDefaultYamlTemplate, loadYamlConfig, persistYamlConfig, } from "../../utils/yaml.js";
|
|
5
5
|
import { formatWorkspacePath, resolveWorkspacePath, VORATIQ_AGENTS_FILE, } from "../../workspace/structure.js";
|
|
6
|
-
import { buildDefaultAgentsTemplate,
|
|
6
|
+
import { buildDefaultAgentsTemplate, serializeAgentsConfigEntries, } from "../../workspace/templates.js";
|
|
7
7
|
export const AGENTS_CONFIG_DISPLAY_PATH = formatWorkspacePath(VORATIQ_AGENTS_FILE);
|
|
8
|
-
export async function configureAgents(root, options) {
|
|
8
|
+
export async function configureAgents(root, preset, options) {
|
|
9
|
+
void preset;
|
|
10
|
+
void options;
|
|
9
11
|
const filePath = resolveWorkspacePath(root, VORATIQ_AGENTS_FILE);
|
|
10
12
|
const defaultTemplate = buildDefaultAgentsTemplate();
|
|
11
13
|
const loadResult = await loadYamlConfig(filePath, readAgentsConfig);
|
|
12
14
|
const defaultStatus = isDefaultYamlTemplate(loadResult.snapshot, defaultTemplate);
|
|
13
15
|
const configCreated = !loadResult.snapshot.exists;
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
const lifecycle = scanWorkspaceForAgentDefaults(loadResult.config, defaultStatus, getSupportedAgentDefaults());
|
|
17
|
+
const detectedProviders = collectDetectedProviders(lifecycle.templates);
|
|
18
|
+
if (!defaultStatus && loadResult.snapshot.exists) {
|
|
19
|
+
return buildAgentSummary({
|
|
20
|
+
entries: loadResult.config.agents,
|
|
21
|
+
zeroDetections: detectedProviders.length === 0,
|
|
22
|
+
detectedProviders,
|
|
23
|
+
providerEnablementPrompted: false,
|
|
24
|
+
configCreated,
|
|
25
|
+
configUpdated: false,
|
|
26
|
+
});
|
|
17
27
|
}
|
|
18
|
-
const lifecycle = scanWorkspaceForAgentDefaults(loadResult.config, defaultStatus);
|
|
19
|
-
const configChanged = await applyAgentOperatorChoices(lifecycle, options);
|
|
20
28
|
const snapshotResult = finalizeAgentConfigSnapshot(lifecycle);
|
|
21
29
|
const updated = await persistYamlConfig({
|
|
22
30
|
filePath,
|
|
@@ -25,32 +33,44 @@ export async function configureAgents(root, options) {
|
|
|
25
33
|
defaultTemplate,
|
|
26
34
|
isDefaultTemplate: defaultStatus,
|
|
27
35
|
});
|
|
28
|
-
return buildAgentSummary(
|
|
36
|
+
return buildAgentSummary({
|
|
37
|
+
entries: snapshotResult.entries,
|
|
38
|
+
zeroDetections: lifecycle.zeroDetections,
|
|
39
|
+
detectedProviders,
|
|
40
|
+
providerEnablementPrompted: false,
|
|
41
|
+
configCreated,
|
|
42
|
+
configUpdated: updated,
|
|
43
|
+
});
|
|
29
44
|
}
|
|
30
|
-
function scanWorkspaceForAgentDefaults(config, isDefaultTemplate) {
|
|
45
|
+
function scanWorkspaceForAgentDefaults(config, isDefaultTemplate, templates) {
|
|
31
46
|
const templatesById = new Map();
|
|
32
47
|
for (const entry of config.agents) {
|
|
33
48
|
templatesById.set(entry.id, entry);
|
|
34
49
|
}
|
|
35
50
|
const templateStates = [];
|
|
36
51
|
const templateIds = new Set();
|
|
37
|
-
const
|
|
52
|
+
const detectedBinaryByProvider = new Map();
|
|
53
|
+
const templateEntries = templates.map((template) => ({
|
|
38
54
|
template,
|
|
39
|
-
|
|
55
|
+
templateId: getAgentDefaultId(template),
|
|
40
56
|
}));
|
|
41
|
-
for (const { template,
|
|
42
|
-
templateIds.add(
|
|
57
|
+
for (const { template, templateId } of templateEntries) {
|
|
58
|
+
templateIds.add(templateId);
|
|
43
59
|
const existing = isDefaultTemplate
|
|
44
60
|
? undefined
|
|
45
|
-
: templatesById.get(
|
|
46
|
-
|
|
47
|
-
|
|
61
|
+
: templatesById.get(templateId);
|
|
62
|
+
let detectedBinary = detectedBinaryByProvider.get(template.provider);
|
|
63
|
+
if (!detectedBinaryByProvider.has(template.provider)) {
|
|
64
|
+
detectedBinary = detectBinary(template.provider);
|
|
65
|
+
detectedBinaryByProvider.set(template.provider, detectedBinary);
|
|
66
|
+
}
|
|
67
|
+
const baseEntry = existing ?? buildEntryFromTemplate(template, templateId);
|
|
48
68
|
const entry = cloneAgentEntry(baseEntry);
|
|
49
|
-
entry.binary = detectedBinary ??
|
|
69
|
+
entry.binary = detectedBinary ?? "";
|
|
50
70
|
entry.enabled = entry.enabled !== false;
|
|
51
71
|
templateStates.push({
|
|
72
|
+
templateId,
|
|
52
73
|
template,
|
|
53
|
-
existing,
|
|
54
74
|
entry,
|
|
55
75
|
detectedBinary,
|
|
56
76
|
});
|
|
@@ -61,20 +81,23 @@ function scanWorkspaceForAgentDefaults(config, isDefaultTemplate) {
|
|
|
61
81
|
userDefined.push(cloneAgentEntry(entry));
|
|
62
82
|
}
|
|
63
83
|
}
|
|
64
|
-
const zeroDetections = templateStates.every((state) => !hasBinary(state.
|
|
84
|
+
const zeroDetections = templateStates.every((state) => !hasBinary(state.detectedBinary));
|
|
65
85
|
return {
|
|
66
86
|
templates: templateStates,
|
|
67
87
|
userDefined,
|
|
68
88
|
zeroDetections,
|
|
69
89
|
};
|
|
70
90
|
}
|
|
71
|
-
function buildEntryFromTemplate(template,
|
|
91
|
+
function buildEntryFromTemplate(template, templateId) {
|
|
72
92
|
return {
|
|
73
|
-
id:
|
|
93
|
+
id: templateId,
|
|
74
94
|
provider: template.provider,
|
|
75
95
|
model: template.model,
|
|
76
|
-
enabled:
|
|
96
|
+
enabled: true,
|
|
77
97
|
binary: "",
|
|
98
|
+
extraArgs: template.extraArgs && template.extraArgs.length > 0
|
|
99
|
+
? [...template.extraArgs]
|
|
100
|
+
: undefined,
|
|
78
101
|
};
|
|
79
102
|
}
|
|
80
103
|
function cloneAgentEntry(entry) {
|
|
@@ -89,43 +112,25 @@ function cloneAgentEntry(entry) {
|
|
|
89
112
|
: undefined,
|
|
90
113
|
};
|
|
91
114
|
}
|
|
92
|
-
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
let firstPrompt = true;
|
|
99
|
-
let changed = false;
|
|
100
|
-
for (const templateState of state.templates) {
|
|
101
|
-
const hasDetectedBinary = hasBinary(templateState.entry.binary);
|
|
102
|
-
if (!hasDetectedBinary) {
|
|
103
|
-
templateState.entry.enabled = false;
|
|
115
|
+
function collectDetectedProviders(templates) {
|
|
116
|
+
const rows = [];
|
|
117
|
+
const seenProviders = new Set();
|
|
118
|
+
for (const templateState of templates) {
|
|
119
|
+
const binary = templateState.detectedBinary?.trim();
|
|
120
|
+
if (!binary) {
|
|
104
121
|
continue;
|
|
105
122
|
}
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
: true;
|
|
110
|
-
const prefaceLines = renderAgentPromptPreface({
|
|
111
|
-
agentId: templateState.entry.id,
|
|
112
|
-
binaryPath: templateState.entry.binary ?? "",
|
|
113
|
-
detected: hasDetectedBinary,
|
|
114
|
-
firstPrompt,
|
|
115
|
-
});
|
|
116
|
-
const shouldEnable = await confirm({
|
|
117
|
-
message: "Enable?",
|
|
118
|
-
defaultValue,
|
|
119
|
-
prefaceLines,
|
|
120
|
-
});
|
|
121
|
-
if (shouldEnable !== initialEnabled) {
|
|
122
|
-
changed = true;
|
|
123
|
+
const provider = templateState.template.provider;
|
|
124
|
+
if (seenProviders.has(provider)) {
|
|
125
|
+
continue;
|
|
123
126
|
}
|
|
124
|
-
|
|
125
|
-
|
|
127
|
+
seenProviders.add(provider);
|
|
128
|
+
rows.push({
|
|
129
|
+
provider,
|
|
130
|
+
binary,
|
|
131
|
+
});
|
|
126
132
|
}
|
|
127
|
-
|
|
128
|
-
return changed;
|
|
133
|
+
return rows;
|
|
129
134
|
}
|
|
130
135
|
function buildFinalAgentEntries(state) {
|
|
131
136
|
const finalEntries = state.templates.map((templateState) => templateState.entry);
|
|
@@ -136,14 +141,18 @@ function finalizeAgentConfigSnapshot(state) {
|
|
|
136
141
|
const serialized = serializeAgentsConfigEntries(entries);
|
|
137
142
|
return { entries, serialized };
|
|
138
143
|
}
|
|
139
|
-
function buildAgentSummary(
|
|
144
|
+
function buildAgentSummary(options) {
|
|
145
|
+
const { entries, zeroDetections, detectedProviders, providerEnablementPrompted, configCreated, configUpdated, } = options;
|
|
140
146
|
const enabledAgents = entries
|
|
141
147
|
.filter((entry) => entry.enabled !== false)
|
|
142
148
|
.map((entry) => entry.id);
|
|
143
149
|
return {
|
|
144
150
|
configPath: AGENTS_CONFIG_DISPLAY_PATH,
|
|
145
151
|
enabledAgents,
|
|
152
|
+
agentCount: entries.length,
|
|
146
153
|
zeroDetections,
|
|
154
|
+
detectedProviders: [...detectedProviders],
|
|
155
|
+
providerEnablementPrompted,
|
|
147
156
|
configCreated,
|
|
148
157
|
configUpdated,
|
|
149
158
|
};
|
|
@@ -151,9 +160,3 @@ function buildAgentSummary(entries, zeroDetections, configCreated, configUpdated
|
|
|
151
160
|
function hasBinary(binary) {
|
|
152
161
|
return Boolean(binary && binary.trim().length > 0);
|
|
153
162
|
}
|
|
154
|
-
function computeZeroDetections(entries) {
|
|
155
|
-
return !entries.some((entry) => hasBinary(entry.binary));
|
|
156
|
-
}
|
|
157
|
-
function canConfirm(options) {
|
|
158
|
-
return Boolean(options.confirm);
|
|
159
|
-
}
|
|
@@ -1,34 +1,53 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { getAgentDefaultId, getAgentDefaultsForPreset, getSupportedAgentDefaults, } from "../../configs/agents/defaults.js";
|
|
2
|
+
import { readAgentsConfig } from "../../configs/agents/loader.js";
|
|
3
|
+
import { buildDefaultOrchestrationTemplate } from "../../configs/orchestration/bootstrap.js";
|
|
4
|
+
import { renderPresetPromptPreface } from "../../render/transcripts/init.js";
|
|
5
|
+
import { normalizeConfigText, readConfigSnapshot, writeConfigIfChanged, } from "../../utils/yaml.js";
|
|
3
6
|
import { createWorkspace } from "../../workspace/setup.js";
|
|
4
|
-
import { formatWorkspacePath, VORATIQ_SANDBOX_FILE, } from "../../workspace/structure.js";
|
|
7
|
+
import { formatWorkspacePath, resolveWorkspacePath, VORATIQ_AGENTS_FILE, VORATIQ_ORCHESTRATION_FILE, VORATIQ_SANDBOX_FILE, } from "../../workspace/structure.js";
|
|
8
|
+
import { listAgentPresetTemplates, serializeAgentsConfigEntries, } from "../../workspace/templates.js";
|
|
5
9
|
import { configureAgents } from "./agents.js";
|
|
6
10
|
import { configureEnvironment } from "./environment.js";
|
|
7
|
-
import { configureEvals } from "./evals.js";
|
|
8
11
|
export async function executeInitCommand(input) {
|
|
9
|
-
const { root, interactive, confirm, prompt } = input;
|
|
12
|
+
const { root, preset, presetProvided, onPresetResolved, assumeYes, interactive, confirm, prompt, } = input;
|
|
13
|
+
const agentsConfigPath = resolveWorkspacePath(root, VORATIQ_AGENTS_FILE);
|
|
14
|
+
const agentsSnapshotBeforeInit = await readConfigSnapshot(agentsConfigPath);
|
|
15
|
+
const agentsConfigMissing = !agentsSnapshotBeforeInit.exists;
|
|
16
|
+
const orchestrationConfigPath = resolveWorkspacePath(root, VORATIQ_ORCHESTRATION_FILE);
|
|
17
|
+
const orchestrationSnapshotBeforeInit = await readConfigSnapshot(orchestrationConfigPath);
|
|
18
|
+
const orchestrationConfigMissing = !orchestrationSnapshotBeforeInit.exists;
|
|
19
|
+
const resolvedPreset = await resolveAgentPreset({
|
|
20
|
+
preset,
|
|
21
|
+
presetProvided,
|
|
22
|
+
interactive,
|
|
23
|
+
prompt,
|
|
24
|
+
agentsConfigMissing,
|
|
25
|
+
});
|
|
26
|
+
onPresetResolved?.(resolvedPreset);
|
|
10
27
|
const workspaceResult = await createWorkspace(root);
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
28
|
+
await applyAgentPresetTemplate(root, resolvedPreset, {
|
|
29
|
+
presetProvided: Boolean(presetProvided),
|
|
30
|
+
agentsConfigMissing,
|
|
31
|
+
});
|
|
32
|
+
const agentSummary = await configureAgents(root, resolvedPreset, {
|
|
14
33
|
interactive,
|
|
34
|
+
assumeYes,
|
|
15
35
|
confirm,
|
|
16
36
|
});
|
|
37
|
+
const orchestrationSummary = await reconcileOrchestrationConfig(root, {
|
|
38
|
+
orchestrationConfigMissing,
|
|
39
|
+
preset: resolvedPreset,
|
|
40
|
+
});
|
|
17
41
|
const environmentSummary = await configureEnvironment(root, {
|
|
18
|
-
interactive,
|
|
19
|
-
confirm,
|
|
20
|
-
prompt,
|
|
42
|
+
interactive: false,
|
|
21
43
|
});
|
|
22
|
-
const evalSummary = await configureEvals(root, {
|
|
23
|
-
interactive,
|
|
24
|
-
confirm,
|
|
25
|
-
}, environmentSummary.config);
|
|
26
44
|
const sandboxSummary = buildSandboxSummary(workspaceResult);
|
|
27
45
|
return {
|
|
46
|
+
preset: resolvedPreset,
|
|
28
47
|
workspaceResult,
|
|
29
48
|
agentSummary,
|
|
49
|
+
orchestrationSummary,
|
|
30
50
|
environmentSummary,
|
|
31
|
-
evalSummary,
|
|
32
51
|
sandboxSummary,
|
|
33
52
|
};
|
|
34
53
|
}
|
|
@@ -38,3 +57,268 @@ function buildSandboxSummary(workspaceResult) {
|
|
|
38
57
|
const configCreated = normalizedCreated.includes(configPath);
|
|
39
58
|
return { configPath, configCreated };
|
|
40
59
|
}
|
|
60
|
+
async function reconcileOrchestrationConfig(root, options) {
|
|
61
|
+
const configPath = formatWorkspacePath(VORATIQ_ORCHESTRATION_FILE);
|
|
62
|
+
const { orchestrationConfigMissing, preset } = options;
|
|
63
|
+
if (!orchestrationConfigMissing) {
|
|
64
|
+
return { configPath, configCreated: false };
|
|
65
|
+
}
|
|
66
|
+
const agentsConfigPath = resolveWorkspacePath(root, VORATIQ_AGENTS_FILE);
|
|
67
|
+
const agentsSnapshot = await readConfigSnapshot(agentsConfigPath);
|
|
68
|
+
const agentsConfig = readAgentsConfig(agentsSnapshot.content);
|
|
69
|
+
const nextContent = buildDefaultOrchestrationTemplate(agentsConfig, preset);
|
|
70
|
+
const orchestrationConfigPath = resolveWorkspacePath(root, VORATIQ_ORCHESTRATION_FILE);
|
|
71
|
+
const orchestrationSnapshot = await readConfigSnapshot(orchestrationConfigPath);
|
|
72
|
+
const baseline = orchestrationSnapshot.exists
|
|
73
|
+
? orchestrationSnapshot.normalized
|
|
74
|
+
: "__missing__";
|
|
75
|
+
await writeConfigIfChanged(orchestrationConfigPath, nextContent, baseline);
|
|
76
|
+
return { configPath, configCreated: true };
|
|
77
|
+
}
|
|
78
|
+
async function applyAgentPresetTemplate(root, preset, options) {
|
|
79
|
+
const { presetProvided, agentsConfigMissing } = options;
|
|
80
|
+
// Only switch managed presets when the operator explicitly requests it.
|
|
81
|
+
// The exception is the first run where the config is missing.
|
|
82
|
+
if (!agentsConfigMissing && !presetProvided) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const filePath = resolveWorkspacePath(root, VORATIQ_AGENTS_FILE);
|
|
86
|
+
const snapshot = await readConfigSnapshot(filePath);
|
|
87
|
+
const knownTemplates = listAgentPresetTemplates();
|
|
88
|
+
const knownNormalized = new Set(knownTemplates.map((descriptor) => normalizeConfigText(descriptor.template)));
|
|
89
|
+
const selected = knownTemplates.find((descriptor) => descriptor.preset === preset);
|
|
90
|
+
if (!selected) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const shouldConsiderApplying = !snapshot.exists || knownNormalized.has(snapshot.normalized);
|
|
94
|
+
if (shouldConsiderApplying) {
|
|
95
|
+
const baseline = snapshot.exists ? snapshot.normalized : "__missing__";
|
|
96
|
+
await writeConfigIfChanged(filePath, selected.template, baseline);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (!presetProvided) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
// Fall back to semantic "managed" detection: allow switching between presets
|
|
103
|
+
// without requiring a byte-for-byte match on the template (binary / enabled
|
|
104
|
+
// often diverge after initialization).
|
|
105
|
+
const config = tryReadAgentsConfig(snapshot.content);
|
|
106
|
+
if (!config) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const managedCatalogEntries = retargetManagedCatalogEntries(config);
|
|
110
|
+
if (managedCatalogEntries) {
|
|
111
|
+
const serialized = serializeAgentsConfigEntries(managedCatalogEntries);
|
|
112
|
+
await writeConfigIfChanged(filePath, serialized, snapshot.normalized);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const managedPreset = detectManagedAgentsPreset(config);
|
|
116
|
+
if (!managedPreset) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (managedPreset === preset) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const updatedEntries = retargetManagedAgentEntries(config, managedPreset);
|
|
123
|
+
if (!updatedEntries) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const serialized = serializeAgentsConfigEntries(updatedEntries);
|
|
127
|
+
await writeConfigIfChanged(filePath, serialized, snapshot.normalized);
|
|
128
|
+
}
|
|
129
|
+
async function resolveAgentPreset(options) {
|
|
130
|
+
const { preset, presetProvided = false, interactive, prompt, agentsConfigMissing, } = options;
|
|
131
|
+
if (presetProvided) {
|
|
132
|
+
return preset;
|
|
133
|
+
}
|
|
134
|
+
if (!interactive || !prompt) {
|
|
135
|
+
return preset;
|
|
136
|
+
}
|
|
137
|
+
if (!agentsConfigMissing) {
|
|
138
|
+
return preset;
|
|
139
|
+
}
|
|
140
|
+
return promptForPresetSelection(prompt);
|
|
141
|
+
}
|
|
142
|
+
async function promptForPresetSelection(prompt) {
|
|
143
|
+
const choices = {
|
|
144
|
+
"1": "pro",
|
|
145
|
+
"2": "lite",
|
|
146
|
+
"3": "manual",
|
|
147
|
+
};
|
|
148
|
+
let firstPrompt = true;
|
|
149
|
+
for (;;) {
|
|
150
|
+
const response = await prompt({
|
|
151
|
+
message: "[1]",
|
|
152
|
+
prefaceLines: renderPresetPromptPreface(firstPrompt),
|
|
153
|
+
});
|
|
154
|
+
const trimmed = response.trim();
|
|
155
|
+
const normalized = trimmed.length === 0 ? "1" : trimmed;
|
|
156
|
+
const selected = choices[normalized];
|
|
157
|
+
if (selected) {
|
|
158
|
+
return selected;
|
|
159
|
+
}
|
|
160
|
+
process.stdout.write("Please choose 1, 2, or 3.\n");
|
|
161
|
+
firstPrompt = false;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function tryReadAgentsConfig(content) {
|
|
165
|
+
try {
|
|
166
|
+
return readAgentsConfig(content);
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
return undefined;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
function buildCatalogRoster() {
|
|
173
|
+
return getSupportedAgentDefaults().map((agentDefault) => ({
|
|
174
|
+
id: getAgentDefaultId(agentDefault),
|
|
175
|
+
provider: agentDefault.provider,
|
|
176
|
+
model: agentDefault.model,
|
|
177
|
+
extraArgs: agentDefault.extraArgs && agentDefault.extraArgs.length > 0
|
|
178
|
+
? [...agentDefault.extraArgs]
|
|
179
|
+
: undefined,
|
|
180
|
+
}));
|
|
181
|
+
}
|
|
182
|
+
function buildPresetRoster(preset) {
|
|
183
|
+
if (preset === "manual") {
|
|
184
|
+
return [];
|
|
185
|
+
}
|
|
186
|
+
return getAgentDefaultsForPreset(preset).map((agentDefault) => ({
|
|
187
|
+
id: getAgentDefaultId(agentDefault),
|
|
188
|
+
provider: agentDefault.provider,
|
|
189
|
+
model: agentDefault.model,
|
|
190
|
+
extraArgs: agentDefault.extraArgs && agentDefault.extraArgs.length > 0
|
|
191
|
+
? [...agentDefault.extraArgs]
|
|
192
|
+
: undefined,
|
|
193
|
+
}));
|
|
194
|
+
}
|
|
195
|
+
function detectManagedAgentsPreset(config) {
|
|
196
|
+
const catalogSignatures = new Map();
|
|
197
|
+
for (const signature of buildCatalogRoster()) {
|
|
198
|
+
catalogSignatures.set(signature.id, signature);
|
|
199
|
+
}
|
|
200
|
+
const entriesById = new Map();
|
|
201
|
+
for (const entry of config.agents) {
|
|
202
|
+
if (entriesById.has(entry.id)) {
|
|
203
|
+
return undefined;
|
|
204
|
+
}
|
|
205
|
+
const catalogSignature = catalogSignatures.get(entry.id);
|
|
206
|
+
if (catalogSignature &&
|
|
207
|
+
(entry.provider !== catalogSignature.provider ||
|
|
208
|
+
entry.model !== catalogSignature.model)) {
|
|
209
|
+
return undefined;
|
|
210
|
+
}
|
|
211
|
+
entriesById.set(entry.id, entry);
|
|
212
|
+
}
|
|
213
|
+
const candidates = ["pro", "lite"];
|
|
214
|
+
for (const preset of candidates) {
|
|
215
|
+
const roster = buildPresetRoster(preset);
|
|
216
|
+
if (roster.length === 0) {
|
|
217
|
+
continue;
|
|
218
|
+
}
|
|
219
|
+
const rosterIds = new Set(roster.map((signature) => signature.id));
|
|
220
|
+
const hasCatalogEntriesOutsideRoster = config.agents.some((entry) => {
|
|
221
|
+
if (!catalogSignatures.has(entry.id)) {
|
|
222
|
+
return false;
|
|
223
|
+
}
|
|
224
|
+
return !rosterIds.has(entry.id);
|
|
225
|
+
});
|
|
226
|
+
if (hasCatalogEntriesOutsideRoster) {
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
let matches = true;
|
|
230
|
+
for (const signature of roster) {
|
|
231
|
+
const existing = entriesById.get(signature.id);
|
|
232
|
+
if (!existing ||
|
|
233
|
+
existing.provider !== signature.provider ||
|
|
234
|
+
existing.model !== signature.model) {
|
|
235
|
+
matches = false;
|
|
236
|
+
break;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
if (matches) {
|
|
240
|
+
return preset;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return undefined;
|
|
244
|
+
}
|
|
245
|
+
function retargetManagedAgentEntries(config, fromPreset) {
|
|
246
|
+
const fromRoster = buildPresetRoster(fromPreset);
|
|
247
|
+
const fromIds = new Set(fromRoster.map((entry) => entry.id));
|
|
248
|
+
const priorManagedAgents = config.agents.filter((entry) => fromIds.has(entry.id));
|
|
249
|
+
const priorByProvider = new Map();
|
|
250
|
+
for (const entry of priorManagedAgents) {
|
|
251
|
+
if (!priorByProvider.has(entry.provider)) {
|
|
252
|
+
priorByProvider.set(entry.provider, entry);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
const priorById = new Map(priorManagedAgents.map((entry) => [entry.id, entry]));
|
|
256
|
+
const userDefinedAgents = config.agents.filter((entry) => !fromIds.has(entry.id));
|
|
257
|
+
const targetRoster = buildCatalogRoster();
|
|
258
|
+
const targetIds = new Set(targetRoster.map((entry) => entry.id));
|
|
259
|
+
// Avoid overwriting agents that were user-defined under the previous preset.
|
|
260
|
+
for (const entry of userDefinedAgents) {
|
|
261
|
+
if (targetIds.has(entry.id)) {
|
|
262
|
+
return undefined;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
const nextManagedAgents = targetRoster.map((signature) => {
|
|
266
|
+
const priorByIdentity = priorById.get(signature.id);
|
|
267
|
+
const prior = priorByProvider.get(signature.provider);
|
|
268
|
+
return {
|
|
269
|
+
id: signature.id,
|
|
270
|
+
provider: signature.provider,
|
|
271
|
+
model: signature.model,
|
|
272
|
+
enabled: priorByIdentity !== undefined
|
|
273
|
+
? priorByIdentity.enabled !== false
|
|
274
|
+
: prior?.enabled !== false,
|
|
275
|
+
binary: prior?.binary ?? "",
|
|
276
|
+
extraArgs: prior?.id === signature.id
|
|
277
|
+
? prior.extraArgs && prior.extraArgs.length > 0
|
|
278
|
+
? [...prior.extraArgs]
|
|
279
|
+
: undefined
|
|
280
|
+
: signature.extraArgs && signature.extraArgs.length > 0
|
|
281
|
+
? [...signature.extraArgs]
|
|
282
|
+
: undefined,
|
|
283
|
+
};
|
|
284
|
+
});
|
|
285
|
+
return [...nextManagedAgents, ...userDefinedAgents];
|
|
286
|
+
}
|
|
287
|
+
function retargetManagedCatalogEntries(config) {
|
|
288
|
+
const catalogRoster = buildCatalogRoster();
|
|
289
|
+
const catalogById = new Map(catalogRoster.map((signature) => [signature.id, signature]));
|
|
290
|
+
const catalogIds = new Set(catalogById.keys());
|
|
291
|
+
const entriesById = new Map();
|
|
292
|
+
for (const entry of config.agents) {
|
|
293
|
+
if (entriesById.has(entry.id)) {
|
|
294
|
+
return undefined;
|
|
295
|
+
}
|
|
296
|
+
entriesById.set(entry.id, entry);
|
|
297
|
+
}
|
|
298
|
+
for (const signature of catalogRoster) {
|
|
299
|
+
const existing = entriesById.get(signature.id);
|
|
300
|
+
if (!existing ||
|
|
301
|
+
existing.provider !== signature.provider ||
|
|
302
|
+
existing.model !== signature.model) {
|
|
303
|
+
return undefined;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
const managedEntries = catalogRoster.map((signature) => {
|
|
307
|
+
const existing = entriesById.get(signature.id);
|
|
308
|
+
const binary = existing?.binary ?? "";
|
|
309
|
+
return {
|
|
310
|
+
id: signature.id,
|
|
311
|
+
provider: signature.provider,
|
|
312
|
+
model: signature.model,
|
|
313
|
+
enabled: existing?.enabled === false ? false : true,
|
|
314
|
+
binary,
|
|
315
|
+
extraArgs: existing?.extraArgs && existing.extraArgs.length > 0
|
|
316
|
+
? [...existing.extraArgs]
|
|
317
|
+
: signature.extraArgs && signature.extraArgs.length > 0
|
|
318
|
+
? [...signature.extraArgs]
|
|
319
|
+
: undefined,
|
|
320
|
+
};
|
|
321
|
+
});
|
|
322
|
+
const userDefinedEntries = config.agents.filter((entry) => !catalogIds.has(entry.id));
|
|
323
|
+
return [...managedEntries, ...userDefinedEntries];
|
|
324
|
+
}
|
|
@@ -1,32 +1,38 @@
|
|
|
1
1
|
import type { EnvironmentConfig } from "../../configs/environment/types.js";
|
|
2
|
-
import type { EvalSlug } from "../../configs/evals/types.js";
|
|
3
2
|
import type { ConfirmationOptions, PromptOptions } from "../../render/interactions/confirmation.js";
|
|
3
|
+
import type { AgentPreset } from "../../workspace/templates.js";
|
|
4
4
|
import type { CreateWorkspaceResult } from "../../workspace/types.js";
|
|
5
5
|
export interface InitCommandInput {
|
|
6
6
|
root: string;
|
|
7
|
+
preset: AgentPreset;
|
|
8
|
+
presetProvided?: boolean;
|
|
9
|
+
onPresetResolved?: (preset: AgentPreset) => void;
|
|
10
|
+
assumeYes?: boolean;
|
|
7
11
|
interactive: boolean;
|
|
8
12
|
confirm?: InitConfirmationHandler;
|
|
9
13
|
prompt?: InitPromptHandler;
|
|
10
14
|
}
|
|
11
15
|
export interface InitCommandResult {
|
|
16
|
+
preset: AgentPreset;
|
|
12
17
|
workspaceResult: CreateWorkspaceResult;
|
|
13
18
|
agentSummary: AgentInitSummary;
|
|
14
|
-
|
|
19
|
+
orchestrationSummary: OrchestrationInitSummary;
|
|
15
20
|
environmentSummary: EnvironmentInitSummary;
|
|
16
21
|
sandboxSummary: SandboxInitSummary;
|
|
17
22
|
}
|
|
18
23
|
export interface AgentInitSummary {
|
|
19
24
|
configPath: string;
|
|
20
25
|
enabledAgents: string[];
|
|
26
|
+
agentCount: number;
|
|
21
27
|
zeroDetections: boolean;
|
|
28
|
+
detectedProviders: DetectedProviderSummary[];
|
|
29
|
+
providerEnablementPrompted: boolean;
|
|
22
30
|
configCreated: boolean;
|
|
23
31
|
configUpdated: boolean;
|
|
24
32
|
}
|
|
25
|
-
export interface
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
configCreated: boolean;
|
|
29
|
-
configUpdated: boolean;
|
|
33
|
+
export interface DetectedProviderSummary {
|
|
34
|
+
provider: string;
|
|
35
|
+
binary: string;
|
|
30
36
|
}
|
|
31
37
|
export interface EnvironmentInitSummary {
|
|
32
38
|
configPath: string;
|
|
@@ -39,10 +45,15 @@ export interface SandboxInitSummary {
|
|
|
39
45
|
configPath: string;
|
|
40
46
|
configCreated: boolean;
|
|
41
47
|
}
|
|
48
|
+
export interface OrchestrationInitSummary {
|
|
49
|
+
configPath: string;
|
|
50
|
+
configCreated: boolean;
|
|
51
|
+
}
|
|
42
52
|
export type InitConfirmationHandler = (options: ConfirmationOptions) => Promise<boolean>;
|
|
43
53
|
export type InitPromptHandler = (options: PromptOptions) => Promise<string>;
|
|
44
54
|
export interface InitConfigureOptions {
|
|
45
55
|
interactive: boolean;
|
|
56
|
+
assumeYes?: boolean;
|
|
46
57
|
confirm?: InitConfirmationHandler;
|
|
47
58
|
prompt?: InitPromptHandler;
|
|
48
59
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ChildProcess } from "node:child_process";
|
|
2
|
+
import type { TeardownController } from "../../competition/shared/teardown.js";
|
|
3
|
+
import type { InteractiveSessionRecord } from "../../domain/interactive/model/types.js";
|
|
4
|
+
interface ActiveInteractiveContext {
|
|
5
|
+
root: string;
|
|
6
|
+
sessionId: string;
|
|
7
|
+
process?: ChildProcess;
|
|
8
|
+
completion?: Promise<InteractiveSessionRecord>;
|
|
9
|
+
teardown?: TeardownController;
|
|
10
|
+
}
|
|
11
|
+
export declare function registerActiveInteractive(context: ActiveInteractiveContext): void;
|
|
12
|
+
export declare function clearActiveInteractive(sessionId: string): void;
|
|
13
|
+
export declare function terminateActiveInteractive(status: "failed" | "aborted", reason?: string): Promise<void>;
|
|
14
|
+
export declare function finalizeActiveInteractive(sessionId: string): Promise<void>;
|
|
15
|
+
export {};
|