@prismatic-io/lux 0.0.2-preview.40 → 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.
Files changed (54) hide show
  1. package/lib/answerers/persona/index.d.ts.map +1 -1
  2. package/lib/answerers/persona/index.js +6 -1
  3. package/lib/answerers/persona/index.js.map +1 -1
  4. package/lib/assertions/rubric/index.d.ts.map +1 -1
  5. package/lib/assertions/rubric/index.js +9 -1
  6. package/lib/assertions/rubric/index.js.map +1 -1
  7. package/lib/assertions/rubric/internal.d.ts.map +1 -1
  8. package/lib/assertions/rubric/internal.js +10 -7
  9. package/lib/assertions/rubric/internal.js.map +1 -1
  10. package/lib/cli/init-templates.d.ts +2 -2
  11. package/lib/cli/init-templates.d.ts.map +1 -1
  12. package/lib/cli/init-templates.js +16 -78
  13. package/lib/cli/init-templates.js.map +1 -1
  14. package/lib/core/model-cli.d.ts +22 -4
  15. package/lib/core/model-cli.d.ts.map +1 -1
  16. package/lib/core/model-cli.js +14 -1
  17. package/lib/core/model-cli.js.map +1 -1
  18. package/lib/drivers/claude-code/index.js +1 -1
  19. package/lib/drivers/claude-code/index.js.map +1 -1
  20. package/lib/drivers/shared/experiment-policy.d.ts.map +1 -1
  21. package/lib/drivers/shared/experiment-policy.js +5 -0
  22. package/lib/drivers/shared/experiment-policy.js.map +1 -1
  23. package/lib/orchestrator/config.d.ts +51 -9
  24. package/lib/orchestrator/config.d.ts.map +1 -1
  25. package/lib/orchestrator/doctor.d.ts.map +1 -1
  26. package/lib/orchestrator/doctor.js +35 -15
  27. package/lib/orchestrator/doctor.js.map +1 -1
  28. package/lib/orchestrator/experiment-context.d.ts +1 -1
  29. package/lib/orchestrator/experiment-corpus.d.ts.map +1 -1
  30. package/lib/orchestrator/experiment-corpus.js +4 -2
  31. package/lib/orchestrator/experiment-corpus.js.map +1 -1
  32. package/lib/orchestrator/experiment-identity.d.ts.map +1 -1
  33. package/lib/orchestrator/experiment-identity.js +28 -9
  34. package/lib/orchestrator/experiment-identity.js.map +1 -1
  35. package/lib/orchestrator/orchestrator.d.ts.map +1 -1
  36. package/lib/orchestrator/orchestrator.js +5 -3
  37. package/lib/orchestrator/orchestrator.js.map +1 -1
  38. package/lib/orchestrator/regrade.d.ts.map +1 -1
  39. package/lib/orchestrator/regrade.js +5 -1
  40. package/lib/orchestrator/regrade.js.map +1 -1
  41. package/package.json +1 -1
  42. package/skills/lux-answerer/SKILL.md +1 -1
  43. package/src/answerers/persona/index.ts +6 -1
  44. package/src/assertions/rubric/index.ts +14 -1
  45. package/src/assertions/rubric/internal.ts +10 -7
  46. package/src/cli/init-templates.ts +16 -78
  47. package/src/core/model-cli.ts +18 -2
  48. package/src/drivers/claude-code/index.ts +1 -1
  49. package/src/drivers/shared/experiment-policy.ts +5 -0
  50. package/src/orchestrator/doctor.ts +78 -17
  51. package/src/orchestrator/experiment-corpus.ts +10 -2
  52. package/src/orchestrator/experiment-identity.ts +41 -13
  53. package/src/orchestrator/orchestrator.ts +5 -8
  54. package/src/orchestrator/regrade.ts +5 -1
