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
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export const REQUIRED_REDUCTION_SECTION_ORDER = ["Reduction"];
|
|
2
|
+
export function validateReductionOutputContract(options) {
|
|
3
|
+
const { reductionMarkdown } = options;
|
|
4
|
+
const normalized = reductionMarkdown.replace(/\r\n/gu, "\n");
|
|
5
|
+
const trimmed = normalized.trim();
|
|
6
|
+
if (trimmed.length === 0) {
|
|
7
|
+
throw new Error("Reduction markdown must not be empty.");
|
|
8
|
+
}
|
|
9
|
+
if (!/^## Reduction\s*$/mu.test(normalized)) {
|
|
10
|
+
throw new Error("Missing required section heading: ## Reduction");
|
|
11
|
+
}
|
|
12
|
+
if (!/^\*\*Sources\*\*:\s*.+$/mu.test(normalized)) {
|
|
13
|
+
throw new Error("Missing required field: **Sources**");
|
|
14
|
+
}
|
|
15
|
+
if (!/^\*\*Summary\*\*:\s*.+$/mu.test(normalized)) {
|
|
16
|
+
throw new Error("Missing required field: **Summary**");
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type ResolvedExtraContextFile } from "../../../competition/shared/extra-context.js";
|
|
2
|
+
export interface BuildReducePromptOptions {
|
|
3
|
+
targetOperator: "spec" | "run" | "reduce" | "verify" | "message";
|
|
4
|
+
targetId: string;
|
|
5
|
+
artifactInfoPath: string;
|
|
6
|
+
repoRootPath: string;
|
|
7
|
+
workspacePath: string;
|
|
8
|
+
extraContextFiles?: readonly ResolvedExtraContextFile[];
|
|
9
|
+
}
|
|
10
|
+
export declare function buildReducePrompt(options: BuildReducePromptOptions): string;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { appendExtraContextPromptSection, } from "../../../competition/shared/extra-context.js";
|
|
2
|
+
import { appendConstraints, appendOutputRequirements, buildWorkspaceArtifactRequirements, } from "../../../competition/shared/prompt-helpers.js";
|
|
3
|
+
export function buildReducePrompt(options) {
|
|
4
|
+
const { targetOperator, targetId, artifactInfoPath, repoRootPath, workspacePath, extraContextFiles = [], } = options;
|
|
5
|
+
const lines = [
|
|
6
|
+
"You are the reducer for a completed Voratiq session. Read the available artifacts, synthesize what should be carried forward, and write both a human-readable reduction and a machine-readable reduction artifact.",
|
|
7
|
+
"",
|
|
8
|
+
"Inputs:",
|
|
9
|
+
`- Target operator: ${targetOperator}`,
|
|
10
|
+
`- Target session id: ${targetId}`,
|
|
11
|
+
`- Artifact information: \`${artifactInfoPath}\``,
|
|
12
|
+
"",
|
|
13
|
+
"Large artifacts and context budget:",
|
|
14
|
+
"- Do not use subagents.",
|
|
15
|
+
"- Start from `artifact-information.json` and inspect only the most decision-relevant artifacts.",
|
|
16
|
+
"- Make claims only when grounded in visible artifacts.",
|
|
17
|
+
"",
|
|
18
|
+
"Suggested workflow:",
|
|
19
|
+
"1) Read `artifact-information.json` first.",
|
|
20
|
+
"2) Inspect the most relevant staged artifacts one by one.",
|
|
21
|
+
"3) For each source, identify its strongest useful contributions and its key weaknesses or limitations.",
|
|
22
|
+
"4) Synthesize only the durable cross-source guidance, risks, and follow-on direction.",
|
|
23
|
+
"5) Write `reduction.md` and `reduction.json` in the workspace root.",
|
|
24
|
+
"",
|
|
25
|
+
"Goal:",
|
|
26
|
+
"- Produce carry-forward context for a later `spec`, `run`, `reduce`, or `verify` invocation.",
|
|
27
|
+
"- Focus on synthesis, not ranking or selecting a single best artifact.",
|
|
28
|
+
"- Optimize for next-step utility, not audit completeness.",
|
|
29
|
+
"- If something is uncertain, say so explicitly.",
|
|
30
|
+
"- Prefer the smallest useful reduction that preserves durable guidance.",
|
|
31
|
+
"",
|
|
32
|
+
"Output contract (must follow exactly):",
|
|
33
|
+
"- Produce two artifacts: the full reduction and the machine-readable reduction.",
|
|
34
|
+
"- The machine-readable artifact must contain only the final synthesized carry-forward result.",
|
|
35
|
+
"",
|
|
36
|
+
"## reduction.md",
|
|
37
|
+
"Write markdown with this shape:",
|
|
38
|
+
"## Reduction",
|
|
39
|
+
"**Sources**: <artifact-id>, <artifact-id>",
|
|
40
|
+
"",
|
|
41
|
+
"## Source Assessments",
|
|
42
|
+
"### <artifact-id>",
|
|
43
|
+
"**Strengths**:",
|
|
44
|
+
"- <strength>",
|
|
45
|
+
"- <strength>",
|
|
46
|
+
"**Weaknesses**:",
|
|
47
|
+
"- <weakness>",
|
|
48
|
+
"- <weakness>",
|
|
49
|
+
"<Repeat one `### <artifact-id>` block for each important source you relied on>",
|
|
50
|
+
"",
|
|
51
|
+
"## Synthesis",
|
|
52
|
+
"**Summary**: <1-3 sentence synthesis>",
|
|
53
|
+
"**Directives**:",
|
|
54
|
+
"- <instruction>",
|
|
55
|
+
"- <instruction>",
|
|
56
|
+
"**Risks**:",
|
|
57
|
+
"- <risk>",
|
|
58
|
+
"- <risk>",
|
|
59
|
+
"",
|
|
60
|
+
"## reduction.json",
|
|
61
|
+
"The machine-readable reduction must match the same synthesis described in `## Synthesis`.",
|
|
62
|
+
`{"summary":"<summary>","directives":["<directive>"],"risks":["<risk>"]}`,
|
|
63
|
+
"- `reduction.json` must contain only the final synthesized carry-forward result, not per-source assessments.",
|
|
64
|
+
"- Keep `summary`, `directives`, and `risks` concise and reusable.",
|
|
65
|
+
"- Include only the strongest durable guidance; do not restate every source artifact.",
|
|
66
|
+
"- Prefer 3-6 directives and 2-5 risks unless the evidence is unusually sparse.",
|
|
67
|
+
"- Merge overlapping findings instead of listing near-duplicates.",
|
|
68
|
+
];
|
|
69
|
+
appendConstraints(lines, {
|
|
70
|
+
readAccess: repoRootPath,
|
|
71
|
+
writeAccess: workspacePath,
|
|
72
|
+
});
|
|
73
|
+
appendExtraContextPromptSection(lines, extraContextFiles);
|
|
74
|
+
appendOutputRequirements(lines, buildWorkspaceArtifactRequirements([
|
|
75
|
+
{
|
|
76
|
+
instruction: "Save the full reduction",
|
|
77
|
+
path: "reduction.md",
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
instruction: "Save the machine-readable reduction",
|
|
81
|
+
path: "reduction.json",
|
|
82
|
+
schema: {
|
|
83
|
+
leadIn: "with this shape",
|
|
84
|
+
content: [
|
|
85
|
+
'`{"summary":"<summary>","directives":["<directive>"],"risks":["<risk>"]}`',
|
|
86
|
+
"- `reduction.json` must contain only the final synthesized carry-forward result, not per-source assessments.",
|
|
87
|
+
"- Keep `summary`, `directives`, and `risks` concise and reusable.",
|
|
88
|
+
"- Include only the strongest durable guidance; do not restate every source artifact.",
|
|
89
|
+
"- Prefer 3-6 directives and 2-5 risks unless the evidence is unusually sparse.",
|
|
90
|
+
"- Merge overlapping findings instead of listing near-duplicates.",
|
|
91
|
+
],
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
]));
|
|
95
|
+
return `${lines.join("\n")}\n`;
|
|
96
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const reductionArtifactSchema: z.ZodObject<{
|
|
3
|
+
summary: z.ZodString;
|
|
4
|
+
directives: z.ZodArray<z.ZodString>;
|
|
5
|
+
risks: z.ZodArray<z.ZodString>;
|
|
6
|
+
}, z.core.$strip>;
|
|
7
|
+
export type ReductionArtifact = z.infer<typeof reductionArtifactSchema>;
|
|
8
|
+
export declare function parseReductionArtifact(rawReduction: string): ReductionArtifact;
|
|
9
|
+
export declare function readReductionArtifact(reductionPath: string): Promise<ReductionArtifact>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
export const reductionArtifactSchema = z.object({
|
|
4
|
+
summary: z.string().trim().min(1),
|
|
5
|
+
directives: z.array(z.string().trim().min(1)).min(1),
|
|
6
|
+
risks: z.array(z.string().trim().min(1)),
|
|
7
|
+
});
|
|
8
|
+
export function parseReductionArtifact(rawReduction) {
|
|
9
|
+
let parsed;
|
|
10
|
+
try {
|
|
11
|
+
parsed = JSON.parse(rawReduction);
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
const reason = error instanceof Error ? error.message : "invalid JSON syntax";
|
|
15
|
+
throw new Error(`Invalid JSON: ${reason}`);
|
|
16
|
+
}
|
|
17
|
+
const validation = reductionArtifactSchema.safeParse(parsed);
|
|
18
|
+
if (!validation.success) {
|
|
19
|
+
const detail = validation.error.issues
|
|
20
|
+
.map((issue) => {
|
|
21
|
+
const path = issue.path.length > 0 ? issue.path.map(String).join(".") : "root";
|
|
22
|
+
return `${path}: ${issue.message}`;
|
|
23
|
+
})
|
|
24
|
+
.join("; ");
|
|
25
|
+
throw new Error(`Schema validation failed: ${detail}`);
|
|
26
|
+
}
|
|
27
|
+
return validation.data;
|
|
28
|
+
}
|
|
29
|
+
export async function readReductionArtifact(reductionPath) {
|
|
30
|
+
const rawReduction = await readFile(reductionPath, "utf8");
|
|
31
|
+
return parseReductionArtifact(rawReduction);
|
|
32
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type ReductionStatus, reductionStatusSchema, TERMINAL_REDUCTION_STATUSES } from "../../../status/index.js";
|
|
3
|
+
export type { ReductionStatus };
|
|
4
|
+
export { reductionStatusSchema, TERMINAL_REDUCTION_STATUSES };
|
|
5
|
+
export declare const reductionTargetTypeSchema: z.ZodEnum<{
|
|
6
|
+
message: "message";
|
|
7
|
+
reduce: "reduce";
|
|
8
|
+
spec: "spec";
|
|
9
|
+
run: "run";
|
|
10
|
+
verify: "verify";
|
|
11
|
+
}>;
|
|
12
|
+
export type ReductionTargetType = z.infer<typeof reductionTargetTypeSchema>;
|
|
13
|
+
export declare const reductionTargetSchema: z.ZodObject<{
|
|
14
|
+
type: z.ZodEnum<{
|
|
15
|
+
message: "message";
|
|
16
|
+
reduce: "reduce";
|
|
17
|
+
spec: "spec";
|
|
18
|
+
run: "run";
|
|
19
|
+
verify: "verify";
|
|
20
|
+
}>;
|
|
21
|
+
id: z.ZodString;
|
|
22
|
+
}, z.core.$strict>;
|
|
23
|
+
export type ReductionTarget = z.infer<typeof reductionTargetSchema>;
|
|
24
|
+
export declare const reductionRecordReducerSchema: z.ZodObject<{
|
|
25
|
+
agentId: z.ZodString;
|
|
26
|
+
status: z.ZodEnum<{
|
|
27
|
+
queued: "queued";
|
|
28
|
+
running: "running";
|
|
29
|
+
succeeded: "succeeded";
|
|
30
|
+
failed: "failed";
|
|
31
|
+
aborted: "aborted";
|
|
32
|
+
}>;
|
|
33
|
+
outputPath: z.ZodString;
|
|
34
|
+
dataPath: z.ZodOptional<z.ZodString>;
|
|
35
|
+
startedAt: z.ZodOptional<z.ZodString>;
|
|
36
|
+
completedAt: z.ZodOptional<z.ZodString>;
|
|
37
|
+
tokenUsage: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
|
|
38
|
+
input_tokens: z.ZodOptional<z.ZodNumber>;
|
|
39
|
+
output_tokens: z.ZodOptional<z.ZodNumber>;
|
|
40
|
+
cache_read_input_tokens: z.ZodOptional<z.ZodNumber>;
|
|
41
|
+
cache_creation_input_tokens: z.ZodOptional<z.ZodNumber>;
|
|
42
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
43
|
+
input_tokens: z.ZodOptional<z.ZodNumber>;
|
|
44
|
+
cached_input_tokens: z.ZodOptional<z.ZodNumber>;
|
|
45
|
+
output_tokens: z.ZodOptional<z.ZodNumber>;
|
|
46
|
+
reasoning_output_tokens: z.ZodOptional<z.ZodNumber>;
|
|
47
|
+
total_tokens: z.ZodOptional<z.ZodNumber>;
|
|
48
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
49
|
+
input: z.ZodOptional<z.ZodNumber>;
|
|
50
|
+
output: z.ZodOptional<z.ZodNumber>;
|
|
51
|
+
cached: z.ZodOptional<z.ZodNumber>;
|
|
52
|
+
thoughts: z.ZodOptional<z.ZodNumber>;
|
|
53
|
+
tool: z.ZodOptional<z.ZodNumber>;
|
|
54
|
+
total: z.ZodOptional<z.ZodNumber>;
|
|
55
|
+
}, z.core.$strict>]>>;
|
|
56
|
+
error: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
57
|
+
}, z.core.$strip>;
|
|
58
|
+
export declare const reductionRecordSchema: z.ZodObject<{
|
|
59
|
+
sessionId: z.ZodString;
|
|
60
|
+
target: z.ZodObject<{
|
|
61
|
+
type: z.ZodEnum<{
|
|
62
|
+
message: "message";
|
|
63
|
+
reduce: "reduce";
|
|
64
|
+
spec: "spec";
|
|
65
|
+
run: "run";
|
|
66
|
+
verify: "verify";
|
|
67
|
+
}>;
|
|
68
|
+
id: z.ZodString;
|
|
69
|
+
}, z.core.$strict>;
|
|
70
|
+
createdAt: z.ZodString;
|
|
71
|
+
startedAt: z.ZodOptional<z.ZodString>;
|
|
72
|
+
completedAt: z.ZodOptional<z.ZodString>;
|
|
73
|
+
status: z.ZodEnum<{
|
|
74
|
+
queued: "queued";
|
|
75
|
+
running: "running";
|
|
76
|
+
succeeded: "succeeded";
|
|
77
|
+
failed: "failed";
|
|
78
|
+
aborted: "aborted";
|
|
79
|
+
}>;
|
|
80
|
+
extraContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
81
|
+
extraContextMetadata: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
82
|
+
stagedPath: z.ZodString;
|
|
83
|
+
sourcePath: z.ZodString;
|
|
84
|
+
}, z.core.$strip>>>;
|
|
85
|
+
reducers: z.ZodArray<z.ZodObject<{
|
|
86
|
+
agentId: z.ZodString;
|
|
87
|
+
status: z.ZodEnum<{
|
|
88
|
+
queued: "queued";
|
|
89
|
+
running: "running";
|
|
90
|
+
succeeded: "succeeded";
|
|
91
|
+
failed: "failed";
|
|
92
|
+
aborted: "aborted";
|
|
93
|
+
}>;
|
|
94
|
+
outputPath: z.ZodString;
|
|
95
|
+
dataPath: z.ZodOptional<z.ZodString>;
|
|
96
|
+
startedAt: z.ZodOptional<z.ZodString>;
|
|
97
|
+
completedAt: z.ZodOptional<z.ZodString>;
|
|
98
|
+
tokenUsage: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
|
|
99
|
+
input_tokens: z.ZodOptional<z.ZodNumber>;
|
|
100
|
+
output_tokens: z.ZodOptional<z.ZodNumber>;
|
|
101
|
+
cache_read_input_tokens: z.ZodOptional<z.ZodNumber>;
|
|
102
|
+
cache_creation_input_tokens: z.ZodOptional<z.ZodNumber>;
|
|
103
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
104
|
+
input_tokens: z.ZodOptional<z.ZodNumber>;
|
|
105
|
+
cached_input_tokens: z.ZodOptional<z.ZodNumber>;
|
|
106
|
+
output_tokens: z.ZodOptional<z.ZodNumber>;
|
|
107
|
+
reasoning_output_tokens: z.ZodOptional<z.ZodNumber>;
|
|
108
|
+
total_tokens: z.ZodOptional<z.ZodNumber>;
|
|
109
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
110
|
+
input: z.ZodOptional<z.ZodNumber>;
|
|
111
|
+
output: z.ZodOptional<z.ZodNumber>;
|
|
112
|
+
cached: z.ZodOptional<z.ZodNumber>;
|
|
113
|
+
thoughts: z.ZodOptional<z.ZodNumber>;
|
|
114
|
+
tool: z.ZodOptional<z.ZodNumber>;
|
|
115
|
+
total: z.ZodOptional<z.ZodNumber>;
|
|
116
|
+
}, z.core.$strict>]>>;
|
|
117
|
+
error: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
118
|
+
}, z.core.$strip>>;
|
|
119
|
+
error: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
120
|
+
}, z.core.$strip>;
|
|
121
|
+
export type ReductionRecord = z.infer<typeof reductionRecordSchema>;
|
|
122
|
+
export type ReductionIndexEntry = Pick<ReductionRecord, "sessionId" | "createdAt" | "status">;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { agentIdSchema } from "../../../configs/agents/types.js";
|
|
3
|
+
import { extractedTokenUsageSchema } from "../../../domain/run/model/types.js";
|
|
4
|
+
import { extraContextMetadataEntrySchema, persistedExtraContextPathSchema, } from "../../../persistence/extra-context.js";
|
|
5
|
+
import { repoRelativeRecordPathSchema } from "../../../persistence/record-path-schema.js";
|
|
6
|
+
import { reductionStatusSchema, TERMINAL_REDUCTION_STATUSES, } from "../../../status/index.js";
|
|
7
|
+
import { validateOperationLifecycleTimestamps, validateRecordLifecycleTimestamps, } from "../../shared/lifecycle.js";
|
|
8
|
+
export { reductionStatusSchema, TERMINAL_REDUCTION_STATUSES };
|
|
9
|
+
export const reductionTargetTypeSchema = z.enum([
|
|
10
|
+
"spec",
|
|
11
|
+
"run",
|
|
12
|
+
"reduce",
|
|
13
|
+
"verify",
|
|
14
|
+
"message",
|
|
15
|
+
]);
|
|
16
|
+
export const reductionTargetSchema = z
|
|
17
|
+
.object({
|
|
18
|
+
type: reductionTargetTypeSchema,
|
|
19
|
+
id: z.string(),
|
|
20
|
+
})
|
|
21
|
+
.strict();
|
|
22
|
+
export const reductionRecordReducerSchema = z
|
|
23
|
+
.object({
|
|
24
|
+
agentId: agentIdSchema,
|
|
25
|
+
status: reductionStatusSchema,
|
|
26
|
+
outputPath: repoRelativeRecordPathSchema,
|
|
27
|
+
dataPath: repoRelativeRecordPathSchema.optional(),
|
|
28
|
+
startedAt: z.string().optional(),
|
|
29
|
+
completedAt: z.string().optional(),
|
|
30
|
+
tokenUsage: extractedTokenUsageSchema.optional(),
|
|
31
|
+
error: z.string().nullable().optional(),
|
|
32
|
+
})
|
|
33
|
+
.superRefine((reducer, ctx) => {
|
|
34
|
+
validateOperationLifecycleTimestamps({
|
|
35
|
+
status: reducer.status,
|
|
36
|
+
startedAt: reducer.startedAt,
|
|
37
|
+
completedAt: reducer.completedAt,
|
|
38
|
+
}, ctx, {
|
|
39
|
+
queued: ["queued"],
|
|
40
|
+
running: ["running"],
|
|
41
|
+
terminal: TERMINAL_REDUCTION_STATUSES,
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
export const reductionRecordSchema = z
|
|
45
|
+
.object({
|
|
46
|
+
sessionId: z.string(),
|
|
47
|
+
target: reductionTargetSchema,
|
|
48
|
+
createdAt: z.string(),
|
|
49
|
+
startedAt: z.string().optional(),
|
|
50
|
+
completedAt: z.string().optional(),
|
|
51
|
+
status: reductionStatusSchema,
|
|
52
|
+
extraContext: z.array(persistedExtraContextPathSchema).optional(),
|
|
53
|
+
extraContextMetadata: z.array(extraContextMetadataEntrySchema).optional(),
|
|
54
|
+
reducers: z
|
|
55
|
+
.array(reductionRecordReducerSchema)
|
|
56
|
+
.min(1)
|
|
57
|
+
.superRefine((reducers, ctx) => {
|
|
58
|
+
const seen = new Set();
|
|
59
|
+
for (const reducer of reducers) {
|
|
60
|
+
if (seen.has(reducer.agentId)) {
|
|
61
|
+
ctx.addIssue({
|
|
62
|
+
code: z.ZodIssueCode.custom,
|
|
63
|
+
message: `Duplicate reducer agent id: ${reducer.agentId}`,
|
|
64
|
+
});
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
seen.add(reducer.agentId);
|
|
68
|
+
}
|
|
69
|
+
}),
|
|
70
|
+
error: z.string().nullable().optional(),
|
|
71
|
+
})
|
|
72
|
+
.superRefine((record, ctx) => {
|
|
73
|
+
// Enforce the canonical queued/running/terminal timestamp contract.
|
|
74
|
+
validateRecordLifecycleTimestamps({
|
|
75
|
+
status: record.status,
|
|
76
|
+
createdAt: record.createdAt,
|
|
77
|
+
startedAt: record.startedAt,
|
|
78
|
+
completedAt: record.completedAt,
|
|
79
|
+
}, ctx, {
|
|
80
|
+
queued: ["queued"],
|
|
81
|
+
running: ["running"],
|
|
82
|
+
terminal: TERMINAL_REDUCTION_STATUSES,
|
|
83
|
+
});
|
|
84
|
+
});
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { ReductionRecord } from "../model/types.js";
|
|
2
|
+
export type ReductionRecordPredicate = (record: ReductionRecord) => boolean;
|
|
3
|
+
export interface ReductionRecordWarningMissing {
|
|
4
|
+
kind: "missing-record";
|
|
5
|
+
sessionId: string;
|
|
6
|
+
recordPath: string;
|
|
7
|
+
displayPath: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ReductionRecordWarningParse {
|
|
10
|
+
kind: "parse-error";
|
|
11
|
+
sessionId: string;
|
|
12
|
+
recordPath: string;
|
|
13
|
+
displayPath: string;
|
|
14
|
+
details: string;
|
|
15
|
+
}
|
|
16
|
+
export type ReductionRecordWarning = ReductionRecordWarningMissing | ReductionRecordWarningParse;
|
|
17
|
+
export interface ReadReductionRecordsOptions {
|
|
18
|
+
root: string;
|
|
19
|
+
reductionsFilePath: string;
|
|
20
|
+
limit?: number;
|
|
21
|
+
predicate?: ReductionRecordPredicate;
|
|
22
|
+
onWarning?: (warning: ReductionRecordWarning) => void;
|
|
23
|
+
}
|
|
24
|
+
export interface RewriteReductionRecordOptions {
|
|
25
|
+
root: string;
|
|
26
|
+
reductionsFilePath: string;
|
|
27
|
+
sessionId: string;
|
|
28
|
+
mutate: (record: ReductionRecord) => ReductionRecord;
|
|
29
|
+
forceFlush?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface AppendReductionRecordOptions {
|
|
32
|
+
root: string;
|
|
33
|
+
reductionsFilePath: string;
|
|
34
|
+
record: ReductionRecord;
|
|
35
|
+
}
|
|
36
|
+
export declare function readReductionRecords(options: ReadReductionRecordsOptions): Promise<ReductionRecord[]>;
|
|
37
|
+
export declare function appendReductionRecord(options: AppendReductionRecordOptions): Promise<void>;
|
|
38
|
+
export declare function rewriteReductionRecord(options: RewriteReductionRecordOptions): Promise<ReductionRecord>;
|
|
39
|
+
export declare function flushReductionRecordBuffer(options: {
|
|
40
|
+
reductionsFilePath: string;
|
|
41
|
+
sessionId: string;
|
|
42
|
+
}): Promise<void>;
|
|
43
|
+
export declare function flushAllReductionRecordBuffers(): Promise<void>;
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { dirname, join } from "node:path";
|
|
2
|
+
import { mapSessionStoreError, sessionStoreErrorMapper, } from "../../../persistence/error-mapping.js";
|
|
3
|
+
import { SessionRecordParseError } from "../../../persistence/errors.js";
|
|
4
|
+
import { acquireHistoryLock } from "../../../persistence/history-lock.js";
|
|
5
|
+
import { createSessionStore, } from "../../../persistence/session-store.js";
|
|
6
|
+
import { reductionRecordSchema, TERMINAL_REDUCTION_STATUSES, } from "../model/types.js";
|
|
7
|
+
const REDUCTION_INDEX_VERSION = 1;
|
|
8
|
+
const REDUCTION_RECORD_FILENAME = "record.json";
|
|
9
|
+
const REDUCTION_HISTORY_LOCK_FILENAME = "history.lock";
|
|
10
|
+
const reductionPersistence = createSessionStore({
|
|
11
|
+
recordFilename: REDUCTION_RECORD_FILENAME,
|
|
12
|
+
indexVersion: REDUCTION_INDEX_VERSION,
|
|
13
|
+
acquireLock: acquireHistoryLock,
|
|
14
|
+
parseRecord: ({ path, raw }) => {
|
|
15
|
+
const parsed = JSON.parse(raw);
|
|
16
|
+
const result = reductionRecordSchema.safeParse(parsed);
|
|
17
|
+
if (!result.success) {
|
|
18
|
+
const issues = result.error.issues
|
|
19
|
+
.map((issue) => issue.message)
|
|
20
|
+
.join(", ");
|
|
21
|
+
throw new SessionRecordParseError(path, issues);
|
|
22
|
+
}
|
|
23
|
+
return result.data;
|
|
24
|
+
},
|
|
25
|
+
buildIndexEntry: (record) => ({
|
|
26
|
+
sessionId: record.sessionId,
|
|
27
|
+
createdAt: record.createdAt,
|
|
28
|
+
status: record.status,
|
|
29
|
+
}),
|
|
30
|
+
getIndexEntryId: (entry) => entry.sessionId,
|
|
31
|
+
shouldForceFlush: (record) => TERMINAL_REDUCTION_STATUSES.includes(record.status),
|
|
32
|
+
getRecordId: (record) => record.sessionId,
|
|
33
|
+
getRecordStatus: (record) => record.status,
|
|
34
|
+
readIndexEntries: (parsed) => {
|
|
35
|
+
const payload = parsed;
|
|
36
|
+
return Array.isArray(payload.sessions) ? payload.sessions : [];
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
export async function readReductionRecords(options) {
|
|
40
|
+
const { root, reductionsFilePath, limit, predicate, onWarning } = options;
|
|
41
|
+
const paths = buildReductionPaths(root, reductionsFilePath);
|
|
42
|
+
try {
|
|
43
|
+
return await reductionPersistence.readRecords({
|
|
44
|
+
paths,
|
|
45
|
+
limit,
|
|
46
|
+
predicate,
|
|
47
|
+
onWarning: onWarning
|
|
48
|
+
? (warning) => onWarning(mapWarning(warning))
|
|
49
|
+
: undefined,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
throw mapSessionStoreError(error, sessionStoreErrorMapper);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export async function appendReductionRecord(options) {
|
|
57
|
+
const { root, reductionsFilePath, record } = options;
|
|
58
|
+
const paths = buildReductionPaths(root, reductionsFilePath);
|
|
59
|
+
try {
|
|
60
|
+
await reductionPersistence.appendRecord({ paths, record });
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
throw mapSessionStoreError(error, sessionStoreErrorMapper);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
export async function rewriteReductionRecord(options) {
|
|
67
|
+
const { root, reductionsFilePath, sessionId, mutate, forceFlush = false, } = options;
|
|
68
|
+
const paths = buildReductionPaths(root, reductionsFilePath);
|
|
69
|
+
try {
|
|
70
|
+
return await reductionPersistence.rewriteRecord({
|
|
71
|
+
paths,
|
|
72
|
+
sessionId,
|
|
73
|
+
mutate,
|
|
74
|
+
forceFlush,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
throw mapSessionStoreError(error, sessionStoreErrorMapper);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
export async function flushReductionRecordBuffer(options) {
|
|
82
|
+
const { reductionsFilePath, sessionId } = options;
|
|
83
|
+
const paths = buildReductionPaths("", reductionsFilePath);
|
|
84
|
+
try {
|
|
85
|
+
await reductionPersistence.flushRecordBuffer({ paths, sessionId });
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
throw mapSessionStoreError(error, sessionStoreErrorMapper);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
export async function flushAllReductionRecordBuffers() {
|
|
92
|
+
try {
|
|
93
|
+
await reductionPersistence.flushAllRecordBuffers();
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
throw mapSessionStoreError(error, sessionStoreErrorMapper);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function buildReductionPaths(root, reductionsFilePath) {
|
|
100
|
+
const reductionsRoot = dirname(reductionsFilePath);
|
|
101
|
+
return {
|
|
102
|
+
root,
|
|
103
|
+
indexPath: reductionsFilePath,
|
|
104
|
+
sessionsDir: join(reductionsRoot, "sessions"),
|
|
105
|
+
lockPath: join(reductionsRoot, REDUCTION_HISTORY_LOCK_FILENAME),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
function mapWarning(warning) {
|
|
109
|
+
if (warning.kind === "parse-error") {
|
|
110
|
+
const parseWarning = warning;
|
|
111
|
+
return {
|
|
112
|
+
kind: "parse-error",
|
|
113
|
+
sessionId: parseWarning.sessionId,
|
|
114
|
+
recordPath: parseWarning.recordPath,
|
|
115
|
+
displayPath: parseWarning.displayPath,
|
|
116
|
+
details: parseWarning.details,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
const missing = warning;
|
|
120
|
+
return {
|
|
121
|
+
kind: "missing-record",
|
|
122
|
+
sessionId: missing.sessionId,
|
|
123
|
+
recordPath: missing.recordPath,
|
|
124
|
+
displayPath: missing.displayPath,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { CompetitionCommandAdapter, CompetitionPreparationResult } from "../../../competition/command-adapter.js";
|
|
2
|
+
import type { ResolvedExtraContextFile } from "../../../competition/shared/extra-context.js";
|
|
3
|
+
import type { AgentDefinition } from "../../../configs/agents/types.js";
|
|
4
|
+
import type { EnvironmentConfig } from "../../../configs/environment/types.js";
|
|
5
|
+
import type { PreparedAgentExecution } from "../../../domain/run/competition/agents/types.js";
|
|
6
|
+
import type { AgentExecutionResult } from "../../../domain/run/competition/reports.js";
|
|
7
|
+
import type { AgentRecordMutators } from "../../../domain/run/model/mutators.js";
|
|
8
|
+
export interface CreateRunCompetitionAdapterInput {
|
|
9
|
+
readonly baseRevisionSha: string;
|
|
10
|
+
readonly runId: string;
|
|
11
|
+
readonly root: string;
|
|
12
|
+
readonly specContent: string;
|
|
13
|
+
readonly extraContextFiles?: readonly ResolvedExtraContextFile[];
|
|
14
|
+
readonly mutators: AgentRecordMutators;
|
|
15
|
+
readonly environment: EnvironmentConfig;
|
|
16
|
+
}
|
|
17
|
+
interface RunCompetitionAdapterDependencies {
|
|
18
|
+
readonly prepareCandidates: (options: {
|
|
19
|
+
agents: readonly AgentDefinition[];
|
|
20
|
+
baseRevisionSha: string;
|
|
21
|
+
runId: string;
|
|
22
|
+
root: string;
|
|
23
|
+
specContent: string;
|
|
24
|
+
extraContextFiles: readonly ResolvedExtraContextFile[];
|
|
25
|
+
environment: EnvironmentConfig;
|
|
26
|
+
}) => Promise<CompetitionPreparationResult<PreparedAgentExecution, AgentExecutionResult>>;
|
|
27
|
+
readonly executePrepared: (execution: PreparedAgentExecution) => Promise<AgentExecutionResult>;
|
|
28
|
+
}
|
|
29
|
+
export declare function createRunCompetitionAdapter(input: CreateRunCompetitionAdapterInput, dependencies?: Partial<RunCompetitionAdapterDependencies>): CompetitionCommandAdapter<AgentDefinition, PreparedAgentExecution, AgentExecutionResult>;
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { prepareAgents } from "../../../domain/run/competition/agent-preparation.js";
|
|
2
|
+
import { runPreparedAgent } from "../../../domain/run/competition/agents/lifecycle.js";
|
|
3
|
+
export function createRunCompetitionAdapter(input, dependencies = {}) {
|
|
4
|
+
const { baseRevisionSha, runId, root, specContent, extraContextFiles = [], mutators, environment, } = input;
|
|
5
|
+
const prepareCandidates = dependencies.prepareCandidates ??
|
|
6
|
+
(async (options) => await prepareAgents(options));
|
|
7
|
+
const executePrepared = dependencies.executePrepared ??
|
|
8
|
+
(async (execution) => await runPreparedAgent(execution));
|
|
9
|
+
return {
|
|
10
|
+
queueCandidate: async (candidate) => {
|
|
11
|
+
await mutators.recordAgentQueued(candidate);
|
|
12
|
+
},
|
|
13
|
+
prepareCandidates: async (agents) => await prepareCandidates({
|
|
14
|
+
agents,
|
|
15
|
+
baseRevisionSha,
|
|
16
|
+
runId,
|
|
17
|
+
root,
|
|
18
|
+
specContent,
|
|
19
|
+
extraContextFiles,
|
|
20
|
+
environment,
|
|
21
|
+
}),
|
|
22
|
+
onPreparationFailure: async (failure) => {
|
|
23
|
+
await mutators.recordAgentSnapshot(failure.record);
|
|
24
|
+
},
|
|
25
|
+
onCandidatePrepared: (execution) => {
|
|
26
|
+
execution.progress = {
|
|
27
|
+
onRunning: mutators.recordAgentSnapshot,
|
|
28
|
+
onCompleted: async (result) => {
|
|
29
|
+
await mutators.recordAgentSnapshot(result.record);
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
},
|
|
33
|
+
executeCandidate: async (execution) => await executePrepared(execution),
|
|
34
|
+
sortResults: compareExecutionsByAgentId,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function compareExecutionsByAgentId(left, right) {
|
|
38
|
+
return left.record.agentId.localeCompare(right.record.agentId);
|
|
39
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ResolvedExtraContextFile } from "../../../competition/shared/extra-context.js";
|
|
2
|
+
import type { AgentDefinition } from "../../../configs/agents/types.js";
|
|
3
|
+
import type { EnvironmentConfig } from "../../../configs/environment/types.js";
|
|
4
|
+
import type { AgentExecutionPhaseResult } from "../../../domain/run/competition/phases.js";
|
|
5
|
+
import type { AgentRecordMutators } from "../../../domain/run/model/mutators.js";
|
|
6
|
+
export interface AgentExecutionInput {
|
|
7
|
+
readonly agents: readonly AgentDefinition[];
|
|
8
|
+
readonly baseRevisionSha: string;
|
|
9
|
+
readonly runId: string;
|
|
10
|
+
readonly root: string;
|
|
11
|
+
readonly specContent: string;
|
|
12
|
+
readonly extraContextFiles: readonly ResolvedExtraContextFile[];
|
|
13
|
+
readonly effectiveMaxParallel: number;
|
|
14
|
+
readonly mutators: AgentRecordMutators;
|
|
15
|
+
readonly environment: EnvironmentConfig;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Execute all agents and aggregate results.
|
|
19
|
+
*/
|
|
20
|
+
export declare function executeAgents(input: AgentExecutionInput): Promise<AgentExecutionPhaseResult>;
|