@prismatic-io/lux 0.0.1 → 0.0.2-preview.3

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 (84) hide show
  1. package/lib/assertions/authoring.d.ts +14 -0
  2. package/lib/assertions/authoring.d.ts.map +1 -0
  3. package/lib/assertions/authoring.js +3 -0
  4. package/lib/assertions/authoring.js.map +1 -0
  5. package/lib/authoring.d.ts +1 -0
  6. package/lib/authoring.d.ts.map +1 -1
  7. package/lib/authoring.js +1 -0
  8. package/lib/authoring.js.map +1 -1
  9. package/lib/core/assertion.d.ts +7 -9
  10. package/lib/core/assertion.d.ts.map +1 -1
  11. package/lib/core/assertion.js +13 -0
  12. package/lib/core/assertion.js.map +1 -1
  13. package/lib/core/case-authoring-state.d.ts +12 -0
  14. package/lib/core/case-authoring-state.d.ts.map +1 -0
  15. package/lib/core/case-authoring-state.js +43 -0
  16. package/lib/core/case-authoring-state.js.map +1 -0
  17. package/lib/core/case.d.ts +29 -1
  18. package/lib/core/case.d.ts.map +1 -1
  19. package/lib/core/case.js +14 -6
  20. package/lib/core/case.js.map +1 -1
  21. package/lib/core/driver.d.ts +3 -0
  22. package/lib/core/driver.d.ts.map +1 -1
  23. package/lib/core/driver.js.map +1 -1
  24. package/lib/core/lifecycle-fixtures.d.ts +3 -1
  25. package/lib/core/lifecycle-fixtures.d.ts.map +1 -1
  26. package/lib/core/lifecycle-fixtures.js +4 -2
  27. package/lib/core/lifecycle-fixtures.js.map +1 -1
  28. package/lib/core/lifecycle-hooks.d.ts +9 -0
  29. package/lib/core/lifecycle-hooks.d.ts.map +1 -1
  30. package/lib/core/lifecycle-hooks.js +8 -2
  31. package/lib/core/lifecycle-hooks.js.map +1 -1
  32. package/lib/drivers/subprocess/index.d.ts.map +1 -1
  33. package/lib/drivers/subprocess/index.js +6 -0
  34. package/lib/drivers/subprocess/index.js.map +1 -1
  35. package/lib/index.d.ts +4 -3
  36. package/lib/index.d.ts.map +1 -1
  37. package/lib/index.js +4 -3
  38. package/lib/index.js.map +1 -1
  39. package/lib/orchestrator/annotation-store.d.ts.map +1 -1
  40. package/lib/orchestrator/annotation-store.js +6 -2
  41. package/lib/orchestrator/annotation-store.js.map +1 -1
  42. package/lib/orchestrator/case-extensions.d.ts +6 -0
  43. package/lib/orchestrator/case-extensions.d.ts.map +1 -0
  44. package/lib/orchestrator/case-extensions.js +28 -0
  45. package/lib/orchestrator/case-extensions.js.map +1 -0
  46. package/lib/orchestrator/doctor.d.ts.map +1 -1
  47. package/lib/orchestrator/doctor.js +5 -3
  48. package/lib/orchestrator/doctor.js.map +1 -1
  49. package/lib/orchestrator/loader.d.ts.map +1 -1
  50. package/lib/orchestrator/loader.js +2 -0
  51. package/lib/orchestrator/loader.js.map +1 -1
  52. package/lib/orchestrator/orchestrator.d.ts.map +1 -1
  53. package/lib/orchestrator/orchestrator.js +39 -14
  54. package/lib/orchestrator/orchestrator.js.map +1 -1
  55. package/lib/orchestrator/owned-lock.d.ts.map +1 -1
  56. package/lib/orchestrator/owned-lock.js +52 -38
  57. package/lib/orchestrator/owned-lock.js.map +1 -1
  58. package/lib/orchestrator/regrade.d.ts.map +1 -1
  59. package/lib/orchestrator/regrade.js +8 -4
  60. package/lib/orchestrator/regrade.js.map +1 -1
  61. package/lib/orchestrator/run-execution.d.ts +2 -1
  62. package/lib/orchestrator/run-execution.d.ts.map +1 -1
  63. package/lib/orchestrator/run-execution.js +1 -0
  64. package/lib/orchestrator/run-execution.js.map +1 -1
  65. package/package.json +1 -1
  66. package/skills/lux-answerer/SKILL.md +1 -1
  67. package/src/assertions/authoring.ts +79 -0
  68. package/src/authoring.ts +1 -0
  69. package/src/core/assertion.ts +26 -22
  70. package/src/core/case-authoring-state.ts +65 -0
  71. package/src/core/case.ts +57 -6
  72. package/src/core/driver.ts +3 -0
  73. package/src/core/lifecycle-fixtures.ts +7 -2
  74. package/src/core/lifecycle-hooks.ts +16 -2
  75. package/src/drivers/subprocess/index.ts +6 -0
  76. package/src/index.ts +10 -1
  77. package/src/orchestrator/annotation-store.ts +5 -1
  78. package/src/orchestrator/case-extensions.ts +44 -0
  79. package/src/orchestrator/doctor.ts +5 -3
  80. package/src/orchestrator/loader.ts +2 -0
  81. package/src/orchestrator/orchestrator.ts +80 -40
  82. package/src/orchestrator/owned-lock.ts +54 -34
  83. package/src/orchestrator/regrade.ts +8 -7
  84. package/src/orchestrator/run-execution.ts +3 -0