@@ -1 +1 @@
1
- {"version":3,"file":"regrade.d.ts","sourceRoot":"","sources":["../../src/orchestrator/regrade.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAIL,KAAK,QAAQ,EAMb,KAAK,QAAQ,EACb,KAAK,GAAG,EAKT,MAAM,kBAAkB,CAAC;AAc1B,eAAO,MAAM,+BAA+B,EAAG,CAAU,CAAC;AAE1D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqBhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AA2IpE,eAAO,MAAM,iBAAiB,WACpB,MAAM,iBACC,QAAQ,YACd;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,KAClC,OAAO,CAAC,GAAG,CA+Bb,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,WAC1B,MAAM,iBACC,QAAQ,KACtB,OAAO,CAAC,GAAG,CAuEb,CAAC;AAEF,eAAO,MAAM,0BAA0B,QAAe,GAAG,KAAG,OAAO,CAAC,IAAI,CAKvE,CAAC;AAyLF,eAAO,MAAM,UAAU,YAAmB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,wFAAwF;IACxF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,KAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAA;CAAE,CAqDtD,CAAC"}
1
+ {"version":3,"file":"regrade.d.ts","sourceRoot":"","sources":["../../src/orchestrator/regrade.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAIL,KAAK,QAAQ,EAMb,KAAK,QAAQ,EACb,KAAK,GAAG,EAKT,MAAM,kBAAkB,CAAC;AAe1B,eAAO,MAAM,+BAA+B,EAAG,CAAU,CAAC;AAE1D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqBhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AA2IpE,eAAO,MAAM,iBAAiB,WACpB,MAAM,iBACC,QAAQ,YACd;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,KAClC,OAAO,CAAC,GAAG,CA+Bb,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,WAC1B,MAAM,iBACC,QAAQ,KACtB,OAAO,CAAC,GAAG,CAuEb,CAAC;AAEF,eAAO,MAAM,0BAA0B,QAAe,GAAG,KAAG,OAAO,CAAC,IAAI,CAKvE,CAAC;AAyLF,eAAO,MAAM,UAAU,YAAmB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,wFAAwF;IACxF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,KAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAA;CAAE,CAwDtD,CAAC"}
@@ -4,6 +4,7 @@ import { isAbsolute, join, relative, resolve, sep } from "node:path";
4
4
  import { temporaryDirectory } from "tempy";
5
5
  import { z } from "zod";
6
6
  import { ArtifactSchema, bindRunArtifactEvidence, contentHash, EvalCaseSchema, GradingReportSchema, inspectRunArtifact, PersistedCaseSchema, RunMetadataSchema, readInspectedFileBytes, readRunArtifactBytes, valueHash, } from "../core/index.js";
7
+ import { HarnessModelConfigSchema, resolveHarnessForDriver } from "../core/model-cli.js";
7
8
  import { registryForEvalCase } from "./case-extensions.js";
8
9
  import { evaluatorImplementationHash } from "./evaluator-identity.js";
9
10
  import { parsePersistedJson, readBoundedHandle, safeReadJson } from "./fs-read.js";
@@ -405,12 +406,15 @@ export const regradeRun = async (options) => {
405
406
  const validatedAssertionsHash = valueHash(validatedAssertionConfigs);
406
407
  const assertionEvaluators = assertionEvaluatorIdentities(run.case.assertions ?? [], registry);
407
408
  const assertionPlugins = assertionPluginIdentities(run.case.assertions ?? [], registry);
409
+ const configuredHarness = HarnessModelConfigSchema.safeParse(options.graderContext);
408
410
  const graderHash = graderConfigHash({
409
411
  luxVersion: LUX_VERSION,
410
412
  implementationHash: await currentEvaluatorImplementationHash(),
411
413
  assertions: assertionEvaluators,
412
414
  validatedAssertionsHash,
413
- graderContext: options.graderContext,
415
+ graderContext: configuredHarness.success
416
+ ? configuredHarness.data
417
+ : (options.graderContext ?? resolveHarnessForDriver(undefined, run.metadata.driver)),
414
418
  });
415
419
  const report = await gradeRun(run, registry, undefined, options.abortSignal, undefined, undefined, validatedAssertionConfigs);
416
420
  let postEvaluationEvidenceHash;
@@ -1 +1 @@
1
- {"version":3,"file":"regrade.js","sourceRoot":"","sources":["../../src/orchestrator/regrade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"regrade.js","sourceRoot":"","sources":["../../src/orchestrator/regrade.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prismatic-io/lux",
3
- "version": "0.0.2-preview.40",
3
+ "version": "0.0.2-preview.41",
4
4
  "description": "Coding-agent evaluation and improvement with deterministic assertions, optional LLM judges, and first-class human-in-the-loop runs.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/prismatic-io/lux",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: lux-answerer
3
- version: 0.0.2-preview.40
3
+ version: 0.0.2-preview.41
4
4
  description: Play the persona for a running Lux orchestrator that uses the claude-code answerer. Read structured events on stdout, decide answers from persona + context, write JSON to its answer channel.
5
5
  user-invocable: false
6
6
  allowed-tools: Bash, Read
@@ -69,7 +69,12 @@ Rules:
69
69
  them with a suggestion or assumption from the agent's question.
70
70
  - Include every persona constraint about each resource or operation the agent
71
71
  mentions, including constraints its question omitted.
72
- - Only invent a plausible answer when neither the persona nor task supplies it.
72
+ - Stay within the user's stated knowledge and authority. If material facts are
73
+ unavailable, say so; identify who could supply them only when known. Never
74
+ invent credentials, source behavior, platform guarantees, or completed work.
75
+ - You may supply ordinary conversational preferences consistent with the role.
76
+ Leave routine technical choices to the agent unless the task gives you that
77
+ responsibility; do not authorize unstated changes to business requirements.
73
78
  - Follow the response format requested after the agent's fenced output. Do not
74
79
  combine formats or append a conversation decision.`;
75
80
  };
@@ -14,6 +14,7 @@ import {
14
14
  sumUsage,
15
15
  type TokenUsage,
16
16
  } from "../../core/index.js";
17
+ import { resolveHarnessForDriver } from "../../core/model-cli.js";
17
18
  import { baseAssertionFields } from "../core/helpers.js";
18
19
  import { RubricEvidenceSchema } from "./evidence.js";
19
20
  import {
@@ -98,6 +99,13 @@ Rules:
98
99
  demonstrated. Optional polish is outside the denominator. Do not invent gaps
99
100
  to avoid awarding full credit, require perfection beyond the request, or force
100
101
  scores into a distribution.
102
+ - Accept equivalent implementations that satisfy the requested constraints.
103
+ Do not require an unstated architecture, library, layout, or test framework.
104
+ - Distinguish an implementation defect from missing verification. Missing tests
105
+ reduce verification confidence; they do not by themselves prove working
106
+ behavior incorrect. Assess only consequences relevant to this criterion.
107
+ - Claims alone do not establish execution or runtime guarantees. Use actual
108
+ implementation and observed results where the criterion requires them.
101
109
  - Missing or truncated evidence is not proof of failure or success. Abstain when
102
110
  it prevents a supported judgment; do not guess a score.
103
111
  - comment is one sentence explaining the judgment, citing specifics
@@ -264,7 +272,12 @@ export const createRubricAssertion = (
264
272
  detail: { attempts: 0, toolInvocations: error.detail },
265
273
  };
266
274
  }
267
- const result = await judgeRubric(config, evidence.prompt, rubricRuntime(config, harness), ctx);
275
+ const result = await judgeRubric(
276
+ config,
277
+ evidence.prompt,
278
+ rubricRuntime(config, resolveHarnessForDriver(harness, run.metadata.driver)),
279
+ ctx,
280
+ );
268
281
  const detail = typeof result.detail === "object" && result.detail !== null ? result.detail : {};
269
282
  return evidence.toolInvocations
270
283
  ? { ...result, detail: { ...detail, toolInvocations: evidence.toolInvocations } }
@@ -334,11 +334,11 @@ const fitOptionalEvidence = (
334
334
  return [fittedTrace, fittedArtifacts];
335
335
  };
336
336
 
337
- const artifactListing = (paths: readonly string[]): string[] => {
337
+ const artifactListing = (artifacts: Run["artifacts"]): string[] => {
338
338
  const listed: string[] = [];
339
339
  let listingChars = 0;
340
- for (const artifactPath of paths.slice(0, ARTIFACT_LISTING_CAP)) {
341
- const path = boundedText(artifactPath, 500, "artifact path");
340
+ for (const artifact of artifacts.slice(0, ARTIFACT_LISTING_CAP)) {
341
+ const path = `[origin: ${artifact.origin ?? "unknown"}] ${boundedText(artifact.path, 500, "artifact path")}`;
342
342
  if (listingChars + path.length > ARTIFACT_LISTING_CHARS) {
343
343
  listed.push("[... artifact listing character budget exhausted ...]");
344
344
  break;
@@ -346,8 +346,8 @@ const artifactListing = (paths: readonly string[]): string[] => {
346
346
  listed.push(path);
347
347
  listingChars += path.length;
348
348
  }
349
- if (paths.length > listed.length) {
350
- listed.push(`[... ${paths.length - listed.length} more selected files omitted ...]`);
349
+ if (artifacts.length > listed.length) {
350
+ listed.push(`[... ${artifacts.length - listed.length} more selected files omitted ...]`);
351
351
  }
352
352
  return listed;
353
353
  };
@@ -372,10 +372,11 @@ export const sampleArtifacts = async (
372
372
  return origin === undefined ? 1 : 0;
373
373
  };
374
374
  selected.sort((left, right) => priority(left.origin) - priority(right.origin));
375
- const listed = artifactListing(selected.map((artifact) => artifact.path));
375
+ const listed = artifactListing(selected);
376
376
  const out: string[] = [
377
377
  `Files selected (${selected.length} of ${run.artifacts.length}):\n${listed.join("\n")}`,
378
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.",
379
380
  ];
380
381
  if (evidence?.includeArtifactContents === false) {
381
382
  out.push("[File contents excluded by the evidence selector.]");
@@ -401,7 +402,7 @@ export const sampleArtifacts = async (
401
402
  continue;
402
403
  }
403
404
  budget -= content.text.length;
404
- const block = `--- ${path} ---\n${content.text}${content.truncated ? "\n[File excerpt truncated; omitted content is unassessed.]" : ""}`;
405
+ const block = `Origin: ${artifact.origin ?? "unknown"}\n--- ${path} ---\n${content.text}${content.truncated ? "\n[File excerpt truncated; omitted content is unassessed.]" : ""}`;
405
406
  framingBudget -= block.length - content.text.length + 2;
406
407
  out.push(block);
407
408
  }
@@ -511,6 +512,8 @@ export const buildJudgeEvidence = async (
511
512
  `Criterion to judge: ${boundedText(config.criteria, 8_000, "criterion")}`,
512
513
  "",
513
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.`,
516
+ "",
514
517
  ...(invocations ? [invocations.text, ""] : []),
515
518
  ].join("\n");
516
519
  const assemble = (recent: string, files: string): string =>
@@ -15,7 +15,6 @@ export const luxConfigBody = (
15
15
  const subjectRoot = withExperiment ? ' subjectRoot: ".",\n' : "";
16
16
  const profiles = withExperiment ? " profiles: { starter: {} },\n" : "";
17
17
  const selectedDriver = driver ?? (withExperiment ? undefined : "subprocess");
18
- const modelField = model ? `model: ${JSON.stringify(model)}, ` : "";
19
18
  let defaultDriver: string;
20
19
  if (selectedDriver === "subprocess") {
21
20
  defaultDriver = ` defaultDriver: { name: "subprocess", config: {
@@ -25,40 +24,17 @@ export const luxConfigBody = (
25
24
  } },
26
25
  `;
27
26
  } else if (selectedDriver) {
28
- const efforts = {
29
- "claude-code": 'reasoningEffort: "low"',
30
- codex: 'reasoningEffort: "low"',
31
- cursor: "",
32
- "grok-build": 'reasoningEffort: "low", permissionMode: "auto"',
33
- copilot: 'reasoningEffort: "low"',
34
- antigravity: 'reasoningEffort: "low"',
35
- };
36
- defaultDriver = ` defaultDriver: { name: ${JSON.stringify(selectedDriver)}, config: { ${modelField}${efforts[selectedDriver]} } },
37
- `;
27
+ defaultDriver = model
28
+ ? ` defaultDriver: { name: ${JSON.stringify(selectedDriver)}, config: { model: ${JSON.stringify(model)} } },\n`
29
+ : ` defaultDriver: ${JSON.stringify(selectedDriver)},\n`;
38
30
  } else {
39
- defaultDriver = ` // Select a driver with lux init --experiment --driver codex --force.
40
- // defaultDriver: { name: "codex", config: { reasoningEffort: "low" } },
41
- `;
31
+ defaultDriver = ` // Select a driver with lux init --experiment --driver codex --force.\n`;
42
32
  }
43
33
  return `${selectedDriver === "subprocess" ? 'import { fileURLToPath } from "node:url";\n' : ""}import type { LuxConfig } from "@prismatic-io/lux";
44
34
 
45
- /**
46
- * Lux project configuration. Drivers, answerers, and assertions
47
- * register here; \`lux run\` discovers cases under \`casesRoot\`.
48
- */
49
35
  const config: LuxConfig = {
50
36
  casesRoot: "./cases",
51
- fixturesRoot: "./fixtures",
52
- runsRoot: "./.lux-runs",
53
- ${subjectRoot} // Runners default to cheap models and low effort instead of inheriting CLI defaults.
54
- ${defaultDriver} // Persona answerers and rubric judges default to cheap models and low effort.
55
- // Override both explicitly when a stronger harness is worth the added cost:
56
- // harness: { provider: "codex", model: "YOUR_HARNESS_MODEL" },
57
- defaultAnswerer: "persona",
58
- ${profiles} // drivers: [/* register drivers here */],
59
- // answerers: [/* register answerers here */],
60
- // assertions: [/* register custom assertions here */],
61
- };
37
+ ${subjectRoot}${defaultDriver}${profiles}};
62
38
 
63
39
  export default config;
64
40
  `;
@@ -73,12 +49,11 @@ await writeFile(join(process.env.LUX_ARTIFACTS_DIR, "add.mjs"), "export const ad
73
49
  send({ type: "done", summary: "Wrote add.mjs" });
74
50
  `;
75
51
 
76
- const ADDITION_COMMAND = `node --input-type=module -e "import assert from 'node:assert/strict'; import { add } from './add.mjs'; assert.equal(add(2, 3), 5); assert.equal(add(-2, 2), 0); assert.equal(add(0, 0), 0);"`;
52
+ const ADDITION_COMMAND = `import assert from 'node:assert/strict'; import { add } from './add.mjs'; assert.equal(add(2, 3), 5); assert.equal(add(-2, 2), 0); assert.equal(add(0, 0), 0);`;
77
53
 
78
54
  export const SAMPLE_CASE_BODY = `import { defineEvalCase } from "@prismatic-io/lux";
79
55
 
80
56
  export default defineEvalCase({
81
- id: "addition",
82
57
  prompt: "Write add.mjs exporting add(a, b). It must add two numbers, including negative numbers and zero.",
83
58
  assertions: [
84
59
  { id: "completed", type: "run-succeeded" },
@@ -86,7 +61,7 @@ export default defineEvalCase({
86
61
  {
87
62
  id: "adds-correctly",
88
63
  type: "command-exits-zero",
89
- command: ${JSON.stringify(ADDITION_COMMAND)},
64
+ command: [process.execPath, "--input-type=module", "-e", ${JSON.stringify(ADDITION_COMMAND)}],
90
65
  },
91
66
  ],
92
67
  });
@@ -98,7 +73,6 @@ export const EXPERIMENT_SAMPLE_CASE_BODY = `import { defineEvalCase } from "@pri
98
73
  * A starter smoke case. It inherits the default driver from lux.config.ts.
99
74
  */
100
75
  export default defineEvalCase({
101
- id: "hello-world",
102
76
  prompt: "Say hello to the world.",
103
77
  assertions: [{ id: "completed", type: "run-succeeded" }],
104
78
  });
@@ -106,51 +80,15 @@ export default defineEvalCase({
106
80
 
107
81
  export const README_BODY = `# Lux evals
108
82
 
109
- This directory holds your evaluation cases.
110
-
111
- ## Layout
112
-
113
- - \`lux.config.ts\` — project configuration: default driver/answerer and registered plugins.
114
- - \`cases/\` — one TypeScript file per eval case. Default-export a \`defineEvalCase({...})\`.
115
- - \`fixtures/\` — starting state for cases that need pre-staged input.
116
- - \`.lux-runs/\` — run output, gitignored.
117
-
118
- ## Setup
119
-
120
- Install Lux in the project so authored TypeScript cases can resolve its API:
121
-
122
- \`\`\`bash
123
- npm install --save-dev @prismatic-io/lux
124
- \`\`\`
125
-
126
- ## First result
127
-
128
- The default starter uses a local deterministic agent and makes no model calls.
129
- Run \`npm exec -- lux run\`, then \`npm exec -- lux view\` to inspect its
130
- artifact and behavioral assertions. In \`agent/demo.mjs\`, replace \`a + b\`
131
- with \`a - b\` and run again: the agent completes, but the behavioral assertion
132
- fails. Restore addition and rerun to see it pass.
133
-
134
- For a real coding agent, scaffold with \`lux init --driver claude-code\` or
135
- \`lux init --driver codex\`. Cursor, Copilot, and Antigravity require an
136
- explicit model, for example \`lux init --driver copilot --model <model-id>\`.
137
- These modes make model calls when you run cases and require the corresponding
138
- authenticated CLI.
139
-
140
- ## Run cases
141
-
142
- \`lux run\` discovers every case under \`casesRoot\` and runs it. Filter by
143
- name/path substring, by \`--tag\`, or repeat each matched eval with \`--loop\`:
83
+ Write tasks and assertions in \`cases/\`; choose the driver in \`lux.config.ts\`.
84
+ Run \`npm exec -- lux run\`, then \`npm exec -- lux view\` to inspect results.
85
+ Pass a case name to run only matching cases. Results are saved in \`.lux-runs/\`.
144
86
 
145
- \`\`\`bash
146
- npm exec -- lux run # every discovered case
147
- npm exec -- lux run addition # cases whose id/path contains "hello-world"
148
- npm exec -- lux run cases/addition.ts # one file directly
149
- npm exec -- lux run --tag smoke # cases tagged "smoke" (meta.tags)
150
- npm exec -- lux run --loop 5 # run each matched eval 5 times
151
- \`\`\`
87
+ The default starter uses a deterministic demo agent without model calls.
88
+ Changing \`a + b\` to \`a - b\` in \`agent/demo.mjs\` demonstrates a failed check.
89
+ Scaffolding with \`--driver\` instead uses that agent's authenticated CLI and model account.
152
90
 
153
- See the [Lux docs](https://github.com/prismatic-io/lux) for the full design.
91
+ See [Lux](https://github.com/prismatic-io/lux) for setup and available assertions.
154
92
  `;
155
93
 
156
94
  export const STARTER_PROMPT_BODY = `# Starter agent instructions
@@ -170,7 +108,7 @@ export const experimentCaseBody = (
170
108
  "assert.equal(result(12, 0, 10), 10); assert.equal(result(-1, 0, 10), 0); assert.equal(result(5, 0, 10), 5)",
171
109
  test: "assert.equal(result(' Lux REVIEW '), 'lux review'); assert.equal(result(''), '')",
172
110
  };
173
- const command = `node --input-type=module -e "import assert from 'node:assert/strict'; import { result } from './result.mjs'; ${checks[split]};"`;
111
+ const command = `import assert from 'node:assert/strict'; import { result } from './result.mjs'; ${checks[split]};`;
174
112
  return `import { defineEvalCase, subjectPath } from "@prismatic-io/lux";
175
113
 
176
114
  export default defineEvalCase({
@@ -181,7 +119,7 @@ export default defineEvalCase({
181
119
  ].join("\\n\\n"),
182
120
  assertions: [
183
121
  { id: "completed", type: "run-succeeded" },
184
- { id: "behavior", type: "command-exits-zero", command: ${JSON.stringify(command)} },
122
+ { id: "behavior", type: "command-exits-zero", command: [process.execPath, "--input-type=module", "-e", ${JSON.stringify(command)}] },
185
123
  ],
186
124
  meta: { tags: [${JSON.stringify(split)}] },
187
125
  });
@@ -66,13 +66,17 @@ const discoverCliVersionOnce = async (command: string): Promise<string | undefin
66
66
  export const HarnessModelConfigSchema = z
67
67
  .object({
68
68
  provider: ModelCliProviderSchema,
69
- model: z.string().min(1),
69
+ model: z.string().min(1).optional(),
70
70
  command: z.string().optional(),
71
71
  inheritEnv: InheritEnvironmentSchema.optional(),
72
72
  env: z.record(z.string(), z.string()).optional(),
73
73
  reasoningEffort: ReasoningEffortSchema.optional(),
74
74
  })
75
75
  .strict()
76
+ .transform((config) => ({
77
+ ...config,
78
+ model: config.model ?? defaultHarnessModel(config.provider),
79
+ }))
76
80
  .superRefine((config, ctx) => {
77
81
  const issue = effortIssue(
78
82
  providerCatalog(config.provider),
@@ -81,7 +85,19 @@ export const HarnessModelConfigSchema = z
81
85
  );
82
86
  if (issue) ctx.addIssue({ code: "custom", path: ["reasoningEffort"], message: issue });
83
87
  });
84
- export type HarnessModelConfig = z.infer<typeof HarnessModelConfigSchema>;
88
+ export type HarnessModelConfig = z.input<typeof HarnessModelConfigSchema>;
89
+
90
+ /** Infer only the provider, never the subject's model, environment, or permissions. */
91
+ export const resolveHarnessForDriver = (
92
+ harness: HarnessModelConfig | undefined,
93
+ driver: string | { name: string } | undefined,
94
+ ): z.output<typeof HarnessModelConfigSchema> | undefined => {
95
+ if (harness) return HarnessModelConfigSchema.parse(harness);
96
+ const name = typeof driver === "string" ? driver : driver?.name;
97
+ return name === "codex" || name === "claude-code"
98
+ ? { provider: name, model: defaultHarnessModel(name) }
99
+ : undefined;
100
+ };
85
101
 
86
102
  /** Merge harness defaults without carrying provider-specific values across providers. */
87
103
  export const mergeHarnessModelConfig = (
@@ -120,7 +120,7 @@ export const ClaudeCodeDriverConfigSchema = z
120
120
  * `defer-resume` uses Claude Code's persisted tool deferral protocol.
121
121
  * `stream-json` is the legacy live-stdin protocol for compatible stubs.
122
122
  */
123
- interactionMode: z.enum(["defer-resume", "stream-json"]).default("stream-json"),
123
+ interactionMode: z.enum(["defer-resume", "stream-json"]).default("defer-resume"),
124
124
  /**
125
125
  * Treat a terminal agent message containing a question as an interrupt
126
126
  * when a weaker model asks in text instead of calling `askToolName`.
@@ -154,6 +154,11 @@ const bindClaudeExperimentConfig = (
154
154
  driverEnv: Record<string, unknown>,
155
155
  ): unknown => {
156
156
  if (config.isolation) return config;
157
+ // Deferred questions require Lux's trusted hook, so isolate ambient hooks
158
+ // instead of disabling every hook through conflicting --settings arguments.
159
+ if (config.interactionMode !== "stream-json") {
160
+ return { ...config, isolation: { allowRead: [] } };
161
+ }
157
162
  return {
158
163
  ...config,
159
164
  extraArgs: [
@@ -15,6 +15,7 @@ import {
15
15
  permutationId,
16
16
  type Registry,
17
17
  } from "../core/index.js";
18
+ import { resolveHarnessForDriver } from "../core/model-cli.js";
18
19
  import { mergeDriverReference, withDriverDefaults } from "../core/reference-defaults.js";
19
20
  import { registryForEvalCase } from "./case-extensions.js";
20
21
  import { buildRegistryFromConfig, loadLuxConfig, type ResolvedLuxConfig } from "./config.js";
@@ -189,14 +190,11 @@ const answererCommand = (reference: unknown): string | undefined => {
189
190
  return config.provider === "codex" ? "codex" : "claude";
190
191
  };
191
192
 
192
- const rubricCommands = (assertion: unknown, config: ResolvedLuxConfig): string[] => {
193
+ const rubricCommands = (
194
+ assertion: unknown,
195
+ harnesses: ReturnType<typeof resolveHarnessForDriver>[],
196
+ ): string[] => {
193
197
  const rubric = RubricConfigSchema.parse(assertion);
194
- const harnesses = [
195
- config.harness,
196
- ...Object.values(config.profiles ?? {}).map(
197
- (profile) => resolveProfile(config, profile).harness,
198
- ),
199
- ];
200
198
  const commands = harnesses.map((harness) => {
201
199
  const provider = rubric.provider ?? harness?.provider ?? "claude-code";
202
200
  const inheritsHarness = rubric.provider === undefined || rubric.provider === harness?.provider;
@@ -225,7 +223,19 @@ const configuredCliTargets = (config: ResolvedLuxConfig, registry: Registry): Cl
225
223
  /* Reported by validateConfiguredMatrix. */
226
224
  }
227
225
  }
228
- add("default answerer", answererCommand(config.defaultAnswerer));
226
+ const base = resolveProfile(config);
227
+ if (base.driver || base.harness) {
228
+ add(
229
+ "default answerer",
230
+ answererCommand(
231
+ resolveAnswererReference(
232
+ { prompt: "" },
233
+ base.answerer ?? config.defaultAnswerer,
234
+ resolveHarnessForDriver(base.harness, base.driver),
235
+ ),
236
+ ),
237
+ );
238
+ }
229
239
  if (config.harness) {
230
240
  add(
231
241
  "default harness",
@@ -238,7 +248,17 @@ const configuredCliTargets = (config: ResolvedLuxConfig, registry: Registry): Cl
238
248
  for (const command of driverCommands(resolveProfile(config, profile).driver, registry)) {
239
249
  add(`profile '${id}' driver`, command);
240
250
  }
241
- add(`profile '${id}' answerer`, answererCommand(resolveProfile(config, profile).answerer));
251
+ const resolved = resolveProfile(config, profile);
252
+ add(
253
+ `profile '${id}' answerer`,
254
+ answererCommand(
255
+ resolveAnswererReference(
256
+ { prompt: "" },
257
+ resolved.answerer ?? config.defaultAnswerer,
258
+ resolveHarnessForDriver(resolved.harness, resolved.driver),
259
+ ),
260
+ ),
261
+ );
242
262
  const harness = resolveProfile(config, profile).harness;
243
263
  if (harness) {
244
264
  add(
@@ -569,7 +589,7 @@ const validateCaseAnswerer = (
569
589
  const validateCaseAssertions = async (
570
590
  caseId: string,
571
591
  authored: EvalCase,
572
- config: ResolvedLuxConfig,
592
+ harnesses: ReturnType<typeof resolveHarnessForDriver>[],
573
593
  registry: Registry,
574
594
  recorder: DoctorRecorder,
575
595
  ): Promise<CliTarget[]> => {
@@ -601,7 +621,7 @@ const validateCaseAssertions = async (
601
621
  );
602
622
  }
603
623
  if (assertion.type === "rubric") {
604
- for (const command of rubricCommands(assertion, config)) {
624
+ for (const command of rubricCommands(assertion, harnesses)) {
605
625
  targets.push({ label: `case '${caseId}' rubric judge`, command });
606
626
  }
607
627
  }
@@ -635,13 +655,54 @@ const inspectCase = async (
635
655
  try {
636
656
  const authored = await loadEvalCase(discovered.path);
637
657
  const caseRegistry = registryForEvalCase(registry, authored);
638
- const drivers = caseDriverReferences(authored, config, caseRegistry);
639
- const answerer = resolveAnswererReference(authored, config.defaultAnswerer, config.harness);
640
- validateCaseDrivers(discovered.id, drivers, caseRegistry, recorder, authored.requires);
641
- validateCaseAnswerer(discovered.id, answerer, caseRegistry, recorder);
658
+ const profiles = [
659
+ resolveProfile(config),
660
+ ...Object.values(config.profiles ?? {}).map((profile) => resolveProfile(config, profile)),
661
+ ];
662
+ const contexts = profiles.flatMap((profile, index) => {
663
+ const drivers = caseDriverReferences(
664
+ authored,
665
+ {
666
+ ...config,
667
+ profiles: {},
668
+ defaultDriver: profile.driver,
669
+ ...(index > 0 ? { matrix: undefined } : {}),
670
+ },
671
+ caseRegistry,
672
+ );
673
+ return drivers.map((driver) => {
674
+ const harness = resolveHarnessForDriver(profile.harness, refName(driver));
675
+ return {
676
+ driver,
677
+ harness,
678
+ answerer: resolveAnswererReference(
679
+ authored,
680
+ profile.answerer ?? config.defaultAnswerer,
681
+ harness,
682
+ ),
683
+ };
684
+ });
685
+ });
686
+ validateCaseDrivers(
687
+ discovered.id,
688
+ contexts.map(({ driver }) => driver),
689
+ caseRegistry,
690
+ recorder,
691
+ authored.requires,
692
+ );
693
+ for (const { answerer } of contexts)
694
+ validateCaseAnswerer(discovered.id, answerer, caseRegistry, recorder);
642
695
  return [
643
- ...(await validateCaseAssertions(discovered.id, authored, config, caseRegistry, recorder)),
644
- ...executionTargetsForCase(discovered.id, drivers, answerer, caseRegistry),
696
+ ...(await validateCaseAssertions(
697
+ discovered.id,
698
+ authored,
699
+ contexts.map(({ harness }) => harness),
700
+ caseRegistry,
701
+ recorder,
702
+ )),
703
+ ...contexts.flatMap(({ driver, answerer }) =>
704
+ executionTargetsForCase(discovered.id, [driver], answerer, caseRegistry),
705
+ ),
645
706
  ];
646
707
  } catch (error) {
647
708
  recorder.add(