@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
package/viewer/format.js
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
export const escapeHtml = (value) =>
|
|
2
|
+
String(value ?? "").replace(
|
|
3
|
+
/[&<>"']/g,
|
|
4
|
+
(character) =>
|
|
5
|
+
({ "&": "&", "<": "<", ">": ">", '"': """, "'": "'" })[character],
|
|
6
|
+
);
|
|
7
|
+
|
|
8
|
+
export const percentage = (value) =>
|
|
9
|
+
typeof value === "number" ? `${Number((value * 100).toPrecision(15))}%` : "—";
|
|
10
|
+
|
|
11
|
+
export const signedPercentage = (value) => {
|
|
12
|
+
if (typeof value !== "number") return "—";
|
|
13
|
+
const rounded = Number((value * 100).toPrecision(15));
|
|
14
|
+
return `${rounded > 0 ? "+" : ""}${rounded}%`;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export const duration = (milliseconds) => {
|
|
18
|
+
if (typeof milliseconds !== "number") return "—";
|
|
19
|
+
if (milliseconds < 1_000) return `${Math.round(milliseconds)}ms`;
|
|
20
|
+
if (milliseconds < 60_000) return `${(milliseconds / 1_000).toFixed(1)}s`;
|
|
21
|
+
return `${Math.floor(milliseconds / 60_000)}m ${Math.round((milliseconds % 60_000) / 1_000)}s`;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export const signedDuration = (milliseconds) => {
|
|
25
|
+
if (typeof milliseconds !== "number") return "—";
|
|
26
|
+
return `${milliseconds > 0 ? "+" : ""}${duration(milliseconds)}`;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export const compactNumber = (value) =>
|
|
30
|
+
new Intl.NumberFormat(undefined, { notation: "compact", maximumFractionDigits: 1 }).format(
|
|
31
|
+
value ?? 0,
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
export const relativeTime = (value) => {
|
|
35
|
+
if (!value) return "unknown";
|
|
36
|
+
const elapsed = Date.now() - Date.parse(value);
|
|
37
|
+
if (!Number.isFinite(elapsed)) return "unknown";
|
|
38
|
+
const minutes = Math.floor(elapsed / 60_000);
|
|
39
|
+
if (minutes < 1) return "now";
|
|
40
|
+
if (minutes < 60) return `${minutes}m`;
|
|
41
|
+
const hours = Math.floor(minutes / 60);
|
|
42
|
+
if (hours < 24) return `${hours}h`;
|
|
43
|
+
return `${Math.floor(hours / 24)}d`;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export const fullDate = (value) => {
|
|
47
|
+
if (!value) return "—";
|
|
48
|
+
const date = new Date(value);
|
|
49
|
+
return Number.isNaN(date.valueOf())
|
|
50
|
+
? "—"
|
|
51
|
+
: new Intl.DateTimeFormat(undefined, {
|
|
52
|
+
month: "short",
|
|
53
|
+
day: "numeric",
|
|
54
|
+
hour: "numeric",
|
|
55
|
+
minute: "2-digit",
|
|
56
|
+
}).format(date);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export const statusLabel = (status) =>
|
|
60
|
+
({
|
|
61
|
+
passed: "Passed",
|
|
62
|
+
failed: "Failed",
|
|
63
|
+
running: "Running",
|
|
64
|
+
aborted: "Aborted",
|
|
65
|
+
error: "Error",
|
|
66
|
+
promote: "Promote",
|
|
67
|
+
retain: "Retain",
|
|
68
|
+
reject: "Reject",
|
|
69
|
+
incomplete: "Incomplete",
|
|
70
|
+
})[status] ?? "Ungraded";
|
|
71
|
+
|
|
72
|
+
export const badge = (status) =>
|
|
73
|
+
`<span class="status-badge ${escapeHtml(status)}">${escapeHtml(statusLabel(status))}</span>`;
|
|
74
|
+
|
|
75
|
+
export const totalTokens = (usage = {}) =>
|
|
76
|
+
(usage.input ?? 0) + (usage.output ?? 0) + (usage.cacheRead ?? 0) + (usage.cacheCreation ?? 0);
|
|
77
|
+
|
|
78
|
+
export const toneForDelta = (value, lowerIsBetter = false) => {
|
|
79
|
+
if (!value) return "metric-neutral";
|
|
80
|
+
const better = lowerIsBetter ? value < 0 : value > 0;
|
|
81
|
+
return better ? "metric-good" : "metric-bad";
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export const finite = (value, digits = 2) =>
|
|
85
|
+
typeof value === "number" && Number.isFinite(value)
|
|
86
|
+
? value.toLocaleString(undefined, { maximumFractionDigits: digits })
|
|
87
|
+
: "—";
|
|
88
|
+
|
|
89
|
+
const bytes = (value) => {
|
|
90
|
+
if (typeof value !== "number" || !Number.isFinite(value)) return "—";
|
|
91
|
+
if (Math.abs(value) < 1_024) return `${finite(value)} B`;
|
|
92
|
+
if (Math.abs(value) < 1_048_576) return `${finite(value / 1_024)} KiB`;
|
|
93
|
+
return `${finite(value / 1_048_576)} MiB`;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
export const metricValue = (value, unit = "number") => {
|
|
97
|
+
if (unit === "milliseconds") return duration(value);
|
|
98
|
+
if (unit === "bytes") return bytes(value);
|
|
99
|
+
if (unit === "tokens") return typeof value === "number" ? `${compactNumber(value)} tokens` : "—";
|
|
100
|
+
if (unit === "usd") return typeof value === "number" ? `$${finite(value, 4)}` : "—";
|
|
101
|
+
if (unit === "ratio" || unit === "score") return percentage(value);
|
|
102
|
+
if (unit === "percent") return typeof value === "number" ? `${finite(value)}%` : "—";
|
|
103
|
+
return finite(value);
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
export const metricName = (name, label) => {
|
|
107
|
+
if (label) return label;
|
|
108
|
+
const tail =
|
|
109
|
+
String(name)
|
|
110
|
+
.replace(/^driver\./, "")
|
|
111
|
+
.split(".")
|
|
112
|
+
.at(-1) ?? String(name);
|
|
113
|
+
return tail
|
|
114
|
+
.replace(/([a-z0-9])([A-Z])/g, "$1 $2")
|
|
115
|
+
.replace(/[-_]+/g, " ")
|
|
116
|
+
.replace(/^./, (character) => character.toUpperCase());
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
export const detailLoading = (label) =>
|
|
120
|
+
`<div class="loading-card"><span></span><span></span><span></span><p>${escapeHtml(label)}</p></div>`;
|
|
121
|
+
|
|
122
|
+
export const detailError = (message) => `<div class="error-card">${escapeHtml(message)}</div>`;
|
|
123
|
+
|
|
124
|
+
export const detailEmpty = () => `
|
|
125
|
+
<div class="inspector-empty">
|
|
126
|
+
<span class="empty-glyph" aria-hidden="true">↗</span>
|
|
127
|
+
<h2>Select evidence to inspect</h2>
|
|
128
|
+
<p>Scores, assertions, traces, spend, and artifacts meet here.</p>
|
|
129
|
+
</div>`;
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<meta name="color-scheme" content="dark" />
|
|
7
|
+
<meta name="theme-color" content="#0b0d0f" />
|
|
8
|
+
<meta
|
|
9
|
+
name="description"
|
|
10
|
+
content="A local review cockpit for Lux evaluation runs and experiments."
|
|
11
|
+
/>
|
|
12
|
+
<title>Lux Review</title>
|
|
13
|
+
<link rel="stylesheet" href="/assets/app.css" />
|
|
14
|
+
<script src="/assets/app.js" type="module"></script>
|
|
15
|
+
</head>
|
|
16
|
+
<body>
|
|
17
|
+
<div class="app-shell">
|
|
18
|
+
<aside class="sidebar">
|
|
19
|
+
<a class="brand" href="/" aria-label="Lux Review home">
|
|
20
|
+
<span class="brand-mark" aria-hidden="true">LX</span>
|
|
21
|
+
<span>
|
|
22
|
+
<strong>LUX</strong>
|
|
23
|
+
<small>REVIEW</small>
|
|
24
|
+
</span>
|
|
25
|
+
</a>
|
|
26
|
+
|
|
27
|
+
<nav class="primary-nav" aria-label="Evidence type">
|
|
28
|
+
<button class="nav-item is-active" type="button" data-tab="runs">
|
|
29
|
+
<span class="nav-glyph" aria-hidden="true">R</span>
|
|
30
|
+
<span>Runs</span>
|
|
31
|
+
<span class="nav-count" data-count="runs">0</span>
|
|
32
|
+
</button>
|
|
33
|
+
<button class="nav-item" type="button" data-tab="suites">
|
|
34
|
+
<span class="nav-glyph" aria-hidden="true">S</span>
|
|
35
|
+
<span>Suites</span>
|
|
36
|
+
<span class="nav-count" data-count="suites">0</span>
|
|
37
|
+
</button>
|
|
38
|
+
<button class="nav-item" type="button" data-tab="experiments">
|
|
39
|
+
<span class="nav-glyph" aria-hidden="true">E</span>
|
|
40
|
+
<span>Experiments</span>
|
|
41
|
+
<span class="nav-count" data-count="experiments">0</span>
|
|
42
|
+
</button>
|
|
43
|
+
</nav>
|
|
44
|
+
|
|
45
|
+
<div class="sidebar-note">
|
|
46
|
+
<span class="pulse-dot" aria-hidden="true"></span>
|
|
47
|
+
<span>
|
|
48
|
+
<strong>Local evidence</strong>
|
|
49
|
+
<small>Read-only · auto-refreshing</small>
|
|
50
|
+
</span>
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
<div class="shortcut-card">
|
|
54
|
+
<p>Shortcuts</p>
|
|
55
|
+
<dl>
|
|
56
|
+
<div class="shortcut-row"><dt><kbd>/</kbd></dt><dd>Search</dd></div>
|
|
57
|
+
<div class="shortcut-row"><dt><kbd>J</kbd> <kbd>K</kbd></dt><dd>Move</dd></div>
|
|
58
|
+
<div class="shortcut-row"><dt><kbd>R</kbd></dt><dd>Refresh</dd></div>
|
|
59
|
+
</dl>
|
|
60
|
+
</div>
|
|
61
|
+
</aside>
|
|
62
|
+
|
|
63
|
+
<main>
|
|
64
|
+
<header class="topbar">
|
|
65
|
+
<div>
|
|
66
|
+
<span class="eyebrow">Evaluation evidence</span>
|
|
67
|
+
<h1>Evidence, at a glance.</h1>
|
|
68
|
+
</div>
|
|
69
|
+
<div class="topbar-actions">
|
|
70
|
+
<label class="search">
|
|
71
|
+
<span aria-hidden="true">⌕</span>
|
|
72
|
+
<input
|
|
73
|
+
id="search-input"
|
|
74
|
+
type="search"
|
|
75
|
+
placeholder="Search cases, drivers, campaigns…"
|
|
76
|
+
autocomplete="off"
|
|
77
|
+
/>
|
|
78
|
+
<kbd>/</kbd>
|
|
79
|
+
</label>
|
|
80
|
+
<button class="icon-button" id="refresh-button" type="button" aria-label="Refresh data">
|
|
81
|
+
↻
|
|
82
|
+
</button>
|
|
83
|
+
</div>
|
|
84
|
+
</header>
|
|
85
|
+
|
|
86
|
+
<section class="metrics" aria-label="Evidence summary">
|
|
87
|
+
<article>
|
|
88
|
+
<span>Graded pass rate</span>
|
|
89
|
+
<strong id="metric-pass-rate">—</strong>
|
|
90
|
+
<small id="metric-pass-note">No graded runs</small>
|
|
91
|
+
</article>
|
|
92
|
+
<article>
|
|
93
|
+
<span>Needs attention</span>
|
|
94
|
+
<strong id="metric-failures">0</strong>
|
|
95
|
+
<small>Failed or errored runs</small>
|
|
96
|
+
</article>
|
|
97
|
+
<article>
|
|
98
|
+
<span>Experiment activity</span>
|
|
99
|
+
<strong id="metric-experiments">0</strong>
|
|
100
|
+
<small id="metric-experiment-note">No campaigns yet</small>
|
|
101
|
+
</article>
|
|
102
|
+
<article>
|
|
103
|
+
<span>Last evidence</span>
|
|
104
|
+
<strong id="metric-recency">—</strong>
|
|
105
|
+
<small id="metric-refresh">Waiting for local data</small>
|
|
106
|
+
</article>
|
|
107
|
+
</section>
|
|
108
|
+
|
|
109
|
+
<section class="workspace">
|
|
110
|
+
<div class="collection-pane">
|
|
111
|
+
<div class="collection-toolbar">
|
|
112
|
+
<div>
|
|
113
|
+
<span class="eyebrow" id="collection-eyebrow">Individual evidence</span>
|
|
114
|
+
<h2 id="collection-title">Runs</h2>
|
|
115
|
+
</div>
|
|
116
|
+
<div class="collection-actions">
|
|
117
|
+
<span class="result-count" id="result-count">0 records</span>
|
|
118
|
+
<button class="compare-button" id="compare-button" type="button">Compare</button>
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
|
121
|
+
<div class="compare-tray" id="compare-tray" hidden></div>
|
|
122
|
+
<fieldset
|
|
123
|
+
class="status-filters"
|
|
124
|
+
id="status-filters"
|
|
125
|
+
aria-label="Filter by status"
|
|
126
|
+
></fieldset>
|
|
127
|
+
<div class="collection-list" id="collection-list" aria-live="polite">
|
|
128
|
+
<div class="loading-card">
|
|
129
|
+
<span></span><span></span><span></span>
|
|
130
|
+
<p>Reading Lux evidence…</p>
|
|
131
|
+
</div>
|
|
132
|
+
</div>
|
|
133
|
+
</div>
|
|
134
|
+
|
|
135
|
+
<aside class="inspector" id="inspector" aria-label="Evidence detail">
|
|
136
|
+
<div class="inspector-empty">
|
|
137
|
+
<span class="empty-glyph" aria-hidden="true">↗</span>
|
|
138
|
+
<h2>Select evidence to inspect</h2>
|
|
139
|
+
<p>Scores, assertions, traces, spend, and artifacts meet here.</p>
|
|
140
|
+
</div>
|
|
141
|
+
</aside>
|
|
142
|
+
</section>
|
|
143
|
+
|
|
144
|
+
<footer>
|
|
145
|
+
<span id="runs-root">Local Lux run store</span>
|
|
146
|
+
<span id="connection-state"><i></i> Connected</span>
|
|
147
|
+
</footer>
|
|
148
|
+
</main>
|
|
149
|
+
</div>
|
|
150
|
+
</body>
|
|
151
|
+
</html>
|
package/lib/cli/skills.d.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
declare const PlatformSchema: z.ZodEnum<{
|
|
3
|
-
all: "all";
|
|
4
|
-
claude: "claude";
|
|
5
|
-
"claude-code": "claude-code";
|
|
6
|
-
codex: "codex";
|
|
7
|
-
}>;
|
|
8
|
-
export type SkillsPlatform = z.infer<typeof PlatformSchema>;
|
|
9
|
-
declare const SkillNameSchema: z.ZodEnum<{
|
|
10
|
-
lux: "lux";
|
|
11
|
-
"lux-answerer": "lux-answerer";
|
|
12
|
-
}>;
|
|
13
|
-
export type BundledSkillName = z.infer<typeof SkillNameSchema>;
|
|
14
|
-
declare const InstallSkillsOptionsSchema: z.ZodObject<{
|
|
15
|
-
cwd: z.ZodString;
|
|
16
|
-
platform: z.ZodEnum<{
|
|
17
|
-
all: "all";
|
|
18
|
-
claude: "claude";
|
|
19
|
-
"claude-code": "claude-code";
|
|
20
|
-
codex: "codex";
|
|
21
|
-
}>;
|
|
22
|
-
project: z.ZodDefault<z.ZodBoolean>;
|
|
23
|
-
dir: z.ZodOptional<z.ZodString>;
|
|
24
|
-
name: z.ZodOptional<z.ZodEnum<{
|
|
25
|
-
lux: "lux";
|
|
26
|
-
"lux-answerer": "lux-answerer";
|
|
27
|
-
}>>;
|
|
28
|
-
}, z.core.$strict>;
|
|
29
|
-
export interface InstalledSkill {
|
|
30
|
-
name: BundledSkillName;
|
|
31
|
-
platform: "claude-code" | "codex";
|
|
32
|
-
path: string;
|
|
33
|
-
}
|
|
34
|
-
export declare const formatSkillsList: () => string;
|
|
35
|
-
export declare const installSkills: (options: z.input<typeof InstallSkillsOptionsSchema>) => Promise<InstalledSkill[]>;
|
|
36
|
-
export declare const formatSkillsInstall: (installed: InstalledSkill[], cwd: string) => string;
|
|
37
|
-
export {};
|
|
38
|
-
//# sourceMappingURL=skills.d.ts.map
|
package/lib/cli/skills.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/cli/skills.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,QAAA,MAAM,cAAc;;;;;EAAoD,CAAC;AACzE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAC5D,QAAA,MAAM,eAAe;;;EAAkC,CAAC;AACxD,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE/D,QAAA,MAAM,0BAA0B;;;;;;;;;;;;;;kBAQrB,CAAC;AAEZ,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;CACd;AAmBD,eAAO,MAAM,gBAAgB,QAAO,MAGtB,CAAC;AA2Df,eAAO,MAAM,aAAa,YACf,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,KAClD,OAAO,CAAC,cAAc,EAAE,CAU1B,CAAC;AAEF,eAAO,MAAM,mBAAmB,cAAe,cAAc,EAAE,OAAO,MAAM,KAAG,MAQhE,CAAC"}
|
package/lib/cli/skills.js
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { lstat, mkdir, readdir, readFile, writeFile } from "node:fs/promises";
|
|
2
|
-
import { homedir } from "node:os";
|
|
3
|
-
import { dirname, join, relative, resolve, sep } from "node:path";
|
|
4
|
-
import { fileURLToPath } from "node:url";
|
|
5
|
-
import { z } from "zod";
|
|
6
|
-
const PlatformSchema = z.enum(["claude", "claude-code", "codex", "all"]);
|
|
7
|
-
const SkillNameSchema = z.enum(["lux", "lux-answerer"]);
|
|
8
|
-
const InstallSkillsOptionsSchema = z
|
|
9
|
-
.object({
|
|
10
|
-
cwd: z.string().min(1),
|
|
11
|
-
platform: PlatformSchema,
|
|
12
|
-
project: z.boolean().default(false),
|
|
13
|
-
dir: z.string().min(1).optional(),
|
|
14
|
-
name: SkillNameSchema.optional(),
|
|
15
|
-
})
|
|
16
|
-
.strict();
|
|
17
|
-
const BUNDLED_SKILLS = [
|
|
18
|
-
{
|
|
19
|
-
name: "lux",
|
|
20
|
-
description: "Author and drive coding-agent evals with Lux",
|
|
21
|
-
platforms: ["claude-code", "codex"],
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
name: "lux-answerer",
|
|
25
|
-
description: "Play a simulated user for a running Lux eval",
|
|
26
|
-
platforms: ["claude-code"],
|
|
27
|
-
},
|
|
28
|
-
];
|
|
29
|
-
export const formatSkillsList = () => BUNDLED_SKILLS.map(({ name, description, platforms }) => `${name}\t${description}\t${platforms.join(",")}`).join("\n");
|
|
30
|
-
const targetsFor = (platform, cwd, project, dir, name) => {
|
|
31
|
-
const platforms = platform === "all"
|
|
32
|
-
? ["claude-code", "codex"]
|
|
33
|
-
: [platform === "claude" ? "claude-code" : platform];
|
|
34
|
-
const scopeRoot = project ? resolve(cwd) : homedir();
|
|
35
|
-
const skills = name ? BUNDLED_SKILLS.filter((skill) => skill.name === name) : BUNDLED_SKILLS;
|
|
36
|
-
return platforms.flatMap((platformName) => skills
|
|
37
|
-
.filter((skill) => skill.platforms.includes(platformName))
|
|
38
|
-
.map((skill) => ({
|
|
39
|
-
name: skill.name,
|
|
40
|
-
platform: platformName,
|
|
41
|
-
source: fileURLToPath(new URL(`../../skills/${skill.name}`, import.meta.url)),
|
|
42
|
-
path: dir
|
|
43
|
-
? join(resolve(dir), skill.name)
|
|
44
|
-
: join(scopeRoot, platformName === "claude-code" ? ".claude" : ".codex", "skills", skill.name),
|
|
45
|
-
})));
|
|
46
|
-
};
|
|
47
|
-
const copySkillDirectory = async (source, target) => {
|
|
48
|
-
const sourceInfo = await lstat(source);
|
|
49
|
-
if (!sourceInfo.isDirectory() || sourceInfo.isSymbolicLink()) {
|
|
50
|
-
throw new Error(`lux skills: bundled skill source is not a real directory: ${source}`);
|
|
51
|
-
}
|
|
52
|
-
await mkdir(target, { recursive: true });
|
|
53
|
-
for (const entry of await readdir(source, { withFileTypes: true })) {
|
|
54
|
-
const sourcePath = join(source, entry.name);
|
|
55
|
-
const targetPath = join(target, entry.name);
|
|
56
|
-
if (entry.isSymbolicLink()) {
|
|
57
|
-
throw new Error(`lux skills: bundled skill contains a symbolic link: ${sourcePath}`);
|
|
58
|
-
}
|
|
59
|
-
if (entry.isDirectory()) {
|
|
60
|
-
await copySkillDirectory(sourcePath, targetPath);
|
|
61
|
-
}
|
|
62
|
-
else if (entry.isFile()) {
|
|
63
|
-
await mkdir(dirname(targetPath), { recursive: true });
|
|
64
|
-
await writeFile(targetPath, await readFile(sourcePath));
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
throw new Error(`lux skills: bundled skill contains an unsupported entry: ${sourcePath}`);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
export const installSkills = async (options) => {
|
|
72
|
-
const parsed = InstallSkillsOptionsSchema.parse(options);
|
|
73
|
-
const targets = targetsFor(parsed.platform, parsed.cwd, parsed.project, parsed.dir, parsed.name);
|
|
74
|
-
if (targets.length === 0) {
|
|
75
|
-
throw new Error(`lux skills: '${parsed.name}' is not available for platform '${parsed.platform}'`);
|
|
76
|
-
}
|
|
77
|
-
for (const target of targets)
|
|
78
|
-
await copySkillDirectory(target.source, target.path);
|
|
79
|
-
return targets.map(({ source: _, ...installed }) => installed);
|
|
80
|
-
};
|
|
81
|
-
export const formatSkillsInstall = (installed, cwd) => installed
|
|
82
|
-
.map(({ name, platform, path }) => `installed ${name} skill for ${platform} at ${relative(cwd, path).split(sep).join("/") || "."}`)
|
|
83
|
-
.join("\n");
|
|
84
|
-
//# sourceMappingURL=skills.js.map
|
package/lib/cli/skills.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/cli/skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"secure-copy.d.ts","sourceRoot":"","sources":["../../../src/drivers/shared/secure-copy.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,uBAAuB,eACtB,MAAM,cACN,MAAM,cACN,MAAM,KACjB,OAAO,CAAC,IAAI,CA0Bd,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"secure-copy.js","sourceRoot":"","sources":["../../../src/drivers/shared/secure-copy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,KAAa,EAAW,EAAE;IAC1D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAC1C,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EACH,EAAE;IACjB,IAAI,CAAC,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,iCAAiC,UAAU,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,GAAG,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC;IACxF,IAAI,MAAoD,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,UAAU,EAAE,CAAC,CAAC;QAC3F,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,qDAAqD,UAAU,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC;QAChD,IACE,CAAC,YAAY,CAAC,MAAM,EAAE;YACtB,YAAY,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG;YACnC,YAAY,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EACnC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,2CAA2C,UAAU,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;QAC/D,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC;AACH,CAAC,CAAC"}
|
package/skills/lux/SKILL.md
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: lux
|
|
3
|
-
description: Author, validate, run, inspect, compare, and improve coding-agent evaluations with the Lux CLI. Use when creating or reviewing Lux cases, custom assertions, lifecycle fixtures, driver or harness configuration, campaigns, grader annotations, diagnosing eval failures, comparing runs, or running and promoting Lux experiments.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Lux
|
|
7
|
-
|
|
8
|
-
Use Lux as an eval test runner and evidence system for coding agents. Prefer
|
|
9
|
-
small, discriminating cases with deterministic assertions; add an LLM rubric
|
|
10
|
-
only for qualities that artifacts and commands cannot establish.
|
|
11
|
-
|
|
12
|
-
## Start here
|
|
13
|
-
|
|
14
|
-
1. Inspect the repository and its existing `lux.config.ts`, cases, fixtures,
|
|
15
|
-
prompts, and experiments before adding files.
|
|
16
|
-
2. If Lux is not initialized, run `npm exec -- lux init` for ordinary evals or
|
|
17
|
-
`npm exec -- lux init --experiment` for an improvement campaign.
|
|
18
|
-
3. Read [references/eval-authoring.md](references/eval-authoring.md) before
|
|
19
|
-
authoring or reviewing a case, assertion plugin, or lifecycle fixture.
|
|
20
|
-
4. Read [references/cli.md](references/cli.md) before running, diagnosing,
|
|
21
|
-
comparing, or promoting results.
|
|
22
|
-
5. Run `npm exec -- lux doctor` before model calls. Treat its errors as
|
|
23
|
-
authoring problems, not as permission to bypass validation.
|
|
24
|
-
|
|
25
|
-
## Workflow
|
|
26
|
-
|
|
27
|
-
### Author an eval
|
|
28
|
-
|
|
29
|
-
- Define the behavior and likely failure mode first.
|
|
30
|
-
- Make the prompt realistic and self-contained.
|
|
31
|
-
- Give the persona only facts and preferences the simulated user should know.
|
|
32
|
-
- Assert observable outcomes, not implementation details.
|
|
33
|
-
- Use stable assertion IDs so grading evidence remains intelligible.
|
|
34
|
-
- Use the cheapest deterministic assertion that proves each requirement.
|
|
35
|
-
- Include a rubric assertion only when semantic judgment is unavoidable, and
|
|
36
|
-
write one narrow, falsifiable criterion per assertion.
|
|
37
|
-
- Pin the subject driver model explicitly when comparability matters.
|
|
38
|
-
|
|
39
|
-
### Run and diagnose
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
npm exec -- lux doctor
|
|
43
|
-
npm exec -- lux run <case-or-filter> --list
|
|
44
|
-
npm exec -- lux run <case-or-filter> --loop 3
|
|
45
|
-
npm exec -- lux view <run-or-suite>
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
Inspect `case.json`, `run.json`, `events.jsonl`, `grading.json`, and `artifacts/`
|
|
49
|
-
before changing the case. Separate subject failure from harness failure:
|
|
50
|
-
|
|
51
|
-
- Subject failure: the agent misunderstood, asked poorly, used the wrong tools,
|
|
52
|
-
or left incorrect artifacts.
|
|
53
|
-
- Harness failure: the prompt was underspecified, the persona lacked a needed
|
|
54
|
-
fact, a fixture or driver failed, an assertion measured a proxy, or the
|
|
55
|
-
judge criterion was ambiguous.
|
|
56
|
-
|
|
57
|
-
Do not weaken a valid assertion merely to make a run pass.
|
|
58
|
-
|
|
59
|
-
### Improve with evidence
|
|
60
|
-
|
|
61
|
-
Use repeated runs and held-out splits for noisy agent behavior. For skill,
|
|
62
|
-
prompt, or agent-source changes, use `subjectPath()` in cases and an experiment
|
|
63
|
-
campaign with immutable candidates. Plan first, run the experiment, inspect the
|
|
64
|
-
report, and apply a promoted candidate as a separate action:
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
npm exec -- lux experiment experiments/example.experiment.ts --plan
|
|
68
|
-
npm exec -- lux experiment experiments/example.experiment.ts
|
|
69
|
-
npm exec -- lux report <experiment-dir>
|
|
70
|
-
npm exec -- lux apply <experiment-dir>
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
Never edit a materialized candidate or managed experiment record by hand.
|
|
74
|
-
|
|
75
|
-
## Guardrails
|
|
76
|
-
|
|
77
|
-
- Lux eval projects execute project-authored commands and agent-generated work.
|
|
78
|
-
Run untrusted evals only in a disposable environment.
|
|
79
|
-
- Do not infer success from agent prose. Grade the final artifacts and recorded
|
|
80
|
-
behavior.
|
|
81
|
-
- Do not use only `run-succeeded` for a case that claims to verify a concrete
|
|
82
|
-
result.
|
|
83
|
-
- Do not invoke bare `lux`; it displays help. Use the explicit `lux run` verb
|
|
84
|
-
and narrow by case, path, or tag before any model call.
|
|
85
|
-
- Do not let train examples leak into validation or test splits.
|
|
86
|
-
- Do not combine evidence across changed models, harnesses, cases, or subjects;
|
|
87
|
-
Lux identity checks exist to prevent that.
|
|
88
|
-
- Prefer `--plan`, `doctor`, `view`, and `report` before expensive or mutating
|
|
89
|
-
commands.
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
# Lux CLI runbook
|
|
2
|
-
|
|
3
|
-
Invoke the project-local CLI with `npm exec -- lux ...` unless the repository
|
|
4
|
-
uses another package-manager convention.
|
|
5
|
-
|
|
6
|
-
Bare `lux` prints command and agent-skill help. Running cases always requires
|
|
7
|
-
the explicit `run` verb; do not assume an unfiltered run is harmless.
|
|
8
|
-
Use `lux <command> --help` before composing an unfamiliar or automation-facing
|
|
9
|
-
invocation; it is the authoritative option list for the installed version.
|
|
10
|
-
|
|
11
|
-
## Author and preflight
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
lux init
|
|
15
|
-
lux init --experiment
|
|
16
|
-
lux skills list
|
|
17
|
-
lux skills install codex --project
|
|
18
|
-
lux skills install claude --project
|
|
19
|
-
lux doctor
|
|
20
|
-
lux doctor experiments/campaign.experiment.ts --json
|
|
21
|
-
lux run --list
|
|
22
|
-
lux run --list-tags
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
`init` is conservative around existing files. `doctor` validates configuration,
|
|
26
|
-
case discovery, driver executables, campaign splits, confidence feasibility,
|
|
27
|
-
and projected budgets without model calls.
|
|
28
|
-
|
|
29
|
-
## Run
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
lux run
|
|
33
|
-
lux run retry-flag
|
|
34
|
-
lux run cases/retry-flag.ts
|
|
35
|
-
lux run --tag smoke
|
|
36
|
-
lux run retry --loop 5 --concurrency 2
|
|
37
|
-
lux run one-case --interactive
|
|
38
|
-
lux run one-case --claude-answerer
|
|
39
|
-
lux run one-case --profile small-low --subject-root . --verbose
|
|
40
|
-
lux run one-case --skip-judge
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
Filters match case IDs and paths. Tags come from `meta.tags`. A run invocation
|
|
44
|
-
also creates a suite record, which is the right unit for repeated or multi-case
|
|
45
|
-
comparison.
|
|
46
|
-
|
|
47
|
-
`--skip-judge` leaves subject execution unchanged but does not call rubric LLM
|
|
48
|
-
judges. Deterministic assertions still determine the verdict; judge-only cases
|
|
49
|
-
remain ungraded, and persisted grading records identify the skipped rubrics.
|
|
50
|
-
|
|
51
|
-
## Inspect and compare
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
lux view
|
|
55
|
-
lux view <run-or-suite>
|
|
56
|
-
lux view --suites --json
|
|
57
|
-
lux view --experiments
|
|
58
|
-
lux compare <run-or-suite-a> <run-or-suite-b> --pass-rate-tolerance 0.05
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
Use `view` before opening raw files. When diagnosing, inspect:
|
|
62
|
-
|
|
63
|
-
- `case.json`: frozen authored inputs;
|
|
64
|
-
- `run.json`: exit reason, timing, usage, source identity;
|
|
65
|
-
- `events.jsonl`: trajectory, tools, and interrupts;
|
|
66
|
-
- `grading.json`: assertion evidence;
|
|
67
|
-
- `artifacts/`: the subject workspace output.
|
|
68
|
-
|
|
69
|
-
`compare` exits nonzero on a gated regression, making it suitable for CI.
|
|
70
|
-
|
|
71
|
-
## Regrade and annotate
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
lux grade <run>
|
|
75
|
-
lux grade <run> --case cases/changed-grader.ts
|
|
76
|
-
lux annotate <run> \
|
|
77
|
-
--out evals/annotations.json \
|
|
78
|
-
--rubric evals/rubrics/case.json \
|
|
79
|
-
--label pass
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
Regrading preserves subject evidence and changes only grading. Human annotations
|
|
83
|
-
support grader-alignment experiments. `annotate` can record overall label or
|
|
84
|
-
score, repeatable assertion outcomes, split/tag selection, feedback, annotator,
|
|
85
|
-
reviewer, and human/synthetic provenance. Keep assertion IDs aligned with the
|
|
86
|
-
rubric and record reviewer context where available.
|
|
87
|
-
|
|
88
|
-
## Experiment lifecycle
|
|
89
|
-
|
|
90
|
-
```bash
|
|
91
|
-
lux experiment <campaign> --plan
|
|
92
|
-
lux experiment <campaign>
|
|
93
|
-
lux experiment <campaign> --resume <experiment-dir>
|
|
94
|
-
lux optimize <campaign> --plan
|
|
95
|
-
lux optimize <campaign>
|
|
96
|
-
lux optimize <campaign> --resume <experiment-dir>
|
|
97
|
-
lux view <experiment-dir>
|
|
98
|
-
lux report <experiment-dir> --out .lux-runs/reports/decision.md
|
|
99
|
-
lux report <experiment-dir> --json
|
|
100
|
-
lux apply <experiment-dir>
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
`experiment` compares authored variants. `optimize` searches proposed changes.
|
|
104
|
-
Both create durable, resumable, integrity-checked records. `report` re-verifies
|
|
105
|
-
the ledger and promotion decision. `apply` is deliberately separate and
|
|
106
|
-
hash-guards the source it changes.
|
|
107
|
-
|
|
108
|
-
Use the exact resume, report, and apply commands printed by Lux. Do not edit
|
|
109
|
-
`.lux-runs/.experiments/` manually.
|
|
110
|
-
|
|
111
|
-
## Failure triage
|
|
112
|
-
|
|
113
|
-
- Discovery/config error: run `doctor`, verify paths and exported definitions.
|
|
114
|
-
- Driver unavailable: verify the selected CLI is installed and the model is
|
|
115
|
-
explicitly configured where required.
|
|
116
|
-
- Agent exit/error: inspect `events.jsonl` and the driver section of `run.json`.
|
|
117
|
-
- Assertion failure: inspect the assertion evidence and final artifact; decide
|
|
118
|
-
whether the subject or measurement is wrong.
|
|
119
|
-
- Tool evidence mismatch: compare paired call/result IDs and inspect unresolved,
|
|
120
|
-
unmatched, malformed, and failed tool outcomes; never infer success from a
|
|
121
|
-
call event alone.
|
|
122
|
-
- Judge disagreement: narrow the rubric, regrade stored evidence, and collect
|
|
123
|
-
human annotations before changing the subject.
|
|
124
|
-
- Interrupted experiment: resume the printed experiment directory; do not start
|
|
125
|
-
a nominally identical campaign and combine results yourself.
|