@mobrienv/autoloop 0.1.4 → 0.2.1
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/README.md +103 -42
- package/bin/autoloop +0 -0
- package/dist/agent-map.d.ts +10 -0
- package/dist/agent-map.js +58 -0
- package/dist/agent-map.js.map +1 -0
- package/dist/backend/acp-client.d.ts +38 -0
- package/dist/backend/acp-client.js +288 -0
- package/dist/backend/acp-client.js.map +1 -0
- package/dist/backend/index.d.ts +1 -1
- package/dist/backend/index.js +17 -5
- package/dist/backend/index.js.map +1 -1
- package/dist/backend/kiro-bridge.d.ts +17 -0
- package/dist/backend/kiro-bridge.js +80 -0
- package/dist/backend/kiro-bridge.js.map +1 -0
- package/dist/backend/kiro-worker.d.ts +1 -0
- package/dist/backend/kiro-worker.js +83 -0
- package/dist/backend/kiro-worker.js.map +1 -0
- package/dist/backend/run-command.js +2 -2
- package/dist/backend/run-command.js.map +1 -1
- package/dist/backend/run-kiro.d.ts +3 -0
- package/dist/backend/run-kiro.js +12 -0
- package/dist/backend/run-kiro.js.map +1 -0
- package/dist/backend/run-pi.js.map +1 -1
- package/dist/chains/budget.js +16 -4
- package/dist/chains/budget.js.map +1 -1
- package/dist/chains/load.d.ts +7 -1
- package/dist/chains/load.js +58 -9
- package/dist/chains/load.js.map +1 -1
- package/dist/chains/render.js +36 -8
- package/dist/chains/render.js.map +1 -1
- package/dist/chains/run.js +129 -44
- package/dist/chains/run.js.map +1 -1
- package/dist/chains/types.d.ts +1 -0
- package/dist/chains.d.ts +5 -4
- package/dist/chains.js +3 -3
- package/dist/chains.js.map +1 -1
- package/dist/commands/chain.js +6 -4
- package/dist/commands/chain.js.map +1 -1
- package/dist/commands/config.d.ts +1 -0
- package/dist/commands/config.js +74 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/dashboard.d.ts +1 -0
- package/dist/commands/dashboard.js +68 -0
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/commands/inspect.js +125 -17
- package/dist/commands/inspect.js.map +1 -1
- package/dist/commands/list.d.ts +1 -1
- package/dist/commands/list.js +6 -3
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/loops.js +11 -11
- package/dist/commands/loops.js.map +1 -1
- package/dist/commands/memory.js +2 -2
- package/dist/commands/memory.js.map +1 -1
- package/dist/commands/run.d.ts +1 -1
- package/dist/commands/run.js +102 -15
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/runs.d.ts +1 -0
- package/dist/commands/runs.js +50 -0
- package/dist/commands/runs.js.map +1 -0
- package/dist/commands/task.d.ts +1 -0
- package/dist/commands/task.js +74 -0
- package/dist/commands/task.js.map +1 -0
- package/dist/commands/worktree.d.ts +1 -0
- package/dist/commands/worktree.js +162 -0
- package/dist/commands/worktree.js.map +1 -0
- package/dist/config.d.ts +15 -1
- package/dist/config.js +90 -21
- package/dist/config.js.map +1 -1
- package/dist/dashboard/app.d.ts +12 -0
- package/dist/dashboard/app.js +23 -0
- package/dist/dashboard/app.js.map +1 -0
- package/dist/dashboard/routes/api.d.ts +3 -0
- package/dist/dashboard/routes/api.js +103 -0
- package/dist/dashboard/routes/api.js.map +1 -0
- package/dist/dashboard/routes/pages.d.ts +2 -0
- package/dist/dashboard/routes/pages.js +14 -0
- package/dist/dashboard/routes/pages.js.map +1 -0
- package/dist/dashboard/views/alpine-vendor.d.ts +1 -0
- package/dist/dashboard/views/alpine-vendor.js +10 -0
- package/dist/dashboard/views/alpine-vendor.js.map +1 -0
- package/dist/dashboard/views/shell.d.ts +1 -0
- package/dist/dashboard/views/shell.js +714 -0
- package/dist/dashboard/views/shell.js.map +1 -0
- package/dist/events/decode.js.map +1 -1
- package/dist/events/encode.js +2 -2
- package/dist/events/encode.js.map +1 -1
- package/dist/harness/config-helpers.d.ts +11 -0
- package/dist/harness/config-helpers.js +242 -64
- package/dist/harness/config-helpers.js.map +1 -1
- package/dist/harness/coordination.js +12 -12
- package/dist/harness/coordination.js.map +1 -1
- package/dist/harness/display.d.ts +4 -3
- package/dist/harness/display.js +57 -11
- package/dist/harness/display.js.map +1 -1
- package/dist/harness/emit.js +31 -13
- package/dist/harness/emit.js.map +1 -1
- package/dist/harness/index.d.ts +7 -7
- package/dist/harness/index.js +151 -35
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/iteration.d.ts +12 -0
- package/dist/harness/iteration.js +66 -64
- package/dist/harness/iteration.js.map +1 -1
- package/dist/harness/journal.d.ts +17 -0
- package/dist/harness/journal.js +74 -5
- package/dist/harness/journal.js.map +1 -1
- package/dist/harness/metareview.js +30 -15
- package/dist/harness/metareview.js.map +1 -1
- package/dist/harness/metrics.js +12 -12
- package/dist/harness/metrics.js.map +1 -1
- package/dist/harness/parallel.d.ts +1 -1
- package/dist/harness/parallel.js +141 -62
- package/dist/harness/parallel.js.map +1 -1
- package/dist/harness/prompt.d.ts +18 -9
- package/dist/harness/prompt.js +80 -44
- package/dist/harness/prompt.js.map +1 -1
- package/dist/harness/scratchpad.js +8 -6
- package/dist/harness/scratchpad.js.map +1 -1
- package/dist/harness/stop.js +16 -9
- package/dist/harness/stop.js.map +1 -1
- package/dist/harness/tools.js +39 -13
- package/dist/harness/tools.js.map +1 -1
- package/dist/harness/types.d.ts +29 -0
- package/dist/harness/wave/finalize-wave.d.ts +1 -1
- package/dist/harness/wave/finalize-wave.js +36 -9
- package/dist/harness/wave/finalize-wave.js.map +1 -1
- package/dist/harness/wave/launch-branches.d.ts +2 -2
- package/dist/harness/wave/launch-branches.js +147 -51
- package/dist/harness/wave/launch-branches.js.map +1 -1
- package/dist/harness/wave/parse-objectives.js +4 -1
- package/dist/harness/wave/parse-objectives.js.map +1 -1
- package/dist/harness/wave.d.ts +2 -2
- package/dist/harness/wave.js +89 -28
- package/dist/harness/wave.js.map +1 -1
- package/dist/isolation/index.d.ts +4 -0
- package/dist/isolation/index.js +3 -0
- package/dist/isolation/index.js.map +1 -0
- package/dist/isolation/resolve.d.ts +39 -0
- package/dist/isolation/resolve.js +118 -0
- package/dist/isolation/resolve.js.map +1 -0
- package/dist/isolation/run-scope.d.ts +21 -0
- package/dist/isolation/run-scope.js +50 -0
- package/dist/isolation/run-scope.js.map +1 -0
- package/dist/json.js +10 -8
- package/dist/json.js.map +1 -1
- package/dist/loops/health.d.ts +4 -2
- package/dist/loops/health.js +73 -25
- package/dist/loops/health.js.map +1 -1
- package/dist/loops/list.d.ts +2 -2
- package/dist/loops/list.js +6 -6
- package/dist/loops/list.js.map +1 -1
- package/dist/loops/policy.d.ts +6 -0
- package/dist/loops/policy.js +41 -0
- package/dist/loops/policy.js.map +1 -0
- package/dist/loops/render.d.ts +2 -1
- package/dist/loops/render.js +24 -11
- package/dist/loops/render.js.map +1 -1
- package/dist/loops/show.d.ts +2 -2
- package/dist/loops/show.js +13 -13
- package/dist/loops/show.js.map +1 -1
- package/dist/loops/watch.d.ts +7 -1
- package/dist/loops/watch.js +82 -16
- package/dist/loops/watch.js.map +1 -1
- package/dist/main.js +58 -16
- package/dist/main.js.map +1 -1
- package/dist/markdown.js +11 -11
- package/dist/markdown.js.map +1 -1
- package/dist/memory-render.js +5 -5
- package/dist/memory-render.js.map +1 -1
- package/dist/memory.d.ts +1 -2
- package/dist/memory.js +44 -40
- package/dist/memory.js.map +1 -1
- package/dist/pi-adapter.js +11 -11
- package/dist/pi-adapter.js.map +1 -1
- package/dist/profiles.d.ts +12 -0
- package/dist/profiles.js +71 -0
- package/dist/profiles.js.map +1 -0
- package/dist/registry/derive.js +10 -3
- package/dist/registry/derive.js.map +1 -1
- package/dist/registry/discover.d.ts +20 -0
- package/dist/registry/discover.js +98 -0
- package/dist/registry/discover.js.map +1 -0
- package/dist/registry/harness.js +8 -2
- package/dist/registry/harness.js.map +1 -1
- package/dist/registry/index.d.ts +4 -3
- package/dist/registry/index.js +3 -2
- package/dist/registry/index.js.map +1 -1
- package/dist/registry/read.js.map +1 -1
- package/dist/registry/rebuild.js +7 -4
- package/dist/registry/rebuild.js.map +1 -1
- package/dist/registry/types.d.ts +9 -0
- package/dist/registry/update.js +1 -1
- package/dist/registry/update.js.map +1 -1
- package/dist/tasks-render.d.ts +2 -0
- package/dist/tasks-render.js +44 -0
- package/dist/tasks-render.js.map +1 -0
- package/dist/tasks.d.ts +24 -0
- package/dist/tasks.js +184 -0
- package/dist/tasks.js.map +1 -0
- package/dist/testing/mock-backend.js +2 -2
- package/dist/testing/mock-backend.js.map +1 -1
- package/dist/topology.d.ts +6 -0
- package/dist/topology.js +129 -8
- package/dist/topology.js.map +1 -1
- package/dist/usage.d.ts +1 -0
- package/dist/usage.js +56 -11
- package/dist/usage.js.map +1 -1
- package/dist/utils.d.ts +6 -0
- package/dist/utils.js +272 -2
- package/dist/utils.js.map +1 -1
- package/dist/worktree/clean.d.ts +12 -0
- package/dist/worktree/clean.js +98 -0
- package/dist/worktree/clean.js.map +1 -0
- package/dist/worktree/create.d.ts +14 -0
- package/dist/worktree/create.js +71 -0
- package/dist/worktree/create.js.map +1 -0
- package/dist/worktree/index.d.ts +10 -0
- package/dist/worktree/index.js +6 -0
- package/dist/worktree/index.js.map +1 -0
- package/dist/worktree/list.d.ts +9 -0
- package/dist/worktree/list.js +24 -0
- package/dist/worktree/list.js.map +1 -0
- package/dist/worktree/merge.d.ts +11 -0
- package/dist/worktree/merge.js +129 -0
- package/dist/worktree/merge.js.map +1 -0
- package/dist/worktree/meta.d.ts +17 -0
- package/dist/worktree/meta.js +34 -0
- package/dist/worktree/meta.js.map +1 -0
- package/package.json +24 -4
- package/presets/autocode/README.md +1 -1
- package/presets/autocode/autoloops.toml +9 -1
- package/presets/autocode/harness.md +12 -5
- package/presets/autocode/roles/build.md +5 -4
- package/presets/autocode/roles/critic.md +2 -2
- package/presets/autocode/roles/finalizer.md +2 -2
- package/presets/autocode/roles/planner.md +7 -7
- package/presets/autodoc/README.md +1 -1
- package/presets/autodoc/autoloops.toml +1 -1
- package/presets/autodoc/harness.md +6 -6
- package/presets/autodoc/roles/auditor.md +3 -3
- package/presets/autodoc/roles/checker.md +2 -2
- package/presets/autodoc/roles/publisher.md +3 -3
- package/presets/autodoc/roles/writer.md +4 -4
- package/presets/autofix/README.md +1 -1
- package/presets/autofix/autoloops.toml +5 -2
- package/presets/autofix/harness.md +8 -7
- package/presets/autofix/roles/closer.md +4 -4
- package/presets/autofix/roles/diagnoser.md +6 -5
- package/presets/autofix/roles/fixer.md +4 -4
- package/presets/autofix/roles/verifier.md +2 -2
- package/presets/autoideas/README.md +1 -1
- package/presets/autoideas/autoloops.toml +1 -1
- package/presets/autoideas/harness.md +11 -11
- package/presets/autoideas/roles/analyst.md +4 -4
- package/presets/autoideas/roles/reviewer.md +3 -3
- package/presets/autoideas/roles/scanner.md +3 -3
- package/presets/autoideas/roles/synthesizer.md +20 -7
- package/presets/automerge/README.md +3 -0
- package/presets/automerge/autoloops.toml +12 -0
- package/presets/automerge/harness.md +10 -0
- package/presets/automerge/miniloops.toml +12 -0
- package/presets/automerge/roles/merge.md +10 -0
- package/presets/automerge/topology.toml +10 -0
- package/presets/autoperf/README.md +1 -1
- package/presets/autoperf/autoloops.toml +1 -1
- package/presets/autoperf/harness.md +5 -5
- package/presets/autoperf/roles/judge.md +3 -3
- package/presets/autoperf/roles/measurer.md +4 -4
- package/presets/autoperf/roles/optimizer.md +4 -4
- package/presets/autoperf/roles/profiler.md +4 -4
- package/presets/autopr/README.md +99 -0
- package/presets/autopr/autoloops.toml +22 -0
- package/presets/autopr/harness.md +27 -0
- package/presets/autopr/miniloops.toml +22 -0
- package/presets/autopr/roles/collector.md +55 -0
- package/presets/autopr/roles/drafter.md +38 -0
- package/presets/autopr/roles/publisher.md +28 -0
- package/presets/autopr/roles/validator.md +31 -0
- package/presets/autopr/topology.toml +32 -0
- package/presets/autoqa/README.md +1 -1
- package/presets/autoqa/autoloops.toml +1 -1
- package/presets/autoqa/harness.md +10 -10
- package/presets/autoqa/roles/executor.md +3 -3
- package/presets/autoqa/roles/inspector.md +2 -2
- package/presets/autoqa/roles/planner.md +6 -6
- package/presets/autoqa/roles/reporter.md +9 -9
- package/presets/autoresearch/README.md +1 -1
- package/presets/autoresearch/autoloops.toml +1 -1
- package/presets/autoresearch/harness.md +5 -5
- package/presets/autoresearch/roles/benchmarker.md +3 -3
- package/presets/autoresearch/roles/evaluator.md +5 -5
- package/presets/autoresearch/roles/implementer.md +4 -4
- package/presets/autoresearch/roles/strategist.md +6 -6
- package/presets/autoreview/README.md +1 -1
- package/presets/autoreview/autoloops.toml +1 -1
- package/presets/autoreview/harness.md +5 -5
- package/presets/autoreview/roles/checker.md +4 -4
- package/presets/autoreview/roles/reader.md +5 -5
- package/presets/autoreview/roles/suggester.md +4 -4
- package/presets/autoreview/roles/summarizer.md +4 -4
- package/presets/autosec/README.md +1 -1
- package/presets/autosec/autoloops.toml +1 -1
- package/presets/autosec/harness.md +5 -5
- package/presets/autosec/roles/analyst.md +4 -4
- package/presets/autosec/roles/hardener.md +2 -2
- package/presets/autosec/roles/reporter.md +4 -4
- package/presets/autosec/roles/scanner.md +3 -3
- package/presets/autosimplify/README.md +1 -1
- package/presets/autosimplify/autoloops.toml +7 -3
- package/presets/autosimplify/harness.md +7 -7
- package/presets/autosimplify/roles/reviewer.md +3 -3
- package/presets/autosimplify/roles/scoper.md +7 -7
- package/presets/autosimplify/roles/simplifier.md +4 -4
- package/presets/autosimplify/roles/verifier.md +3 -3
- package/presets/autospec/README.md +1 -1
- package/presets/autospec/autoloops.toml +1 -1
- package/presets/autospec/harness.md +6 -6
- package/presets/autospec/roles/clarifier.md +4 -3
- package/presets/autospec/roles/critic.md +1 -1
- package/presets/autospec/roles/designer.md +3 -3
- package/presets/autospec/roles/planner.md +2 -2
- package/presets/autospec/roles/researcher.md +3 -3
- package/presets/autotest/README.md +1 -1
- package/presets/autotest/autoloops.toml +1 -1
- package/presets/autotest/harness.md +6 -6
- package/presets/autotest/roles/assessor.md +3 -3
- package/presets/autotest/roles/runner.md +2 -2
- package/presets/autotest/roles/surveyor.md +4 -4
- package/presets/autotest/roles/writer.md +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/harness/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAYvC,MAAM,UAAU,kBAAkB,CAAC,KAAe;IAChD,MAAM,IAAI,GAAiB,EAAE,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,IAAI,KAAK,CAAC,KAAK,KAAK,iBAAiB,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAClE,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/harness/metrics.ts"],"names":[],"mappings":"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"}
|
package/dist/harness/parallel.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { writeFileSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
3
|
+
import { buildBackendShellCommand, normalizeBackendLabel, runBackendCommand, } from "../backend/index.js";
|
|
4
|
+
import { jsonBool, jsonField, jsonFieldRaw } from "../json.js";
|
|
5
|
+
import { joinCsv, listText, shellQuote, splitCsv } from "../utils.js";
|
|
6
|
+
import { appendAgentEvent, appendEvent, extractField, readIfExists, } from "./journal.js";
|
|
7
7
|
export function loadParallelBranchLaunch(branchDir) {
|
|
8
8
|
const line = readIfExists(join(branchDir, "launch.json"));
|
|
9
9
|
return {
|
|
@@ -30,34 +30,52 @@ export function csvFieldList(line, field) {
|
|
|
30
30
|
export function parallelBranchBackendOverride(launch) {
|
|
31
31
|
const override = {};
|
|
32
32
|
if (launch.backendKind)
|
|
33
|
-
override
|
|
33
|
+
override.kind = launch.backendKind;
|
|
34
34
|
if (launch.backendCommand)
|
|
35
|
-
override
|
|
35
|
+
override.command = launch.backendCommand;
|
|
36
36
|
if (launch.backendArgs.length > 0)
|
|
37
|
-
override
|
|
37
|
+
override.args = launch.backendArgs;
|
|
38
38
|
if (launch.backendPromptMode)
|
|
39
|
-
override
|
|
39
|
+
override.prompt_mode = launch.backendPromptMode;
|
|
40
40
|
return override;
|
|
41
41
|
}
|
|
42
42
|
export function writeParallelBranchSummary(branchDir, result) {
|
|
43
|
-
const fields = jsonField("branch_id", String(result
|
|
44
|
-
|
|
45
|
-
jsonField("
|
|
46
|
-
|
|
47
|
-
jsonField("
|
|
48
|
-
|
|
49
|
-
jsonField("
|
|
50
|
-
|
|
51
|
-
jsonField("
|
|
52
|
-
|
|
43
|
+
const fields = jsonField("branch_id", String(result.branch_id ?? "")) +
|
|
44
|
+
", " +
|
|
45
|
+
jsonField("objective", String(result.objective ?? "")) +
|
|
46
|
+
", " +
|
|
47
|
+
jsonField("stop_reason", String(result.stop_reason ?? "unknown")) +
|
|
48
|
+
", " +
|
|
49
|
+
jsonField("output", String(result.output ?? "")) +
|
|
50
|
+
", " +
|
|
51
|
+
jsonField("routing_event", String(result.routing_event ?? "")) +
|
|
52
|
+
", " +
|
|
53
|
+
jsonField("allowed_roles", joinCsv((result.allowed_roles ?? []))) +
|
|
54
|
+
", " +
|
|
55
|
+
jsonField("allowed_events", joinCsv((result.allowed_events ?? []))) +
|
|
56
|
+
", " +
|
|
57
|
+
jsonField("elapsed_ms", String(result.elapsed_ms ?? 0)) +
|
|
58
|
+
", " +
|
|
59
|
+
jsonField("finished_at_ms", String(result.finished_at_ms ?? 0));
|
|
60
|
+
writeFileSync(join(branchDir, "summary.json"), `{${fields}}\n`);
|
|
53
61
|
}
|
|
54
62
|
export function renderBranchResult(result) {
|
|
55
63
|
return ("# Branch Result\n\n" +
|
|
56
|
-
"Stop reason: `" +
|
|
57
|
-
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
|
|
64
|
+
"Stop reason: `" +
|
|
65
|
+
(result.stop_reason ?? "unknown") +
|
|
66
|
+
"`\n" +
|
|
67
|
+
"Elapsed: `" +
|
|
68
|
+
(result.elapsed_ms ?? 0) +
|
|
69
|
+
"ms`\n" +
|
|
70
|
+
"Routing event: `" +
|
|
71
|
+
(result.routing_event ?? "") +
|
|
72
|
+
"`\n" +
|
|
73
|
+
"Allowed events: " +
|
|
74
|
+
listText((result.allowed_events ?? [])) +
|
|
75
|
+
"\n\n" +
|
|
76
|
+
"## Output\n\n" +
|
|
77
|
+
(result.output ?? "") +
|
|
78
|
+
"\n");
|
|
61
79
|
}
|
|
62
80
|
export function seedBranchContext(loop, routingEvent) {
|
|
63
81
|
if (routingEvent === "loop.start")
|
|
@@ -95,64 +113,125 @@ export function buildReviewCommand(loop, iteration, reviewPrompt) {
|
|
|
95
113
|
});
|
|
96
114
|
}
|
|
97
115
|
export function runtimeEnvLines(loop, iteration, recentEvent, allowedRoles, allowedEvents, reviewMode) {
|
|
98
|
-
let lines = "export
|
|
99
|
-
|
|
116
|
+
let lines = "export AUTOLOOP_RUN_ID=" +
|
|
117
|
+
shellQuote(loop.runtime.runId) +
|
|
118
|
+
"\n" +
|
|
119
|
+
"export AUTOLOOP_ITERATION=" +
|
|
120
|
+
shellQuote(iteration) +
|
|
121
|
+
"\n";
|
|
100
122
|
if (reviewMode) {
|
|
101
|
-
lines +=
|
|
123
|
+
lines += `export AUTOLOOP_REVIEW_MODE=${shellQuote(reviewMode)}\n`;
|
|
102
124
|
}
|
|
103
125
|
lines +=
|
|
104
|
-
"export
|
|
105
|
-
|
|
106
|
-
"
|
|
107
|
-
"export
|
|
108
|
-
|
|
109
|
-
"
|
|
110
|
-
"export
|
|
111
|
-
|
|
112
|
-
"
|
|
113
|
-
"export
|
|
114
|
-
|
|
115
|
-
"
|
|
116
|
-
"export
|
|
126
|
+
"export AUTOLOOP_LOG_LEVEL=" +
|
|
127
|
+
shellQuote(loop.runtime.logLevel) +
|
|
128
|
+
"\n" +
|
|
129
|
+
"export AUTOLOOP_COMPLETION_PROMISE=" +
|
|
130
|
+
shellQuote(loop.completion.promise) +
|
|
131
|
+
"\n" +
|
|
132
|
+
"export AUTOLOOP_COMPLETION_EVENT=" +
|
|
133
|
+
shellQuote(loop.completion.event) +
|
|
134
|
+
"\n" +
|
|
135
|
+
"export AUTOLOOP_STATE_DIR=" +
|
|
136
|
+
shellQuote(loop.paths.stateDir) +
|
|
137
|
+
"\n" +
|
|
138
|
+
"export AUTOLOOP_PROJECT_DIR=" +
|
|
139
|
+
shellQuote(loop.paths.projectDir) +
|
|
140
|
+
"\n" +
|
|
141
|
+
"export AUTOLOOP_JOURNAL_FILE=" +
|
|
142
|
+
shellQuote(loop.paths.journalFile) +
|
|
143
|
+
"\n" +
|
|
144
|
+
"export AUTOLOOP_EVENTS_FILE=" +
|
|
145
|
+
shellQuote(loop.paths.journalFile) +
|
|
146
|
+
"\n" +
|
|
147
|
+
"export AUTOLOOP_MEMORY_FILE=" +
|
|
148
|
+
shellQuote(loop.paths.memoryFile) +
|
|
149
|
+
"\n" +
|
|
150
|
+
"export AUTOLOOP_REQUIRED_EVENTS=" +
|
|
151
|
+
shellQuote(joinCsv(loop.completion.requiredEvents)) +
|
|
152
|
+
"\n" +
|
|
153
|
+
"export AUTOLOOP_RECENT_EVENT=" +
|
|
154
|
+
shellQuote(recentEvent) +
|
|
155
|
+
"\n" +
|
|
156
|
+
"export AUTOLOOP_ALLOWED_ROLES=" +
|
|
157
|
+
shellQuote(allowedRoles) +
|
|
158
|
+
"\n" +
|
|
159
|
+
"export AUTOLOOP_ALLOWED_EVENTS=" +
|
|
160
|
+
shellQuote(allowedEvents) +
|
|
161
|
+
"\n" +
|
|
162
|
+
"export AUTOLOOP_BIN=" +
|
|
163
|
+
shellQuote(loop.paths.toolPath) +
|
|
164
|
+
"\n";
|
|
117
165
|
return lines;
|
|
118
166
|
}
|
|
119
167
|
// --- Journal append helpers ---
|
|
120
168
|
export function appendLoopStart(loop) {
|
|
121
169
|
appendEvent(loop.paths.journalFile, loop.runtime.runId, "", "loop.start", jsonField("max_iterations", String(loop.limits.maxIterations)) +
|
|
122
|
-
", " +
|
|
123
|
-
|
|
124
|
-
", " +
|
|
125
|
-
|
|
126
|
-
", " +
|
|
127
|
-
|
|
128
|
-
", " +
|
|
129
|
-
|
|
130
|
-
", " +
|
|
131
|
-
|
|
132
|
-
", " +
|
|
170
|
+
", " +
|
|
171
|
+
jsonField("completion_promise", loop.completion.promise) +
|
|
172
|
+
", " +
|
|
173
|
+
jsonField("completion_event", loop.completion.event) +
|
|
174
|
+
", " +
|
|
175
|
+
jsonField("review_every", String(loop.review.every)) +
|
|
176
|
+
", " +
|
|
177
|
+
jsonField("objective", loop.objective) +
|
|
178
|
+
", " +
|
|
179
|
+
jsonField("preset", loop.launch.preset) +
|
|
180
|
+
", " +
|
|
181
|
+
jsonField("trigger", loop.launch.trigger) +
|
|
182
|
+
", " +
|
|
183
|
+
jsonField("created_at", loop.launch.createdAt) +
|
|
184
|
+
", " +
|
|
185
|
+
jsonField("project_dir", loop.paths.projectDir) +
|
|
186
|
+
", " +
|
|
187
|
+
jsonField("work_dir", loop.paths.workDir) +
|
|
188
|
+
", " +
|
|
189
|
+
jsonField("backend", normalizeBackendLabel(loop.backend.command)) +
|
|
190
|
+
", " +
|
|
191
|
+
jsonField("backend_args", joinCsv(loop.backend.args)) +
|
|
192
|
+
", " +
|
|
193
|
+
jsonField("parent_run_id", loop.launch.parentRunId) +
|
|
194
|
+
", " +
|
|
195
|
+
jsonField("isolation_mode", loop.runtime.isolationMode ?? "shared") +
|
|
196
|
+
", " +
|
|
197
|
+
jsonField("worktree_name", loop.paths.worktreeBranch || "") +
|
|
198
|
+
", " +
|
|
199
|
+
jsonField("worktree_path", loop.paths.worktreePath || ""));
|
|
133
200
|
}
|
|
134
201
|
export function appendIterationStart(loop, iter) {
|
|
135
202
|
appendEvent(loop.paths.journalFile, loop.runtime.runId, String(iter.iteration), "iteration.start", jsonField("recent_event", iter.recentEvent) +
|
|
136
|
-
", " +
|
|
137
|
-
|
|
138
|
-
", " +
|
|
139
|
-
|
|
203
|
+
", " +
|
|
204
|
+
jsonField("suggested_roles", joinCsv(iter.allowedRoles)) +
|
|
205
|
+
", " +
|
|
206
|
+
jsonField("allowed_events", joinCsv(iter.allowedEvents)) +
|
|
207
|
+
", " +
|
|
208
|
+
jsonField("backpressure", iter.backpressure) +
|
|
209
|
+
", " +
|
|
210
|
+
jsonField("prompt", iter.prompt));
|
|
140
211
|
}
|
|
141
212
|
export function appendBackendStart(loop, iter) {
|
|
142
213
|
appendEvent(loop.paths.journalFile, loop.runtime.runId, String(iter.iteration), "backend.start", jsonField("backend_kind", loop.backend.kind) +
|
|
143
|
-
", " +
|
|
144
|
-
|
|
145
|
-
", " +
|
|
214
|
+
", " +
|
|
215
|
+
jsonField("command", loop.backend.command) +
|
|
216
|
+
", " +
|
|
217
|
+
jsonField("prompt_mode", loop.backend.promptMode) +
|
|
218
|
+
", " +
|
|
219
|
+
jsonField("timeout_ms", String(loop.backend.timeoutMs)));
|
|
146
220
|
}
|
|
147
221
|
export function appendBackendFinish(loop, iter, output, exitCode, timedOut) {
|
|
148
222
|
appendEvent(loop.paths.journalFile, loop.runtime.runId, String(iter.iteration), "backend.finish", jsonField("exit_code", String(exitCode)) +
|
|
149
|
-
", " +
|
|
150
|
-
|
|
223
|
+
", " +
|
|
224
|
+
jsonFieldRaw("timed_out", jsonBool(timedOut)) +
|
|
225
|
+
", " +
|
|
226
|
+
jsonField("output", output));
|
|
151
227
|
}
|
|
152
228
|
export function appendIterationFinish(loop, iter, output, exitCode, timedOut, elapsedS) {
|
|
153
229
|
appendEvent(loop.paths.journalFile, loop.runtime.runId, String(iter.iteration), "iteration.finish", jsonField("exit_code", String(exitCode)) +
|
|
154
|
-
", " +
|
|
155
|
-
|
|
156
|
-
", " +
|
|
230
|
+
", " +
|
|
231
|
+
jsonFieldRaw("timed_out", jsonBool(timedOut)) +
|
|
232
|
+
", " +
|
|
233
|
+
jsonField("elapsed_s", String(elapsedS)) +
|
|
234
|
+
", " +
|
|
235
|
+
jsonField("output", output));
|
|
157
236
|
}
|
|
158
237
|
//# sourceMappingURL=parallel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parallel.js","sourceRoot":"","sources":["../../src/harness/parallel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,
|
|
1
|
+
{"version":3,"file":"parallel.js","sourceRoot":"","sources":["../../src/harness/parallel.ts"],"names":[],"mappings":"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"}
|
package/dist/harness/prompt.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { MemoryStats } from "../memory.js";
|
|
1
2
|
import * as topology from "../topology.js";
|
|
2
3
|
import type { LoopContext } from "./index.js";
|
|
3
4
|
export interface IterationContext {
|
|
@@ -10,6 +11,22 @@ export interface IterationContext {
|
|
|
10
11
|
scratchpadText: string;
|
|
11
12
|
memoryText: string;
|
|
12
13
|
prompt: string;
|
|
14
|
+
roleAgent: string;
|
|
15
|
+
}
|
|
16
|
+
interface DerivedRunContext {
|
|
17
|
+
scratchpadText: string;
|
|
18
|
+
memoryText: string;
|
|
19
|
+
memoryStats: MemoryStats;
|
|
20
|
+
tasksText: string;
|
|
21
|
+
tasksStats: {
|
|
22
|
+
open: number;
|
|
23
|
+
done: number;
|
|
24
|
+
total: number;
|
|
25
|
+
};
|
|
26
|
+
routing: RoutingContext;
|
|
27
|
+
backpressure: string;
|
|
28
|
+
invalidCount: number;
|
|
29
|
+
lastRejected: string;
|
|
13
30
|
}
|
|
14
31
|
export declare function buildIterationContext(loop: LoopContext, iteration: number): IterationContext;
|
|
15
32
|
interface RoutingContext {
|
|
@@ -22,14 +39,6 @@ export declare function routingEventFromLines(lines: string[]): string;
|
|
|
22
39
|
export declare function latestInvalidNote(runLines: string[]): string;
|
|
23
40
|
export declare function invalidEventCount(runLines: string[]): number;
|
|
24
41
|
export declare function lastRejectedTopic(runLines: string[]): string;
|
|
25
|
-
export declare function renderIterationPromptText(loop: LoopContext, iteration: number,
|
|
26
|
-
renderedChars: number;
|
|
27
|
-
budgetChars: number;
|
|
28
|
-
totalEntries: number;
|
|
29
|
-
preferences: number;
|
|
30
|
-
learnings: number;
|
|
31
|
-
meta: number;
|
|
32
|
-
truncated: boolean;
|
|
33
|
-
}): string;
|
|
42
|
+
export declare function renderIterationPromptText(loop: LoopContext, iteration: number, derived: DerivedRunContext): string;
|
|
34
43
|
export declare function renderReviewPromptText(loop: LoopContext, iteration: number, runLines: string[]): string;
|
|
35
44
|
export {};
|
package/dist/harness/prompt.js
CHANGED
|
@@ -1,28 +1,48 @@
|
|
|
1
|
-
import * as topology from "../topology.js";
|
|
2
1
|
import * as memory from "../memory.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { materialize as materializeTasks } from "../tasks.js";
|
|
3
|
+
import { renderTasksPrompt } from "../tasks-render.js";
|
|
4
|
+
import * as topology from "../topology.js";
|
|
5
|
+
import { joinCsv, listText } from "../utils.js";
|
|
6
|
+
import { coordinationTopic, coreSystemTopic, parallelTopic, reservedParallelJoinedTopic, routingTopic, systemTopic, } from "./emit.js";
|
|
7
|
+
import { resolveRoleAgent } from "../agent-map.js";
|
|
8
|
+
import { extractField, extractIteration, extractTopic, readLines, readRunLines, } from "./journal.js";
|
|
5
9
|
import { renderRunScratchpadPrompt } from "./scratchpad.js";
|
|
6
|
-
|
|
10
|
+
function deriveRunContext(loop, runLines) {
|
|
11
|
+
const taskLines = readLines(loop.paths.tasksFile);
|
|
12
|
+
const tasksMaterialized = materializeTasks(taskLines);
|
|
13
|
+
const tasksText = renderTasksPrompt(tasksMaterialized, loop.tasks.budgetChars);
|
|
14
|
+
return {
|
|
15
|
+
scratchpadText: renderRunScratchpadPrompt(runLines),
|
|
16
|
+
memoryText: memory.renderFile(loop.paths.memoryFile, loop.memory.budgetChars),
|
|
17
|
+
memoryStats: memory.statsFile(loop.paths.memoryFile, loop.memory.budgetChars),
|
|
18
|
+
tasksText,
|
|
19
|
+
tasksStats: {
|
|
20
|
+
open: tasksMaterialized.open.length,
|
|
21
|
+
done: tasksMaterialized.done.length,
|
|
22
|
+
total: tasksMaterialized.open.length + tasksMaterialized.done.length,
|
|
23
|
+
},
|
|
24
|
+
routing: iterationRoutingContext(loop.topology, runLines),
|
|
25
|
+
backpressure: latestInvalidNote(runLines),
|
|
26
|
+
invalidCount: invalidEventCount(runLines),
|
|
27
|
+
lastRejected: lastRejectedTopic(runLines),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
7
30
|
export function buildIterationContext(loop, iteration) {
|
|
8
31
|
const runLines = readRunLines(loop.paths.journalFile, loop.runtime.runId);
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const memoryText = memory.renderFile(loop.paths.memoryFile, loop.memory.budgetChars);
|
|
13
|
-
const memoryStats = memory.statsFile(loop.paths.memoryFile, loop.memory.budgetChars);
|
|
14
|
-
const invalidCount = invalidEventCount(runLines);
|
|
15
|
-
const lastRejected = lastRejectedTopic(runLines);
|
|
32
|
+
const derived = deriveRunContext(loop, runLines);
|
|
33
|
+
const activeRole = derived.routing.allowedRoles.length === 1 ? derived.routing.allowedRoles[0] : "";
|
|
34
|
+
const roleAgent = resolveRoleAgent(loop.agentMap, loop.launch.preset, activeRole) || "";
|
|
16
35
|
return {
|
|
17
36
|
iteration,
|
|
18
|
-
recentEvent: routing.recentEvent,
|
|
19
|
-
allowedRoles: routing.allowedRoles,
|
|
20
|
-
allowedEvents: routing.allowedEvents,
|
|
21
|
-
backpressure,
|
|
22
|
-
lastRejected,
|
|
23
|
-
scratchpadText,
|
|
24
|
-
memoryText,
|
|
25
|
-
prompt: renderIterationPromptText(loop, iteration,
|
|
37
|
+
recentEvent: derived.routing.recentEvent,
|
|
38
|
+
allowedRoles: derived.routing.allowedRoles,
|
|
39
|
+
allowedEvents: derived.routing.allowedEvents,
|
|
40
|
+
backpressure: derived.backpressure,
|
|
41
|
+
lastRejected: derived.lastRejected,
|
|
42
|
+
scratchpadText: derived.scratchpadText,
|
|
43
|
+
memoryText: derived.memoryText,
|
|
44
|
+
prompt: renderIterationPromptText(loop, iteration, derived),
|
|
45
|
+
roleAgent,
|
|
26
46
|
};
|
|
27
47
|
}
|
|
28
48
|
export function iterationRoutingContext(topo, runLines) {
|
|
@@ -86,7 +106,10 @@ function csvFieldList(line, field) {
|
|
|
86
106
|
const value = extractField(line, field);
|
|
87
107
|
if (!value)
|
|
88
108
|
return [];
|
|
89
|
-
return value
|
|
109
|
+
return value
|
|
110
|
+
.split(",")
|
|
111
|
+
.map((s) => s.trim())
|
|
112
|
+
.filter((s) => s !== "");
|
|
90
113
|
}
|
|
91
114
|
export function routingEventFromLines(lines) {
|
|
92
115
|
let current = "loop.start";
|
|
@@ -150,15 +173,18 @@ export function lastRejectedTopic(runLines) {
|
|
|
150
173
|
}
|
|
151
174
|
return last;
|
|
152
175
|
}
|
|
153
|
-
export function renderIterationPromptText(loop, iteration,
|
|
176
|
+
export function renderIterationPromptText(loop, iteration, derived) {
|
|
177
|
+
const { routing, backpressure, memoryStats, memoryText, tasksText, tasksStats, scratchpadText, invalidCount, lastRejected, } = derived;
|
|
178
|
+
const { allowedRoles, allowedEvents, recentEvent } = routing;
|
|
154
179
|
return ("You are inside a bare-minimal autoloops harness.\n\n" +
|
|
155
180
|
harnessInstructionsText(loop) +
|
|
156
|
-
contextPressureText(memoryStats, invalidCount, lastRejected) +
|
|
181
|
+
contextPressureText(memoryStats, tasksStats, invalidCount, lastRejected) +
|
|
157
182
|
backpressureText(backpressure) +
|
|
158
183
|
"Objective:\n" +
|
|
159
184
|
loop.objective +
|
|
160
185
|
"\n\n" +
|
|
161
|
-
(memoryText ? memoryText
|
|
186
|
+
(memoryText ? `${memoryText}\n` : "") +
|
|
187
|
+
(tasksText ? `${tasksText}\n` : "") +
|
|
162
188
|
topology.renderWithContext(loop.topology, recentEvent, allowedRoles, allowedEvents) +
|
|
163
189
|
"\n" +
|
|
164
190
|
parallelPromptText(loop, allowedEvents) +
|
|
@@ -166,7 +192,7 @@ export function renderIterationPromptText(loop, iteration, recentEvent, allowedR
|
|
|
166
192
|
`Log level: ${loop.runtime.logLevel}\n` +
|
|
167
193
|
`Completion event: ${loop.completion.event}\n` +
|
|
168
194
|
`Completion promise fallback: ${loop.completion.promise}\n` +
|
|
169
|
-
`Required events: ${
|
|
195
|
+
`Required events: ${loop.completion.requiredEvents.length === 0 ? "(none)" : joinCsv(loop.completion.requiredEvents)}\n` +
|
|
170
196
|
`Loop-owned working files belong under: ${loop.paths.stateDir}\n` +
|
|
171
197
|
`Do not leave loop-owned artifacts at the repo root. Use paths under ${loop.paths.stateDir} such as ${loop.paths.stateDir}/progress.md or ${loop.paths.stateDir}/logs/.\n` +
|
|
172
198
|
`Suggested next roles now: ${listText(allowedRoles)}\n` +
|
|
@@ -188,7 +214,11 @@ export function renderIterationPromptText(loop, iteration, recentEvent, allowedR
|
|
|
188
214
|
loop.paths.toolPath +
|
|
189
215
|
' memory add learning "durable lesson"\n' +
|
|
190
216
|
loop.paths.toolPath +
|
|
191
|
-
' memory add preference Workflow "short preference note"\n
|
|
217
|
+
' memory add preference Workflow "short preference note"\n' +
|
|
218
|
+
loop.paths.toolPath +
|
|
219
|
+
' task add "description of work item"\n' +
|
|
220
|
+
loop.paths.toolPath +
|
|
221
|
+
" task complete task-1\n\n" +
|
|
192
222
|
"Backpressure rule: if you emit an event outside the allowed next-event set, the loop will reject that handoff and ask you to re-route.\n" +
|
|
193
223
|
"Prompt/output/scratchpad/memory are projections or stores you can inspect with `" +
|
|
194
224
|
loop.paths.toolPath +
|
|
@@ -200,13 +230,8 @@ export function renderIterationPromptText(loop, iteration, recentEvent, allowedR
|
|
|
200
230
|
"Plain text alone does not publish an event. Prefer the event tool over the stdout completion promise.\n");
|
|
201
231
|
}
|
|
202
232
|
export function renderReviewPromptText(loop, iteration, runLines) {
|
|
203
|
-
const
|
|
204
|
-
const memoryText
|
|
205
|
-
const memoryStatsData = memory.statsFile(loop.paths.memoryFile, loop.memory.budgetChars);
|
|
206
|
-
const routing = iterationRoutingContext(loop.topology, runLines);
|
|
207
|
-
const backpressure = latestInvalidNote(runLines);
|
|
208
|
-
const invalidCount = invalidEventCount(runLines);
|
|
209
|
-
const lastRejected = lastRejectedTopic(runLines);
|
|
233
|
+
const derived = deriveRunContext(loop, runLines);
|
|
234
|
+
const { scratchpadText, memoryText, tasksText, memoryStats, tasksStats, routing, backpressure, invalidCount, lastRejected, } = derived;
|
|
210
235
|
const latestIteration = String(maxReviewPromptIteration(runLines));
|
|
211
236
|
return ("You are the metareview meta-reviewer for this loop.\n\n" +
|
|
212
237
|
"Your job is to improve the loop itself, not to finish the task directly.\n" +
|
|
@@ -218,9 +243,10 @@ export function renderReviewPromptText(loop, iteration, runLines) {
|
|
|
218
243
|
"The scratchpad is projected from journal history, so do not try to edit it directly; instead tighten prompts, working files, or archived context so future iterations stay concise.\n" +
|
|
219
244
|
"Do not emit normal loop events during review.\n\n" +
|
|
220
245
|
reviewInstructionsText(loop) +
|
|
221
|
-
contextPressureText(
|
|
246
|
+
contextPressureText(memoryStats, tasksStats, invalidCount, lastRejected) +
|
|
222
247
|
backpressureText(backpressure) +
|
|
223
|
-
(memoryText ? memoryText
|
|
248
|
+
(memoryText ? `${memoryText}\n` : "") +
|
|
249
|
+
(tasksText ? `${tasksText}\n` : "") +
|
|
224
250
|
`Review trigger iteration: ${iteration}\n` +
|
|
225
251
|
"Latest routing event: " +
|
|
226
252
|
routing.recentEvent +
|
|
@@ -248,24 +274,32 @@ export function renderReviewPromptText(loop, iteration, runLines) {
|
|
|
248
274
|
function harnessInstructionsText(loop) {
|
|
249
275
|
if (!loop.harness.instructions)
|
|
250
276
|
return "";
|
|
251
|
-
return
|
|
277
|
+
return `Live harness instructions:\n${loop.harness.instructions}\n\n`;
|
|
252
278
|
}
|
|
253
279
|
function reviewInstructionsText(loop) {
|
|
254
280
|
if (!loop.review.prompt)
|
|
255
281
|
return "";
|
|
256
|
-
return
|
|
282
|
+
return `Additional metareview instructions:\n${loop.review.prompt}\n\n`;
|
|
257
283
|
}
|
|
258
|
-
function contextPressureText(memoryStats, invalidCount, lastRejected) {
|
|
284
|
+
function contextPressureText(memoryStats, tasksStats, invalidCount, lastRejected) {
|
|
259
285
|
return ("Context pressure:\n" +
|
|
260
286
|
"- Memory: " +
|
|
261
287
|
memoryPressureSummary(memoryStats) +
|
|
262
288
|
"\n" +
|
|
289
|
+
"- Tasks: " +
|
|
290
|
+
tasksPressureSummary(tasksStats) +
|
|
291
|
+
"\n" +
|
|
263
292
|
"- Invalid emits this run: " +
|
|
264
293
|
invalidCount +
|
|
265
294
|
invalidEmitHint(invalidCount, lastRejected) +
|
|
266
295
|
"\n" +
|
|
267
296
|
contextPressureRecommendation(memoryStats.truncated, invalidCount));
|
|
268
297
|
}
|
|
298
|
+
function tasksPressureSummary(stats) {
|
|
299
|
+
if (stats.total === 0)
|
|
300
|
+
return "no tasks";
|
|
301
|
+
return `${stats.open} open, ${stats.done} done (${stats.total} total)`;
|
|
302
|
+
}
|
|
269
303
|
function memoryPressureSummary(stats) {
|
|
270
304
|
const entryDetail = `${stats.totalEntries} entries (${stats.preferences} preferences, ${stats.learnings} learnings, ${stats.meta} meta)`;
|
|
271
305
|
if (stats.truncated) {
|
|
@@ -281,7 +315,7 @@ function invalidEmitHint(invalidCount, lastRejected) {
|
|
|
281
315
|
return "";
|
|
282
316
|
if (!lastRejected)
|
|
283
317
|
return " — routing is currently under backpressure";
|
|
284
|
-
return
|
|
318
|
+
return ` — routing backpressure; last rejected: \`${lastRejected}\``;
|
|
285
319
|
}
|
|
286
320
|
function contextPressureRecommendation(truncated, invalidCount) {
|
|
287
321
|
if (truncated || invalidCount > 0) {
|
|
@@ -290,7 +324,7 @@ function contextPressureRecommendation(truncated, invalidCount) {
|
|
|
290
324
|
return "\n";
|
|
291
325
|
}
|
|
292
326
|
function backpressureText(text) {
|
|
293
|
-
return text ?
|
|
327
|
+
return text ? `Backpressure:\n${text}\n\n` : "";
|
|
294
328
|
}
|
|
295
329
|
function parallelPromptText(loop, allowedEvents) {
|
|
296
330
|
if (!loop.parallel.enabled || loop.runtime.branchMode)
|
|
@@ -298,13 +332,15 @@ function parallelPromptText(loop, allowedEvents) {
|
|
|
298
332
|
const dispatch = parallelDispatchPromptEvents(allowedEvents, loop.completion.event);
|
|
299
333
|
const dispatchLine = dispatch.length === 0
|
|
300
334
|
? "- Dispatch fan-out is available as `<allowed-event>.parallel` for currently allowed normal handoff events.\n"
|
|
301
|
-
: "- Dispatch fan-out is available now via `<allowed-event>.parallel`: " +
|
|
302
|
-
|
|
335
|
+
: "- Dispatch fan-out is available now via `<allowed-event>.parallel`: " +
|
|
336
|
+
dispatch.map((e) => `\`${e}\``).join(", ") +
|
|
337
|
+
".\n";
|
|
338
|
+
return ("Structured parallelism:\n" +
|
|
303
339
|
"- `explore.parallel` is available for exploratory self-loop fan-out before you choose the real next event.\n" +
|
|
304
340
|
dispatchLine +
|
|
305
341
|
`- Payloads must be a markdown bullet list or numbered list with 1..${loop.parallel.maxBranches} distinct branch objectives.\n` +
|
|
306
342
|
"- Use fan-out only when branches are concrete, independently useful, and worth the barrier cost; keep one active wave at a time.\n" +
|
|
307
|
-
`- Branches run in isolated state under \`${loop.paths.stateDir}/waves/\`; only the harness may emit \`*.parallel.joined\` to resume the parent after the join barrier.\n\n
|
|
343
|
+
`- Branches run in isolated state under \`${loop.paths.stateDir}/waves/\`; only the harness may emit \`*.parallel.joined\` to resume the parent after the join barrier.\n\n`);
|
|
308
344
|
}
|
|
309
345
|
function parallelDispatchPromptEvents(allowedEvents, completionEvent) {
|
|
310
346
|
return allowedEvents
|
|
@@ -312,14 +348,14 @@ function parallelDispatchPromptEvents(allowedEvents, completionEvent) {
|
|
|
312
348
|
!coordinationTopic(e) &&
|
|
313
349
|
!coreSystemTopic(e) &&
|
|
314
350
|
!parallelTopic(e))
|
|
315
|
-
.map((e) => e
|
|
351
|
+
.map((e) => `${e}.parallel`);
|
|
316
352
|
}
|
|
317
353
|
function maxReviewPromptIteration(runLines) {
|
|
318
354
|
let current = 1;
|
|
319
355
|
for (const line of runLines) {
|
|
320
356
|
if (extractTopic(line) === "iteration.start") {
|
|
321
357
|
const val = parseInt(extractIteration(line), 10);
|
|
322
|
-
if (!isNaN(val) && val > current)
|
|
358
|
+
if (!Number.isNaN(val) && val > current)
|
|
323
359
|
current = val;
|
|
324
360
|
}
|
|
325
361
|
}
|