@prismatic-io/lux 0.0.2-preview.4 → 0.0.2-preview.40
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/lib/answerers/claude-code/index.d.ts +15 -3
- package/lib/answerers/claude-code/index.d.ts.map +1 -1
- package/lib/answerers/claude-code/index.js +6 -5
- package/lib/answerers/claude-code/index.js.map +1 -1
- package/lib/answerers/persona/index.d.ts +44 -5
- package/lib/answerers/persona/index.d.ts.map +1 -1
- package/lib/answerers/persona/index.js +60 -34
- package/lib/answerers/persona/index.js.map +1 -1
- package/lib/answerers/terminal/index.d.ts +9 -3
- package/lib/answerers/terminal/index.d.ts.map +1 -1
- package/lib/answerers/terminal/index.js +6 -4
- package/lib/answerers/terminal/index.js.map +1 -1
- package/lib/assertions/authoring.d.ts +2 -2
- package/lib/assertions/authoring.d.ts.map +1 -1
- package/lib/assertions/authoring.js.map +1 -1
- package/lib/assertions/core/command-exits-zero.d.ts +5 -2
- package/lib/assertions/core/command-exits-zero.d.ts.map +1 -1
- package/lib/assertions/core/command-exits-zero.js +59 -14
- package/lib/assertions/core/command-exits-zero.js.map +1 -1
- package/lib/assertions/core/event-checks.d.ts +3 -0
- package/lib/assertions/core/event-checks.d.ts.map +1 -1
- package/lib/assertions/core/event-checks.js +49 -3
- package/lib/assertions/core/event-checks.js.map +1 -1
- package/lib/assertions/core/file-checks.d.ts +6 -0
- package/lib/assertions/core/file-checks.d.ts.map +1 -1
- package/lib/assertions/core/index.d.ts.map +1 -1
- package/lib/assertions/core/index.js +2 -1
- package/lib/assertions/core/index.js.map +1 -1
- package/lib/assertions/core/json-pointer-equals.d.ts +1 -0
- package/lib/assertions/core/json-pointer-equals.d.ts.map +1 -1
- package/lib/assertions/core/output-checks.d.ts +3 -0
- package/lib/assertions/core/output-checks.d.ts.map +1 -1
- package/lib/assertions/core/predicate.d.ts +1 -0
- package/lib/assertions/core/predicate.d.ts.map +1 -1
- package/lib/assertions/core/resource-checks.d.ts +25 -0
- package/lib/assertions/core/resource-checks.d.ts.map +1 -1
- package/lib/assertions/core/resource-checks.js +35 -5
- package/lib/assertions/core/resource-checks.js.map +1 -1
- package/lib/assertions/core/safe-regex.d.ts.map +1 -1
- package/lib/assertions/core/safe-regex.js +7 -1
- package/lib/assertions/core/safe-regex.js.map +1 -1
- package/lib/assertions/rubric/evidence.d.ts +88 -0
- package/lib/assertions/rubric/evidence.d.ts.map +1 -0
- package/lib/assertions/rubric/evidence.js +75 -0
- package/lib/assertions/rubric/evidence.js.map +1 -0
- package/lib/assertions/rubric/index.d.ts +88 -34
- package/lib/assertions/rubric/index.d.ts.map +1 -1
- package/lib/assertions/rubric/index.js +59 -43
- package/lib/assertions/rubric/index.js.map +1 -1
- package/lib/assertions/rubric/internal.d.ts +30 -5
- package/lib/assertions/rubric/internal.d.ts.map +1 -1
- package/lib/assertions/rubric/internal.js +203 -41
- package/lib/assertions/rubric/internal.js.map +1 -1
- package/lib/authoring.d.ts +37 -2
- package/lib/authoring.d.ts.map +1 -1
- package/lib/authoring.js +36 -1
- package/lib/authoring.js.map +1 -1
- package/lib/cli/bin.js +2 -13
- package/lib/cli/bin.js.map +1 -1
- package/lib/cli/command-runtime.d.ts +3 -3
- package/lib/cli/command-runtime.d.ts.map +1 -1
- package/lib/cli/command-runtime.js +17 -6
- package/lib/cli/command-runtime.js.map +1 -1
- package/lib/cli/doctor.d.ts +55 -0
- package/lib/cli/doctor.d.ts.map +1 -0
- package/lib/cli/doctor.js +14 -0
- package/lib/cli/doctor.js.map +1 -0
- package/lib/cli/harness-plan.d.ts +27 -0
- package/lib/cli/harness-plan.d.ts.map +1 -0
- package/lib/cli/harness-plan.js +75 -0
- package/lib/cli/harness-plan.js.map +1 -0
- package/lib/cli/init-templates.d.ts +11 -0
- package/lib/cli/init-templates.d.ts.map +1 -0
- package/lib/cli/init-templates.js +215 -0
- package/lib/cli/init-templates.js.map +1 -0
- package/lib/cli/init.d.ts +10 -0
- package/lib/cli/init.d.ts.map +1 -1
- package/lib/cli/init.js +34 -173
- package/lib/cli/init.js.map +1 -1
- package/lib/cli/output-schemas.d.ts +1412 -0
- package/lib/cli/output-schemas.d.ts.map +1 -0
- package/lib/cli/output-schemas.js +94 -0
- package/lib/cli/output-schemas.js.map +1 -0
- package/lib/cli/program.d.ts +140 -12
- package/lib/cli/program.d.ts.map +1 -1
- package/lib/cli/program.js +783 -650
- package/lib/cli/program.js.map +1 -1
- package/lib/cli/render/format.d.ts.map +1 -1
- package/lib/cli/render/format.js +1 -1
- package/lib/cli/render/format.js.map +1 -1
- package/lib/cli/render/reporter.d.ts.map +1 -1
- package/lib/cli/render/reporter.js +35 -8
- package/lib/cli/render/reporter.js.map +1 -1
- package/lib/cli/run-options.d.ts +19 -4
- package/lib/cli/run-options.d.ts.map +1 -1
- package/lib/cli/run-options.js +100 -19
- package/lib/cli/run-options.js.map +1 -1
- package/lib/cli/view.d.ts +15 -0
- package/lib/cli/view.d.ts.map +1 -0
- package/lib/cli/view.js +168 -0
- package/lib/cli/view.js.map +1 -0
- package/lib/container/driver.d.ts +27 -0
- package/lib/container/driver.d.ts.map +1 -0
- package/lib/container/driver.js +199 -0
- package/lib/container/driver.js.map +1 -0
- package/lib/container/paths.d.ts +3 -0
- package/lib/container/paths.d.ts.map +1 -0
- package/lib/container/paths.js +27 -0
- package/lib/container/paths.js.map +1 -0
- package/lib/container/protocol.d.ts +12 -0
- package/lib/container/protocol.d.ts.map +1 -0
- package/lib/container/protocol.js +38 -0
- package/lib/container/protocol.js.map +1 -0
- package/lib/container/resources.d.ts +14 -0
- package/lib/container/resources.d.ts.map +1 -0
- package/lib/container/resources.js +141 -0
- package/lib/container/resources.js.map +1 -0
- package/lib/container/worker.d.ts +2 -0
- package/lib/container/worker.d.ts.map +1 -0
- package/lib/container/worker.js +85 -0
- package/lib/container/worker.js.map +1 -0
- package/lib/core/action-events.d.ts +29 -0
- package/lib/core/action-events.d.ts.map +1 -0
- package/lib/core/action-events.js +51 -0
- package/lib/core/action-events.js.map +1 -0
- package/lib/core/agent-activity.d.ts +49 -0
- package/lib/core/agent-activity.d.ts.map +1 -0
- package/lib/core/agent-activity.js +206 -0
- package/lib/core/agent-activity.js.map +1 -0
- package/lib/core/agent-environment.d.ts +5 -0
- package/lib/core/agent-environment.d.ts.map +1 -0
- package/lib/core/agent-environment.js +47 -0
- package/lib/core/agent-environment.js.map +1 -0
- package/lib/core/agent-events.d.ts +26 -0
- package/lib/core/agent-events.d.ts.map +1 -0
- package/lib/core/agent-events.js +13 -0
- package/lib/core/agent-events.js.map +1 -0
- package/lib/core/annotation.d.ts +6 -2
- package/lib/core/annotation.d.ts.map +1 -1
- package/lib/core/annotation.js +2 -1
- package/lib/core/annotation.js.map +1 -1
- package/lib/core/answerer.d.ts +12 -0
- package/lib/core/answerer.d.ts.map +1 -1
- package/lib/core/answerer.js +2 -0
- package/lib/core/answerer.js.map +1 -1
- package/lib/core/artifact-evidence.d.ts +6 -1
- package/lib/core/artifact-evidence.d.ts.map +1 -1
- package/lib/core/artifact-evidence.js +27 -6
- package/lib/core/artifact-evidence.js.map +1 -1
- package/lib/core/assertion.d.ts +10 -4
- package/lib/core/assertion.d.ts.map +1 -1
- package/lib/core/assertion.js +8 -2
- package/lib/core/assertion.js.map +1 -1
- package/lib/core/case-defaults.d.ts +16 -0
- package/lib/core/case-defaults.d.ts.map +1 -0
- package/lib/core/case-defaults.js +42 -0
- package/lib/core/case-defaults.js.map +1 -0
- package/lib/core/case.d.ts +120 -6
- package/lib/core/case.d.ts.map +1 -1
- package/lib/core/case.js +51 -5
- package/lib/core/case.js.map +1 -1
- package/lib/core/command-verification.d.ts +10 -0
- package/lib/core/command-verification.d.ts.map +1 -0
- package/lib/core/command-verification.js +66 -0
- package/lib/core/command-verification.js.map +1 -0
- package/lib/core/driver-execution.d.ts +83 -0
- package/lib/core/driver-execution.d.ts.map +1 -0
- package/lib/core/driver-execution.js +72 -0
- package/lib/core/driver-execution.js.map +1 -0
- package/lib/core/driver-metrics.d.ts +98 -0
- package/lib/core/driver-metrics.d.ts.map +1 -0
- package/lib/core/driver-metrics.js +36 -0
- package/lib/core/driver-metrics.js.map +1 -0
- package/lib/core/driver.d.ts +64 -0
- package/lib/core/driver.d.ts.map +1 -1
- package/lib/core/driver.js +28 -0
- package/lib/core/driver.js.map +1 -1
- package/lib/core/duration.d.ts +5 -0
- package/lib/core/duration.d.ts.map +1 -0
- package/lib/core/duration.js +49 -0
- package/lib/core/duration.js.map +1 -0
- package/lib/core/environment.d.ts +18 -0
- package/lib/core/environment.d.ts.map +1 -0
- package/lib/core/environment.js +21 -0
- package/lib/core/environment.js.map +1 -0
- package/lib/core/evaluation-clusters.d.ts +17 -0
- package/lib/core/evaluation-clusters.d.ts.map +1 -0
- package/lib/core/evaluation-clusters.js +23 -0
- package/lib/core/evaluation-clusters.js.map +1 -0
- package/lib/core/events.d.ts +34 -0
- package/lib/core/events.d.ts.map +1 -1
- package/lib/core/events.js +11 -2
- package/lib/core/events.js.map +1 -1
- package/lib/core/experiment.d.ts +33 -2
- package/lib/core/experiment.d.ts.map +1 -1
- package/lib/core/experiment.js +40 -19
- package/lib/core/experiment.js.map +1 -1
- package/lib/core/file-tree.d.ts +7 -0
- package/lib/core/file-tree.d.ts.map +1 -0
- package/lib/core/file-tree.js +35 -0
- package/lib/core/file-tree.js.map +1 -0
- package/lib/core/global-id.d.ts +6 -0
- package/lib/core/global-id.d.ts.map +1 -0
- package/lib/core/global-id.js +17 -0
- package/lib/core/global-id.js.map +1 -0
- package/lib/core/harness-catalog.d.ts +35 -0
- package/lib/core/harness-catalog.d.ts.map +1 -0
- package/lib/core/harness-catalog.js +45 -0
- package/lib/core/harness-catalog.js.map +1 -0
- package/lib/core/harness-catalogs/antigravity.d.ts +11 -0
- package/lib/core/harness-catalogs/antigravity.d.ts.map +1 -0
- package/lib/core/harness-catalogs/antigravity.js +23 -0
- package/lib/core/harness-catalogs/antigravity.js.map +1 -0
- package/lib/core/harness-catalogs/claude-code.d.ts +12 -0
- package/lib/core/harness-catalogs/claude-code.d.ts.map +1 -0
- package/lib/core/harness-catalogs/claude-code.js +24 -0
- package/lib/core/harness-catalogs/claude-code.js.map +1 -0
- package/lib/core/harness-catalogs/codex.d.ts +11 -0
- package/lib/core/harness-catalogs/codex.d.ts.map +1 -0
- package/lib/core/harness-catalogs/codex.js +26 -0
- package/lib/core/harness-catalogs/codex.js.map +1 -0
- package/lib/core/harness-catalogs/copilot.d.ts +29 -0
- package/lib/core/harness-catalogs/copilot.d.ts.map +1 -0
- package/lib/core/harness-catalogs/copilot.js +45 -0
- package/lib/core/harness-catalogs/copilot.js.map +1 -0
- package/lib/core/harness-catalogs/cursor.d.ts +2 -0
- package/lib/core/harness-catalogs/cursor.d.ts.map +1 -0
- package/lib/core/harness-catalogs/cursor.js +13 -0
- package/lib/core/harness-catalogs/cursor.js.map +1 -0
- package/lib/core/harness-catalogs/grok-build.d.ts +7 -0
- package/lib/core/harness-catalogs/grok-build.d.ts.map +1 -0
- package/lib/core/harness-catalogs/grok-build.js +18 -0
- package/lib/core/harness-catalogs/grok-build.js.map +1 -0
- package/lib/core/harness-catalogs/index.d.ts +73 -0
- package/lib/core/harness-catalogs/index.d.ts.map +1 -0
- package/lib/core/harness-catalogs/index.js +17 -0
- package/lib/core/harness-catalogs/index.js.map +1 -0
- package/lib/core/harness-matrix.d.ts +154 -0
- package/lib/core/harness-matrix.d.ts.map +1 -0
- package/lib/core/harness-matrix.js +204 -0
- package/lib/core/harness-matrix.js.map +1 -0
- package/lib/core/index.d.ts +12 -0
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +12 -0
- package/lib/core/index.js.map +1 -1
- package/lib/core/lifecycle-fixtures.d.ts.map +1 -1
- package/lib/core/lifecycle-fixtures.js +4 -2
- package/lib/core/lifecycle-fixtures.js.map +1 -1
- package/lib/core/model-cli.d.ts +9 -11
- package/lib/core/model-cli.d.ts.map +1 -1
- package/lib/core/model-cli.js +39 -22
- package/lib/core/model-cli.js.map +1 -1
- package/lib/core/platform-process.d.ts +7 -2
- package/lib/core/platform-process.d.ts.map +1 -1
- package/lib/core/platform-process.js +54 -16
- package/lib/core/platform-process.js.map +1 -1
- package/lib/core/reference-defaults.d.ts +5 -0
- package/lib/core/reference-defaults.d.ts.map +1 -0
- package/lib/core/reference-defaults.js +42 -0
- package/lib/core/reference-defaults.js.map +1 -0
- package/lib/core/rubric.d.ts +1 -0
- package/lib/core/rubric.d.ts.map +1 -1
- package/lib/core/run.d.ts +292 -1
- package/lib/core/run.d.ts.map +1 -1
- package/lib/core/run.js +27 -0
- package/lib/core/run.js.map +1 -1
- package/lib/core/secure-copy.d.ts.map +1 -0
- package/lib/core/secure-copy.js.map +1 -0
- package/lib/core/usage.d.ts +5 -0
- package/lib/core/usage.d.ts.map +1 -1
- package/lib/core/usage.js +3 -0
- package/lib/core/usage.js.map +1 -1
- package/lib/core/wire.d.ts +11 -0
- package/lib/core/wire.d.ts.map +1 -1
- package/lib/drivers/antigravity/artifacts.d.ts +2 -0
- package/lib/drivers/antigravity/artifacts.d.ts.map +1 -0
- package/lib/drivers/antigravity/artifacts.js +33 -0
- package/lib/drivers/antigravity/artifacts.js.map +1 -0
- package/lib/drivers/antigravity/config.d.ts +88 -0
- package/lib/drivers/antigravity/config.d.ts.map +1 -0
- package/lib/drivers/antigravity/config.js +87 -0
- package/lib/drivers/antigravity/config.js.map +1 -0
- package/lib/drivers/antigravity/events.d.ts +4 -0
- package/lib/drivers/antigravity/events.d.ts.map +1 -0
- package/lib/drivers/antigravity/events.js +241 -0
- package/lib/drivers/antigravity/events.js.map +1 -0
- package/lib/drivers/antigravity/index.d.ts +114 -0
- package/lib/drivers/antigravity/index.d.ts.map +1 -0
- package/lib/drivers/antigravity/index.js +113 -0
- package/lib/drivers/antigravity/index.js.map +1 -0
- package/lib/drivers/antigravity/runtime.d.ts +7 -0
- package/lib/drivers/antigravity/runtime.d.ts.map +1 -0
- package/lib/drivers/antigravity/runtime.js +83 -0
- package/lib/drivers/antigravity/runtime.js.map +1 -0
- package/lib/drivers/claude-code/deferred-process.d.ts +17 -0
- package/lib/drivers/claude-code/deferred-process.d.ts.map +1 -0
- package/lib/drivers/claude-code/deferred-process.js +108 -0
- package/lib/drivers/claude-code/deferred-process.js.map +1 -0
- package/lib/drivers/claude-code/index.d.ts +187 -10
- package/lib/drivers/claude-code/index.d.ts.map +1 -1
- package/lib/drivers/claude-code/index.js +197 -252
- package/lib/drivers/claude-code/index.js.map +1 -1
- package/lib/drivers/claude-code/isolation.d.ts +8 -0
- package/lib/drivers/claude-code/isolation.d.ts.map +1 -0
- package/lib/drivers/claude-code/isolation.js +199 -0
- package/lib/drivers/claude-code/isolation.js.map +1 -0
- package/lib/drivers/claude-code/parse-events.d.ts.map +1 -1
- package/lib/drivers/claude-code/parse-events.js +73 -8
- package/lib/drivers/claude-code/parse-events.js.map +1 -1
- package/lib/drivers/codex/app-events.d.ts +9 -2
- package/lib/drivers/codex/app-events.d.ts.map +1 -1
- package/lib/drivers/codex/app-events.js +104 -12
- package/lib/drivers/codex/app-events.js.map +1 -1
- package/lib/drivers/codex/config.d.ts +69 -5
- package/lib/drivers/codex/config.d.ts.map +1 -1
- package/lib/drivers/codex/config.js +48 -8
- package/lib/drivers/codex/config.js.map +1 -1
- package/lib/drivers/codex/exec-events.d.ts +4 -0
- package/lib/drivers/codex/exec-events.d.ts.map +1 -0
- package/lib/drivers/codex/exec-events.js +230 -0
- package/lib/drivers/codex/exec-events.js.map +1 -0
- package/lib/drivers/codex/index.d.ts +142 -4
- package/lib/drivers/codex/index.d.ts.map +1 -1
- package/lib/drivers/codex/index.js +114 -276
- package/lib/drivers/codex/index.js.map +1 -1
- package/lib/drivers/copilot/config.d.ts +84 -0
- package/lib/drivers/copilot/config.d.ts.map +1 -0
- package/lib/drivers/copilot/config.js +57 -0
- package/lib/drivers/copilot/config.js.map +1 -0
- package/lib/drivers/copilot/index.d.ts +107 -0
- package/lib/drivers/copilot/index.d.ts.map +1 -0
- package/lib/drivers/copilot/index.js +268 -0
- package/lib/drivers/copilot/index.js.map +1 -0
- package/lib/drivers/cursor/config.d.ts +28 -0
- package/lib/drivers/cursor/config.d.ts.map +1 -0
- package/lib/drivers/cursor/config.js +28 -0
- package/lib/drivers/cursor/config.js.map +1 -0
- package/lib/drivers/cursor/index.d.ts +44 -0
- package/lib/drivers/cursor/index.d.ts.map +1 -0
- package/lib/drivers/cursor/index.js +286 -0
- package/lib/drivers/cursor/index.js.map +1 -0
- package/lib/drivers/cursor/interaction.d.ts +6 -0
- package/lib/drivers/cursor/interaction.d.ts.map +1 -0
- package/lib/drivers/cursor/interaction.js +55 -0
- package/lib/drivers/cursor/interaction.js.map +1 -0
- package/lib/drivers/grok-build/config.d.ts +68 -0
- package/lib/drivers/grok-build/config.d.ts.map +1 -0
- package/lib/drivers/grok-build/config.js +40 -0
- package/lib/drivers/grok-build/config.js.map +1 -0
- package/lib/drivers/grok-build/index.d.ts +87 -0
- package/lib/drivers/grok-build/index.d.ts.map +1 -0
- package/lib/drivers/grok-build/index.js +293 -0
- package/lib/drivers/grok-build/index.js.map +1 -0
- package/lib/drivers/mcp/index.d.ts +37 -4
- package/lib/drivers/mcp/index.d.ts.map +1 -1
- package/lib/drivers/mcp/index.js +25 -11
- package/lib/drivers/mcp/index.js.map +1 -1
- package/lib/drivers/shared/acp-events.d.ts +15 -0
- package/lib/drivers/shared/acp-events.d.ts.map +1 -0
- package/lib/drivers/shared/acp-events.js +83 -0
- package/lib/drivers/shared/acp-events.js.map +1 -0
- package/lib/drivers/shared/acp-interaction.d.ts +7 -0
- package/lib/drivers/shared/acp-interaction.d.ts.map +1 -0
- package/lib/drivers/shared/acp-interaction.js +20 -0
- package/lib/drivers/shared/acp-interaction.js.map +1 -0
- package/lib/drivers/shared/acp-session.d.ts +4 -0
- package/lib/drivers/shared/acp-session.d.ts.map +1 -0
- package/lib/drivers/shared/acp-session.js +23 -0
- package/lib/drivers/shared/acp-session.js.map +1 -0
- package/lib/drivers/shared/acp-transport.d.ts +40 -0
- package/lib/drivers/shared/acp-transport.d.ts.map +1 -0
- package/lib/drivers/shared/acp-transport.js +152 -0
- package/lib/drivers/shared/acp-transport.js.map +1 -0
- package/lib/drivers/shared/artifacts.d.ts.map +1 -1
- package/lib/drivers/shared/artifacts.js +3 -2
- package/lib/drivers/shared/artifacts.js.map +1 -1
- package/lib/drivers/shared/experiment-behavior.d.ts +13 -0
- package/lib/drivers/shared/experiment-behavior.d.ts.map +1 -0
- package/lib/drivers/shared/experiment-behavior.js +200 -0
- package/lib/drivers/shared/experiment-behavior.js.map +1 -0
- package/lib/drivers/shared/experiment-policy.d.ts +4 -0
- package/lib/drivers/shared/experiment-policy.d.ts.map +1 -0
- package/lib/drivers/shared/experiment-policy.js +144 -0
- package/lib/drivers/shared/experiment-policy.js.map +1 -0
- package/lib/drivers/shared/skills.d.ts +3 -0
- package/lib/drivers/shared/skills.d.ts.map +1 -0
- package/lib/drivers/shared/skills.js +73 -0
- package/lib/drivers/shared/skills.js.map +1 -0
- package/lib/drivers/subprocess/index.d.ts +39 -4
- package/lib/drivers/subprocess/index.d.ts.map +1 -1
- package/lib/drivers/subprocess/index.js +56 -12
- package/lib/drivers/subprocess/index.js.map +1 -1
- package/lib/index.d.ts +24 -8
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +20 -5
- package/lib/index.js.map +1 -1
- package/lib/optimization/reflective.d.ts +3 -1
- package/lib/optimization/reflective.d.ts.map +1 -1
- package/lib/optimization/reflective.js +3 -2
- package/lib/optimization/reflective.js.map +1 -1
- package/lib/orchestrator/annotation-loader.d.ts +6 -2
- package/lib/orchestrator/annotation-loader.d.ts.map +1 -1
- package/lib/orchestrator/annotation-loader.js +8 -0
- package/lib/orchestrator/annotation-loader.js.map +1 -1
- package/lib/orchestrator/annotation-store.d.ts.map +1 -1
- package/lib/orchestrator/annotation-store.js +16 -2
- package/lib/orchestrator/annotation-store.js.map +1 -1
- package/lib/orchestrator/artifact-origin.d.ts +3 -0
- package/lib/orchestrator/artifact-origin.d.ts.map +1 -0
- package/lib/orchestrator/artifact-origin.js +40 -0
- package/lib/orchestrator/artifact-origin.js.map +1 -0
- package/lib/orchestrator/campaign-lifecycle.d.ts +1 -0
- package/lib/orchestrator/campaign-lifecycle.d.ts.map +1 -1
- package/lib/orchestrator/campaign-lifecycle.js +4 -1
- package/lib/orchestrator/campaign-lifecycle.js.map +1 -1
- package/lib/orchestrator/candidates.d.ts.map +1 -1
- package/lib/orchestrator/candidates.js +3 -2
- package/lib/orchestrator/candidates.js.map +1 -1
- package/lib/orchestrator/compare.d.ts +23 -6
- package/lib/orchestrator/compare.d.ts.map +1 -1
- package/lib/orchestrator/compare.js +45 -12
- package/lib/orchestrator/compare.js.map +1 -1
- package/lib/orchestrator/comparison-identity.d.ts.map +1 -1
- package/lib/orchestrator/comparison-identity.js +2 -0
- package/lib/orchestrator/comparison-identity.js.map +1 -1
- package/lib/orchestrator/config.d.ts +180 -1
- package/lib/orchestrator/config.d.ts.map +1 -1
- package/lib/orchestrator/config.js +21 -2
- package/lib/orchestrator/config.js.map +1 -1
- package/lib/orchestrator/discover.d.ts +1 -0
- package/lib/orchestrator/discover.d.ts.map +1 -1
- package/lib/orchestrator/discover.js +7 -1
- package/lib/orchestrator/discover.js.map +1 -1
- package/lib/orchestrator/doctor.d.ts +1 -0
- package/lib/orchestrator/doctor.d.ts.map +1 -1
- package/lib/orchestrator/doctor.js +134 -69
- package/lib/orchestrator/doctor.js.map +1 -1
- package/lib/orchestrator/driver-capabilities.d.ts +4 -0
- package/lib/orchestrator/driver-capabilities.d.ts.map +1 -0
- package/lib/orchestrator/driver-capabilities.js +13 -0
- package/lib/orchestrator/driver-capabilities.js.map +1 -0
- package/lib/orchestrator/driver-identity.d.ts +5 -0
- package/lib/orchestrator/driver-identity.d.ts.map +1 -0
- package/lib/orchestrator/driver-identity.js +51 -0
- package/lib/orchestrator/driver-identity.js.map +1 -0
- package/lib/orchestrator/experiment-context.d.ts +51 -3
- package/lib/orchestrator/experiment-context.d.ts.map +1 -1
- package/lib/orchestrator/experiment-context.js +2 -1
- package/lib/orchestrator/experiment-context.js.map +1 -1
- package/lib/orchestrator/experiment-contracts.d.ts +31 -1
- package/lib/orchestrator/experiment-contracts.d.ts.map +1 -1
- package/lib/orchestrator/experiment-corpus.d.ts +2 -1
- package/lib/orchestrator/experiment-corpus.d.ts.map +1 -1
- package/lib/orchestrator/experiment-corpus.js +28 -22
- package/lib/orchestrator/experiment-corpus.js.map +1 -1
- package/lib/orchestrator/experiment-effects.d.ts +33 -0
- package/lib/orchestrator/experiment-effects.d.ts.map +1 -0
- package/lib/orchestrator/experiment-effects.js +46 -0
- package/lib/orchestrator/experiment-effects.js.map +1 -0
- package/lib/orchestrator/experiment-evaluation.d.ts.map +1 -1
- package/lib/orchestrator/experiment-evaluation.js +70 -5
- package/lib/orchestrator/experiment-evaluation.js.map +1 -1
- package/lib/orchestrator/experiment-identity.d.ts +3 -0
- package/lib/orchestrator/experiment-identity.d.ts.map +1 -1
- package/lib/orchestrator/experiment-identity.js +22 -33
- package/lib/orchestrator/experiment-identity.js.map +1 -1
- package/lib/orchestrator/experiment-loader.d.ts +8 -3
- package/lib/orchestrator/experiment-loader.d.ts.map +1 -1
- package/lib/orchestrator/experiment-preflight.d.ts +3 -0
- package/lib/orchestrator/experiment-preflight.d.ts.map +1 -0
- package/lib/orchestrator/experiment-preflight.js +21 -0
- package/lib/orchestrator/experiment-preflight.js.map +1 -0
- package/lib/orchestrator/experiment-report.d.ts +91 -1
- package/lib/orchestrator/experiment-report.d.ts.map +1 -1
- package/lib/orchestrator/experiment-report.js +9 -1
- package/lib/orchestrator/experiment-report.js.map +1 -1
- package/lib/orchestrator/experiment-runs.d.ts +63 -2
- package/lib/orchestrator/experiment-runs.d.ts.map +1 -1
- package/lib/orchestrator/experiment-runs.js +13 -5
- package/lib/orchestrator/experiment-runs.js.map +1 -1
- package/lib/orchestrator/experiment-runtime-identity.d.ts +0 -16
- package/lib/orchestrator/experiment-runtime-identity.d.ts.map +1 -1
- package/lib/orchestrator/experiment-runtime-identity.js +5 -220
- package/lib/orchestrator/experiment-runtime-identity.js.map +1 -1
- package/lib/orchestrator/experiment-selection.d.ts.map +1 -1
- package/lib/orchestrator/experiment-selection.js +151 -43
- package/lib/orchestrator/experiment-selection.js.map +1 -1
- package/lib/orchestrator/experiment.d.ts +3 -3
- package/lib/orchestrator/experiment.d.ts.map +1 -1
- package/lib/orchestrator/experiment.js +26 -21
- package/lib/orchestrator/experiment.js.map +1 -1
- package/lib/orchestrator/fixture-identity.d.ts +1 -0
- package/lib/orchestrator/fixture-identity.d.ts.map +1 -1
- package/lib/orchestrator/fixture-identity.js +6 -1
- package/lib/orchestrator/fixture-identity.js.map +1 -1
- package/lib/orchestrator/fs-read.d.ts +1 -6
- package/lib/orchestrator/fs-read.d.ts.map +1 -1
- package/lib/orchestrator/fs-read.js +2 -32
- package/lib/orchestrator/fs-read.js.map +1 -1
- package/lib/orchestrator/grader-experiment.d.ts +23 -5
- package/lib/orchestrator/grader-experiment.d.ts.map +1 -1
- package/lib/orchestrator/grader-experiment.js +54 -9
- package/lib/orchestrator/grader-experiment.js.map +1 -1
- package/lib/orchestrator/grading.d.ts +1 -0
- package/lib/orchestrator/grading.d.ts.map +1 -1
- package/lib/orchestrator/grading.js +41 -33
- package/lib/orchestrator/grading.js.map +1 -1
- package/lib/orchestrator/harness-catalog-drift.d.ts +22 -0
- package/lib/orchestrator/harness-catalog-drift.d.ts.map +1 -0
- package/lib/orchestrator/harness-catalog-drift.js +90 -0
- package/lib/orchestrator/harness-catalog-drift.js.map +1 -0
- package/lib/orchestrator/harness-registry.d.ts +4 -0
- package/lib/orchestrator/harness-registry.d.ts.map +1 -0
- package/lib/orchestrator/harness-registry.js +5 -0
- package/lib/orchestrator/harness-registry.js.map +1 -0
- package/lib/orchestrator/index.d.ts +1 -1
- package/lib/orchestrator/index.d.ts.map +1 -1
- package/lib/orchestrator/index.js +1 -1
- package/lib/orchestrator/index.js.map +1 -1
- package/lib/orchestrator/list-runs.d.ts +8 -1
- package/lib/orchestrator/list-runs.d.ts.map +1 -1
- package/lib/orchestrator/list-runs.js +83 -18
- package/lib/orchestrator/list-runs.js.map +1 -1
- package/lib/orchestrator/optimization-lifecycle.d.ts.map +1 -1
- package/lib/orchestrator/optimization-lifecycle.js +3 -1
- package/lib/orchestrator/optimization-lifecycle.js.map +1 -1
- package/lib/orchestrator/orchestrator.d.ts +17 -2
- package/lib/orchestrator/orchestrator.d.ts.map +1 -1
- package/lib/orchestrator/orchestrator.js +55 -177
- package/lib/orchestrator/orchestrator.js.map +1 -1
- package/lib/orchestrator/paired-effects.d.ts +34 -0
- package/lib/orchestrator/paired-effects.d.ts.map +1 -0
- package/lib/orchestrator/paired-effects.js +164 -0
- package/lib/orchestrator/paired-effects.js.map +1 -0
- package/lib/orchestrator/profile.d.ts +4 -0
- package/lib/orchestrator/profile.d.ts.map +1 -0
- package/lib/orchestrator/profile.js +10 -0
- package/lib/orchestrator/profile.js.map +1 -0
- package/lib/orchestrator/provenance.d.ts +5 -1
- package/lib/orchestrator/provenance.d.ts.map +1 -1
- package/lib/orchestrator/provenance.js +16 -3
- package/lib/orchestrator/provenance.js.map +1 -1
- package/lib/orchestrator/regrade.d.ts +4 -2
- package/lib/orchestrator/regrade.d.ts.map +1 -1
- package/lib/orchestrator/rubric-loader.js +1 -1
- package/lib/orchestrator/rubric-loader.js.map +1 -1
- package/lib/orchestrator/run-dir.d.ts +2 -0
- package/lib/orchestrator/run-dir.d.ts.map +1 -1
- package/lib/orchestrator/run-dir.js +1 -1
- package/lib/orchestrator/run-dir.js.map +1 -1
- package/lib/orchestrator/run-execution.d.ts +3 -0
- package/lib/orchestrator/run-execution.d.ts.map +1 -1
- package/lib/orchestrator/run-execution.js +64 -10
- package/lib/orchestrator/run-execution.js.map +1 -1
- package/lib/orchestrator/run-lifecycle.d.ts +1 -0
- package/lib/orchestrator/run-lifecycle.d.ts.map +1 -1
- package/lib/orchestrator/run-lifecycle.js +3 -2
- package/lib/orchestrator/run-lifecycle.js.map +1 -1
- package/lib/orchestrator/run-workspace.d.ts +10 -0
- package/lib/orchestrator/run-workspace.d.ts.map +1 -0
- package/lib/orchestrator/run-workspace.js +58 -0
- package/lib/orchestrator/run-workspace.js.map +1 -0
- package/lib/orchestrator/suite-compare.d.ts +37 -0
- package/lib/orchestrator/suite-compare.d.ts.map +1 -1
- package/lib/orchestrator/suite-compare.js +44 -22
- package/lib/orchestrator/suite-compare.js.map +1 -1
- package/lib/orchestrator/suite-runs.d.ts +6 -1
- package/lib/orchestrator/suite-runs.d.ts.map +1 -1
- package/lib/orchestrator/suite-runs.js +14 -2
- package/lib/orchestrator/suite-runs.js.map +1 -1
- package/lib/orchestrator/suite-summary.d.ts +79 -0
- package/lib/orchestrator/suite-summary.d.ts.map +1 -1
- package/lib/orchestrator/suite-summary.js +67 -14
- package/lib/orchestrator/suite-summary.js.map +1 -1
- package/lib/previewer/artifacts.d.ts +25 -0
- package/lib/previewer/artifacts.d.ts.map +1 -0
- package/lib/previewer/artifacts.js +180 -0
- package/lib/previewer/artifacts.js.map +1 -0
- package/lib/previewer/server.d.ts +111 -0
- package/lib/previewer/server.d.ts.map +1 -0
- package/lib/previewer/server.js +559 -0
- package/lib/previewer/server.js.map +1 -0
- package/package.json +4 -2
- package/skills/lux-answerer/SKILL.md +2 -2
- package/src/answerers/claude-code/index.ts +6 -5
- package/src/answerers/persona/index.ts +75 -34
- package/src/answerers/terminal/index.ts +7 -11
- package/src/assertions/authoring.ts +2 -0
- package/src/assertions/core/command-exits-zero.ts +82 -17
- package/src/assertions/core/event-checks.ts +64 -3
- package/src/assertions/core/index.ts +2 -0
- package/src/assertions/core/resource-checks.ts +38 -5
- package/src/assertions/core/safe-regex.ts +16 -6
- package/src/assertions/rubric/evidence.ts +85 -0
- package/src/assertions/rubric/index.ts +63 -46
- package/src/assertions/rubric/internal.ts +256 -41
- package/src/authoring.ts +346 -2
- package/src/cli/bin.ts +2 -12
- package/src/cli/command-runtime.ts +20 -9
- package/src/cli/doctor.ts +17 -0
- package/src/cli/harness-plan.ts +123 -0
- package/src/cli/init-templates.ts +238 -0
- package/src/cli/init.ts +53 -184
- package/src/cli/output-schemas.ts +109 -0
- package/src/cli/program.ts +697 -730
- package/src/cli/render/format.ts +1 -1
- package/src/cli/render/reporter.ts +36 -8
- package/src/cli/run-options.ts +131 -25
- package/src/cli/view.ts +129 -0
- package/src/container/driver.ts +213 -0
- package/src/container/paths.ts +29 -0
- package/src/container/protocol.ts +48 -0
- package/src/container/resources.ts +165 -0
- package/src/container/worker.ts +107 -0
- package/src/core/action-events.ts +59 -0
- package/src/core/agent-activity.ts +236 -0
- package/src/core/agent-environment.ts +64 -0
- package/src/core/agent-events.ts +17 -0
- package/src/core/annotation.ts +2 -1
- package/src/core/answerer.ts +9 -0
- package/src/core/artifact-evidence.ts +40 -5
- package/src/core/assertion.ts +8 -2
- package/src/core/case-defaults.ts +65 -0
- package/src/core/case.ts +79 -8
- package/src/core/command-verification.ts +74 -0
- package/src/core/driver-execution.ts +84 -0
- package/src/core/driver-metrics.ts +51 -0
- package/src/core/driver.ts +76 -0
- package/src/core/duration.ts +52 -0
- package/src/core/environment.ts +22 -0
- package/src/core/evaluation-clusters.ts +35 -0
- package/src/core/events.ts +13 -2
- package/src/core/experiment.ts +71 -25
- package/src/core/file-tree.ts +35 -0
- package/src/core/global-id.ts +26 -0
- package/src/core/harness-catalog.ts +100 -0
- package/src/core/harness-catalogs/antigravity.ts +24 -0
- package/src/core/harness-catalogs/claude-code.ts +25 -0
- package/src/core/harness-catalogs/codex.ts +27 -0
- package/src/core/harness-catalogs/copilot.ts +46 -0
- package/src/core/harness-catalogs/cursor.ts +13 -0
- package/src/core/harness-catalogs/grok-build.ts +19 -0
- package/src/core/harness-catalogs/index.ts +31 -0
- package/src/core/harness-matrix.ts +316 -0
- package/src/core/index.ts +12 -0
- package/src/core/lifecycle-fixtures.ts +4 -2
- package/src/core/model-cli.ts +60 -26
- package/src/core/platform-process.ts +65 -16
- package/src/core/reference-defaults.ts +47 -0
- package/src/core/run.ts +31 -0
- package/src/core/usage.ts +8 -0
- package/src/drivers/antigravity/README.md +171 -0
- package/src/drivers/antigravity/artifacts.ts +37 -0
- package/src/drivers/antigravity/config.ts +92 -0
- package/src/drivers/antigravity/events.ts +290 -0
- package/src/drivers/antigravity/index.ts +132 -0
- package/src/drivers/antigravity/runtime.ts +94 -0
- package/src/drivers/claude-code/deferred-process.ts +118 -0
- package/src/drivers/claude-code/index.ts +227 -281
- package/src/drivers/claude-code/isolation.ts +228 -0
- package/src/drivers/claude-code/parse-events.ts +98 -12
- package/src/drivers/codex/app-events.ts +126 -16
- package/src/drivers/codex/config.ts +59 -8
- package/src/drivers/codex/exec-events.ts +258 -0
- package/src/drivers/codex/index.ts +146 -312
- package/src/drivers/copilot/README.md +60 -0
- package/src/drivers/copilot/config.ts +61 -0
- package/src/drivers/copilot/index.ts +310 -0
- package/src/drivers/cursor/README.md +66 -0
- package/src/drivers/cursor/config.ts +31 -0
- package/src/drivers/cursor/index.ts +326 -0
- package/src/drivers/cursor/interaction.ts +74 -0
- package/src/drivers/grok-build/README.md +112 -0
- package/src/drivers/grok-build/config.ts +43 -0
- package/src/drivers/grok-build/index.ts +331 -0
- package/src/drivers/mcp/index.ts +25 -11
- package/src/drivers/shared/acp-events.ts +94 -0
- package/src/drivers/shared/acp-interaction.ts +27 -0
- package/src/drivers/shared/acp-session.ts +40 -0
- package/src/drivers/shared/acp-transport.ts +187 -0
- package/src/drivers/shared/artifacts.ts +6 -2
- package/src/drivers/shared/experiment-behavior.ts +217 -0
- package/src/drivers/shared/experiment-policy.ts +196 -0
- package/src/drivers/shared/skills.ts +74 -0
- package/src/drivers/subprocess/index.ts +55 -12
- package/src/index.ts +117 -6
- package/src/optimization/reflective.ts +3 -2
- package/src/orchestrator/annotation-loader.ts +10 -0
- package/src/orchestrator/annotation-store.ts +24 -3
- package/src/orchestrator/artifact-origin.ts +50 -0
- package/src/orchestrator/campaign-lifecycle.ts +5 -1
- package/src/orchestrator/candidates.ts +3 -2
- package/src/orchestrator/compare.ts +62 -13
- package/src/orchestrator/comparison-identity.ts +2 -0
- package/src/orchestrator/config.ts +23 -1
- package/src/orchestrator/discover.ts +8 -1
- package/src/orchestrator/doctor.ts +211 -65
- package/src/orchestrator/driver-capabilities.ts +21 -0
- package/src/orchestrator/driver-identity.ts +69 -0
- package/src/orchestrator/experiment-context.ts +5 -3
- package/src/orchestrator/experiment-corpus.ts +58 -37
- package/src/orchestrator/experiment-effects.ts +63 -0
- package/src/orchestrator/experiment-evaluation.ts +88 -10
- package/src/orchestrator/experiment-identity.ts +57 -48
- package/src/orchestrator/experiment-preflight.ts +27 -0
- package/src/orchestrator/experiment-report.ts +21 -1
- package/src/orchestrator/experiment-runs.ts +11 -4
- package/src/orchestrator/experiment-runtime-identity.ts +5 -243
- package/src/orchestrator/experiment-selection.ts +178 -18
- package/src/orchestrator/experiment.ts +29 -29
- package/src/orchestrator/fixture-identity.ts +9 -1
- package/src/orchestrator/fs-read.ts +2 -32
- package/src/orchestrator/grader-experiment.ts +74 -13
- package/src/orchestrator/grading.ts +60 -31
- package/src/orchestrator/harness-catalog-drift.ts +132 -0
- package/src/orchestrator/harness-registry.ts +12 -0
- package/src/orchestrator/index.ts +1 -0
- package/src/orchestrator/list-runs.ts +102 -18
- package/src/orchestrator/optimization-lifecycle.ts +4 -1
- package/src/orchestrator/orchestrator.ts +105 -224
- package/src/orchestrator/paired-effects.ts +214 -0
- package/src/orchestrator/profile.ts +24 -0
- package/src/orchestrator/provenance.ts +23 -3
- package/src/orchestrator/rubric-loader.ts +1 -1
- package/src/orchestrator/run-dir.ts +8 -1
- package/src/orchestrator/run-execution.ts +75 -10
- package/src/orchestrator/run-lifecycle.ts +4 -2
- package/src/orchestrator/run-workspace.ts +62 -0
- package/src/orchestrator/suite-compare.ts +47 -23
- package/src/orchestrator/suite-runs.ts +13 -2
- package/src/orchestrator/suite-summary.ts +129 -15
- package/src/previewer/artifacts.ts +221 -0
- package/src/previewer/server.ts +789 -0
- package/viewer/app.css +2111 -0
- package/viewer/app.js +627 -0
- package/viewer/artifact-view.js +48 -0
- package/viewer/charts.js +98 -0
- package/viewer/detail.js +1266 -0
- package/viewer/format.js +129 -0
- package/viewer/index.html +151 -0
- package/lib/cli/skills.d.ts +0 -38
- package/lib/cli/skills.d.ts.map +0 -1
- package/lib/cli/skills.js +0 -84
- package/lib/cli/skills.js.map +0 -1
- package/lib/drivers/shared/secure-copy.d.ts.map +0 -1
- package/lib/drivers/shared/secure-copy.js.map +0 -1
- package/skills/lux/SKILL.md +0 -89
- package/skills/lux/references/cli.md +0 -125
- package/skills/lux/references/eval-authoring.md +0 -257
- package/src/cli/skills.ts +0 -129
- /package/lib/{drivers/shared → core}/secure-copy.d.ts +0 -0
- /package/lib/{drivers/shared → core}/secure-copy.js +0 -0
- /package/src/{drivers/shared → core}/secure-copy.ts +0 -0
|
@@ -2,13 +2,15 @@ import type { ChildProcessWithoutNullStreams } from "node:child_process";
|
|
|
2
2
|
import { createInterface } from "node:readline";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
4
|
import { z } from "zod";
|
|
5
|
+
import { agentEnvironment, InheritEnvironmentSchema } from "../../core/agent-environment.js";
|
|
6
|
+
import { DurationSchema, durationMs } from "../../core/duration.js";
|
|
5
7
|
import {
|
|
6
8
|
type AgentDriver,
|
|
7
9
|
type Answer,
|
|
8
10
|
type Artifact,
|
|
9
11
|
DoneSchema,
|
|
10
12
|
type DriverEventMap,
|
|
11
|
-
|
|
13
|
+
defineDriver,
|
|
12
14
|
ErrorEventSchema,
|
|
13
15
|
type FormatAnswerFn,
|
|
14
16
|
formatWireAnswer,
|
|
@@ -25,6 +27,7 @@ import {
|
|
|
25
27
|
TypedEmitter,
|
|
26
28
|
} from "../../core/index.js";
|
|
27
29
|
import { walkArtifacts } from "../shared/artifacts.js";
|
|
30
|
+
import { prepareSubprocessExperimentConfig } from "../shared/experiment-policy.js";
|
|
28
31
|
|
|
29
32
|
export const SubprocessDriverConfigSchema = z
|
|
30
33
|
.object({
|
|
@@ -33,9 +36,9 @@ export const SubprocessDriverConfigSchema = z
|
|
|
33
36
|
cwd: z.string().optional(),
|
|
34
37
|
env: z.record(z.string(), z.string()).optional(),
|
|
35
38
|
/** Inherit the host environment. Experiment mode always forces this off. */
|
|
36
|
-
inheritEnv: z.
|
|
39
|
+
inheritEnv: z.union([InheritEnvironmentSchema, z.literal(false)]).optional(),
|
|
37
40
|
protocol: z.enum(["lux-jsonl", "custom"]).default("lux-jsonl"),
|
|
38
|
-
|
|
41
|
+
idleTimeout: DurationSchema.default("2 minutes"),
|
|
39
42
|
maxInterrupts: z.number().positive().default(20),
|
|
40
43
|
/**
|
|
41
44
|
* Maximum files inventoried from LUX_ARTIFACTS_DIR. Keep the conservative
|
|
@@ -81,6 +84,8 @@ export type SubprocessDriverConfig = z.infer<typeof SubprocessDriverConfigSchema
|
|
|
81
84
|
const KILL_GRACE_MS = 5_000;
|
|
82
85
|
const DEFAULT_MAX_LINE_BYTES = 10_000_000;
|
|
83
86
|
const MAX_STDERR_TAIL_CHARS = 8_192;
|
|
87
|
+
const MAX_STDERR_CHARS = 65_536;
|
|
88
|
+
const MAX_STDERR_EVENTS = 128;
|
|
84
89
|
const DEFAULT_MAX_ARTIFACT_FILES = 500;
|
|
85
90
|
const MAX_FIXTURE_VALUES_BYTES = 64 * 1024;
|
|
86
91
|
const ARTIFACT_SNAPSHOT_MODULE = fileURLToPath(
|
|
@@ -145,9 +150,11 @@ class SubprocessDriverImpl implements AgentDriver {
|
|
|
145
150
|
throw new Error(`subprocess fixture values exceed ${MAX_FIXTURE_VALUES_BYTES} bytes`);
|
|
146
151
|
}
|
|
147
152
|
const managed = spawnManagedProcess(this.config.command, this.config.args ?? [], {
|
|
148
|
-
cwd: this.config.cwd ?? ctx.
|
|
153
|
+
cwd: this.config.cwd ?? ctx.artifactsDir,
|
|
149
154
|
env: {
|
|
150
|
-
...(this.config.inheritEnv === false
|
|
155
|
+
...(this.config.inheritEnv === false
|
|
156
|
+
? {}
|
|
157
|
+
: agentEnvironment(process.env, this.config.inheritEnv)),
|
|
151
158
|
...this.config.env,
|
|
152
159
|
...(ctx.caseId ? { LUX_CASE_ID: ctx.caseId } : {}),
|
|
153
160
|
LUX_RUN_DIR: ctx.runDir,
|
|
@@ -174,15 +181,38 @@ class SubprocessDriverImpl implements AgentDriver {
|
|
|
174
181
|
// boundary from being mangled.
|
|
175
182
|
child.stderr.setEncoding("utf8");
|
|
176
183
|
let stderrTail = "";
|
|
184
|
+
let stderrChars = 0;
|
|
185
|
+
let stderrEvents = 0;
|
|
186
|
+
let stderrTruncated = false;
|
|
187
|
+
const recordStderr = (line: string): void => {
|
|
188
|
+
if (stderrTruncated || this.terminalSent) return;
|
|
189
|
+
const text = line.slice(0, Math.min(MAX_STDERR_TAIL_CHARS, MAX_STDERR_CHARS - stderrChars));
|
|
190
|
+
stderrChars += text.length;
|
|
191
|
+
stderrEvents++;
|
|
192
|
+
stderrTruncated =
|
|
193
|
+
text.length < line.length ||
|
|
194
|
+
stderrChars >= MAX_STDERR_CHARS ||
|
|
195
|
+
stderrEvents >= MAX_STDERR_EVENTS;
|
|
196
|
+
this.emitInOrder("progress", {
|
|
197
|
+
id: `subprocess-stderr-${stderrEvents}`,
|
|
198
|
+
kind: "driver-stderr",
|
|
199
|
+
payload: { text, truncated: stderrTruncated },
|
|
200
|
+
ts: Date.now(),
|
|
201
|
+
});
|
|
202
|
+
};
|
|
177
203
|
child.stderr.on("data", (chunk: string) => {
|
|
178
204
|
const lines = (stderrTail + chunk).split("\n");
|
|
179
205
|
// Cap the retained partial line so unterminated stderr can't grow
|
|
180
206
|
// without bound.
|
|
181
|
-
stderrTail =
|
|
182
|
-
for (const line of lines)
|
|
207
|
+
stderrTail = lines.pop() ?? "";
|
|
208
|
+
for (const line of lines) recordStderr(line);
|
|
209
|
+
if (stderrTail.length > MAX_STDERR_TAIL_CHARS) {
|
|
210
|
+
recordStderr(stderrTail);
|
|
211
|
+
stderrTail = "";
|
|
212
|
+
}
|
|
183
213
|
});
|
|
184
214
|
child.stderr.on("close", () => {
|
|
185
|
-
if (stderrTail)
|
|
215
|
+
if (stderrTail) recordStderr(stderrTail);
|
|
186
216
|
stderrTail = "";
|
|
187
217
|
});
|
|
188
218
|
|
|
@@ -459,7 +489,7 @@ class SubprocessDriverImpl implements AgentDriver {
|
|
|
459
489
|
private bumpIdleTimer(): void {
|
|
460
490
|
this.clearIdleTimer();
|
|
461
491
|
this.idleTimer = setTimeout(() => {
|
|
462
|
-
const reason = `no event for ${this.config.
|
|
492
|
+
const reason = `no event for ${durationMs(this.config.idleTimeout)}ms`;
|
|
463
493
|
// Idle before ready means start() is still pending; reject it (and kill
|
|
464
494
|
// the child) or the orchestrator waits forever.
|
|
465
495
|
const preReady = this.readyRejected !== null;
|
|
@@ -471,7 +501,7 @@ class SubprocessDriverImpl implements AgentDriver {
|
|
|
471
501
|
// Kill immediately: the run is lost and the child would keep doing
|
|
472
502
|
// billable work until close().
|
|
473
503
|
this.terminate();
|
|
474
|
-
}, this.config.
|
|
504
|
+
}, durationMs(this.config.idleTimeout));
|
|
475
505
|
}
|
|
476
506
|
|
|
477
507
|
private clearIdleTimer(): void {
|
|
@@ -489,8 +519,21 @@ class SubprocessDriverImpl implements AgentDriver {
|
|
|
489
519
|
}
|
|
490
520
|
}
|
|
491
521
|
|
|
492
|
-
export const subprocessDriver
|
|
522
|
+
export const subprocessDriver = defineDriver({
|
|
493
523
|
name: "subprocess",
|
|
494
524
|
configSchema: SubprocessDriverConfigSchema,
|
|
525
|
+
runtime: (config) => ({
|
|
526
|
+
commands: [config.command],
|
|
527
|
+
capabilities: {
|
|
528
|
+
interactive: true,
|
|
529
|
+
artifacts: true,
|
|
530
|
+
isolation: false,
|
|
531
|
+
},
|
|
532
|
+
}),
|
|
533
|
+
experiment: {
|
|
534
|
+
version: "1",
|
|
535
|
+
prepare: prepareSubprocessExperimentConfig,
|
|
536
|
+
identity: () => null,
|
|
537
|
+
},
|
|
495
538
|
create: (config) => new SubprocessDriverImpl(config),
|
|
496
|
-
};
|
|
539
|
+
});
|
package/src/index.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
export { DurationSchema, durationMs } from "./core/duration.js";
|
|
1
2
|
// Public surface of @prismatic-io/lux. The package root exposes authoring
|
|
2
3
|
// contracts, extension points, built-ins, and supported programmatic
|
|
3
4
|
// lifecycles. Explicit exports keep implementation and test helpers private.
|
|
4
5
|
|
|
5
6
|
export { z } from "zod";
|
|
6
|
-
|
|
7
7
|
// Bundled answerers and drivers. Test injection and protocol-normalization
|
|
8
8
|
// helpers stay in their implementation modules.
|
|
9
9
|
export {
|
|
@@ -87,6 +87,8 @@ export {
|
|
|
87
87
|
registerCoreAssertions,
|
|
88
88
|
runSucceededAssertion,
|
|
89
89
|
subagentToolCalls,
|
|
90
|
+
type TimeToFirstActionUnderConfig,
|
|
91
|
+
TimeToFirstActionUnderConfigSchema,
|
|
90
92
|
type TokensUnderConfig,
|
|
91
93
|
TokensUnderConfigSchema,
|
|
92
94
|
type ToolCall,
|
|
@@ -104,6 +106,7 @@ export {
|
|
|
104
106
|
ToolResultIsErrorConfigSchema,
|
|
105
107
|
type ToolResultJsonPointerEqualsConfig,
|
|
106
108
|
ToolResultJsonPointerEqualsConfigSchema,
|
|
109
|
+
timeToFirstActionUnderAssertion,
|
|
107
110
|
tokensUnderAssertion,
|
|
108
111
|
toolCallCountAssertion,
|
|
109
112
|
toolCalledAssertion,
|
|
@@ -136,11 +139,34 @@ export {
|
|
|
136
139
|
type RubricConfig,
|
|
137
140
|
RubricConfigSchema,
|
|
138
141
|
type RubricEvidence,
|
|
142
|
+
type RubricEvidenceInput,
|
|
139
143
|
RubricEvidenceSchema,
|
|
140
144
|
RubricModelAccountingDetailSchema,
|
|
141
145
|
rubricAssertion,
|
|
142
146
|
} from "./assertions/rubric/index.js";
|
|
143
147
|
// Authoring and extension contracts.
|
|
148
|
+
export {
|
|
149
|
+
type ActionCategory,
|
|
150
|
+
ActionCategorySchema,
|
|
151
|
+
type ActionProgressPayload,
|
|
152
|
+
ActionProgressPayloadSchema,
|
|
153
|
+
type ActionTiming,
|
|
154
|
+
ActionTimingSchema,
|
|
155
|
+
actionTiming,
|
|
156
|
+
} from "./core/action-events.js";
|
|
157
|
+
export {
|
|
158
|
+
type AgentActivity,
|
|
159
|
+
AgentActivitySchema,
|
|
160
|
+
summarizeAgentActivity,
|
|
161
|
+
} from "./core/agent-activity.js";
|
|
162
|
+
export {
|
|
163
|
+
AGENT_COMPLETED_KIND,
|
|
164
|
+
AGENT_SPAWN_KIND,
|
|
165
|
+
type AgentCompletedPayload,
|
|
166
|
+
AgentCompletedPayloadSchema,
|
|
167
|
+
type AgentSpawnPayload,
|
|
168
|
+
AgentSpawnPayloadSchema,
|
|
169
|
+
} from "./core/agent-events.js";
|
|
144
170
|
export {
|
|
145
171
|
defineGraderAnnotations,
|
|
146
172
|
type GraderAnnotation,
|
|
@@ -158,11 +184,14 @@ export {
|
|
|
158
184
|
AnswererModelCallAccountingSchema,
|
|
159
185
|
type AnswererPlugin,
|
|
160
186
|
type AnswerHistoryEntry,
|
|
187
|
+
answererRef,
|
|
188
|
+
defineAnswerer,
|
|
161
189
|
} from "./core/answerer.js";
|
|
162
190
|
export {
|
|
163
191
|
inspectRunArtifact,
|
|
164
192
|
type ReadRunArtifactTextOptions,
|
|
165
193
|
type RunArtifactInspection,
|
|
194
|
+
type RunArtifactIssueReason,
|
|
166
195
|
readRunArtifactText,
|
|
167
196
|
} from "./core/artifact-evidence.js";
|
|
168
197
|
export {
|
|
@@ -201,12 +230,14 @@ export {
|
|
|
201
230
|
type EvalCase,
|
|
202
231
|
type EvalCaseAuthoringOptions,
|
|
203
232
|
type EvalCaseDefinition,
|
|
233
|
+
type EvalCaseInput,
|
|
204
234
|
EvalCaseSchema,
|
|
205
235
|
type FixturesRef,
|
|
206
236
|
FixturesRefSchema,
|
|
207
237
|
type PersistedCase,
|
|
208
238
|
PersistedCaseSchema,
|
|
209
239
|
} from "./core/case.js";
|
|
240
|
+
export type { AssertionDefaults, EvalCaseDefaults } from "./core/case-defaults.js";
|
|
210
241
|
export {
|
|
211
242
|
CONVERSATION_TURN_REQUEST,
|
|
212
243
|
type ConversationTurnRequest,
|
|
@@ -221,14 +252,44 @@ export {
|
|
|
221
252
|
type AgentDriver,
|
|
222
253
|
type Artifact,
|
|
223
254
|
ArtifactSchema,
|
|
255
|
+
type DriverCapability,
|
|
256
|
+
DriverCapabilitySchema,
|
|
224
257
|
type DriverEventMap,
|
|
258
|
+
type DriverExperiment,
|
|
225
259
|
type DriverPlugin,
|
|
260
|
+
type DriverRuntime,
|
|
261
|
+
defineDriver,
|
|
262
|
+
driverRef,
|
|
263
|
+
type HarnessSelection,
|
|
226
264
|
type ResolvedFixtures,
|
|
227
265
|
ResolvedFixturesSchema,
|
|
228
266
|
type StartContext,
|
|
267
|
+
selectModelAndReasoningEffort,
|
|
229
268
|
} from "./core/driver.js";
|
|
269
|
+
export {
|
|
270
|
+
type ContainerExecution,
|
|
271
|
+
ContainerExecutionSchema,
|
|
272
|
+
type DriverExecution,
|
|
273
|
+
DriverExecutionSchema,
|
|
274
|
+
} from "./core/driver-execution.js";
|
|
275
|
+
export {
|
|
276
|
+
type DriverMetric,
|
|
277
|
+
type DriverMetricDescriptor,
|
|
278
|
+
DriverMetricDescriptorSchema,
|
|
279
|
+
DriverMetricSchema,
|
|
280
|
+
type DriverMetrics,
|
|
281
|
+
DriverMetricsSchema,
|
|
282
|
+
type DriverMetricUnit,
|
|
283
|
+
DriverMetricUnitSchema,
|
|
284
|
+
normalizeDriverMetrics,
|
|
285
|
+
type ReportedDriverMetrics,
|
|
286
|
+
ReportedDriverMetricsSchema,
|
|
287
|
+
} from "./core/driver-metrics.js";
|
|
230
288
|
export { type EventHandler, TypedEmitter } from "./core/emitter.js";
|
|
289
|
+
export { type EnvironmentDeclaration, EnvironmentDeclarationSchema } from "./core/environment.js";
|
|
231
290
|
export {
|
|
291
|
+
type AgentAttribution,
|
|
292
|
+
AgentAttributionSchema,
|
|
232
293
|
type Answer,
|
|
233
294
|
AnswerSchema,
|
|
234
295
|
ApproveAnswerSchema,
|
|
@@ -292,6 +353,40 @@ export {
|
|
|
292
353
|
type Optimizer,
|
|
293
354
|
type OptimizerInput,
|
|
294
355
|
} from "./core/experiment.js";
|
|
356
|
+
export { type GlobalIdParts, tryParseGlobalId } from "./core/global-id.js";
|
|
357
|
+
export {
|
|
358
|
+
type CatalogModels,
|
|
359
|
+
catalogEfforts,
|
|
360
|
+
defaultCatalogEffort,
|
|
361
|
+
defineHarnessCatalog,
|
|
362
|
+
HARNESS_EFFORTS,
|
|
363
|
+
type HarnessCatalog,
|
|
364
|
+
type ReasoningEffort,
|
|
365
|
+
ReasoningEffortSchema,
|
|
366
|
+
} from "./core/harness-catalog.js";
|
|
367
|
+
export {
|
|
368
|
+
antigravityCatalog,
|
|
369
|
+
type BuiltInHarnessDriver,
|
|
370
|
+
builtInHarnessCatalogs,
|
|
371
|
+
claudeCodeCatalog,
|
|
372
|
+
codexCatalog,
|
|
373
|
+
copilotCatalog,
|
|
374
|
+
cursorCatalog,
|
|
375
|
+
grokBuildCatalog,
|
|
376
|
+
harnessCatalogFor,
|
|
377
|
+
} from "./core/harness-catalogs/index.js";
|
|
378
|
+
export {
|
|
379
|
+
type BuiltInHarnessMatrixEntry,
|
|
380
|
+
BuiltInHarnessMatrixEntrySchema,
|
|
381
|
+
type CustomHarnessMatrixEntry,
|
|
382
|
+
expandHarnessMatrix,
|
|
383
|
+
type HarnessMatrix,
|
|
384
|
+
type HarnessMatrixEntry,
|
|
385
|
+
HarnessMatrixEntrySchema,
|
|
386
|
+
HarnessMatrixSchema,
|
|
387
|
+
type HarnessPermutation,
|
|
388
|
+
permutationId,
|
|
389
|
+
} from "./core/harness-matrix.js";
|
|
295
390
|
export {
|
|
296
391
|
defineFixtures,
|
|
297
392
|
type LifecycleFixture,
|
|
@@ -327,14 +422,11 @@ export {
|
|
|
327
422
|
export {
|
|
328
423
|
DEFAULT_CLAUDE_MODEL,
|
|
329
424
|
DEFAULT_CODEX_MODEL,
|
|
330
|
-
DEFAULT_CODEX_REASONING_EFFORT,
|
|
331
425
|
defaultHarnessModel,
|
|
332
426
|
type HarnessModelConfig,
|
|
333
427
|
HarnessModelConfigSchema,
|
|
334
428
|
type ModelCliProvider,
|
|
335
429
|
ModelCliProviderSchema,
|
|
336
|
-
type ReasoningEffort,
|
|
337
|
-
ReasoningEffortSchema,
|
|
338
430
|
} from "./core/model-cli.js";
|
|
339
431
|
export {
|
|
340
432
|
type AssertionProgress,
|
|
@@ -420,6 +512,11 @@ export {
|
|
|
420
512
|
type WireEvent,
|
|
421
513
|
WireEventSchema,
|
|
422
514
|
} from "./core/wire.js";
|
|
515
|
+
export {
|
|
516
|
+
type AntigravityDriverConfig,
|
|
517
|
+
AntigravityDriverConfigSchema,
|
|
518
|
+
antigravityDriver,
|
|
519
|
+
} from "./drivers/antigravity/index.js";
|
|
423
520
|
export {
|
|
424
521
|
type ClaudeCodeDriverConfig,
|
|
425
522
|
ClaudeCodeDriverConfigSchema,
|
|
@@ -430,6 +527,22 @@ export {
|
|
|
430
527
|
CodexDriverConfigSchema,
|
|
431
528
|
codexDriver,
|
|
432
529
|
} from "./drivers/codex/index.js";
|
|
530
|
+
export {
|
|
531
|
+
type CopilotDriverConfig,
|
|
532
|
+
CopilotDriverConfigSchema,
|
|
533
|
+
copilotDriver,
|
|
534
|
+
} from "./drivers/copilot/index.js";
|
|
535
|
+
export {
|
|
536
|
+
type CursorDriverConfig,
|
|
537
|
+
CursorDriverConfigSchema,
|
|
538
|
+
cursorDriver,
|
|
539
|
+
} from "./drivers/cursor/index.js";
|
|
540
|
+
export {
|
|
541
|
+
buildGrokBuildArgs,
|
|
542
|
+
type GrokBuildDriverConfig,
|
|
543
|
+
GrokBuildDriverConfigSchema,
|
|
544
|
+
grokBuildDriver,
|
|
545
|
+
} from "./drivers/grok-build/index.js";
|
|
433
546
|
export {
|
|
434
547
|
type McpProbeDriverConfig,
|
|
435
548
|
McpProbeDriverConfigSchema,
|
|
@@ -441,13 +554,11 @@ export {
|
|
|
441
554
|
SubprocessDriverConfigSchema,
|
|
442
555
|
subprocessDriver,
|
|
443
556
|
} from "./drivers/subprocess/index.js";
|
|
444
|
-
|
|
445
557
|
export {
|
|
446
558
|
createReflectiveOptimizer,
|
|
447
559
|
type ReflectiveOptimizerConfig,
|
|
448
560
|
ReflectiveOptimizerConfigSchema,
|
|
449
561
|
} from "./optimization/reflective.js";
|
|
450
|
-
|
|
451
562
|
// Supported programmatic orchestration.
|
|
452
563
|
export {
|
|
453
564
|
applyCandidate,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { DurationSchema, durationMs } from "../core/duration.js";
|
|
2
3
|
import {
|
|
3
4
|
type CandidateEvaluation,
|
|
4
5
|
type CandidateProposal,
|
|
@@ -16,7 +17,7 @@ export const ReflectiveOptimizerConfigSchema = z
|
|
|
16
17
|
model: z.string().optional(),
|
|
17
18
|
command: z.string().optional(),
|
|
18
19
|
reasoningEffort: ReasoningEffortSchema.optional(),
|
|
19
|
-
|
|
20
|
+
timeout: DurationSchema.default("3 minutes"),
|
|
20
21
|
maxComponentChars: z.number().int().positive().default(80_000),
|
|
21
22
|
maxAlternativeChars: z.number().int().positive().default(40_000),
|
|
22
23
|
maxFeedbackChars: z.number().int().positive().default(50_000),
|
|
@@ -273,7 +274,7 @@ const reflectiveOptimizer = (config: ReflectiveOptimizerConfig): Optimizer => ({
|
|
|
273
274
|
model,
|
|
274
275
|
command: config.command,
|
|
275
276
|
reasoningEffort: config.reasoningEffort,
|
|
276
|
-
timeoutMs: config.
|
|
277
|
+
timeoutMs: durationMs(config.timeout),
|
|
277
278
|
system: systemPrompt(input.campaign.evaluation.kind),
|
|
278
279
|
signal: input.abortSignal,
|
|
279
280
|
prompt: builtPrompt.prompt,
|
|
@@ -2,6 +2,7 @@ import { readFile } from "node:fs/promises";
|
|
|
2
2
|
import { dirname, extname, resolve, sep } from "node:path";
|
|
3
3
|
import { pathToFileURL } from "node:url";
|
|
4
4
|
import { z } from "zod";
|
|
5
|
+
import { assertDisjointClusters } from "../core/evaluation-clusters.js";
|
|
5
6
|
import {
|
|
6
7
|
type ExperimentSelector,
|
|
7
8
|
formatZodIssues,
|
|
@@ -73,6 +74,15 @@ export const selectGraderAnnotations = (
|
|
|
73
74
|
export const assertDisjointAnnotationSplits = (
|
|
74
75
|
splits: Array<{ name: string; annotations: readonly GraderAnnotation[] }>,
|
|
75
76
|
): void => {
|
|
77
|
+
assertDisjointClusters(
|
|
78
|
+
splits.map((split) => ({
|
|
79
|
+
name: split.name,
|
|
80
|
+
items: split.annotations.map((annotation) => ({
|
|
81
|
+
id: annotation.id,
|
|
82
|
+
cluster: annotation.meta?.cluster,
|
|
83
|
+
})),
|
|
84
|
+
})),
|
|
85
|
+
);
|
|
76
86
|
const idOwners = new Map<string, string>();
|
|
77
87
|
const runOwners = new Map<string, string>();
|
|
78
88
|
for (const split of splits) {
|
|
@@ -82,11 +82,10 @@ const acquireAnnotationLock = async (path: string): Promise<() => Promise<void>>
|
|
|
82
82
|
}
|
|
83
83
|
};
|
|
84
84
|
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
const updateAnnotation = async (
|
|
86
|
+
path: string,
|
|
87
87
|
annotation: GraderAnnotation,
|
|
88
88
|
): Promise<GraderAnnotationDataset> => {
|
|
89
|
-
const path = resolve(filePath);
|
|
90
89
|
await mkdir(dirname(path), { recursive: true });
|
|
91
90
|
const release = await acquireAnnotationLock(path);
|
|
92
91
|
const temporary = `${path}.${process.pid}.${randomUUID()}.tmp`;
|
|
@@ -114,3 +113,25 @@ export const upsertGraderAnnotation = async (
|
|
|
114
113
|
await release();
|
|
115
114
|
}
|
|
116
115
|
};
|
|
116
|
+
|
|
117
|
+
// Serialize local writers before acquiring the cross-process lock. Otherwise
|
|
118
|
+
// a burst of updates spends its lock deadline contending with its own process.
|
|
119
|
+
const pendingUpdates = new Map<string, Promise<void>>();
|
|
120
|
+
|
|
121
|
+
export const upsertGraderAnnotation = (
|
|
122
|
+
filePath: string,
|
|
123
|
+
annotation: GraderAnnotation,
|
|
124
|
+
): Promise<GraderAnnotationDataset> => {
|
|
125
|
+
const path = resolve(filePath);
|
|
126
|
+
const previous = pendingUpdates.get(path) ?? Promise.resolve();
|
|
127
|
+
const update = previous.then(() => updateAnnotation(path, annotation));
|
|
128
|
+
const settled = update.then(
|
|
129
|
+
() => undefined,
|
|
130
|
+
() => undefined,
|
|
131
|
+
);
|
|
132
|
+
pendingUpdates.set(path, settled);
|
|
133
|
+
void settled.then(() => {
|
|
134
|
+
if (pendingUpdates.get(path) === settled) pendingUpdates.delete(path);
|
|
135
|
+
});
|
|
136
|
+
return update;
|
|
137
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { isAbsolute, relative, resolve, sep } from "node:path";
|
|
2
|
+
import {
|
|
3
|
+
type Artifact,
|
|
4
|
+
contentHash,
|
|
5
|
+
inspectRunArtifact,
|
|
6
|
+
readRunArtifactBytes,
|
|
7
|
+
} from "../core/index.js";
|
|
8
|
+
|
|
9
|
+
const MAX_ORIGIN_BYTES = 10 * 1024 * 1024;
|
|
10
|
+
|
|
11
|
+
export const identifyArtifactOrigins = async (
|
|
12
|
+
runDir: string,
|
|
13
|
+
artifacts: readonly Artifact[],
|
|
14
|
+
fixtureHashes: ReadonlyMap<string, string>,
|
|
15
|
+
): Promise<Artifact[]> => {
|
|
16
|
+
const run = { runDir, artifacts };
|
|
17
|
+
const result: Artifact[] = [];
|
|
18
|
+
for (const artifact of artifacts) {
|
|
19
|
+
const { origin: _claimedOrigin, ...captured } = artifact;
|
|
20
|
+
const inspected = await inspectRunArtifact(run, artifact.path);
|
|
21
|
+
if (!inspected.stats?.isFile()) {
|
|
22
|
+
result.push(captured);
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
const path = relative(resolve(runDir, "artifacts"), inspected.target);
|
|
26
|
+
const expected =
|
|
27
|
+
!isAbsolute(path) && path !== ".." && !path.startsWith(`..${sep}`)
|
|
28
|
+
? fixtureHashes.get(path)
|
|
29
|
+
: undefined;
|
|
30
|
+
if (expected === undefined) {
|
|
31
|
+
result.push({ ...captured, origin: "generated" });
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
if (inspected.stats.size > MAX_ORIGIN_BYTES) {
|
|
35
|
+
result.push(captured);
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
const bytes = await readRunArtifactBytes(run, artifact.path, { maxBytes: MAX_ORIGIN_BYTES });
|
|
40
|
+
result.push({
|
|
41
|
+
...captured,
|
|
42
|
+
origin: contentHash(bytes) === expected ? "fixture" : "modified",
|
|
43
|
+
});
|
|
44
|
+
} catch {
|
|
45
|
+
// Advisory provenance must not discard the rest of a safely archived index.
|
|
46
|
+
result.push(captured);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
50
|
+
};
|
|
@@ -16,6 +16,7 @@ type CampaignLifecycleContext = {
|
|
|
16
16
|
work: unknown;
|
|
17
17
|
result: unknown;
|
|
18
18
|
error: unknown;
|
|
19
|
+
failed: boolean;
|
|
19
20
|
terminalStatus: "passed" | "failed" | "aborted" | undefined;
|
|
20
21
|
};
|
|
21
22
|
type CampaignLifecycleOutcome =
|
|
@@ -57,6 +58,7 @@ const campaignLifecycleMachine = setup({
|
|
|
57
58
|
"output" in event ? context.effects.resultStatus(event.output) : "failed",
|
|
58
59
|
}),
|
|
59
60
|
captureError: assign({
|
|
61
|
+
failed: true,
|
|
60
62
|
error: ({ event }) =>
|
|
61
63
|
"error" in event ? event.error : new Error("campaign lifecycle failed"),
|
|
62
64
|
terminalStatus: ({ context, event }) =>
|
|
@@ -65,6 +67,7 @@ const campaignLifecycleMachine = setup({
|
|
|
65
67
|
),
|
|
66
68
|
}),
|
|
67
69
|
captureReleaseError: assign({
|
|
70
|
+
failed: true,
|
|
68
71
|
error: ({ event }) => ("error" in event ? event.error : new Error("campaign release failed")),
|
|
69
72
|
terminalStatus: "failed",
|
|
70
73
|
}),
|
|
@@ -76,6 +79,7 @@ const campaignLifecycleMachine = setup({
|
|
|
76
79
|
work: undefined,
|
|
77
80
|
result: undefined,
|
|
78
81
|
error: undefined,
|
|
82
|
+
failed: false,
|
|
79
83
|
terminalStatus: undefined,
|
|
80
84
|
}),
|
|
81
85
|
initial: "preparing",
|
|
@@ -145,7 +149,7 @@ const campaignLifecycleMachine = setup({
|
|
|
145
149
|
failed: { type: "final" },
|
|
146
150
|
},
|
|
147
151
|
output: ({ context }) => {
|
|
148
|
-
if (context.
|
|
152
|
+
if (context.failed) {
|
|
149
153
|
return {
|
|
150
154
|
status: context.terminalStatus === "aborted" ? "aborted" : "failed",
|
|
151
155
|
error: context.error,
|
|
@@ -5,6 +5,7 @@ import { basename, dirname, isAbsolute, join, normalize, relative, resolve, sep
|
|
|
5
5
|
import { temporaryDirectory } from "tempy";
|
|
6
6
|
import { glob } from "tinyglobby";
|
|
7
7
|
import { z } from "zod";
|
|
8
|
+
import { durationMs } from "../core/duration.js";
|
|
8
9
|
import { exec } from "../core/exec.js";
|
|
9
10
|
import {
|
|
10
11
|
type Candidate,
|
|
@@ -226,7 +227,7 @@ export const validateCandidate = async (
|
|
|
226
227
|
try {
|
|
227
228
|
return await exec(validation.command, validation.args, {
|
|
228
229
|
cwd: materializedRoot,
|
|
229
|
-
timeoutMs: validation.
|
|
230
|
+
timeoutMs: durationMs(validation.timeout),
|
|
230
231
|
env,
|
|
231
232
|
...(signal ? { signal } : {}),
|
|
232
233
|
});
|
|
@@ -236,7 +237,7 @@ export const validateCandidate = async (
|
|
|
236
237
|
})().finally(() => rm(validationHome, { recursive: true, force: true }));
|
|
237
238
|
if (result.timedOut || result.exitCode !== 0) {
|
|
238
239
|
const reason = result.timedOut
|
|
239
|
-
? `timed out after ${validation.
|
|
240
|
+
? `timed out after ${durationMs(validation.timeout)}ms`
|
|
240
241
|
: `exited ${result.exitCode}`;
|
|
241
242
|
throw new Error(
|
|
242
243
|
`candidate validation '${validation.command}' ${reason}: ${result.stderr.slice(0, 500)}`,
|