@robmclarty/volley 0.5.2 → 0.5.4
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/CHANGELOG.md +22 -0
- package/README.md +34 -1
- package/dist/cli.js +35 -8
- package/dist/cli.js.map +1 -1
- package/dist/index.js +35 -8
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
package/dist/index.js
CHANGED
|
@@ -1506,6 +1506,7 @@ function make_builder_step(deps) {
|
|
|
1506
1506
|
return model_call({
|
|
1507
1507
|
engine: deps.engine,
|
|
1508
1508
|
id: "builder",
|
|
1509
|
+
description: "model call: one agentic session in the build root",
|
|
1509
1510
|
provider: config.builder_provider,
|
|
1510
1511
|
model: config.builder_model,
|
|
1511
1512
|
system: resolve_builder_system(config),
|
|
@@ -1747,11 +1748,16 @@ function make_critic_tools_step(deps) {
|
|
|
1747
1748
|
return model_call2({
|
|
1748
1749
|
...critic_call_config(deps),
|
|
1749
1750
|
id: "critic_tools",
|
|
1751
|
+
description: "model call with read-only workspace tools",
|
|
1750
1752
|
...critic_tool_options(deps.config)
|
|
1751
1753
|
});
|
|
1752
1754
|
}
|
|
1753
1755
|
function make_critic_toolless_step(deps) {
|
|
1754
|
-
return model_call2({
|
|
1756
|
+
return model_call2({
|
|
1757
|
+
...critic_call_config(deps),
|
|
1758
|
+
id: "critic_toolless",
|
|
1759
|
+
description: "model call judging from the check output and a file list"
|
|
1760
|
+
});
|
|
1755
1761
|
}
|
|
1756
1762
|
function critic_retryable(config) {
|
|
1757
1763
|
return (err) => is_retryable_critic_error(config, err);
|
|
@@ -2342,14 +2348,18 @@ function build_critic(deps) {
|
|
|
2342
2348
|
const retryable = critic_retryable(deps.config);
|
|
2343
2349
|
return fallback(
|
|
2344
2350
|
retry(make_critic_tools_step(deps), {
|
|
2351
|
+
description: "one more try after a stream death, local providers only",
|
|
2345
2352
|
max_attempts: MAX_CRITIC_RETRIES + 1,
|
|
2346
2353
|
backoff_ms: 0,
|
|
2347
2354
|
when: retryable,
|
|
2348
2355
|
project: with_retries
|
|
2349
2356
|
}),
|
|
2350
|
-
pipe(make_critic_toolless_step(deps), as_degraded
|
|
2357
|
+
pipe(make_critic_toolless_step(deps), as_degraded, {
|
|
2358
|
+
description: "mark the verdict degraded"
|
|
2359
|
+
}),
|
|
2351
2360
|
{
|
|
2352
2361
|
name: "critic",
|
|
2362
|
+
description: "judge without tools if a local critic's stream keeps dying",
|
|
2353
2363
|
when: retryable,
|
|
2354
2364
|
handoff: (prompt) => toolless_critic_prompt(deps.config, prompt),
|
|
2355
2365
|
project: with_fallback_cause
|
|
@@ -2365,13 +2375,27 @@ function build_flow(deps, resume_from) {
|
|
|
2365
2375
|
bash_executor: deps.bash_executor
|
|
2366
2376
|
});
|
|
2367
2377
|
const critic = build_critic({ engine: deps.engine, config, on_chunk: renderer.critic_chunk });
|
|
2368
|
-
const build = step("build", (s, ctx) => build_phase(deps, builder, s, ctx)
|
|
2369
|
-
|
|
2370
|
-
|
|
2371
|
-
|
|
2372
|
-
const
|
|
2378
|
+
const build = step("build", (s, ctx) => build_phase(deps, builder, s, ctx), {
|
|
2379
|
+
description: "open the iteration, run the builder, measure the change",
|
|
2380
|
+
arm: builder
|
|
2381
|
+
});
|
|
2382
|
+
const skip_verify = step("skip_verify", (s) => skip_verify_phase(deps, s), {
|
|
2383
|
+
description: "record the check as skipped and call no critic"
|
|
2384
|
+
});
|
|
2385
|
+
const check = step("check", (s, ctx) => check_phase(deps, s, ctx), {
|
|
2386
|
+
description: "the deterministic gate: checkride, a command, or none"
|
|
2387
|
+
});
|
|
2388
|
+
const critique = step(
|
|
2389
|
+
"critique",
|
|
2390
|
+
(s, ctx) => critique_phase(deps, critic, s, ctx),
|
|
2391
|
+
{ description: "the read-only critic's verdict and feedback", arm: critic }
|
|
2392
|
+
);
|
|
2393
|
+
const record = step("record", (s) => record_phase(deps, s), {
|
|
2394
|
+
description: "archive the iteration and rewrite the run summary"
|
|
2395
|
+
});
|
|
2373
2396
|
const verify = branch({
|
|
2374
2397
|
name: "verify",
|
|
2398
|
+
description: "did the build alone cross the cost cap?",
|
|
2375
2399
|
when: (s) => cost_cap_hit(config, s),
|
|
2376
2400
|
// fascicle names this arm `then`. It holds a Step object, never a function,
|
|
2377
2401
|
// so nothing can mistake the config for a thenable.
|
|
@@ -2384,9 +2408,12 @@ function build_flow(deps, resume_from) {
|
|
|
2384
2408
|
});
|
|
2385
2409
|
return loop({
|
|
2386
2410
|
name: "volley",
|
|
2411
|
+
description: "one round per iteration, up to max_iterations",
|
|
2387
2412
|
init: (input) => input.resume_from ?? initial_state(),
|
|
2388
2413
|
body: iteration,
|
|
2389
|
-
guard: step("gate", (s) => gate(config, s)
|
|
2414
|
+
guard: step("gate", (s) => gate(config, s), {
|
|
2415
|
+
description: "stop on approval over a green check, the cost cap, or a gate edit"
|
|
2416
|
+
}),
|
|
2390
2417
|
finish: (s, { converged }) => ({ value: s, converged }),
|
|
2391
2418
|
max_rounds: remaining_iterations(config, resume_from)
|
|
2392
2419
|
});
|