@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.
- package/lib/assertions/authoring.d.ts +14 -0
- package/lib/assertions/authoring.d.ts.map +1 -0
- package/lib/assertions/authoring.js +3 -0
- package/lib/assertions/authoring.js.map +1 -0
- package/lib/authoring.d.ts +1 -0
- package/lib/authoring.d.ts.map +1 -1
- package/lib/authoring.js +1 -0
- package/lib/authoring.js.map +1 -1
- package/lib/core/assertion.d.ts +7 -9
- package/lib/core/assertion.d.ts.map +1 -1
- package/lib/core/assertion.js +13 -0
- package/lib/core/assertion.js.map +1 -1
- package/lib/core/case-authoring-state.d.ts +12 -0
- package/lib/core/case-authoring-state.d.ts.map +1 -0
- package/lib/core/case-authoring-state.js +43 -0
- package/lib/core/case-authoring-state.js.map +1 -0
- package/lib/core/case.d.ts +29 -1
- package/lib/core/case.d.ts.map +1 -1
- package/lib/core/case.js +14 -6
- package/lib/core/case.js.map +1 -1
- package/lib/core/driver.d.ts +3 -0
- package/lib/core/driver.d.ts.map +1 -1
- package/lib/core/driver.js.map +1 -1
- package/lib/core/lifecycle-fixtures.d.ts +3 -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/lifecycle-hooks.d.ts +9 -0
- package/lib/core/lifecycle-hooks.d.ts.map +1 -1
- package/lib/core/lifecycle-hooks.js +8 -2
- package/lib/core/lifecycle-hooks.js.map +1 -1
- package/lib/drivers/subprocess/index.d.ts.map +1 -1
- package/lib/drivers/subprocess/index.js +6 -0
- package/lib/drivers/subprocess/index.js.map +1 -1
- package/lib/index.d.ts +4 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -3
- package/lib/index.js.map +1 -1
- package/lib/orchestrator/annotation-store.d.ts.map +1 -1
- package/lib/orchestrator/annotation-store.js +6 -2
- package/lib/orchestrator/annotation-store.js.map +1 -1
- package/lib/orchestrator/case-extensions.d.ts +6 -0
- package/lib/orchestrator/case-extensions.d.ts.map +1 -0
- package/lib/orchestrator/case-extensions.js +28 -0
- package/lib/orchestrator/case-extensions.js.map +1 -0
- package/lib/orchestrator/doctor.d.ts.map +1 -1
- package/lib/orchestrator/doctor.js +5 -3
- package/lib/orchestrator/doctor.js.map +1 -1
- package/lib/orchestrator/loader.d.ts.map +1 -1
- package/lib/orchestrator/loader.js +2 -0
- package/lib/orchestrator/loader.js.map +1 -1
- package/lib/orchestrator/orchestrator.d.ts.map +1 -1
- package/lib/orchestrator/orchestrator.js +39 -14
- package/lib/orchestrator/orchestrator.js.map +1 -1
- package/lib/orchestrator/owned-lock.d.ts.map +1 -1
- package/lib/orchestrator/owned-lock.js +52 -38
- package/lib/orchestrator/owned-lock.js.map +1 -1
- package/lib/orchestrator/regrade.d.ts.map +1 -1
- package/lib/orchestrator/regrade.js +8 -4
- package/lib/orchestrator/regrade.js.map +1 -1
- package/lib/orchestrator/run-execution.d.ts +2 -1
- package/lib/orchestrator/run-execution.d.ts.map +1 -1
- package/lib/orchestrator/run-execution.js +1 -0
- package/lib/orchestrator/run-execution.js.map +1 -1
- package/package.json +1 -1
- package/skills/lux-answerer/SKILL.md +1 -1
- package/src/assertions/authoring.ts +79 -0
- package/src/authoring.ts +1 -0
- package/src/core/assertion.ts +26 -22
- package/src/core/case-authoring-state.ts +65 -0
- package/src/core/case.ts +57 -6
- package/src/core/driver.ts +3 -0
- package/src/core/lifecycle-fixtures.ts +7 -2
- package/src/core/lifecycle-hooks.ts +16 -2
- package/src/drivers/subprocess/index.ts +6 -0
- package/src/index.ts +10 -1
- package/src/orchestrator/annotation-store.ts +5 -1
- package/src/orchestrator/case-extensions.ts +44 -0
- package/src/orchestrator/doctor.ts +5 -3
- package/src/orchestrator/loader.ts +2 -0
- package/src/orchestrator/orchestrator.ts +80 -40
- package/src/orchestrator/owned-lock.ts +54 -34
- package/src/orchestrator/regrade.ts +8 -7
- 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 @@
|
|
|
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"}
|
package/lib/authoring.d.ts
CHANGED
package/lib/authoring.d.ts.map
CHANGED
|
@@ -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
package/lib/authoring.js.map
CHANGED
|
@@ -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"}
|
package/lib/core/assertion.d.ts
CHANGED
|
@@ -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
|
|
48
|
-
type
|
|
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":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAGpC,eAAO,MAAM,qBAAqB;;;;;;;;;;;;iBAShC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D,CAAC;AAGF,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC5D,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAChB,YAAY,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAChF;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"assertion.d.ts","sourceRoot":"","sources":["../../src/core/assertion.ts"],"names":[],"mappings":"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"}
|
package/lib/core/assertion.js
CHANGED
|
@@ -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":"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;
|
|
1
|
+
{"version":3,"file":"assertion.js","sourceRoot":"","sources":["../../src/core/assertion.ts"],"names":[],"mappings":"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"}
|
|
@@ -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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"}
|
package/lib/core/case.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
package/lib/core/case.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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() }),
|
package/lib/core/case.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"case.js","sourceRoot":"","sources":["../../src/core/case.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"case.js","sourceRoot":"","sources":["../../src/core/case.ts"],"names":[],"mappings":"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"}
|
package/lib/core/driver.d.ts
CHANGED
|
@@ -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;
|
package/lib/core/driver.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/lib/core/driver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driver.js","sourceRoot":"","sources":["../../src/core/driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,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,
|
|
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":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAEL,oBAAoB,
|
|
1
|
+
{"version":3,"file":"lifecycle-fixtures.js","sourceRoot":"","sources":["../../src/core/lifecycle-fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAEL,oBAAoB,GAKrB,MAAM,sBAAsB,CAAC;AAuB9B,MAAM,YAAY,GAAG,CAAC,KAAc,EAAU,EAAE,CAC9C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAEzD,MAAM,eAAe,GAAG,KAAK,EAC3B,OAAkC,EAClC,OAAgB,EAChB,KAAa,EACkB,EAAE;IACjC,IAAI,UAAoC,CAAC;IACzC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAChD,UAAU,GAAG,OAAO,CAAC;IACvB,CAAC,CAAC,CAAC;IACH,IAAI,WAAqC,CAAC;IAC1C,IAAI,WAAmD,CAAC;IACxD,MAAM,KAAK,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAClD,WAAW,GAAG,OAAO,CAAC;QACtB,WAAW,GAAG,MAAM,CAAC;IACvB,CAAC,CAAC,CAAC;IACH,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,eAAwB,CAAC;IAC7B,MAAM,UAAU,GAAG,CAAC,KAAK,IAAI,EAAE;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC1B,QAAQ,IAAI,CAAC,CAAC;gBACd,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;oBACjB,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,8BAA8B,CAAC,CAAC;gBAC9D,CAAC;gBACD,OAAO;oBACL,4GAA4G;oBAC5G,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE;wBAChC,eAAe,IAAI,CAAC,CAAC;wBACrB,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;4BACxB,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,SAAS,CAAC,GAAG,KAAK,mCAAmC,CAAC,CAC3D,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;wBAClC,CAAC;wBACD,WAAW,EAAE,EAAE,CAAC;wBAChB,OAAO,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;oBACnD,CAAC;iBACF,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACnB,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,yCAAyC,CAAC,CAAC;YACzE,CAAC;YACD,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,mBAAmB,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAe,GAAG,KAAK,CAAC;YACxB,IAAI,eAAe,KAAK,CAAC;gBAAE,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC;gBAAS,CAAC;YACT,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,KAAK,CAAC;IACZ,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IACxB,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,SAAS,CACjB,eAAe;YACb,CAAC,CAAC,GAAG,KAAK,sCAAsC,YAAY,CAAC,eAAe,CAAC,EAAE;YAC/E,CAAC,CAAC,GAAG,KAAK,mBAAmB,EAC/B,EAAE,KAAK,EAAE,eAAe,EAAE,CAC3B,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,OAAO,KAAK,IAAI,EAAE;QAChB,IAAI,OAAO;YAAE,OAAO;QACpB,OAAO,GAAG,IAAI,CAAC;QACf,UAAU,EAAE,EAAE,CAAC;QACf,MAAM,UAAU,CAAC;QACjB,IAAI,eAAe;YAAE,MAAM,eAAe,CAAC;IAC7C,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,UAAuC,EAAwB,EAAE;IAC9F,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5E,MAAM,IAAI,SAAS,CAAC,mDAAmD,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC7E,MAAM,IAAI,SAAS,CAAC,0CAA0C,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC3E,MAAM,IAAI,SAAS,CAAC,yCAAyC,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC;IACtC,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC;IACpC,OAAO,oBAAoB,CAAC;QAC1B,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,aAAa,EAAE,UAAU,CAAC,aAAa;QACvC,GAAG,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC;QACtE,GAAG,CAAC,UAAU,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC/E,kBAAkB,EAAE,SAAS,CAAC;YAC5B,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,IAAI,EAAE,UAAU,CAAC,IAAI;SACtB,CAAC;QACF,GAAG,CAAC,YAAY;YACd,CAAC,CAAC;gBACE,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CACtB,eAAe,CAAC,YAAY,EAAE,OAAO,EAAE,kBAAkB,UAAU,CAAC,IAAI,GAAG,CAAC;aAC/E;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,WAAW;YACb,CAAC,CAAC;gBACE,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CACrB,eAAe,CAAC,WAAW,EAAE,OAAO,EAAE,iBAAiB,UAAU,CAAC,IAAI,GAAG,CAAC;aAC7E;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -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":"
|
|
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 (
|
|
20
|
-
return "lifecycle hooks plugin must
|
|
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;
|
|
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;
|
|
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
|
},
|