@prismatic-io/lux 0.0.2-preview.4 → 0.0.2-preview.41
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 +65 -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 +67 -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 +211 -46
- 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 +153 -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 +31 -15
- package/lib/core/model-cli.d.ts.map +1 -1
- package/lib/core/model-cli.js +53 -23
- 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 +198 -253
- 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 +149 -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 +231 -10
- 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 +163 -78
- 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 +52 -4
- 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 +32 -24
- 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 +50 -42
- 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 +59 -179
- 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/regrade.js +5 -1
- package/lib/orchestrator/regrade.js.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 +80 -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 +76 -46
- package/src/assertions/rubric/internal.ts +264 -46
- 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 +176 -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 +78 -28
- 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 +228 -282
- 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 +201 -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 +281 -74
- 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 +68 -39
- package/src/orchestrator/experiment-effects.ts +63 -0
- package/src/orchestrator/experiment-evaluation.ts +88 -10
- package/src/orchestrator/experiment-identity.ts +98 -61
- 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 +104 -226
- 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/regrade.ts +5 -1
- 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
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
matchesAnyGlob,
|
|
4
4
|
type Run,
|
|
5
5
|
type RunEvent,
|
|
6
|
-
|
|
6
|
+
readRunArtifactExcerpt,
|
|
7
7
|
tryParseJson,
|
|
8
8
|
} from "../../core/index.js";
|
|
9
9
|
import type { RubricConfig, RubricEvidence } from "./index.js";
|
|
@@ -44,7 +44,11 @@ const eventSelected = (event: RunEvent, evidence?: RubricEvidence): boolean => {
|
|
|
44
44
|
};
|
|
45
45
|
|
|
46
46
|
const interruptDetail = (event: Extract<RunEvent, { type: "interrupt" }>): string => {
|
|
47
|
-
if (event.kind === "ask")
|
|
47
|
+
if (event.kind === "ask") {
|
|
48
|
+
return event.context === undefined
|
|
49
|
+
? event.question
|
|
50
|
+
: `${event.question} context=${safeJson(event.context)}`;
|
|
51
|
+
}
|
|
48
52
|
if (event.kind === "approve") return event.request;
|
|
49
53
|
return "<custom>";
|
|
50
54
|
};
|
|
@@ -213,6 +217,11 @@ const eventLine = (
|
|
|
213
217
|
renderedToolText: ReadonlyMap<RunEvent, string>,
|
|
214
218
|
): string | null => {
|
|
215
219
|
if (event.type === "interrupt") {
|
|
220
|
+
// Native question tools may put their actual choices and headers in context,
|
|
221
|
+
// rather than duplicating them in the human-readable question string.
|
|
222
|
+
if (event.kind === "ask") {
|
|
223
|
+
return `interrupt(ask): ${boundedText(interruptDetail(event), 4_000, "ask interrupt")}`;
|
|
224
|
+
}
|
|
216
225
|
return `interrupt(${event.kind}): ${interruptDetail(event).slice(0, 160)}`;
|
|
217
226
|
}
|
|
218
227
|
if (event.type === "responded") {
|
|
@@ -232,19 +241,47 @@ export const summarizeEvents = (
|
|
|
232
241
|
evidence?: RubricEvidence,
|
|
233
242
|
): string => {
|
|
234
243
|
const lines: string[] = [];
|
|
235
|
-
const
|
|
244
|
+
const groups: RunEvent[][] = [];
|
|
245
|
+
let previous: RunEvent | undefined;
|
|
246
|
+
for (const event of events) {
|
|
247
|
+
if (eventSelected(event, evidence)) {
|
|
248
|
+
const sameSpeaker =
|
|
249
|
+
event.type === "progress" &&
|
|
250
|
+
previous?.type === "progress" &&
|
|
251
|
+
event.kind === "agent-message" &&
|
|
252
|
+
previous.kind === "agent-message" &&
|
|
253
|
+
event.agent?.id === previous.agent?.id;
|
|
254
|
+
if (sameSpeaker && groups.length > 0) groups.at(-1)?.push(event);
|
|
255
|
+
else groups.push([event]);
|
|
256
|
+
}
|
|
257
|
+
previous = event;
|
|
258
|
+
}
|
|
236
259
|
// Grading only the tail would silently hide the start of a long run from
|
|
237
260
|
// the judge; make the omission explicit rather than invisible.
|
|
238
|
-
if (
|
|
239
|
-
lines.push(`[... ${
|
|
261
|
+
if (groups.length > cap) {
|
|
262
|
+
lines.push(`[... ${groups.length - cap} earlier events omitted ...]`);
|
|
240
263
|
}
|
|
241
|
-
const
|
|
264
|
+
const tailGroups = cap === 0 ? [] : groups.slice(-cap);
|
|
265
|
+
const tail = tailGroups.flat();
|
|
242
266
|
const agentTextAllotments = allotAgentText(tail, evidence?.maxAgentChars ?? 30_000);
|
|
243
267
|
const toolDetail = evidence?.toolDetail ?? "names";
|
|
244
268
|
const toolText = allotToolText(tail, evidence?.maxToolChars ?? 20_000, toolDetail);
|
|
245
|
-
for (const
|
|
246
|
-
|
|
247
|
-
|
|
269
|
+
for (const group of tailGroups) {
|
|
270
|
+
if (group.length > 1) {
|
|
271
|
+
const parts: string[] = [];
|
|
272
|
+
for (const event of group) {
|
|
273
|
+
if (event.type !== "progress") continue;
|
|
274
|
+
const text = (event.payload as { text?: unknown })?.text;
|
|
275
|
+
if (typeof text !== "string") continue;
|
|
276
|
+
const take = agentTextAllotments.get(event) ?? 0;
|
|
277
|
+
if (take > 0) parts.push(text.slice(0, take));
|
|
278
|
+
if (take < text.length && parts.at(-1) !== "… [truncated]") parts.push("… [truncated]");
|
|
279
|
+
}
|
|
280
|
+
lines.push(`agent: ${parts.join("")}`);
|
|
281
|
+
} else if (group[0]) {
|
|
282
|
+
const line = eventLine(group[0], agentTextAllotments, toolText.allotments, toolText.rendered);
|
|
283
|
+
if (line !== null) lines.push(line);
|
|
284
|
+
}
|
|
248
285
|
}
|
|
249
286
|
return lines.join("\n");
|
|
250
287
|
};
|
|
@@ -267,12 +304,41 @@ const MAX_ARTIFACT_EXCERPT = 20_000;
|
|
|
267
304
|
|
|
268
305
|
const boundedText = (value: string, limit: number, label: string): string =>
|
|
269
306
|
value.length <= limit ? value : `${value.slice(0, limit)}\n[... ${label} truncated ...]`;
|
|
307
|
+
const OPTIONAL_TRACE_TRUNCATION = "[... optional recent trace truncated from start ...]\n";
|
|
308
|
+
const OPTIONAL_ARTIFACT_TRUNCATION = "\n[... optional artifact evidence truncated ...]";
|
|
309
|
+
const OPTIONAL_EVIDENCE_OMISSION = "[... optional evidence omitted: prompt budget ...]";
|
|
270
310
|
|
|
271
|
-
|
|
311
|
+
// Complete invocation evidence is protected. Share the remaining prompt capacity
|
|
312
|
+
// between contextual trace and artifacts, including the omission markers themselves.
|
|
313
|
+
const fitOptionalEvidence = (
|
|
314
|
+
trace: string,
|
|
315
|
+
artifacts: string,
|
|
316
|
+
available: number,
|
|
317
|
+
): [string, string] => {
|
|
318
|
+
if (trace.length + artifacts.length <= available) return [trace, artifacts];
|
|
319
|
+
const traceMarker = OPTIONAL_TRACE_TRUNCATION;
|
|
320
|
+
const artifactMarker = OPTIONAL_ARTIFACT_TRUNCATION;
|
|
321
|
+
const discretionary = Math.max(0, available - traceMarker.length - artifactMarker.length);
|
|
322
|
+
const traceBudget =
|
|
323
|
+
traceMarker.length +
|
|
324
|
+
Math.floor((discretionary * trace.length) / (trace.length + artifacts.length));
|
|
325
|
+
const artifactBudget = available - traceBudget;
|
|
326
|
+
const traceTake = Math.max(0, traceBudget - traceMarker.length);
|
|
327
|
+
// Recent evidence is chronological: preserve the final answer and newest context.
|
|
328
|
+
const fittedTrace =
|
|
329
|
+
trace.length <= traceBudget ? trace : `${traceMarker}${trace.slice(trace.length - traceTake)}`;
|
|
330
|
+
const fittedArtifacts =
|
|
331
|
+
artifacts.length <= artifactBudget
|
|
332
|
+
? artifacts
|
|
333
|
+
: `${artifacts.slice(0, Math.max(0, artifactBudget - artifactMarker.length))}${artifactMarker}`;
|
|
334
|
+
return [fittedTrace, fittedArtifacts];
|
|
335
|
+
};
|
|
336
|
+
|
|
337
|
+
const artifactListing = (artifacts: Run["artifacts"]): string[] => {
|
|
272
338
|
const listed: string[] = [];
|
|
273
339
|
let listingChars = 0;
|
|
274
|
-
for (const
|
|
275
|
-
const path = boundedText(
|
|
340
|
+
for (const artifact of artifacts.slice(0, ARTIFACT_LISTING_CAP)) {
|
|
341
|
+
const path = `[origin: ${artifact.origin ?? "unknown"}] ${boundedText(artifact.path, 500, "artifact path")}`;
|
|
276
342
|
if (listingChars + path.length > ARTIFACT_LISTING_CHARS) {
|
|
277
343
|
listed.push("[... artifact listing character budget exhausted ...]");
|
|
278
344
|
break;
|
|
@@ -280,8 +346,8 @@ const artifactListing = (paths: readonly string[]): string[] => {
|
|
|
280
346
|
listed.push(path);
|
|
281
347
|
listingChars += path.length;
|
|
282
348
|
}
|
|
283
|
-
if (
|
|
284
|
-
listed.push(`[... ${
|
|
349
|
+
if (artifacts.length > listed.length) {
|
|
350
|
+
listed.push(`[... ${artifacts.length - listed.length} more selected files omitted ...]`);
|
|
285
351
|
}
|
|
286
352
|
return listed;
|
|
287
353
|
};
|
|
@@ -293,34 +359,142 @@ export const sampleArtifacts = async (
|
|
|
293
359
|
): Promise<string> => {
|
|
294
360
|
if (run.artifacts.length === 0) return "(no artifacts captured)";
|
|
295
361
|
const selected = evidence
|
|
296
|
-
? run.artifacts.filter(
|
|
297
|
-
|
|
362
|
+
? run.artifacts.filter(
|
|
363
|
+
(artifact) =>
|
|
364
|
+
matchesAnyGlob(artifact.path, evidence.artifactPatterns) &&
|
|
365
|
+
!matchesAnyGlob(artifact.path, evidence.artifactExcludes ?? []),
|
|
366
|
+
)
|
|
367
|
+
: [...run.artifacts];
|
|
298
368
|
if (selected.length === 0) return "(no artifacts matched the rubric evidence selector)";
|
|
299
|
-
|
|
369
|
+
// Keep the complete index visible, but spend excerpt budget on delivered changes first.
|
|
370
|
+
const priority = (origin: (typeof selected)[number]["origin"]) => {
|
|
371
|
+
if (origin === "fixture") return 2;
|
|
372
|
+
return origin === undefined ? 1 : 0;
|
|
373
|
+
};
|
|
374
|
+
selected.sort((left, right) => priority(left.origin) - priority(right.origin));
|
|
375
|
+
const listed = artifactListing(selected);
|
|
300
376
|
const out: string[] = [
|
|
301
377
|
`Files selected (${selected.length} of ${run.artifacts.length}):\n${listed.join("\n")}`,
|
|
378
|
+
"Selection counts refer to captured paths matching this criterion, not capture failures. Listed files are not necessarily shown in full below.",
|
|
379
|
+
"Origins compare captured paths and bytes with the supplied fixture snapshot: fixture = unchanged supplied file; modified = changed supplied file; generated = captured path absent from that snapshot; unknown = not established. Supplied content is baseline context, not proof of newly implemented work. Retained behavior can satisfy requirements; modified or generated files do not by themselves prove correctness or authorship.",
|
|
302
380
|
];
|
|
303
|
-
if (evidence?.includeArtifactContents === false)
|
|
381
|
+
if (evidence?.includeArtifactContents === false) {
|
|
382
|
+
out.push("[File contents excluded by the evidence selector.]");
|
|
383
|
+
return out.join("\n\n");
|
|
384
|
+
}
|
|
304
385
|
let budget = Math.min(evidence?.maxArtifactChars ?? 60_000, MAX_ARTIFACT_CHARS);
|
|
305
|
-
|
|
306
|
-
|
|
386
|
+
// Empty and unreadable files still cost framing; do not let them evade the cap.
|
|
387
|
+
let framingBudget = 8_000;
|
|
388
|
+
for (const [index, artifact] of selected.entries()) {
|
|
389
|
+
const path = boundedText(artifact.path, 500, "artifact path");
|
|
390
|
+
if (budget <= 0 || framingBudget < path.length + 100) {
|
|
391
|
+
out.push(
|
|
392
|
+
`[Content omitted for ${selected.length - index} remaining selected file(s): artifact ${budget <= 0 ? "character" : "framing"} budget exhausted.]`,
|
|
393
|
+
);
|
|
394
|
+
break;
|
|
395
|
+
}
|
|
307
396
|
const limit = Math.min(perFileLimit, budget);
|
|
308
|
-
const content = await
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
.
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
budget -= content.length;
|
|
316
|
-
|
|
397
|
+
const content = await readRunArtifactExcerpt(run, artifact.path, limit).catch(() => null);
|
|
398
|
+
if (content === null) {
|
|
399
|
+
const marker = `[Content unavailable: ${path}. The captured file could not be read safely.]`;
|
|
400
|
+
framingBudget -= marker.length + 2;
|
|
401
|
+
out.push(marker);
|
|
402
|
+
continue;
|
|
403
|
+
}
|
|
404
|
+
budget -= content.text.length;
|
|
405
|
+
const block = `Origin: ${artifact.origin ?? "unknown"}\n--- ${path} ---\n${content.text}${content.truncated ? "\n[File excerpt truncated; omitted content is unassessed.]" : ""}`;
|
|
406
|
+
framingBudget -= block.length - content.text.length + 2;
|
|
407
|
+
out.push(block);
|
|
317
408
|
}
|
|
318
409
|
return out.join("\n\n");
|
|
319
410
|
};
|
|
320
411
|
|
|
321
|
-
|
|
412
|
+
type InvocationCompleteness = {
|
|
413
|
+
complete: boolean;
|
|
414
|
+
total: number;
|
|
415
|
+
included: number;
|
|
416
|
+
bytes: number;
|
|
417
|
+
};
|
|
418
|
+
|
|
419
|
+
export class IncompleteInvocationEvidence extends Error {
|
|
420
|
+
readonly detail: InvocationCompleteness;
|
|
421
|
+
constructor(message: string, detail: InvocationCompleteness) {
|
|
422
|
+
super(message);
|
|
423
|
+
this.detail = detail;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
const allToolInvocations = (
|
|
428
|
+
run: Run,
|
|
429
|
+
budget: number,
|
|
430
|
+
): { text: string; detail: InvocationCompleteness } => {
|
|
431
|
+
const calls = run.events.filter(
|
|
432
|
+
(event) => event.type === "progress" && event.kind === "tool-call",
|
|
433
|
+
);
|
|
434
|
+
const detail: InvocationCompleteness = {
|
|
435
|
+
complete: false,
|
|
436
|
+
total: calls.length,
|
|
437
|
+
included: 0,
|
|
438
|
+
bytes: 0,
|
|
439
|
+
};
|
|
440
|
+
const lines: string[] = [];
|
|
441
|
+
try {
|
|
442
|
+
for (const event of calls) {
|
|
443
|
+
const payload = (event as Extract<RunEvent, { type: "progress" }>).payload as {
|
|
444
|
+
name?: unknown;
|
|
445
|
+
input?: unknown;
|
|
446
|
+
};
|
|
447
|
+
if (
|
|
448
|
+
typeof payload?.name !== "string" ||
|
|
449
|
+
!("input" in payload) ||
|
|
450
|
+
payload.input === undefined
|
|
451
|
+
) {
|
|
452
|
+
throw new Error("tool invocation lacks a name or input");
|
|
453
|
+
}
|
|
454
|
+
lines.push(JSON.stringify({ name: payload.name, input: payload.input }));
|
|
455
|
+
}
|
|
456
|
+
} catch {
|
|
457
|
+
throw new IncompleteInvocationEvidence(
|
|
458
|
+
"Complete tool invocation evidence cannot be serialized.",
|
|
459
|
+
detail,
|
|
460
|
+
);
|
|
461
|
+
}
|
|
462
|
+
const inventory = lines.join("\n");
|
|
463
|
+
detail.bytes = Buffer.byteLength(inventory, "utf8");
|
|
464
|
+
if (inventory.length > budget) {
|
|
465
|
+
throw new IncompleteInvocationEvidence(
|
|
466
|
+
"Complete tool invocation evidence exceeds the explicit invocation-character budget.",
|
|
467
|
+
detail,
|
|
468
|
+
);
|
|
469
|
+
}
|
|
470
|
+
detail.complete = true;
|
|
471
|
+
detail.included = calls.length;
|
|
472
|
+
return {
|
|
473
|
+
text: `Complete chronological tool invocations: ${JSON.stringify(detail)}\nThis inventory includes every recorded tool invocation independently of omissions in the recent trace. It does not establish completeness of tool results or artifact contents.\n${inventory}`,
|
|
474
|
+
detail,
|
|
475
|
+
};
|
|
476
|
+
};
|
|
477
|
+
|
|
478
|
+
export const buildJudgeEvidence = async (
|
|
479
|
+
config: RubricConfig,
|
|
480
|
+
run: Run,
|
|
481
|
+
): Promise<{
|
|
482
|
+
prompt: string;
|
|
483
|
+
toolInvocations?: InvocationCompleteness;
|
|
484
|
+
}> => {
|
|
485
|
+
const invocations =
|
|
486
|
+
config.evidence.toolInvocations === "all"
|
|
487
|
+
? allToolInvocations(run, config.evidence.maxInvocationChars)
|
|
488
|
+
: undefined;
|
|
322
489
|
if (config.promptOverride) {
|
|
323
|
-
|
|
490
|
+
if (invocations)
|
|
491
|
+
throw new IncompleteInvocationEvidence(
|
|
492
|
+
"A prompt override cannot establish complete tool invocation evidence.",
|
|
493
|
+
{ ...invocations.detail, complete: false, included: 0 },
|
|
494
|
+
);
|
|
495
|
+
return {
|
|
496
|
+
prompt: boundedText(config.promptOverride, JUDGE_PROMPT_CHARS, "judge prompt override"),
|
|
497
|
+
};
|
|
324
498
|
}
|
|
325
499
|
const evidence: RubricEvidence = {
|
|
326
500
|
...config.evidence,
|
|
@@ -329,35 +503,79 @@ export const buildJudgePrompt = async (config: RubricConfig, run: Run): Promise<
|
|
|
329
503
|
maxToolChars: Math.min(config.evidence.maxToolChars, MAX_TOOL_CHARS),
|
|
330
504
|
maxArtifactChars: Math.min(config.evidence.maxArtifactChars, MAX_ARTIFACT_CHARS),
|
|
331
505
|
};
|
|
332
|
-
|
|
506
|
+
if (invocations) {
|
|
507
|
+
evidence.eventTypes = evidence.eventTypes.filter((type) => type !== "tool-call");
|
|
508
|
+
}
|
|
509
|
+
const required = [
|
|
333
510
|
`Agent task: ${boundedText(run.case.prompt, 20_000, "agent task")}`,
|
|
334
511
|
"",
|
|
335
512
|
`Criterion to judge: ${boundedText(config.criteria, 8_000, "criterion")}`,
|
|
336
513
|
"",
|
|
337
|
-
|
|
338
|
-
|
|
514
|
+
...(config.guidance ? [`Interpretation guidance: ${config.guidance}`, ""] : []),
|
|
515
|
+
`Evidence selection: recent trace event types are ${evidence.eventTypes.join(", ") || "none"}; tool detail is ${evidence.toolDetail}. Unselected events and excluded artifact contents are not evidence of missing work.`,
|
|
339
516
|
"",
|
|
340
|
-
"
|
|
341
|
-
await sampleArtifacts(run, Math.min(config.maxArtifactExcerpt, MAX_ARTIFACT_EXCERPT), evidence),
|
|
517
|
+
...(invocations ? [invocations.text, ""] : []),
|
|
342
518
|
].join("\n");
|
|
343
|
-
|
|
519
|
+
const assemble = (recent: string, files: string): string =>
|
|
520
|
+
`${required}\nRecent run trace:\n${recent}\n\nCaptured artifacts (excerpted):\n${files}`;
|
|
521
|
+
const available = JUDGE_PROMPT_CHARS - assemble("", "").length;
|
|
522
|
+
if (invocations) {
|
|
523
|
+
// Reserve the minimal explicit omission notice, not verbose optional section markers.
|
|
524
|
+
if (`${required}\n${OPTIONAL_EVIDENCE_OMISSION}`.length > JUDGE_PROMPT_CHARS) {
|
|
525
|
+
throw new IncompleteInvocationEvidence(
|
|
526
|
+
"Complete tool invocation evidence and required framing exceed the judge-prompt budget.",
|
|
527
|
+
{ ...invocations.detail, complete: false, included: 0 },
|
|
528
|
+
);
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
let trace = summarizeEvents(run.events, evidence.maxEvents, evidence);
|
|
532
|
+
let artifacts = await sampleArtifacts(
|
|
533
|
+
run,
|
|
534
|
+
Math.min(config.maxArtifactExcerpt, MAX_ARTIFACT_EXCERPT),
|
|
535
|
+
evidence,
|
|
536
|
+
);
|
|
537
|
+
let prompt: string;
|
|
538
|
+
if (
|
|
539
|
+
invocations &&
|
|
540
|
+
trace.length + artifacts.length > available &&
|
|
541
|
+
available < OPTIONAL_TRACE_TRUNCATION.length + OPTIONAL_ARTIFACT_TRUNCATION.length
|
|
542
|
+
) {
|
|
543
|
+
prompt = `${required}\n${OPTIONAL_EVIDENCE_OMISSION}`;
|
|
544
|
+
} else {
|
|
545
|
+
if (invocations) [trace, artifacts] = fitOptionalEvidence(trace, artifacts, available);
|
|
546
|
+
prompt = assemble(trace, artifacts);
|
|
547
|
+
}
|
|
548
|
+
return {
|
|
549
|
+
prompt: boundedText(prompt, JUDGE_PROMPT_CHARS, "judge prompt"),
|
|
550
|
+
...(invocations ? { toolInvocations: invocations.detail } : {}),
|
|
551
|
+
};
|
|
344
552
|
};
|
|
345
553
|
|
|
346
|
-
const
|
|
347
|
-
.
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
})
|
|
351
|
-
|
|
554
|
+
export const buildJudgePrompt = async (config: RubricConfig, run: Run): Promise<string> =>
|
|
555
|
+
(await buildJudgeEvidence(config, run)).prompt;
|
|
556
|
+
|
|
557
|
+
const JudgeResponseSchema = z.union([
|
|
558
|
+
z.object({ score: z.number().min(0).max(1), comment: z.string().min(1).max(2_000) }).strict(),
|
|
559
|
+
z
|
|
560
|
+
.object({
|
|
561
|
+
abstention: z.literal("insufficient-evidence"),
|
|
562
|
+
comment: z.string().min(1).max(2_000),
|
|
563
|
+
})
|
|
564
|
+
.strict()
|
|
565
|
+
.transform((response) => ({ ...response, score: 0 })),
|
|
566
|
+
]);
|
|
567
|
+
type JudgeResponse = z.output<typeof JudgeResponseSchema>;
|
|
352
568
|
|
|
353
|
-
export const tryParseJudgeResponse = (text: string):
|
|
569
|
+
export const tryParseJudgeResponse = (text: string): JudgeResponse | null => {
|
|
354
570
|
const trimmed = text.trim();
|
|
355
571
|
const fenced = /^```(?:json)?\s*\n([\s\S]*?)\n```\s*$/i.exec(trimmed);
|
|
356
572
|
const cleaned = fenced?.[1]?.trim() ?? trimmed;
|
|
357
|
-
|
|
573
|
+
const response = JudgeResponseSchema.safeParse(tryParseJson(cleaned)).data;
|
|
574
|
+
if (!response) return null;
|
|
575
|
+
return response;
|
|
358
576
|
};
|
|
359
577
|
|
|
360
|
-
export const parseJudgeResponse = (text: string):
|
|
578
|
+
export const parseJudgeResponse = (text: string): JudgeResponse => {
|
|
361
579
|
const verdict = tryParseJudgeResponse(text);
|
|
362
580
|
if (verdict) return verdict;
|
|
363
581
|
return {
|