@@ -0,0 +1,14 @@
1
+ import type { z } from "zod";
2
+ import type { ArtifactBytesUnderConfigSchema, CommandExitsZeroConfigSchema, ContainsConfigSchema, CostUnderConfigSchema, FileContainsConfigSchema, FileExistsConfigSchema, FileMatchesConfigSchema, FileRegexCountConfigSchema, FileRegexSetConfigSchema, GlobCountConfigSchema, InterruptCountConfigSchema, JsonPointerEqualsConfigSchema, LatencyUnderConfigSchema, NoErrorResultsConfigSchema, NotContainsConfigSchema, PredicateConfigSchema, RegexConfigSchema, RunSucceededConfigSchema, TokensUnderConfigSchema, ToolCallCountConfigSchema, ToolCalledConfigSchema, ToolCalledWithConfigSchema, ToolInvocationConfigSchema, ToolResultContainsConfigSchema, ToolResultIsErrorConfigSchema, ToolResultJsonPointerEqualsConfigSchema } from "./core/index.js";
3
+ import type { CapabilityAbsentConfigSchema, ServerInfoEqualsConfigSchema, ToolListedConfigSchema, ToolsListedCountConfigSchema } from "./mcp/index.js";
4
+ import type { RubricConfigSchema } from "./rubric/index.js";
5
+ type BuiltinAssertionSchema = typeof ArtifactBytesUnderConfigSchema | typeof CapabilityAbsentConfigSchema | typeof CommandExitsZeroConfigSchema | typeof ContainsConfigSchema | typeof CostUnderConfigSchema | typeof FileContainsConfigSchema | typeof FileExistsConfigSchema | typeof FileMatchesConfigSchema | typeof FileRegexCountConfigSchema | typeof FileRegexSetConfigSchema | typeof GlobCountConfigSchema | typeof InterruptCountConfigSchema | typeof JsonPointerEqualsConfigSchema | typeof LatencyUnderConfigSchema | typeof NoErrorResultsConfigSchema | typeof NotContainsConfigSchema | typeof PredicateConfigSchema | typeof RegexConfigSchema | typeof RubricConfigSchema | typeof RunSucceededConfigSchema | typeof ServerInfoEqualsConfigSchema | typeof TokensUnderConfigSchema | typeof ToolCalledConfigSchema | typeof ToolCalledWithConfigSchema | typeof ToolCallCountConfigSchema | typeof ToolInvocationConfigSchema | typeof ToolListedConfigSchema | typeof ToolResultContainsConfigSchema | typeof ToolResultIsErrorConfigSchema | typeof ToolResultJsonPointerEqualsConfigSchema | typeof ToolsListedCountConfigSchema;
6
+ export type BuiltinAssertion = z.input<BuiltinAssertionSchema> & {
7
+ id?: string;
8
+ name?: string;
9
+ weight?: number;
10
+ threshold?: number;
11
+ };
12
+ export declare const defineEvalCase: import("../core/case.js").EvalCaseDefinition<BuiltinAssertion>;
13
+ export {};
14
+ //# sourceMappingURL=authoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoring.d.ts","sourceRoot":"","sources":["../../src/assertions/authoring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EACV,8BAA8B,EAC9B,4BAA4B,EAC5B,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,6BAA6B,EAC7B,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,EAC1B,8BAA8B,EAC9B,6BAA6B,EAC7B,uCAAuC,EACxC,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EACV,4BAA4B,EAC5B,4BAA4B,EAC5B,sBAAsB,EACtB,4BAA4B,EAC7B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,KAAK,sBAAsB,GACvB,OAAO,8BAA8B,GACrC,OAAO,4BAA4B,GACnC,OAAO,4BAA4B,GACnC,OAAO,oBAAoB,GAC3B,OAAO,qBAAqB,GAC5B,OAAO,wBAAwB,GAC/B,OAAO,sBAAsB,GAC7B,OAAO,uBAAuB,GAC9B,OAAO,0BAA0B,GACjC,OAAO,wBAAwB,GAC/B,OAAO,qBAAqB,GAC5B,OAAO,0BAA0B,GACjC,OAAO,6BAA6B,GACpC,OAAO,wBAAwB,GAC/B,OAAO,0BAA0B,GACjC,OAAO,uBAAuB,GAC9B,OAAO,qBAAqB,GAC5B,OAAO,iBAAiB,GACxB,OAAO,kBAAkB,GACzB,OAAO,wBAAwB,GAC/B,OAAO,4BAA4B,GACnC,OAAO,uBAAuB,GAC9B,OAAO,sBAAsB,GAC7B,OAAO,0BAA0B,GACjC,OAAO,yBAAyB,GAChC,OAAO,0BAA0B,GACjC,OAAO,sBAAsB,GAC7B,OAAO,8BAA8B,GACrC,OAAO,6BAA6B,GACpC,OAAO,uCAAuC,GAC9C,OAAO,4BAA4B,CAAC;AAExC,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,GAAG;IAC/D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,cAAc,gEAA+C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { createEvalCaseDefinition } from "../core/case.js";
2
+ export const defineEvalCase = createEvalCaseDefinition();
3
+ //# sourceMappingURL=authoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoring.js","sourceRoot":"","sources":["../../src/assertions/authoring.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AA6E3D,MAAM,CAAC,MAAM,cAAc,GAAG,wBAAwB,EAAoB,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export { z } from "zod";
2
+ export { defineEvalCase } from "./assertions/authoring.js";
2
3
  export * from "./core/index.js";
3
4
  //# sourceMappingURL=authoring.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"authoring.d.ts","sourceRoot":"","sources":["../src/authoring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"authoring.d.ts","sourceRoot":"","sources":["../src/authoring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,cAAc,iBAAiB,CAAC"}
package/lib/authoring.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export { z } from "zod";
2
+ export { defineEvalCase } from "./assertions/authoring.js";
2
3
  export * from "./core/index.js";
