@prismatic-io/lux 0.0.2-preview.25 → 0.0.2-preview.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/answerers/claude-code/index.d.ts +3 -3
- package/lib/answerers/claude-code/index.d.ts.map +1 -1
- package/lib/answerers/claude-code/index.js +3 -2
- package/lib/answerers/claude-code/index.js.map +1 -1
- package/lib/answerers/persona/index.d.ts +3 -3
- package/lib/answerers/persona/index.d.ts.map +1 -1
- package/lib/answerers/persona/index.js +3 -2
- package/lib/answerers/persona/index.js.map +1 -1
- package/lib/answerers/terminal/index.d.ts +3 -3
- package/lib/answerers/terminal/index.d.ts.map +1 -1
- package/lib/answerers/terminal/index.js +3 -2
- package/lib/answerers/terminal/index.js.map +1 -1
- package/lib/assertions/core/command-exits-zero.d.ts +1 -1
- package/lib/assertions/core/command-exits-zero.d.ts.map +1 -1
- package/lib/assertions/core/command-exits-zero.js +4 -3
- package/lib/assertions/core/command-exits-zero.js.map +1 -1
- package/lib/assertions/rubric/index.d.ts +2 -2
- package/lib/assertions/rubric/index.d.ts.map +1 -1
- package/lib/assertions/rubric/index.js +4 -3
- package/lib/assertions/rubric/index.js.map +1 -1
- 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/cli/output-schemas.d.ts +2 -2
- package/lib/core/duration.d.ts +5 -0
- package/lib/core/duration.d.ts.map +1 -0
- package/lib/core/duration.js +49 -0
- package/lib/core/duration.js.map +1 -0
- package/lib/core/experiment.d.ts +2 -2
- package/lib/core/experiment.d.ts.map +1 -1
- package/lib/core/experiment.js +2 -1
- package/lib/core/experiment.js.map +1 -1
- package/lib/core/index.d.ts +1 -0
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +1 -0
- package/lib/core/index.js.map +1 -1
- package/lib/drivers/antigravity/config.d.ts +3 -3
- package/lib/drivers/antigravity/config.d.ts.map +1 -1
- package/lib/drivers/antigravity/config.js +2 -1
- package/lib/drivers/antigravity/config.js.map +1 -1
- package/lib/drivers/antigravity/index.d.ts +4 -4
- package/lib/drivers/antigravity/index.js +1 -1
- package/lib/drivers/antigravity/index.js.map +1 -1
- package/lib/drivers/claude-code/index.d.ts +14 -14
- package/lib/drivers/claude-code/index.d.ts.map +1 -1
- package/lib/drivers/claude-code/index.js +10 -9
- package/lib/drivers/claude-code/index.js.map +1 -1
- package/lib/drivers/codex/config.d.ts +3 -3
- package/lib/drivers/codex/config.d.ts.map +1 -1
- package/lib/drivers/codex/config.js +2 -1
- package/lib/drivers/codex/config.js.map +1 -1
- package/lib/drivers/codex/index.d.ts +4 -4
- package/lib/drivers/codex/index.d.ts.map +1 -1
- package/lib/drivers/codex/index.js +4 -3
- package/lib/drivers/codex/index.js.map +1 -1
- package/lib/drivers/copilot/config.d.ts +6 -6
- package/lib/drivers/copilot/config.d.ts.map +1 -1
- package/lib/drivers/copilot/config.js +3 -2
- package/lib/drivers/copilot/config.js.map +1 -1
- package/lib/drivers/copilot/index.d.ts +8 -8
- package/lib/drivers/copilot/index.d.ts.map +1 -1
- package/lib/drivers/copilot/index.js +3 -2
- package/lib/drivers/copilot/index.js.map +1 -1
- package/lib/drivers/cursor/config.d.ts +2 -2
- package/lib/drivers/cursor/config.d.ts.map +1 -1
- package/lib/drivers/cursor/config.js +3 -2
- package/lib/drivers/cursor/config.js.map +1 -1
- package/lib/drivers/cursor/index.d.ts +4 -4
- package/lib/drivers/cursor/index.d.ts.map +1 -1
- package/lib/drivers/cursor/index.js +3 -2
- package/lib/drivers/cursor/index.js.map +1 -1
- package/lib/drivers/grok-build/config.d.ts +9 -9
- package/lib/drivers/grok-build/config.d.ts.map +1 -1
- package/lib/drivers/grok-build/config.js +4 -3
- package/lib/drivers/grok-build/config.js.map +1 -1
- package/lib/drivers/grok-build/index.d.ts +12 -12
- package/lib/drivers/grok-build/index.d.ts.map +1 -1
- package/lib/drivers/grok-build/index.js +5 -4
- package/lib/drivers/grok-build/index.js.map +1 -1
- package/lib/drivers/mcp/index.d.ts +6 -6
- package/lib/drivers/mcp/index.d.ts.map +1 -1
- package/lib/drivers/mcp/index.js +9 -8
- package/lib/drivers/mcp/index.js.map +1 -1
- package/lib/drivers/subprocess/index.d.ts +3 -3
- package/lib/drivers/subprocess/index.d.ts.map +1 -1
- package/lib/drivers/subprocess/index.js +4 -3
- package/lib/drivers/subprocess/index.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/optimization/reflective.d.ts +1 -1
- package/lib/optimization/reflective.d.ts.map +1 -1
- package/lib/optimization/reflective.js +3 -2
- package/lib/optimization/reflective.js.map +1 -1
- package/lib/orchestrator/candidates.d.ts.map +1 -1
- package/lib/orchestrator/candidates.js +3 -2
- package/lib/orchestrator/candidates.js.map +1 -1
- package/lib/orchestrator/experiment-contracts.d.ts +1 -1
- package/lib/orchestrator/experiment-loader.d.ts +1 -1
- package/lib/orchestrator/experiment-report.d.ts +1 -1
- package/lib/orchestrator/experiment-runs.d.ts +1 -1
- package/lib/orchestrator/grading.js +1 -1
- package/lib/orchestrator/grading.js.map +1 -1
- package/lib/orchestrator/rubric-loader.js +1 -1
- package/lib/orchestrator/rubric-loader.js.map +1 -1
- package/package.json +1 -1
- package/skills/lux-answerer/SKILL.md +2 -2
- package/src/answerers/claude-code/index.ts +3 -2
- package/src/answerers/persona/index.ts +3 -2
- package/src/answerers/terminal/index.ts +3 -2
- package/src/assertions/core/command-exits-zero.ts +4 -3
- package/src/assertions/rubric/index.ts +4 -3
- package/src/authoring.ts +1 -0
- package/src/core/duration.ts +52 -0
- package/src/core/experiment.ts +2 -1
- package/src/core/index.ts +1 -0
- package/src/drivers/antigravity/config.ts +2 -1
- package/src/drivers/antigravity/index.ts +1 -1
- package/src/drivers/claude-code/index.ts +10 -9
- package/src/drivers/codex/config.ts +2 -1
- package/src/drivers/codex/index.ts +4 -3
- package/src/drivers/copilot/config.ts +3 -2
- package/src/drivers/copilot/index.ts +4 -3
- package/src/drivers/cursor/config.ts +3 -2
- package/src/drivers/cursor/index.ts +4 -3
- package/src/drivers/grok-build/README.md +2 -2
- package/src/drivers/grok-build/config.ts +4 -3
- package/src/drivers/grok-build/index.ts +6 -5
- package/src/drivers/mcp/index.ts +9 -8
- package/src/drivers/subprocess/index.ts +4 -3
- package/src/index.ts +1 -0
- package/src/optimization/reflective.ts +3 -2
- package/src/orchestrator/candidates.ts +3 -2
- package/src/orchestrator/grading.ts +1 -1
- package/src/orchestrator/rubric-loader.ts +1 -1
|
@@ -2,6 +2,7 @@ import type { ChildProcessWithoutNullStreams } from "node:child_process";
|
|
|
2
2
|
import { createInterface } from "node:readline";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
4
|
import { z } from "zod";
|
|
5
|
+
import { DurationSchema, durationMs } from "../../core/duration.js";
|
|
5
6
|
import {
|
|
6
7
|
type AgentDriver,
|
|
7
8
|
type Answer,
|
|
@@ -36,7 +37,7 @@ export const SubprocessDriverConfigSchema = z
|
|
|
36
37
|
/** Inherit the host environment. Experiment mode always forces this off. */
|
|
37
38
|
inheritEnv: z.boolean().optional(),
|
|
38
39
|
protocol: z.enum(["lux-jsonl", "custom"]).default("lux-jsonl"),
|
|
39
|
-
|
|
40
|
+
idleTimeout: DurationSchema.default("2 minutes"),
|
|
40
41
|
maxInterrupts: z.number().positive().default(20),
|
|
41
42
|
/**
|
|
42
43
|
* Maximum files inventoried from LUX_ARTIFACTS_DIR. Keep the conservative
|
|
@@ -485,7 +486,7 @@ class SubprocessDriverImpl implements AgentDriver {
|
|
|
485
486
|
private bumpIdleTimer(): void {
|
|
486
487
|
this.clearIdleTimer();
|
|
487
488
|
this.idleTimer = setTimeout(() => {
|
|
488
|
-
const reason = `no event for ${this.config.
|
|
489
|
+
const reason = `no event for ${durationMs(this.config.idleTimeout)}ms`;
|
|
489
490
|
// Idle before ready means start() is still pending; reject it (and kill
|
|
490
491
|
// the child) or the orchestrator waits forever.
|
|
491
492
|
const preReady = this.readyRejected !== null;
|
|
@@ -497,7 +498,7 @@ class SubprocessDriverImpl implements AgentDriver {
|
|
|
497
498
|
// Kill immediately: the run is lost and the child would keep doing
|
|
498
499
|
// billable work until close().
|
|
499
500
|
this.terminate();
|
|
500
|
-
}, this.config.
|
|
501
|
+
}, durationMs(this.config.idleTimeout));
|
|
501
502
|
}
|
|
502
503
|
|
|
503
504
|
private clearIdleTimer(): void {
|
package/src/index.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { DurationSchema, durationMs } from "./core/duration.js";
|
|
1
2
|
// Public surface of @prismatic-io/lux. The package root exposes authoring
|
|
2
3
|
// contracts, extension points, built-ins, and supported programmatic
|
|
3
4
|
// lifecycles. Explicit exports keep implementation and test helpers private.
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { DurationSchema, durationMs } from "../core/duration.js";
|
|
2
3
|
import {
|
|
3
4
|
type CandidateEvaluation,
|
|
4
5
|
type CandidateProposal,
|
|
@@ -16,7 +17,7 @@ export const ReflectiveOptimizerConfigSchema = z
|
|
|
16
17
|
model: z.string().optional(),
|
|
17
18
|
command: z.string().optional(),
|
|
18
19
|
reasoningEffort: ReasoningEffortSchema.optional(),
|
|
19
|
-
|
|
20
|
+
timeout: DurationSchema.default("3 minutes"),
|
|
20
21
|
maxComponentChars: z.number().int().positive().default(80_000),
|
|
21
22
|
maxAlternativeChars: z.number().int().positive().default(40_000),
|
|
22
23
|
maxFeedbackChars: z.number().int().positive().default(50_000),
|
|
@@ -273,7 +274,7 @@ const reflectiveOptimizer = (config: ReflectiveOptimizerConfig): Optimizer => ({
|
|
|
273
274
|
model,
|
|
274
275
|
command: config.command,
|
|
275
276
|
reasoningEffort: config.reasoningEffort,
|
|
276
|
-
timeoutMs: config.
|
|
277
|
+
timeoutMs: durationMs(config.timeout),
|
|
277
278
|
system: systemPrompt(input.campaign.evaluation.kind),
|
|
278
279
|
signal: input.abortSignal,
|
|
279
280
|
prompt: builtPrompt.prompt,
|
|
@@ -5,6 +5,7 @@ import { basename, dirname, isAbsolute, join, normalize, relative, resolve, sep
|
|
|
5
5
|
import { temporaryDirectory } from "tempy";
|
|
6
6
|
import { glob } from "tinyglobby";
|
|
7
7
|
import { z } from "zod";
|
|
8
|
+
import { durationMs } from "../core/duration.js";
|
|
8
9
|
import { exec } from "../core/exec.js";
|
|
9
10
|
import {
|
|
10
11
|
type Candidate,
|
|
@@ -226,7 +227,7 @@ export const validateCandidate = async (
|
|
|
226
227
|
try {
|
|
227
228
|
return await exec(validation.command, validation.args, {
|
|
228
229
|
cwd: materializedRoot,
|
|
229
|
-
timeoutMs: validation.
|
|
230
|
+
timeoutMs: durationMs(validation.timeout),
|
|
230
231
|
env,
|
|
231
232
|
...(signal ? { signal } : {}),
|
|
232
233
|
});
|
|
@@ -236,7 +237,7 @@ export const validateCandidate = async (
|
|
|
236
237
|
})().finally(() => rm(validationHome, { recursive: true, force: true }));
|
|
237
238
|
if (result.timedOut || result.exitCode !== 0) {
|
|
238
239
|
const reason = result.timedOut
|
|
239
|
-
? `timed out after ${validation.
|
|
240
|
+
? `timed out after ${durationMs(validation.timeout)}ms`
|
|
240
241
|
: `exited ${result.exitCode}`;
|
|
241
242
|
throw new Error(
|
|
242
243
|
`candidate validation '${validation.command}' ${reason}: ${result.stderr.slice(0, 500)}`,
|
|
@@ -213,7 +213,7 @@ export const gradeRun = async (
|
|
|
213
213
|
if (validatedConfigs && index >= validatedConfigs.length) {
|
|
214
214
|
throw new Error(`validated assertion plan is missing assertions[${index}]`);
|
|
215
215
|
}
|
|
216
|
-
// Pass the validated config so schema defaults (e.g.
|
|
216
|
+
// Pass the validated config so schema defaults (e.g. timeout)
|
|
217
217
|
// reach evaluate(); the raw assertion object has none applied.
|
|
218
218
|
const result = AssertionResultSchema.parse(
|
|
219
219
|
await impl.evaluate(validated as typeof a, run, {
|