@prismatic-io/lux 0.0.2-preview.26 → 0.0.2-preview.28

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 (129) hide show
  1. package/lib/assertions/rubric/index.d.ts +5 -0
  2. package/lib/assertions/rubric/index.d.ts.map +1 -1
  3. package/lib/assertions/rubric/index.js +14 -7
  4. package/lib/assertions/rubric/index.js.map +1 -1
  5. package/lib/assertions/rubric/internal.d.ts +1 -1
  6. package/lib/assertions/rubric/internal.d.ts.map +1 -1
  7. package/lib/assertions/rubric/internal.js +7 -2
  8. package/lib/assertions/rubric/internal.js.map +1 -1
  9. package/lib/authoring.d.ts +1 -0
  10. package/lib/authoring.d.ts.map +1 -1
  11. package/lib/authoring.js +1 -0
  12. package/lib/authoring.js.map +1 -1
  13. package/lib/cli/program.js +2 -2
  14. package/lib/cli/program.js.map +1 -1
  15. package/lib/container/driver.d.ts +27 -0
  16. package/lib/container/driver.d.ts.map +1 -0
  17. package/lib/container/driver.js +197 -0
  18. package/lib/container/driver.js.map +1 -0
  19. package/lib/container/protocol.d.ts +12 -0
  20. package/lib/container/protocol.d.ts.map +1 -0
  21. package/lib/container/protocol.js +38 -0
  22. package/lib/container/protocol.js.map +1 -0
  23. package/lib/container/resources.d.ts +12 -0
  24. package/lib/container/resources.d.ts.map +1 -0
  25. package/lib/container/resources.js +133 -0
  26. package/lib/container/resources.js.map +1 -0
  27. package/lib/container/worker.d.ts +2 -0
  28. package/lib/container/worker.d.ts.map +1 -0
  29. package/lib/container/worker.js +85 -0
  30. package/lib/container/worker.js.map +1 -0
  31. package/lib/core/case.d.ts +80 -0
  32. package/lib/core/case.d.ts.map +1 -1
  33. package/lib/core/case.js +8 -1
  34. package/lib/core/case.js.map +1 -1
  35. package/lib/core/driver-execution.d.ts +83 -0
  36. package/lib/core/driver-execution.d.ts.map +1 -0
  37. package/lib/core/driver-execution.js +72 -0
  38. package/lib/core/driver-execution.js.map +1 -0
  39. package/lib/core/driver.d.ts +5 -1
  40. package/lib/core/driver.d.ts.map +1 -1
  41. package/lib/core/driver.js +5 -1
  42. package/lib/core/driver.js.map +1 -1
  43. package/lib/core/harness-matrix.d.ts +84 -0
  44. package/lib/core/harness-matrix.d.ts.map +1 -1
  45. package/lib/core/harness-matrix.js +11 -1
  46. package/lib/core/harness-matrix.js.map +1 -1
  47. package/lib/core/run.d.ts +40 -0
  48. package/lib/core/run.d.ts.map +1 -1
  49. package/lib/drivers/antigravity/artifacts.d.ts +2 -0
  50. package/lib/drivers/antigravity/artifacts.d.ts.map +1 -0
  51. package/lib/drivers/antigravity/artifacts.js +33 -0
  52. package/lib/drivers/antigravity/artifacts.js.map +1 -0
  53. package/lib/drivers/antigravity/config.d.ts +27 -0
  54. package/lib/drivers/antigravity/config.d.ts.map +1 -1
  55. package/lib/drivers/antigravity/config.js +35 -0
  56. package/lib/drivers/antigravity/config.js.map +1 -1
  57. package/lib/drivers/antigravity/index.d.ts +35 -0
  58. package/lib/drivers/antigravity/index.d.ts.map +1 -1
  59. package/lib/drivers/antigravity/index.js +42 -20
  60. package/lib/drivers/antigravity/index.js.map +1 -1
  61. package/lib/drivers/antigravity/runtime.d.ts +7 -0
  62. package/lib/drivers/antigravity/runtime.d.ts.map +1 -0
  63. package/lib/drivers/antigravity/runtime.js +78 -0
  64. package/lib/drivers/antigravity/runtime.js.map +1 -0
  65. package/lib/drivers/shared/artifacts.d.ts.map +1 -1
  66. package/lib/drivers/shared/artifacts.js +3 -2
  67. package/lib/drivers/shared/artifacts.js.map +1 -1
  68. package/lib/index.d.ts +1 -0
  69. package/lib/index.d.ts.map +1 -1
  70. package/lib/index.js +1 -0
  71. package/lib/index.js.map +1 -1
  72. package/lib/orchestrator/config.d.ts +122 -1
  73. package/lib/orchestrator/config.d.ts.map +1 -1
  74. package/lib/orchestrator/config.js +2 -1
  75. package/lib/orchestrator/config.js.map +1 -1
  76. package/lib/orchestrator/doctor.d.ts.map +1 -1
  77. package/lib/orchestrator/doctor.js +3 -1
  78. package/lib/orchestrator/doctor.js.map +1 -1
  79. package/lib/orchestrator/driver-capabilities.d.ts +2 -1
  80. package/lib/orchestrator/driver-capabilities.d.ts.map +1 -1
  81. package/lib/orchestrator/driver-capabilities.js +5 -2
  82. package/lib/orchestrator/driver-capabilities.js.map +1 -1
  83. package/lib/orchestrator/driver-identity.d.ts.map +1 -1
  84. package/lib/orchestrator/driver-identity.js +11 -1
  85. package/lib/orchestrator/driver-identity.js.map +1 -1
  86. package/lib/orchestrator/experiment-context.d.ts +34 -0
  87. package/lib/orchestrator/experiment-context.d.ts.map +1 -1
  88. package/lib/orchestrator/experiment-evaluation.d.ts.map +1 -1
  89. package/lib/orchestrator/experiment-evaluation.js +3 -2
  90. package/lib/orchestrator/experiment-evaluation.js.map +1 -1
  91. package/lib/orchestrator/grader-experiment.d.ts.map +1 -1
  92. package/lib/orchestrator/grader-experiment.js +2 -2
  93. package/lib/orchestrator/grader-experiment.js.map +1 -1
  94. package/lib/orchestrator/harness-registry.d.ts +4 -0
  95. package/lib/orchestrator/harness-registry.d.ts.map +1 -0
  96. package/lib/orchestrator/harness-registry.js +5 -0
  97. package/lib/orchestrator/harness-registry.js.map +1 -0
  98. package/lib/orchestrator/orchestrator.d.ts.map +1 -1
  99. package/lib/orchestrator/orchestrator.js +16 -3
  100. package/lib/orchestrator/orchestrator.js.map +1 -1
  101. package/package.json +1 -1
  102. package/skills/lux-answerer/SKILL.md +1 -1
  103. package/src/assertions/rubric/index.ts +19 -7
  104. package/src/assertions/rubric/internal.ts +8 -2
  105. package/src/authoring.ts +6 -0
  106. package/src/cli/program.ts +2 -2
  107. package/src/container/driver.ts +211 -0
  108. package/src/container/protocol.ts +48 -0
  109. package/src/container/resources.ts +153 -0
  110. package/src/container/worker.ts +107 -0
  111. package/src/core/case.ts +8 -1
  112. package/src/core/driver-execution.ts +84 -0
  113. package/src/core/driver.ts +9 -1
  114. package/src/core/harness-matrix.ts +19 -1
  115. package/src/drivers/antigravity/README.md +108 -10
  116. package/src/drivers/antigravity/artifacts.ts +37 -0
  117. package/src/drivers/antigravity/config.ts +35 -0
  118. package/src/drivers/antigravity/index.ts +41 -22
  119. package/src/drivers/antigravity/runtime.ts +88 -0
  120. package/src/drivers/shared/artifacts.ts +6 -2
  121. package/src/index.ts +6 -0
  122. package/src/orchestrator/config.ts +4 -1
  123. package/src/orchestrator/doctor.ts +3 -1
  124. package/src/orchestrator/driver-capabilities.ts +6 -1
  125. package/src/orchestrator/driver-identity.ts +11 -1
  126. package/src/orchestrator/experiment-evaluation.ts +3 -5
  127. package/src/orchestrator/grader-experiment.ts +2 -5
  128. package/src/orchestrator/harness-registry.ts +12 -0
  129. package/src/orchestrator/orchestrator.ts +19 -3
