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,136 @@
|
|
|
1
|
+
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { CLAUDE_OAUTH_RELOGIN_HINT, CLAUDE_PROVIDER_ID, } from "../../auth/providers/claude/constants.js";
|
|
3
|
+
const GEMINI_PROVIDER_ID = "gemini";
|
|
4
|
+
const CODEX_PROVIDER_ID = "codex";
|
|
5
|
+
const CLAUDE_FAILURE_PATTERNS = [
|
|
6
|
+
/Please run \/login/i,
|
|
7
|
+
/OAuth token has expired/i,
|
|
8
|
+
];
|
|
9
|
+
const JSON_MESSAGE_PATTERN = /"message"\s*:\s*"((?:\\.|[^"\\])*)"/;
|
|
10
|
+
const JSON_RESULT_PATTERN = /"result"\s*:\s*"((?:\\.|[^"\\])*)"/;
|
|
11
|
+
export async function detectAgentProcessFailureDetail(input) {
|
|
12
|
+
if (input.provider !== CLAUDE_PROVIDER_ID &&
|
|
13
|
+
input.provider !== GEMINI_PROVIDER_ID &&
|
|
14
|
+
input.provider !== CODEX_PROVIDER_ID) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
const combinedLogs = await readCombinedLogs(input.stdoutPath, input.stderrPath);
|
|
18
|
+
if (!combinedLogs) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
if (input.provider === CLAUDE_PROVIDER_ID) {
|
|
22
|
+
if (CLAUDE_FAILURE_PATTERNS.some((pattern) => pattern.test(combinedLogs))) {
|
|
23
|
+
return CLAUDE_OAUTH_RELOGIN_HINT;
|
|
24
|
+
}
|
|
25
|
+
return (extractFirstJsonResult(combinedLogs) ??
|
|
26
|
+
extractFirstJsonMessage(combinedLogs) ??
|
|
27
|
+
extractClaudeFallbackLine(combinedLogs));
|
|
28
|
+
}
|
|
29
|
+
if (input.provider === GEMINI_PROVIDER_ID) {
|
|
30
|
+
return (extractFirstJsonMessage(combinedLogs) ??
|
|
31
|
+
extractGeminiFallbackLine(combinedLogs));
|
|
32
|
+
}
|
|
33
|
+
if (input.provider === CODEX_PROVIDER_ID) {
|
|
34
|
+
return (extractFirstJsonMessage(combinedLogs) ??
|
|
35
|
+
findFirstMatchingLine(combinedLogs, [
|
|
36
|
+
/invalid_request_error/,
|
|
37
|
+
/unsupported_value/,
|
|
38
|
+
/thread .* panicked/i,
|
|
39
|
+
]));
|
|
40
|
+
}
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
function extractFirstJsonMessage(text) {
|
|
44
|
+
return extractFirstJsonStringField(text, JSON_MESSAGE_PATTERN);
|
|
45
|
+
}
|
|
46
|
+
function extractFirstJsonResult(text) {
|
|
47
|
+
return extractFirstJsonStringField(text, JSON_RESULT_PATTERN);
|
|
48
|
+
}
|
|
49
|
+
function extractFirstJsonStringField(text, pattern) {
|
|
50
|
+
const match = pattern.exec(text);
|
|
51
|
+
if (!match) {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
const raw = match[1]?.trim();
|
|
55
|
+
if (!raw) {
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
const parsed = JSON.parse(`"${raw}"`);
|
|
60
|
+
return isMeaningfulMessage(parsed) ? parsed : undefined;
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return isMeaningfulMessage(raw) ? raw : undefined;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function isMeaningfulMessage(message) {
|
|
67
|
+
const normalized = message.trim();
|
|
68
|
+
if (!normalized) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
if (normalized === "[object Object]") {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
function findFirstMatchingLine(text, matchers) {
|
|
77
|
+
const lines = text.split(/\r?\n/);
|
|
78
|
+
for (const line of lines) {
|
|
79
|
+
const trimmed = line.trim();
|
|
80
|
+
if (!trimmed)
|
|
81
|
+
continue;
|
|
82
|
+
for (const matcher of matchers) {
|
|
83
|
+
const match = matcher.exec(trimmed);
|
|
84
|
+
if (match) {
|
|
85
|
+
return trimmed.slice(match.index).trim();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
function extractGeminiFallbackLine(text) {
|
|
92
|
+
return findFirstMatchingLine(text, [
|
|
93
|
+
/TerminalQuotaError:/,
|
|
94
|
+
/PERMISSION_DENIED/,
|
|
95
|
+
/RESOURCE_EXHAUSTED/,
|
|
96
|
+
/No capacity available/i,
|
|
97
|
+
/You have exhausted your capacity/i,
|
|
98
|
+
/exhausted your capacity/i,
|
|
99
|
+
]);
|
|
100
|
+
}
|
|
101
|
+
function extractClaudeFallbackLine(text) {
|
|
102
|
+
const matched = findFirstMatchingLine(text, [
|
|
103
|
+
/.*hit your limit.*/i,
|
|
104
|
+
/.*usage limit.*/i,
|
|
105
|
+
/.*quota.*/i,
|
|
106
|
+
/.*capacity.*/i,
|
|
107
|
+
/.*rate limit.*/i,
|
|
108
|
+
/.*resource[_\s-]*exhausted.*/i,
|
|
109
|
+
]);
|
|
110
|
+
if (matched) {
|
|
111
|
+
return matched;
|
|
112
|
+
}
|
|
113
|
+
return findFirstMatchingLine(text, [
|
|
114
|
+
/hit your limit/i,
|
|
115
|
+
/usage limit/i,
|
|
116
|
+
/quota/i,
|
|
117
|
+
/capacity/i,
|
|
118
|
+
/rate limit/i,
|
|
119
|
+
/resource[_\s-]*exhausted/i,
|
|
120
|
+
]);
|
|
121
|
+
}
|
|
122
|
+
async function readCombinedLogs(stdoutPath, stderrPath) {
|
|
123
|
+
const [stdout, stderr] = await Promise.all([
|
|
124
|
+
safeRead(stdoutPath),
|
|
125
|
+
safeRead(stderrPath),
|
|
126
|
+
]);
|
|
127
|
+
return `${stdout}\n${stderr}`;
|
|
128
|
+
}
|
|
129
|
+
async function safeRead(path) {
|
|
130
|
+
try {
|
|
131
|
+
return await readFile(path, "utf8");
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
return "";
|
|
135
|
+
}
|
|
136
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { mkdir, rm } from "node:fs/promises";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
import { loadSandboxProviderConfig } from "../../configs/sandbox/loader.js";
|
|
4
|
+
import { toErrorMessage } from "../../utils/errors.js";
|
|
5
|
+
import { writeStagedPrompt } from "../launch/prompt.js";
|
|
6
|
+
import { stageAgentAuth } from "./auth.js";
|
|
7
|
+
import { captureAgentChatArtifacts } from "./chat.js";
|
|
8
|
+
import { AgentRuntimeError, AgentRuntimeProcessError, AgentRuntimeSandboxError, } from "./errors.js";
|
|
9
|
+
import { configureSandboxSettings, runAgentProcess } from "./launcher.js";
|
|
10
|
+
import { writeAgentManifest } from "./manifest.js";
|
|
11
|
+
import { registerStagedAuthContext, teardownRegisteredAuthContext, } from "./registry.js";
|
|
12
|
+
import { DEFAULT_DENIAL_BACKOFF } from "./sandbox.js";
|
|
13
|
+
export async function runSandboxedAgent(input) {
|
|
14
|
+
const { root, agent, prompt, environment, paths, sandboxStageId = "run", sessionId, sandboxProviderId, sandboxPolicyOverrides, extraWriteProtectedPaths, extraReadProtectedPaths, captureChat = true, teardownAuthOnExit = true, onWatchdogTrigger, } = input;
|
|
15
|
+
const providerId = sandboxProviderId ?? agent.provider ?? "";
|
|
16
|
+
if (!providerId) {
|
|
17
|
+
throw new AgentRuntimeSandboxError(`Agent \`${agent.id}\` is missing a provider.`);
|
|
18
|
+
}
|
|
19
|
+
await mkdir(dirname(paths.runtimeManifestPath), { recursive: true });
|
|
20
|
+
await mkdir(dirname(paths.sandboxSettingsPath), { recursive: true });
|
|
21
|
+
await mkdir(dirname(paths.stdoutPath), { recursive: true });
|
|
22
|
+
await mkdir(dirname(paths.stderrPath), { recursive: true });
|
|
23
|
+
const promptPath = await writeStagedPrompt({
|
|
24
|
+
runtimePath: paths.runtimePath,
|
|
25
|
+
prompt,
|
|
26
|
+
});
|
|
27
|
+
let authContext;
|
|
28
|
+
try {
|
|
29
|
+
const staged = await stageAgentAuth({
|
|
30
|
+
agent,
|
|
31
|
+
agentRoot: paths.agentRoot,
|
|
32
|
+
root,
|
|
33
|
+
runId: sessionId,
|
|
34
|
+
});
|
|
35
|
+
authContext = staged.context;
|
|
36
|
+
if (sessionId) {
|
|
37
|
+
registerStagedAuthContext(sessionId, authContext);
|
|
38
|
+
}
|
|
39
|
+
const manifestEnv = await writeAgentManifest({
|
|
40
|
+
agent,
|
|
41
|
+
runtimeManifestPath: paths.runtimeManifestPath,
|
|
42
|
+
promptPath,
|
|
43
|
+
workspacePath: paths.workspacePath,
|
|
44
|
+
env: staged.env,
|
|
45
|
+
environment,
|
|
46
|
+
});
|
|
47
|
+
const denialBackoff = resolveDenialBackoff({
|
|
48
|
+
root,
|
|
49
|
+
providerId,
|
|
50
|
+
override: input.denialBackoff,
|
|
51
|
+
});
|
|
52
|
+
const { sandboxSettings } = await configureSandboxSettings({
|
|
53
|
+
sandboxHomePath: paths.sandboxHomePath,
|
|
54
|
+
workspacePath: paths.workspacePath,
|
|
55
|
+
providerId,
|
|
56
|
+
stageId: sandboxStageId,
|
|
57
|
+
root,
|
|
58
|
+
sandboxSettingsPath: paths.sandboxSettingsPath,
|
|
59
|
+
runtimePath: paths.runtimePath,
|
|
60
|
+
artifactsPath: paths.artifactsPath,
|
|
61
|
+
policyOverrides: sandboxPolicyOverrides,
|
|
62
|
+
extraWriteProtectedPaths,
|
|
63
|
+
extraReadProtectedPaths,
|
|
64
|
+
});
|
|
65
|
+
const processResult = await runAgentProcess({
|
|
66
|
+
runtimeManifestPath: paths.runtimeManifestPath,
|
|
67
|
+
agentRoot: paths.agentRoot,
|
|
68
|
+
stdoutPath: paths.stdoutPath,
|
|
69
|
+
stderrPath: paths.stderrPath,
|
|
70
|
+
sandboxSettingsPath: paths.sandboxSettingsPath,
|
|
71
|
+
providerId,
|
|
72
|
+
denialBackoff,
|
|
73
|
+
onWatchdogTrigger,
|
|
74
|
+
});
|
|
75
|
+
const chat = captureChat
|
|
76
|
+
? await captureAgentChatArtifacts({
|
|
77
|
+
providerId: agent.provider,
|
|
78
|
+
agentRoot: paths.agentRoot,
|
|
79
|
+
})
|
|
80
|
+
: undefined;
|
|
81
|
+
return {
|
|
82
|
+
exitCode: processResult.exitCode,
|
|
83
|
+
errorMessage: processResult.errorMessage,
|
|
84
|
+
signal: processResult.signal,
|
|
85
|
+
watchdog: processResult.watchdog,
|
|
86
|
+
failFast: processResult.failFast,
|
|
87
|
+
sandboxSettings,
|
|
88
|
+
manifestEnv,
|
|
89
|
+
...(chat ? { chat } : {}),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
if (error instanceof AgentRuntimeError) {
|
|
94
|
+
throw error;
|
|
95
|
+
}
|
|
96
|
+
throw new AgentRuntimeProcessError(error instanceof Error ? error.message : toErrorMessage(error));
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
await rm(promptPath, { force: true }).catch(() => { });
|
|
100
|
+
if (teardownAuthOnExit || !sessionId) {
|
|
101
|
+
await teardownRegisteredAuthContext(sessionId ?? "runtime", authContext).catch(() => { });
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function resolveDenialBackoff(options) {
|
|
106
|
+
if (options.override) {
|
|
107
|
+
return options.override;
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
const config = loadSandboxProviderConfig({
|
|
111
|
+
root: options.root,
|
|
112
|
+
providerId: options.providerId,
|
|
113
|
+
});
|
|
114
|
+
return config.denialBackoff;
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return DEFAULT_DENIAL_BACKOFF;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { DenialBackoffConfig } from "
|
|
2
|
-
import type { WatchdogMetadata } from "
|
|
3
|
-
import type {
|
|
4
|
-
import { type SandboxFailFastInfo } from "
|
|
1
|
+
import type { DenialBackoffConfig } from "../../configs/sandbox/types.js";
|
|
2
|
+
import type { WatchdogMetadata } from "../../domain/run/model/types.js";
|
|
3
|
+
import type { SandboxStageId } from "./policy.js";
|
|
4
|
+
import { generateSandboxSettings, type SandboxFailFastInfo } from "./sandbox.js";
|
|
5
|
+
import type { SandboxPolicyOverrides } from "./types.js";
|
|
5
6
|
import { type WatchdogTrigger } from "./watchdog.js";
|
|
6
7
|
export interface AgentProcessOptions {
|
|
7
8
|
runtimeManifestPath: string;
|
|
@@ -37,11 +38,22 @@ export interface RunInvocation {
|
|
|
37
38
|
}
|
|
38
39
|
export type RunInvocationResolver = (context: RunInvocationContext) => Promise<RunInvocation> | RunInvocation;
|
|
39
40
|
export interface SandboxSettingsInput {
|
|
40
|
-
|
|
41
|
+
stageId?: SandboxStageId;
|
|
42
|
+
sandboxHomePath: string;
|
|
43
|
+
workspacePath: string;
|
|
41
44
|
providerId: string;
|
|
42
45
|
root: string;
|
|
46
|
+
repoRootPath?: string;
|
|
47
|
+
sandboxSettingsPath: string;
|
|
48
|
+
runtimePath: string;
|
|
49
|
+
artifactsPath: string;
|
|
50
|
+
policyOverrides?: SandboxPolicyOverrides;
|
|
51
|
+
extraWriteProtectedPaths?: readonly string[];
|
|
52
|
+
extraReadProtectedPaths?: readonly string[];
|
|
43
53
|
}
|
|
44
|
-
export declare function configureSandboxSettings(input: SandboxSettingsInput): Promise<
|
|
54
|
+
export declare function configureSandboxSettings(input: SandboxSettingsInput): Promise<{
|
|
55
|
+
sandboxSettings: ReturnType<typeof generateSandboxSettings>;
|
|
56
|
+
}>;
|
|
45
57
|
export declare function getRunCommand(): Promise<string>;
|
|
46
58
|
export declare function runAgentProcess(options: AgentProcessOptions): Promise<AgentProcessResult>;
|
|
47
59
|
export declare function stageManifestForSandbox(options: {
|
|
@@ -1,31 +1,21 @@
|
|
|
1
1
|
import { constants as fsConstants, createWriteStream, existsSync, } from "node:fs";
|
|
2
2
|
import { access, readFile, writeFile } from "node:fs/promises";
|
|
3
3
|
import { dirname, isAbsolute, relative as relativePath } from "node:path";
|
|
4
|
-
import { getCliAssetPath, resolveCliAssetRoot
|
|
5
|
-
import { resolvePath } from "
|
|
6
|
-
import { spawnStreamingProcess } from "
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { generateSandboxSettings, resolveSrtBinary, writeSandboxSettings, } from "../sandbox.js";
|
|
4
|
+
import { getCliAssetPath, resolveCliAssetRoot } from "../../utils/cli-root.js";
|
|
5
|
+
import { resolvePath } from "../../utils/path.js";
|
|
6
|
+
import { spawnStreamingProcess, } from "../../utils/process.js";
|
|
7
|
+
import { AgentRuntimeProcessError } from "./errors.js";
|
|
8
|
+
import { generateSandboxSettings, resolveSrtBinary, writeSandboxSettings, } from "./sandbox.js";
|
|
10
9
|
import { createWatchdog, WATCHDOG_DEFAULTS, } from "./watchdog.js";
|
|
11
|
-
const DEFAULT_SRT_ARGUMENTS = ["--debug"];
|
|
12
10
|
const SRT_BINARY_ENV = "VORATIQ_SRT_BINARY";
|
|
13
11
|
let cachedSrtBinaryPath;
|
|
14
12
|
export async function configureSandboxSettings(input) {
|
|
15
|
-
const { workspacePaths, providerId, root } = input;
|
|
16
|
-
const artifactsPath = resolvePath(workspacePaths.agentRoot, ARTIFACTS_DIRNAME);
|
|
17
|
-
const evalsPath = resolvePath(workspacePaths.agentRoot, EVALS_DIRNAME);
|
|
18
13
|
const sandboxSettings = generateSandboxSettings({
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
provider: providerId,
|
|
22
|
-
root,
|
|
23
|
-
sandboxSettingsPath: workspacePaths.sandboxSettingsPath,
|
|
24
|
-
runtimePath: workspacePaths.runtimePath,
|
|
25
|
-
artifactsPath,
|
|
26
|
-
evalsPath,
|
|
14
|
+
...input,
|
|
15
|
+
repoRootPath: input.repoRootPath ?? input.root,
|
|
27
16
|
});
|
|
28
|
-
await writeSandboxSettings(
|
|
17
|
+
await writeSandboxSettings(input.sandboxSettingsPath, sandboxSettings);
|
|
18
|
+
return { sandboxSettings };
|
|
29
19
|
}
|
|
30
20
|
export async function getRunCommand() {
|
|
31
21
|
const { X_OK } = fsConstants;
|
|
@@ -34,14 +24,13 @@ export async function getRunCommand() {
|
|
|
34
24
|
await access(binaryPath, X_OK);
|
|
35
25
|
}
|
|
36
26
|
catch {
|
|
37
|
-
throw new Error(`Sandbox
|
|
27
|
+
throw new Error(`Sandbox runtime binary is missing or not executable at \`${binaryPath}\`. Run \`npm install\` to reinstall dependencies.`);
|
|
38
28
|
}
|
|
39
29
|
return binaryPath;
|
|
40
30
|
}
|
|
41
31
|
function getRunArgs(options) {
|
|
42
32
|
const { settingsArg, configArg, shimEntryPath } = options;
|
|
43
33
|
return [
|
|
44
|
-
...DEFAULT_SRT_ARGUMENTS,
|
|
45
34
|
"--settings",
|
|
46
35
|
settingsArg,
|
|
47
36
|
"--",
|
|
@@ -66,9 +55,7 @@ export async function runAgentProcess(options) {
|
|
|
66
55
|
const stderrStream = createWriteStream(stderrPath, { flags: "w" });
|
|
67
56
|
const shimEntryPath = resolveShimEntryPath();
|
|
68
57
|
if (!existsSync(shimEntryPath)) {
|
|
69
|
-
throw new
|
|
70
|
-
detail: `Shim entry point missing at ${shimEntryPath}`,
|
|
71
|
-
});
|
|
58
|
+
throw new AgentRuntimeProcessError(`Shim entry point is missing at \`${shimEntryPath}\`.`);
|
|
72
59
|
}
|
|
73
60
|
const manifestArgPath = await stageManifestForSandbox({
|
|
74
61
|
runtimeManifestPath,
|
|
@@ -85,9 +72,7 @@ export async function runAgentProcess(options) {
|
|
|
85
72
|
shimEntryPath,
|
|
86
73
|
});
|
|
87
74
|
let watchdogController;
|
|
88
|
-
// Track abort signal subscription for cleanup
|
|
89
75
|
let abortSignalHandler;
|
|
90
|
-
// Shared abort controller - watchdog will fire it, spawnStreamingProcess will listen
|
|
91
76
|
const forceAbortController = new AbortController();
|
|
92
77
|
let exitCode;
|
|
93
78
|
let signal;
|
|
@@ -97,9 +82,9 @@ export async function runAgentProcess(options) {
|
|
|
97
82
|
command,
|
|
98
83
|
args,
|
|
99
84
|
cwd: agentRoot,
|
|
85
|
+
env: { SRT_DEBUG: process.env.SRT_DEBUG ?? "1" },
|
|
100
86
|
stdout: { writable: stdoutStream },
|
|
101
87
|
stderr: { writable: stderrStream },
|
|
102
|
-
// Spawn in new process group to enable killing entire process tree
|
|
103
88
|
detached: true,
|
|
104
89
|
onSpawn: (child) => {
|
|
105
90
|
watchdogController = createWatchdog(child, stderrStream, {
|
|
@@ -107,12 +92,11 @@ export async function runAgentProcess(options) {
|
|
|
107
92
|
onWatchdogTrigger,
|
|
108
93
|
denialBackoff,
|
|
109
94
|
});
|
|
110
|
-
// Bridge watchdog's abort signal to our shared abort controller
|
|
111
95
|
abortSignalHandler = () => forceAbortController.abort();
|
|
112
96
|
watchdogController.abortSignal.addEventListener("abort", abortSignalHandler, { once: true });
|
|
113
97
|
},
|
|
114
|
-
onData: (chunk) => {
|
|
115
|
-
watchdogController?.handleOutput(chunk);
|
|
98
|
+
onData: (chunk, source) => {
|
|
99
|
+
watchdogController?.handleOutput(chunk, source);
|
|
116
100
|
},
|
|
117
101
|
abortSignal: forceAbortController.signal,
|
|
118
102
|
});
|
|
@@ -121,12 +105,10 @@ export async function runAgentProcess(options) {
|
|
|
121
105
|
aborted = result.aborted ?? false;
|
|
122
106
|
}
|
|
123
107
|
finally {
|
|
124
|
-
// Clean up abort signal listener
|
|
125
108
|
if (abortSignalHandler && watchdogController) {
|
|
126
109
|
watchdogController.abortSignal.removeEventListener("abort", abortSignalHandler);
|
|
127
110
|
}
|
|
128
111
|
watchdogController?.cleanup();
|
|
129
|
-
// Ensure streams are fully closed to prevent hanging on exit
|
|
130
112
|
if (!stdoutStream.closed) {
|
|
131
113
|
stdoutStream.end();
|
|
132
114
|
}
|
|
@@ -152,7 +134,7 @@ export async function runAgentProcess(options) {
|
|
|
152
134
|
const watchdog = {
|
|
153
135
|
silenceTimeoutMs: WATCHDOG_DEFAULTS.silenceTimeoutMs,
|
|
154
136
|
wallClockCapMs: WATCHDOG_DEFAULTS.wallClockCapMs,
|
|
155
|
-
trigger: watchdogTrigger,
|
|
137
|
+
...(watchdogTrigger ? { trigger: watchdogTrigger } : {}),
|
|
156
138
|
};
|
|
157
139
|
return { exitCode, errorMessage, signal, watchdog, failFast };
|
|
158
140
|
}
|
|
@@ -164,9 +146,7 @@ export async function stageManifestForSandbox(options) {
|
|
|
164
146
|
}
|
|
165
147
|
catch (error) {
|
|
166
148
|
const detail = error instanceof Error ? error.message : String(error);
|
|
167
|
-
throw new
|
|
168
|
-
detail: `Failed to read manifest at "${runtimeManifestPath}": ${detail}`,
|
|
169
|
-
});
|
|
149
|
+
throw new AgentRuntimeProcessError(`Failed to read manifest at \`${runtimeManifestPath}\`: ${detail}`);
|
|
170
150
|
}
|
|
171
151
|
let manifest;
|
|
172
152
|
try {
|
|
@@ -174,9 +154,7 @@ export async function stageManifestForSandbox(options) {
|
|
|
174
154
|
}
|
|
175
155
|
catch (error) {
|
|
176
156
|
const detail = error instanceof Error ? error.message : String(error);
|
|
177
|
-
throw new
|
|
178
|
-
detail: `Manifest JSON at "${runtimeManifestPath}" is invalid: ${detail}`,
|
|
179
|
-
});
|
|
157
|
+
throw new AgentRuntimeProcessError(`Manifest JSON at \`${runtimeManifestPath}\` is invalid: ${detail}`);
|
|
180
158
|
}
|
|
181
159
|
const manifestDir = dirname(runtimeManifestPath);
|
|
182
160
|
const promptAbsolute = isAbsolute(manifest.promptPath)
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type { AgentDefinition } from "
|
|
2
|
-
import {
|
|
3
|
-
import type { AgentWorkspacePaths } from "../../../workspace/layout.js";
|
|
1
|
+
import type { AgentDefinition } from "../../configs/agents/types.js";
|
|
2
|
+
import type { EnvironmentConfig } from "../../configs/environment/types.js";
|
|
4
3
|
export interface ManifestWriteOptions {
|
|
5
4
|
agent: AgentDefinition;
|
|
6
|
-
|
|
5
|
+
runtimeManifestPath: string;
|
|
6
|
+
promptPath: string;
|
|
7
|
+
workspacePath: string;
|
|
7
8
|
env?: Record<string, string>;
|
|
8
9
|
environment: EnvironmentConfig;
|
|
9
10
|
}
|
|
@@ -13,5 +14,4 @@ export declare function composeManifestEnvironment(options: {
|
|
|
13
14
|
workspacePath: string;
|
|
14
15
|
environment: EnvironmentConfig;
|
|
15
16
|
}): Promise<Record<string, string>>;
|
|
16
|
-
export
|
|
17
|
-
export declare function normalizeRelative(origin: string, target: string): string;
|
|
17
|
+
export { mergePathEntries, normalizeRelative } from "../launch/environment.js";
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { mkdir, writeFile } from "node:fs/promises";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
import { composeLaunchEnvironment, normalizeRelative as normalizeRelativePath, } from "../launch/environment.js";
|
|
4
|
+
import { AgentRuntimeManifestError } from "./errors.js";
|
|
5
|
+
export async function writeAgentManifest(options) {
|
|
6
|
+
const { agent, runtimeManifestPath, promptPath, workspacePath, env = {}, environment, } = options;
|
|
7
|
+
const manifestDir = dirname(runtimeManifestPath);
|
|
8
|
+
const manifestEnv = await composeManifestEnvironment({
|
|
9
|
+
baseEnv: env,
|
|
10
|
+
workspacePath,
|
|
11
|
+
environment,
|
|
12
|
+
});
|
|
13
|
+
const manifest = {
|
|
14
|
+
binary: agent.binary,
|
|
15
|
+
argv: [...agent.argv],
|
|
16
|
+
// Keep relative paths for readability; the launcher will normalize to absolutes.
|
|
17
|
+
promptPath: normalizeRelativePath(manifestDir, promptPath),
|
|
18
|
+
workspace: normalizeRelativePath(manifestDir, workspacePath),
|
|
19
|
+
env: manifestEnv,
|
|
20
|
+
};
|
|
21
|
+
try {
|
|
22
|
+
const manifestJson = `${JSON.stringify(manifest, null, 2)}\n`;
|
|
23
|
+
await mkdir(dirname(runtimeManifestPath), { recursive: true });
|
|
24
|
+
await writeFile(runtimeManifestPath, manifestJson, { encoding: "utf8" });
|
|
25
|
+
return manifestEnv;
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
throw new AgentRuntimeManifestError(error instanceof Error ? error.message : String(error));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export async function composeManifestEnvironment(options) {
|
|
32
|
+
return await composeLaunchEnvironment(options);
|
|
33
|
+
}
|
|
34
|
+
export { mergePathEntries, normalizeRelative } from "../launch/environment.js";
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { SandboxFilesystemConfig, SandboxNetworkConfig } from "../../configs/sandbox/types.js";
|
|
2
|
+
import type { SandboxPolicyOverrides } from "./types.js";
|
|
3
|
+
export type SandboxStageId = "spec" | "run" | "reduce" | "verify" | "message";
|
|
4
|
+
export interface BuildSandboxPolicyInput {
|
|
5
|
+
stageId: SandboxStageId;
|
|
6
|
+
root: string;
|
|
7
|
+
workspacePath: string;
|
|
8
|
+
sandboxHomePath: string;
|
|
9
|
+
sandboxSettingsPath: string;
|
|
10
|
+
runtimePath: string;
|
|
11
|
+
artifactsPath: string;
|
|
12
|
+
repoRootPath?: string;
|
|
13
|
+
providerFilesystem: SandboxFilesystemConfig;
|
|
14
|
+
providerNetwork: SandboxNetworkConfig;
|
|
15
|
+
policyOverrides?: SandboxPolicyOverrides;
|
|
16
|
+
stageDenyWritePaths?: readonly string[];
|
|
17
|
+
stageDenyReadPaths?: readonly string[];
|
|
18
|
+
}
|
|
19
|
+
export interface NormalizeFilesystemPolicyInput {
|
|
20
|
+
workspacePath: string;
|
|
21
|
+
filesystem: SandboxFilesystemConfig;
|
|
22
|
+
}
|
|
23
|
+
export interface NormalizeNetworkPolicyInput {
|
|
24
|
+
workspacePath: string;
|
|
25
|
+
network: SandboxNetworkConfig;
|
|
26
|
+
}
|
|
27
|
+
export declare function buildSandboxPolicy(input: BuildSandboxPolicyInput): {
|
|
28
|
+
filesystem: SandboxFilesystemConfig;
|
|
29
|
+
network: SandboxNetworkConfig;
|
|
30
|
+
};
|
|
31
|
+
export declare function normalizeFilesystemPolicy(input: NormalizeFilesystemPolicyInput): SandboxFilesystemConfig;
|
|
32
|
+
export declare function normalizeNetworkPolicy(input: NormalizeNetworkPolicyInput): SandboxNetworkConfig;
|