3
4
  //# sourceMappingURL=authoring.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"authoring.js","sourceRoot":"","sources":["../src/authoring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"authoring.js","sourceRoot":"","sources":["../src/authoring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,cAAc,iBAAiB,CAAC"}
@@ -38,19 +38,16 @@ export interface AssertionImpl<C extends Assertion = Assertion> {
38
38
  * `AssertionImpl`, plugins must describe their case configuration so Lux can
39
39
  * reject invalid plans before starting a subject run.
40
40
  */
41
- export type AssertionPlugin<C extends Assertion = Assertion> = AssertionImpl<C> & {
41
+ export type AssertionPlugin<C extends Assertion = Assertion, Input extends Assertion = C> = AssertionImpl<C> & {
42
42
  configSchema: z.ZodObject & z.ZodType<C>;
43
+ /** Type-only input accepted while authoring before schema defaults apply. */
44
+ readonly __input?: Input;
43
45
  /** Author-maintained identity for evaluator/schema behavior. */
44
46
  pluginVersion: string;
45
47
  };
46
48
  type SchemaAssertion<S extends z.ZodObject> = z.output<S> extends Assertion ? z.output<S> : never;
47
- type IsUnion<T, Whole = T> = T extends Whole ? ([Whole] extends [T] ? false : true) : never;
48
- type SingleStringLiteral<T> = T extends string ? string extends T ? never : true extends IsUnion<T> ? never : T : never;
49
- type LiteralAssertionType<S extends z.ZodObject> = SchemaAssertion<S> extends {
50
- type: infer OutputType;
51
- } ? z.input<S> extends {
52
- type: infer InputType;
53
- } ? SingleStringLiteral<OutputType> extends infer Literal extends string ? [InputType, Literal] extends [Literal, InputType] ? Literal : never : never : never : never;
49
+ type SchemaAssertionInput<S extends z.ZodObject> = z.input<S> extends Assertion ? z.input<S> : never;
50
+ type LiteralAssertionType<S extends z.ZodObject> = S["shape"]["type"] extends z.ZodLiteral<infer Literal extends string> ? Literal : never;
54
51
  export type AssertionPluginDefinition<S extends z.ZodObject> = {
55
52
  type: LiteralAssertionType<S>;
56
53
  configSchema: S;
@@ -67,7 +64,8 @@ export declare const assertionPluginIssue: (definition: {
67
64
  * Define a schema-validated assertion plugin while inferring the config passed
68
65
  * to `evaluate` from the schema.
69
66
  */
70
- export declare const defineAssertion: <S extends z.ZodObject>(definition: AssertionPluginDefinition<S>) => AssertionPlugin<SchemaAssertion<S>>;
67
+ export declare const defineAssertion: <S extends z.ZodObject>(definition: AssertionPluginDefinition<S>) => AssertionPlugin<SchemaAssertion<S>, SchemaAssertionInput<S>>;
68
+ export declare const defineAssertionRegistry: <const Plugins extends readonly AssertionPlugin[]>(...plugins: Plugins) => Plugins;
71
69
  export declare const GradingAssertionEntrySchema: z.ZodObject<{
72
70
  id: z.ZodExactOptional<z.ZodString>;
73
71
  type: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"assertion.d.ts","sourceRoot":"","sources":["../../src/core/assertion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assertion.d.ts","sourceRoot":"","sources":["../../src/core/assertion.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,19 @@ export const defineAssertion = (definition) => {
42
42
  throw new TypeError(issue);
43
43
  return definition;
44
44
  };
45
+ export const defineAssertionRegistry = (...plugins) => {
46
+ const types = new Set();
47
+ for (const plugin of plugins) {
48
+ const issue = assertionPluginIssue(plugin);
49
+ if (issue)
50
+ throw new TypeError(issue);
51
+ if (types.has(plugin.type)) {
52
+ throw new TypeError(`assertion registry has duplicate type '${plugin.type}'`);
53
+ }
54
+ types.add(plugin.type);
55
+ }
56
+ return plugins;
57
+ };
45
58
  export const GradingAssertionEntrySchema = z.object({
46
59
  /** Stable author-supplied id, or a deterministic positional fallback. */
47
60
  id: z.exactOptional(z.string()),
@@ -1 +1 @@
1
- {"version":3,"file":"assertion.js","sourceRoot":"","sources":["../../src/core/assertion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assertion.js","sourceRoot":"","sources":["../../src/core/assertion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,OAAO,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC9B,+DAA+D;IAC/D,YAAY,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACzC,gFAAgF;IAChF,KAAK,EAAE,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC;CACzC,CAAC,CAAC;AAsDH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,UAKpC,EAAsB,EAAE;IACvB,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,wCAAwC,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,CAAC,UAAU,CAAC,YAAY,YAAY,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;QACtD,OAAO,2DAA2D,CAAC;IACrE,CAAC;IACD,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;IACzD,IACE,CAAC,CAAC,aAAa,YAAY,CAAC,CAAC,UAAU,CAAC;QACxC,aAAa,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;QAC/B,aAAa,CAAC,KAAK,KAAK,UAAU,CAAC,IAAI,EACvC,CAAC;QACD,OAAO,wEAAwE,CAAC;IAClF,CAAC;IACD,IAAI,OAAO,UAAU,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC;QACrF,OAAO,kDAAkD,CAAC;IAC5D,CAAC;IACD,IAAI,OAAO,UAAU,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC9C,OAAO,8CAA8C,CAAC;IACxD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,UAAwC,EACsB,EAAE;IAChE,MAAM,KAAK,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,KAAK;QAAE,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;IACtC,OAAO,UAAqF,CAAC;AAC/F,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,GAAG,OAAgB,EACV,EAAE;IACX,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,KAAK;YAAE,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,SAAS,CAAC,0CAA0C,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QAChF,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,yEAAyE;IACzE,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,+FAA+F;IAC/F,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,OAAO,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC9B,YAAY,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC;CACzC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC;IAChD;;;OAGG;IACH,UAAU,EAAE,CAAC,CAAC,aAAa,CACzB,CAAC,CAAC,MAAM,CAAC;QACP,UAAU,EAAE,sBAAsB;QAClC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;KAC3D,CAAC,CACH;CACF,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { AssertionPlugin } from "./assertion.js";
2
+ import type { EvalCase } from "./case.js";
3
+ import type { LifecycleHooksPlugin } from "./lifecycle-hooks.js";
4
+ export type EvalCaseExtensions = {
5
+ assertions: readonly AssertionPlugin[];
6
+ fixtures: readonly LifecycleHooksPlugin[];
7
+ };
8
+ export declare const collectEvalCaseExtensions: (input: EvalCase, assertions?: readonly AssertionPlugin[], fixtures?: readonly LifecycleHooksPlugin[]) => EvalCaseExtensions;
9
+ export declare const setEvalCaseExtensions: (evalCase: EvalCase, extensions: EvalCaseExtensions) => void;
10
+ export declare const evalCaseExtensions: (evalCase: EvalCase) => EvalCaseExtensions;
11
+ export declare const transferEvalCaseExtensions: (source: EvalCase, target: EvalCase) => void;
12
+ //# sourceMappingURL=case-authoring-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"case-authoring-state.d.ts","sourceRoot":"","sources":["../../src/core/case-authoring-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,SAAS,eAAe,EAAE,CAAC;IACvC,QAAQ,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAC3C,CAAC;AAyBF,eAAO,MAAM,yBAAyB,UAC7B,QAAQ,eACH,SAAS,eAAe,EAAE,aAC5B,SAAS,oBAAoB,EAAE,KACxC,kBAcF,CAAC;AAEF,eAAO,MAAM,qBAAqB,aAAc,QAAQ,cAAc,kBAAkB,KAAG,IAI1F,CAAC;AAEF,eAAO,MAAM,kBAAkB,aAAc,QAAQ,KAAG,kBACU,CAAC;AAEnE,eAAO,MAAM,0BAA0B,WAAY,QAAQ,UAAU,QAAQ,KAAG,IAG/E,CAAC"}
@@ -0,0 +1,43 @@
1
+ const CASE_EXTENSIONS_KEY = Symbol.for("@prismatic-io/lux/eval-case-extensions");
2
+ const extensionState = globalThis;
3
+ const sharedCaseExtensions = extensionState[CASE_EXTENSIONS_KEY];
4
+ // A project-local package and the CLI can load separate Lux module instances.
5
+ const caseExtensions = sharedCaseExtensions instanceof WeakMap
6
+ ? sharedCaseExtensions
7
+ : new WeakMap();
8
+ extensionState[CASE_EXTENSIONS_KEY] = caseExtensions;
9
+ const uniqueBy = (values, keyOf, kind) => {
10
+ const unique = new Map();
11
+ for (const value of values) {
12
+ const key = keyOf(value);
13
+ const existing = unique.get(key);
14
+ if (existing && existing !== value) {
15
+ throw new TypeError(`case has conflicting ${kind} definitions for '${key}'`);
16
+ }
17
+ unique.set(key, value);
18
+ }
19
+ return [...unique.values()];
20
+ };
21
+ export const collectEvalCaseExtensions = (input, assertions = [], fixtures = []) => {
22
+ const availableAssertions = uniqueBy(assertions, (plugin) => plugin.type, "assertion");
23
+ const byType = new Map(availableAssertions.map((plugin) => [plugin.type, plugin]));
24
+ return {
25
+ assertions: uniqueBy((input.assertions ?? []).flatMap((assertion) => {
26
+ const plugin = byType.get(assertion.type);
27
+ return plugin ? [plugin] : [];
28
+ }), (plugin) => plugin.type, "assertion"),
29
+ fixtures: uniqueBy(fixtures, (fixture) => fixture.name, "fixture"),
30
+ };
31
+ };
32
+ export const setEvalCaseExtensions = (evalCase, extensions) => {
33
+ if (extensions.assertions.length > 0 || extensions.fixtures.length > 0) {
34
+ caseExtensions.set(evalCase, extensions);
35
+ }
36
+ };
37
+ export const evalCaseExtensions = (evalCase) => caseExtensions.get(evalCase) ?? { assertions: [], fixtures: [] };
38
+ export const transferEvalCaseExtensions = (source, target) => {
39
+ const extensions = caseExtensions.get(source);
40
+ if (extensions)
41
+ caseExtensions.set(target, extensions);
42
+ };
43
+ //# sourceMappingURL=case-authoring-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"case-authoring-state.js","sourceRoot":"","sources":["../../src/core/case-authoring-state.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import { z } from "zod";
2
+ import type { AssertionPlugin } from "./assertion.js";
3
+ import type { LifecycleHooksPlugin } from "./lifecycle-hooks.js";
2
4
  export declare const FixturesRefSchema: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
3
5
  kind: z.ZodLiteral<"dir">;
4
6
  path: z.ZodString;
@@ -48,7 +50,32 @@ export declare const EvalCaseSchema: z.ZodObject<{
48
50
  meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
49
51
  }, z.core.$strict>;
50
52
  export type EvalCase = z.infer<typeof EvalCaseSchema>;
51
- export declare const defineEvalCase: (input: EvalCase) => EvalCase;
53
+ type AssertionPlanFields = Pick<Assertion, "id" | "name" | "threshold" | "weight">;
54
+ type AssertionInputOf<Plugin> = Plugin extends AssertionPlugin<Assertion, infer Input> ? Input & AssertionPlanFields : never;
55
+ export type EvalCaseInput<AllowedAssertion extends Assertion = Assertion> = Omit<EvalCase, "assertions"> & {
56
+ assertions?: AllowedAssertion[];
57
+ };
58
+ export type EvalCaseAuthoringOptions<Plugins extends readonly AssertionPlugin[] = readonly AssertionPlugin[]> = {
59
+ assertions?: Plugins;
60
+ fixtures?: readonly LifecycleHooksPlugin[];
61
+ };
62
+ export type EvalCaseDefinition<AllowedAssertion extends Assertion = Assertion> = {
63
+ (input: EvalCaseInput<AllowedAssertion>): EvalCase;
64
+ /**
65
+ * Create a case definition with selectively activated lifecycle fixtures.
66
+ * Further calls to `extend` append fixtures in setup order.
67
+ */
68
+ extend<const Plugins extends readonly AssertionPlugin[] = readonly []>(options: EvalCaseAuthoringOptions<Plugins>): EvalCaseDefinition<AllowedAssertion | AssertionInputOf<Plugins[number]>>;
69
+ };
70
+ export declare const createEvalCaseDefinition: <AllowedAssertion extends Assertion = Assertion>(inheritedAssertions?: readonly AssertionPlugin[], inheritedFixtures?: readonly LifecycleHooksPlugin[]) => EvalCaseDefinition<AllowedAssertion>;
71
+ export declare const defineEvalCase: EvalCaseDefinition<{
72
+ [x: string]: unknown;
73
+ id?: string | undefined;
74
+ type: string;
75
+ name?: string | undefined;
76
+ weight?: number | undefined;
77
+ threshold?: number | undefined;
78
+ }>;
52
79
  export declare const PersistedCaseSchema: z.ZodObject<{
53
80
  id: z.ZodOptional<z.ZodOptional<z.ZodString>>;
54
81
  prompt: z.ZodOptional<z.ZodString>;
@@ -76,4 +103,5 @@ export declare const PersistedCaseSchema: z.ZodObject<{
76
103
  }, z.core.$loose>]>>;
77
104
  }, z.core.$loose>;
78
105
  export type PersistedCase = z.infer<typeof PersistedCaseSchema>;
106
+ export {};
79
107
  //# sourceMappingURL=case.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"case.d.ts","sourceRoot":"","sources":["../../src/core/case.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,iBAAiB;;;oBAG5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAO5D,eAAO,MAAM,eAAe;;;oBAG1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,iBAAiB;;;oBAG5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,eAAe;;;;;;iBASlB,CAAC;AACX,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAaxD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;kBAiBvB,CAAC;AACL,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,eAAO,MAAM,cAAc,UAAW,QAAQ,KAAG,QAMhD,CAAC;AAmBF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;iBAOtB,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"case.d.ts","sourceRoot":"","sources":["../../src/core/case.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGjE,eAAO,MAAM,iBAAiB;;;oBAG5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAO5D,eAAO,MAAM,eAAe;;;oBAG1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,iBAAiB;;;oBAG5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,eAAe;;;;;;iBASlB,CAAC;AACX,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAaxD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;kBAiBvB,CAAC;AACL,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,KAAK,mBAAmB,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC,CAAC;AACnF,KAAK,gBAAgB,CAAC,MAAM,IAC1B,MAAM,SAAS,eAAe,CAAC,SAAS,EAAE,MAAM,KAAK,CAAC,GAAG,KAAK,GAAG,mBAAmB,GAAG,KAAK,CAAC;AAE/F,MAAM,MAAM,aAAa,CAAC,gBAAgB,SAAS,SAAS,GAAG,SAAS,IAAI,IAAI,CAC9E,QAAQ,EACR,YAAY,CACb,GAAG;IACF,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,wBAAwB,CAClC,OAAO,SAAS,SAAS,eAAe,EAAE,GAAG,SAAS,eAAe,EAAE,IACrE;IACF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,gBAAgB,SAAS,SAAS,GAAG,SAAS,IAAI;IAC/E,CAAC,KAAK,EAAE,aAAa,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CAAC;IACnD;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,SAAS,SAAS,eAAe,EAAE,GAAG,SAAS,EAAE,EACnE,OAAO,EAAE,wBAAwB,CAAC,OAAO,CAAC,GACzC,kBAAkB,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;CAC7E,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,gBAAgB,SAAS,SAAS,GAAG,SAAS,wBAChE,SAAS,eAAe,EAAE,sBAC5B,SAAS,oBAAoB,EAAE,KACjD,kBAAkB,CAAC,gBAAgB,CAoBrC,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;EAA6B,CAAC;AAmBzD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;iBAOtB,CAAC;AACX,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
package/lib/core/case.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { z } from "zod";
2
+ import { collectEvalCaseExtensions, setEvalCaseExtensions } from "./case-authoring-state.js";
2
3
  import { formatZodIssues } from "./zod.js";
3
4
  export const FixturesRefSchema = z.union([
4
5
  z.string(),
@@ -56,13 +57,20 @@ export const EvalCaseSchema = EvalCaseObjectSchema
56
57
  seen.add(assertion.id);
57
58
  }
58
59
  });
59
- export const defineEvalCase = (input) => {
60
- const parsed = EvalCaseSchema.safeParse(input);
61
- if (!parsed.success) {
62
- throw new Error(`Invalid eval case: ${formatZodIssues(parsed.error)}`);
63
- }
64
- return parsed.data;
60
+ export const createEvalCaseDefinition = (inheritedAssertions = [], inheritedFixtures = []) => {
61
+ const define = ((input) => {
62
+ const parsed = EvalCaseSchema.safeParse(input);
63
+ if (!parsed.success) {
64
+ throw new Error(`Invalid eval case: ${formatZodIssues(parsed.error)}`);
65
+ }
66
+ const extensions = collectEvalCaseExtensions(parsed.data, inheritedAssertions, inheritedFixtures);
67
+ setEvalCaseExtensions(parsed.data, extensions);
68
+ return parsed.data;
69
+ });
70
+ define.extend = (({ assertions = [], fixtures = [] }) => createEvalCaseDefinition([...inheritedAssertions, ...assertions], [...inheritedFixtures, ...fixtures]));
71
+ return define;
65
72
  };
73
+ export const defineEvalCase = createEvalCaseDefinition();
66
74
  const PersistedFixturesRefSchema = z.union([
67
75
  z.string(),
68
76
  z.looseObject({ kind: z.literal("dir"), path: z.string() }),
@@ -1 +1 @@
1
- {"version":3,"file":"case.js","sourceRoot":"","sources":["../../src/core/case.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"case.js","sourceRoot":"","sources":["../../src/core/case.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import type { EventHandler } from "./emitter.js";
3
3
  import type { Answer, Done, ErrorEvent, Interrupt, Progress, ReadyState } from "./events.js";
4
+ import type { FixtureValueBinding } from "./lifecycle-hooks.js";
4
5
  export declare const ArtifactSchema: z.ZodObject<{
5
6
  path: z.ZodString;
6
7
  root: z.ZodExactOptional<z.ZodString>;
@@ -19,6 +20,8 @@ export type StartContext = {
19
20
  caseId?: string;
20
21
  prompt: string;
21
22
  fixtures?: ResolvedFixtures | undefined;
23
+ /** Authored fixture values selected for this case. */
24
+ fixtureValues?: readonly FixtureValueBinding[] | undefined;
22
25
  /** Root containing persisted runs. Drivers may use it as an isolation boundary. */
23
26
  runsRoot?: string | undefined;
24
27
  runDir: string;
@@ -1 +1 @@
1
- {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/core/driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE7F,eAAO,MAAM,cAAc;;;;;;iBAWzB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,eAAO,MAAM,sBAAsB;;;iBAGjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAGtE,MAAM,MAAM,YAAY,GAAG;IACzB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACxC,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9C,EAAE,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC7F,GAAG,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC9F,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC;;;;OAIG;IACH,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,MAAM,YAAY,CAAC,GAAG,GAAG,OAAO,IAAI;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC;IAC5B,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC7D,CAAC"}
1
+ {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../src/core/driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,eAAO,MAAM,cAAc;;;;;;iBAWzB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,eAAO,MAAM,sBAAsB;;;iBAGjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAGtE,MAAM,MAAM,YAAY,GAAG;IACzB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACxC,sDAAsD;IACtD,aAAa,CAAC,EAAE,SAAS,mBAAmB,EAAE,GAAG,SAAS,CAAC;IAC3D,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9C,EAAE,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC7F,GAAG,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC9F,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC;;;;OAIG;IACH,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,MAAM,YAAY,CAAC,GAAG,GAAG,OAAO,IAAI;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC;IAC5B,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC7D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"driver.js","sourceRoot":"","sources":["../../src/core/driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB;;;;OAIG;IACH,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,WAAW,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;CACzD,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;CACzD,CAAC,CAAC"}
1
+ {"version":3,"file":"driver.js","sourceRoot":"","sources":["../../src/core/driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB;;;;OAIG;IACH,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,WAAW,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;CACzD,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;CACzD,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type CaseLifecycleHookContext, type LifecycleHooksPlugin, type SuiteLifecycleHookContext } from "./lifecycle-hooks.js";
1
+ import { type CaseLifecycleHookContext, type FixtureValue, type LifecycleHooksPlugin, type SuiteLifecycleHookContext } from "./lifecycle-hooks.js";
2
2
  export type LifecycleFixtureUse = () => PromiseLike<void>;
3
3
  export type LifecycleFixture<Context extends SuiteLifecycleHookContext> = (context: Context, use: LifecycleFixtureUse) => void | Promise<void>;
4
4
  export type LifecycleFixturesDefinition = {
@@ -9,6 +9,8 @@ export type LifecycleFixturesDefinition = {
9
9
  * to execution identity.
10
10
  */
11
11
  identity?: unknown;
12
+ /** Public, serializable data made available to the selected case's driver. */
13
+ value?: FixtureValue;
12
14
  suite?: LifecycleFixture<SuiteLifecycleHookContext>;
13
15
  case?: LifecycleFixture<CaseLifecycleHookContext>;
14
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-fixtures.d.ts","sourceRoot":"","sources":["../../src/core/lifecycle-fixtures.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,wBAAwB,EAG7B,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC/B,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,mBAAmB,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;AAE1D,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,yBAAyB,IAAI,CACxE,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,mBAAmB,KACrB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,gBAAgB,CAAC,yBAAyB,CAAC,CAAC;IACpD,IAAI,CAAC,EAAE,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;CACnD,CAAC;AAgFF;;;GAGG;AACH,eAAO,MAAM,cAAc,eAAgB,2BAA2B,KAAG,oBAkCxE,CAAC"}
1
+ {"version":3,"file":"lifecycle-fixtures.d.ts","sourceRoot":"","sources":["../../src/core/lifecycle-fixtures.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,wBAAwB,EAE7B,KAAK,YAAY,EAEjB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC/B,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,mBAAmB,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;AAE1D,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,yBAAyB,IAAI,CACxE,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,mBAAmB,KACrB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE,gBAAgB,CAAC,yBAAyB,CAAC,CAAC;IACpD,IAAI,CAAC,EAAE,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;CACnD,CAAC;AAgFF;;;GAGG;AACH,eAAO,MAAM,cAAc,eAAgB,2BAA2B,KAAG,oBAoCxE,CAAC"}
@@ -74,8 +74,8 @@ const activateFixture = async (fixture, context, label) => {
74
74
  * Setup belongs before `use`; teardown belongs after it.
75
75
  */
76
76
  export const defineFixtures = (definition) => {
77
- if (!definition.suite && !definition.case) {
78
- throw new TypeError("fixtures plugin must define suite or case");
77
+ if (!definition.suite && !definition.case && definition.value === undefined) {
78
+ throw new TypeError("fixtures plugin must define value, suite, or case");
79
79
  }
80
80
  if (definition.suite !== undefined && typeof definition.suite !== "function") {
81
81
  throw new TypeError("fixtures plugin suite must be a function");
@@ -88,8 +88,10 @@ export const defineFixtures = (definition) => {
88
88
  return defineLifecycleHooks({
89
89
  name: definition.name,
90
90
  pluginVersion: definition.pluginVersion,
91
+ ...(definition.value === undefined ? {} : { value: definition.value }),
91
92
  ...(definition.identity === undefined ? {} : { identity: definition.identity }),
92
93
  implementationHash: valueHash({
94
+ value: definition.value,
93
95
  identity: definition.identity,
94
96
  suite: definition.suite,
95
97
  case: definition.case,
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-fixtures.js","sourceRoot":"","sources":["../../src/core/lifecycle-fixtures.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle-fixtures.js","sourceRoot":"","sources":["../../src/core/lifecycle-fixtures.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,12 @@
1
+ import { z } from "zod";
1
2
  export type LifecycleHookCleanup = () => void | Promise<void>;
2
3
  export type LifecycleHookSetupResult = LifecycleHookCleanup | undefined;
4
+ export declare const FixtureValueSchema: z.ZodJSONSchema;
5
+ export type FixtureValue = z.infer<typeof FixtureValueSchema>;
6
+ export type FixtureValueBinding = {
7
+ name: string;
8
+ value: FixtureValue;
9
+ };
3
10
  export type SuiteLifecycleHookItem = {
4
11
  id: string;
5
12
  caseId: string;
@@ -21,6 +28,8 @@ export type LifecycleHooksPlugin = {
21
28
  name: string;
22
29
  /** Author-maintained identity for setup and teardown behavior. */
23
30
  pluginVersion: string;
31
+ /** Public, serializable data made available to the selected case's driver. */
32
+ value?: FixtureValue;
24
33
  /**
25
34
  * Public, non-secret values captured by hook closures and relevant to
26
35
  * execution identity. Included in the implementation hash.
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-hooks.d.ts","sourceRoot":"","sources":["../../src/core/lifecycle-hooks.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,oBAAoB,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9D,MAAM,MAAM,wBAAwB,GAAG,oBAAoB,GAAG,SAAS,CAAC;AAExE,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACzC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,yBAAyB,GAAG;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,sBAAsB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,UAAU,CAAC,CACT,OAAO,EAAE,yBAAyB,GACjC,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAChE;;;;OAIG;IACH,SAAS,CAAC,CACR,OAAO,EAAE,wBAAwB,GAChC,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACjE,CAAC;AAEF,eAAO,MAAM,yBAAyB,eACxB,OAAO,CAAC,oBAAoB,CAAC,KACxC,MAAM,GAAG,SAuBX,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,eAAgB,oBAAoB,KAAG,oBAavE,CAAC"}
1
+ {"version":3,"file":"lifecycle-hooks.d.ts","sourceRoot":"","sources":["../../src/core/lifecycle-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,MAAM,oBAAoB,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9D,MAAM,MAAM,wBAAwB,GAAG,oBAAoB,GAAG,SAAS,CAAC;AACxE,eAAO,MAAM,kBAAkB,iBAAW,CAAC;AAC3C,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,YAAY,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACzC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,yBAAyB,GAAG;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,sBAAsB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,UAAU,CAAC,CACT,OAAO,EAAE,yBAAyB,GACjC,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAChE;;;;OAIG;IACH,SAAS,CAAC,CACR,OAAO,EAAE,wBAAwB,GAChC,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACjE,CAAC;AAEF,eAAO,MAAM,yBAAyB,eACxB,OAAO,CAAC,oBAAoB,CAAC,KACxC,MAAM,GAAG,SA0BX,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,eAAgB,oBAAoB,KAAG,oBAcvE,CAAC"}
@@ -1,4 +1,6 @@
1
+ import { z } from "zod";
1
2
  import { valueHash } from "./hash.js";
3
+ export const FixtureValueSchema = z.json();
2
4
  export const lifecycleHooksPluginIssue = (definition) => {
3
5
  if (typeof definition.name !== "string" || !definition.name.trim()) {
4
6
  return "lifecycle hooks plugin name must not be empty";
@@ -16,8 +18,11 @@ export const lifecycleHooksPluginIssue = (definition) => {
16
18
  if (definition.setupCase !== undefined && typeof definition.setupCase !== "function") {
17
19
  return "lifecycle hooks plugin setupCase must be a function";
18
20
  }
19
- if (!definition.setupSuite && !definition.setupCase) {
20
- return "lifecycle hooks plugin must define setupSuite or setupCase";
21
+ if (definition.value !== undefined && !FixtureValueSchema.safeParse(definition.value).success) {
22
+ return "lifecycle hooks plugin value must be JSON-serializable";
23
+ }
24
+ if (!definition.setupSuite && !definition.setupCase && definition.value === undefined) {
25
+ return "lifecycle hooks plugin must define a value, setupSuite, or setupCase";
21
26
  }
22
27
  return undefined;
23
28
  };
@@ -33,6 +38,7 @@ export const defineLifecycleHooks = (definition) => {
33
38
  ...definition,
34
39
  implementationHash: definition.implementationHash ??
35
40
  valueHash({
41
+ value: definition.value,
36
42
  identity: definition.identity,
37
43
  setupSuite: definition.setupSuite,
38
44
  setupCase: definition.setupCase,
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-hooks.js","sourceRoot":"","sources":["../../src/core/lifecycle-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAwDtC,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,UAAyC,EACrB,EAAE;IACtB,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACnE,OAAO,+CAA+C,CAAC;IACzD,CAAC;IACD,IAAI,OAAO,UAAU,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC;QACrF,OAAO,wDAAwD,CAAC;IAClE,CAAC;IACD,IACE,UAAU,CAAC,kBAAkB,KAAK,SAAS;QAC3C,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,EACrD,CAAC;QACD,OAAO,wEAAwE,CAAC;IAClF,CAAC;IACD,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,UAAU,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACvF,OAAO,sDAAsD,CAAC;IAChE,CAAC;IACD,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,UAAU,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;QACrF,OAAO,qDAAqD,CAAC;IAC/D,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QACpD,OAAO,4DAA4D,CAAC;IACtE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,UAAgC,EAAwB,EAAE;IAC7F,MAAM,KAAK,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,KAAK;QAAE,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;IACtC,OAAO;QACL,GAAG,UAAU;QACb,kBAAkB,EAChB,UAAU,CAAC,kBAAkB;YAC7B,SAAS,CAAC;gBACR,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,UAAU,EAAE,UAAU,CAAC,UAAU;gBACjC,SAAS,EAAE,UAAU,CAAC,SAAS;aAChC,CAAC;KACL,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"lifecycle-hooks.js","sourceRoot":"","sources":["../../src/core/lifecycle-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAItC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AA6D3C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,UAAyC,EACrB,EAAE;IACtB,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACnE,OAAO,+CAA+C,CAAC;IACzD,CAAC;IACD,IAAI,OAAO,UAAU,CAAC,aAAa,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC;QACrF,OAAO,wDAAwD,CAAC;IAClE,CAAC;IACD,IACE,UAAU,CAAC,kBAAkB,KAAK,SAAS;QAC3C,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,EACrD,CAAC;QACD,OAAO,wEAAwE,CAAC;IAClF,CAAC;IACD,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,UAAU,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACvF,OAAO,sDAAsD,CAAC;IAChE,CAAC;IACD,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,UAAU,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;QACrF,OAAO,qDAAqD,CAAC;IAC/D,CAAC;IACD,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QAC9F,OAAO,wDAAwD,CAAC;IAClE,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACtF,OAAO,sEAAsE,CAAC;IAChF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,UAAgC,EAAwB,EAAE;IAC7F,MAAM,KAAK,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,KAAK;QAAE,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;IACtC,OAAO;QACL,GAAG,UAAU;QACb,kBAAkB,EAChB,UAAU,CAAC,kBAAkB;YAC7B,SAAS,CAAC;gBACR,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,UAAU,EAAE,UAAU,CAAC,UAAU;gBACjC,SAAS,EAAE,UAAU,CAAC,SAAS;aAChC,CAAC;KACL,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/drivers/subprocess/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAML,KAAK,YAAY,EAEjB,KAAK,cAAc,EAKnB,KAAK,YAAY,EAQlB,MAAM,qBAAqB,CAAC;AAG7B,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;mDAoCP,MAAM,KAAK,MAAM;;kBAY/C,CAAC;AAEL,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAuZlF,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,sBAAsB,CAIjE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/drivers/subprocess/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAML,KAAK,YAAY,EAEjB,KAAK,cAAc,EAKnB,KAAK,YAAY,EAQlB,MAAM,qBAAqB,CAAC;AAG7B,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;mDAoCP,MAAM,KAAK,MAAM;;kBAY/C,CAAC;AAEL,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AA6ZlF,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,sBAAsB,CAIjE,CAAC"}
@@ -56,6 +56,7 @@ const KILL_GRACE_MS = 5_000;
56
56
  const DEFAULT_MAX_LINE_BYTES = 10_000_000;
57
57
  const MAX_STDERR_TAIL_CHARS = 8_192;
58
58
  const DEFAULT_MAX_ARTIFACT_FILES = 500;
59
+ const MAX_FIXTURE_VALUES_BYTES = 64 * 1024;
59
60
  const ARTIFACT_SNAPSHOT_MODULE = fileURLToPath(new URL("../../core/artifact-snapshot.js", import.meta.url));
60
61
  // Grace for a still-open stdout to flush buffered lines after the child's
61
62
  // exit before the read end is force-destroyed.
@@ -105,6 +106,10 @@ class SubprocessDriverImpl {
105
106
  }
106
107
  async start(ctx) {
107
108
  this.artifactsDir = ctx.artifactsDir;
109
+ const fixtureValues = JSON.stringify(ctx.fixtureValues ?? []);
110
+ if (Buffer.byteLength(fixtureValues) > MAX_FIXTURE_VALUES_BYTES) {
111
+ throw new Error(`subprocess fixture values exceed ${MAX_FIXTURE_VALUES_BYTES} bytes`);
112
+ }
108
113
  const managed = spawnManagedProcess(this.config.command, this.config.args ?? [], {
109
114
  cwd: this.config.cwd ?? ctx.runDir,
110
115
  env: {
@@ -113,6 +118,7 @@ class SubprocessDriverImpl {
113
118
  ...(ctx.caseId ? { LUX_CASE_ID: ctx.caseId } : {}),
114
119
  LUX_RUN_DIR: ctx.runDir,
115
120
  LUX_ARTIFACTS_DIR: ctx.artifactsDir,
121
+ LUX_FIXTURE_VALUES: fixtureValues,
116
122
  LUX_PROMPT: ctx.prompt,
117
123
  LUX_ARTIFACT_SNAPSHOT_MODULE: ARTIFACT_SNAPSHOT_MODULE,
118
124
  },