@@ -2,10 +2,7 @@ import { randomUUID } from "node:crypto";
2
2
  import { rm } from "node:fs/promises";
3
3
  import { join } from "node:path";
4
4
  import { z } from "zod";
5
- import {
6
- createRubricAssertion,
7
- RubricModelAccountingDetailSchema,
8
- } from "../assertions/rubric/index.js";
5
+ import { RubricModelAccountingDetailSchema } from "../assertions/rubric/index.js";
9
6
  import {
10
7
  addUsage,
11
8
  type Candidate,
@@ -26,6 +23,7 @@ import { profileOrThrow } from "./experiment-context.js";
26
23
  import type { ExperimentEvaluation, OpenedExperimentRun } from "./experiment-runs.js";
27
24
  import { average } from "./experiment-selection.js";
28
25
  import { evaluateGraderCandidate } from "./grader-experiment.js";
26
+ import { registryWithHarness } from "./harness-registry.js";
29
27
  import { loadEvalCase } from "./loader.js";
30
28
  import { Orchestrator, type SuiteCaseResult, type SuiteItem } from "./orchestrator.js";
31
29
  import { clusterCaseSamples, groupedCaseMetricSamples } from "./paired-effects.js";
@@ -496,7 +494,7 @@ export const evaluateAgentCandidate = async (options: {
496
494
  const profile = profileOrThrow(execution.config, profileId);
497
495
  const harness = profile.harness ?? execution.config.harness;
498
496
  const defaultDriver = profile.driver ?? execution.config.defaultDriver;
499
- const registry = execution.registry.withAssertion(createRubricAssertion(harness));
497
+ const registry = registryWithHarness(execution.registry, execution.config, harness);
500
498
  const orchestrator = new Orchestrator({
501
499
  environment: profile.environment ?? execution.config.environment,
502
500
  registry,
@@ -1,10 +1,7 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { join, relative, resolve, sep } from "node:path";
3
3
  import { z } from "zod";
4
- import {
5
- createRubricAssertion,
6
- RubricModelAccountingDetailSchema,
7
- } from "../assertions/rubric/index.js";
4
+ import { RubricModelAccountingDetailSchema } from "../assertions/rubric/index.js";
8
5
  import {
9
6
  type Candidate,
10
7
  type CandidateEvaluation,
@@ -711,7 +708,7 @@ export const evaluateGraderCandidate = async (options: {
711
708
  const registry = buildRegistryFromConfig({
712
709
  ...execution.config,
713
710
  ...(harness ? { harness } : {}),
714
- }).withAssertion(createRubricAssertion(harness));
711
+ });
715
712
  const items: GraderEvidenceItem[] = [];
716
713
  for (const annotation of selected) {
717
714
  const rubric = await loadRubricDefinition(
@@ -0,0 +1,12 @@
1
+ import { createRubricAssertion } from "../assertions/rubric/index.js";
2
+ import type { HarnessModelConfig, Registry } from "../core/index.js";
3
+ import type { ResolvedLuxConfig } from "./config.js";
4
+
5
+ export const registryWithHarness = (
6
+ registry: Registry,
7
+ config: Pick<ResolvedLuxConfig, "assertions">,
8
+ harness: HarnessModelConfig | undefined,
9
+ ): Registry =>
10
+ config.assertions?.some((assertion) => assertion.type === "rubric")
11
+ ? registry
12
+ : registry.withAssertion(createRubricAssertion(harness));
@@ -1,4 +1,6 @@
1
1
  import { basename, extname, join, resolve } from "node:path";
2
+ import { ContainerDriver } from "../container/driver.js";
3
+ import { driverExecutionOf } from "../core/driver-execution.js";
2
4
  import { type EnvironmentDeclaration, EnvironmentDeclarationSchema } from "../core/environment.js";
3
5
  import {
4
6
  type Answerer,
@@ -28,6 +30,7 @@ import {
28
30
  registryForEvalCase,
29
31
  valuesForFixtures,
30
32
  } from "./case-extensions.js";
33
+ import { isBuiltinDriver } from "./config.js";
31
34
  import { validateDriverCapabilities } from "./driver-capabilities.js";
32
35
  import { evaluatorImplementationHash } from "./evaluator-identity.js";
33
36
  import {
@@ -249,6 +252,7 @@ export const resolveDriverReference = (
249
252
  return {
250
253
  name: driverNameOf(local),
251
254
  config: mergePluginConfig(driverConfigOf(base), driverConfigOf(local)),
255
+ execution: driverExecutionOf(local) ?? driverExecutionOf(base),
252
256
  };
253
257
  };
254
258
 
@@ -390,8 +394,20 @@ export class Orchestrator {
390
394
  `answerer '${answererName}'`,
391
395
  );
392
396
 
393
- validateDriverCapabilities(driverPlugin, driverCfg, evalCase.requires);
394
- const driver = await driverPlugin.create(driverCfg);
397
+ const execution = driverExecutionOf(driverRef);
398
+ if (execution?.kind === "container" && request.experimentId)
399
+ throw new Error("container execution does not yet support controlled experiments");
400
+ if (
401
+ execution?.kind === "container" &&
402
+ !execution.driverModule &&
403
+ !isBuiltinDriver(driverPlugin)
404
+ )
405
+ throw new Error("custom container drivers require execution.driverModule in the image");
406
+ validateDriverCapabilities(driverPlugin, driverCfg, evalCase.requires, execution);
407
+ const driver =
408
+ execution?.kind === "container"
409
+ ? new ContainerDriver(driverName, driverCfg, execution)
410
+ : await driverPlugin.create(driverCfg);
395
411
  let answerer: Answerer;
396
412
  try {
397
413
  answerer = await answererPlugin.create(answererCfg);
@@ -427,7 +443,7 @@ export class Orchestrator {
427
443
  permutationId: request.permutationId,
428
444
  answererName,
429
445
  answererConfig: answererCfg,
430
- driverConfigHash: valueHash(driverCfg),
446
+ driverConfigHash: valueHash(execution ? { config: driverCfg, execution } : driverCfg),
431
447
  answererConfigHash: valueHash(answererCfg),
432
448
  validatedAssertionsHash,
433
449
  graderConfigHash: graderHash,