@zhixuan92/multi-model-agent-core 4.5.4 → 4.6.0

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 (271) hide show
  1. package/README.md +8 -3
  2. package/dist/escalation/delegate-with-escalation.d.ts +2 -2
  3. package/dist/escalation/delegate-with-escalation.d.ts.map +1 -1
  4. package/dist/escalation/delegate-with-escalation.js +11 -17
  5. package/dist/escalation/delegate-with-escalation.js.map +1 -1
  6. package/dist/escalation/fallback-helpers.d.ts +5 -5
  7. package/dist/escalation/fallback-helpers.d.ts.map +1 -1
  8. package/dist/escalation/fallback-helpers.js +5 -3
  9. package/dist/escalation/fallback-helpers.js.map +1 -1
  10. package/dist/events/event-builder.d.ts +36 -5
  11. package/dist/events/event-builder.d.ts.map +1 -1
  12. package/dist/events/event-builder.js +173 -31
  13. package/dist/events/event-builder.js.map +1 -1
  14. package/dist/events/observability-events.d.ts +6 -0
  15. package/dist/events/observability-events.d.ts.map +1 -1
  16. package/dist/events/observability-events.js +5 -0
  17. package/dist/events/observability-events.js.map +1 -1
  18. package/dist/events/telemetry-types.d.ts +10 -0
  19. package/dist/events/telemetry-types.d.ts.map +1 -1
  20. package/dist/events/verbose-log-channel.d.ts +7 -7
  21. package/dist/events/verbose-log-channel.js +10 -10
  22. package/dist/index.d.ts +9 -3
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +8 -2
  25. package/dist/index.js.map +1 -1
  26. package/dist/lifecycle/annotate-parser.d.ts +9 -0
  27. package/dist/lifecycle/annotate-parser.d.ts.map +1 -0
  28. package/dist/lifecycle/annotate-parser.js +83 -0
  29. package/dist/lifecycle/annotate-parser.js.map +1 -0
  30. package/dist/lifecycle/annotate-prompts.d.ts +9 -0
  31. package/dist/lifecycle/annotate-prompts.d.ts.map +1 -0
  32. package/dist/lifecycle/annotate-prompts.js +86 -0
  33. package/dist/lifecycle/annotate-prompts.js.map +1 -0
  34. package/dist/lifecycle/auto-register-context-block.d.ts +2 -2
  35. package/dist/lifecycle/auto-register-context-block.d.ts.map +1 -1
  36. package/dist/lifecycle/auto-register-context-block.js.map +1 -1
  37. package/dist/lifecycle/build-cancelled-result.d.ts +11 -0
  38. package/dist/lifecycle/build-cancelled-result.d.ts.map +1 -0
  39. package/dist/lifecycle/build-cancelled-result.js +27 -0
  40. package/dist/lifecycle/build-cancelled-result.js.map +1 -0
  41. package/dist/lifecycle/executor-output-types.d.ts +2 -2
  42. package/dist/lifecycle/executor-output-types.d.ts.map +1 -1
  43. package/dist/lifecycle/fallback-report.d.ts +2 -2
  44. package/dist/lifecycle/fallback-report.d.ts.map +1 -1
  45. package/dist/lifecycle/fallback-report.js.map +1 -1
  46. package/dist/lifecycle/findings-parser.d.ts +2 -0
  47. package/dist/lifecycle/findings-parser.d.ts.map +1 -1
  48. package/dist/lifecycle/findings-parser.js +9 -4
  49. package/dist/lifecycle/findings-parser.js.map +1 -1
  50. package/dist/lifecycle/git-toplevel.d.ts +12 -0
  51. package/dist/lifecycle/git-toplevel.d.ts.map +1 -0
  52. package/dist/lifecycle/git-toplevel.js +49 -0
  53. package/dist/lifecycle/git-toplevel.js.map +1 -0
  54. package/dist/lifecycle/handlers/annotator.d.ts +2 -1
  55. package/dist/lifecycle/handlers/annotator.d.ts.map +1 -1
  56. package/dist/lifecycle/handlers/annotator.js +225 -7
  57. package/dist/lifecycle/handlers/annotator.js.map +1 -1
  58. package/dist/lifecycle/handlers/baseline-handlers.d.ts +10 -5
  59. package/dist/lifecycle/handlers/baseline-handlers.d.ts.map +1 -1
  60. package/dist/lifecycle/handlers/baseline-handlers.js +206 -316
  61. package/dist/lifecycle/handlers/baseline-handlers.js.map +1 -1
  62. package/dist/lifecycle/handlers/enrich-runtime-result.d.ts +3 -0
  63. package/dist/lifecycle/handlers/enrich-runtime-result.d.ts.map +1 -0
  64. package/dist/lifecycle/handlers/enrich-runtime-result.js +191 -0
  65. package/dist/lifecycle/handlers/enrich-runtime-result.js.map +1 -0
  66. package/dist/lifecycle/handlers/git-commit-handler.d.ts +3 -2
  67. package/dist/lifecycle/handlers/git-commit-handler.d.ts.map +1 -1
  68. package/dist/lifecycle/handlers/git-commit-handler.js +139 -110
  69. package/dist/lifecycle/handlers/git-commit-handler.js.map +1 -1
  70. package/dist/lifecycle/handlers/prepare-execution-context-handler.d.ts +7 -13
  71. package/dist/lifecycle/handlers/prepare-execution-context-handler.d.ts.map +1 -1
  72. package/dist/lifecycle/handlers/prepare-execution-context-handler.js +72 -49
  73. package/dist/lifecycle/handlers/prepare-execution-context-handler.js.map +1 -1
  74. package/dist/lifecycle/handlers/register-context-block-handlers.d.ts +2 -1
  75. package/dist/lifecycle/handlers/register-context-block-handlers.d.ts.map +1 -1
  76. package/dist/lifecycle/handlers/register-context-block-handlers.js +35 -14
  77. package/dist/lifecycle/handlers/register-context-block-handlers.js.map +1 -1
  78. package/dist/lifecycle/handlers/review-handler.d.ts +2 -1
  79. package/dist/lifecycle/handlers/review-handler.d.ts.map +1 -1
  80. package/dist/lifecycle/handlers/review-handler.js +152 -154
  81. package/dist/lifecycle/handlers/review-handler.js.map +1 -1
  82. package/dist/lifecycle/handlers/rework-handler.d.ts +2 -1
  83. package/dist/lifecycle/handlers/rework-handler.d.ts.map +1 -1
  84. package/dist/lifecycle/handlers/rework-handler.js +62 -14
  85. package/dist/lifecycle/handlers/rework-handler.js.map +1 -1
  86. package/dist/lifecycle/handlers/task-executor.d.ts +5 -4
  87. package/dist/lifecycle/handlers/task-executor.d.ts.map +1 -1
  88. package/dist/lifecycle/handlers/task-executor.js +153 -74
  89. package/dist/lifecycle/handlers/task-executor.js.map +1 -1
  90. package/dist/lifecycle/handlers/terminal-handlers.d.ts +22 -0
  91. package/dist/lifecycle/handlers/terminal-handlers.d.ts.map +1 -1
  92. package/dist/lifecycle/handlers/terminal-handlers.js +86 -5
  93. package/dist/lifecycle/handlers/terminal-handlers.js.map +1 -1
  94. package/dist/lifecycle/lifecycle-context.d.ts +31 -3
  95. package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
  96. package/dist/lifecycle/lifecycle-dispatcher.d.ts +18 -19
  97. package/dist/lifecycle/lifecycle-dispatcher.d.ts.map +1 -1
  98. package/dist/lifecycle/lifecycle-dispatcher.js +38 -22
  99. package/dist/lifecycle/lifecycle-dispatcher.js.map +1 -1
  100. package/dist/lifecycle/lifecycle-driver.d.ts +15 -8
  101. package/dist/lifecycle/lifecycle-driver.d.ts.map +1 -1
  102. package/dist/lifecycle/lifecycle-driver.js +110 -29
  103. package/dist/lifecycle/lifecycle-driver.js.map +1 -1
  104. package/dist/lifecycle/merge-stage-stats.d.ts +3 -3
  105. package/dist/lifecycle/merge-stage-stats.d.ts.map +1 -1
  106. package/dist/lifecycle/merge-stage-stats.js +2 -2
  107. package/dist/lifecycle/merge-stage-stats.js.map +1 -1
  108. package/dist/lifecycle/perform-implementation.d.ts +3 -0
  109. package/dist/lifecycle/perform-implementation.d.ts.map +1 -0
  110. package/dist/lifecycle/perform-implementation.js +264 -0
  111. package/dist/lifecycle/perform-implementation.js.map +1 -0
  112. package/dist/lifecycle/repo-hygiene.d.ts +14 -0
  113. package/dist/lifecycle/repo-hygiene.d.ts.map +1 -0
  114. package/dist/lifecycle/repo-hygiene.js +71 -0
  115. package/dist/lifecycle/repo-hygiene.js.map +1 -0
  116. package/dist/lifecycle/shared-compute.d.ts +4 -4
  117. package/dist/lifecycle/shared-compute.d.ts.map +1 -1
  118. package/dist/lifecycle/shared-compute.js +1 -1
  119. package/dist/lifecycle/shared-compute.js.map +1 -1
  120. package/dist/lifecycle/stage-io.d.ts +139 -0
  121. package/dist/lifecycle/stage-io.d.ts.map +1 -0
  122. package/dist/lifecycle/stage-io.js +20 -0
  123. package/dist/lifecycle/stage-io.js.map +1 -0
  124. package/dist/lifecycle/stage-plan-builder.d.ts +3 -3
  125. package/dist/lifecycle/stage-plan-builder.d.ts.map +1 -1
  126. package/dist/lifecycle/stage-plan-builder.js +157 -128
  127. package/dist/lifecycle/stage-plan-builder.js.map +1 -1
  128. package/dist/lifecycle/stage-plan-types.d.ts +5 -21
  129. package/dist/lifecycle/stage-plan-types.d.ts.map +1 -1
  130. package/dist/lifecycle/stage-progression.d.ts +3 -15
  131. package/dist/lifecycle/stage-progression.d.ts.map +1 -1
  132. package/dist/lifecycle/stage-progression.js +48 -91
  133. package/dist/lifecycle/stage-progression.js.map +1 -1
  134. package/dist/lifecycle/task-completion-summary.d.ts +2 -2
  135. package/dist/lifecycle/task-completion-summary.d.ts.map +1 -1
  136. package/dist/lifecycle/task-completion-summary.js +0 -6
  137. package/dist/lifecycle/task-completion-summary.js.map +1 -1
  138. package/dist/lifecycle/task-executor.d.ts +23 -0
  139. package/dist/lifecycle/task-executor.d.ts.map +1 -1
  140. package/dist/lifecycle/task-executor.js +77 -5
  141. package/dist/lifecycle/task-executor.js.map +1 -1
  142. package/dist/lifecycle/task-grouping.d.ts +19 -0
  143. package/dist/lifecycle/task-grouping.d.ts.map +1 -0
  144. package/dist/lifecycle/task-grouping.js +48 -0
  145. package/dist/lifecycle/task-grouping.js.map +1 -0
  146. package/dist/lifecycle/task-runner.d.ts +20 -7
  147. package/dist/lifecycle/task-runner.d.ts.map +1 -1
  148. package/dist/lifecycle/task-runner.js +42 -278
  149. package/dist/lifecycle/task-runner.js.map +1 -1
  150. package/dist/lifecycle/tool-config-types.d.ts +9 -0
  151. package/dist/lifecycle/tool-config-types.d.ts.map +1 -1
  152. package/dist/lifecycle/worker-output-contract.d.ts +9 -15
  153. package/dist/lifecycle/worker-output-contract.d.ts.map +1 -1
  154. package/dist/lifecycle/worker-output-contract.js +45 -30
  155. package/dist/lifecycle/worker-output-contract.js.map +1 -1
  156. package/dist/providers/assemble-run-result.d.ts +3 -3
  157. package/dist/providers/assemble-run-result.d.ts.map +1 -1
  158. package/dist/providers/assemble-run-result.js +20 -9
  159. package/dist/providers/assemble-run-result.js.map +1 -1
  160. package/dist/providers/claude-session.d.ts.map +1 -1
  161. package/dist/providers/claude-session.js +1 -0
  162. package/dist/providers/claude-session.js.map +1 -1
  163. package/dist/providers/claude.js.map +1 -1
  164. package/dist/providers/codex-cli-launch.js +1 -1
  165. package/dist/providers/codex-cli-launch.js.map +1 -1
  166. package/dist/providers/codex-cli-session.d.ts +4 -1
  167. package/dist/providers/codex-cli-session.d.ts.map +1 -1
  168. package/dist/providers/codex-cli-session.js +73 -46
  169. package/dist/providers/codex-cli-session.js.map +1 -1
  170. package/dist/providers/codex.js.map +1 -1
  171. package/dist/providers/index.d.ts +1 -0
  172. package/dist/providers/index.d.ts.map +1 -1
  173. package/dist/providers/index.js +1 -0
  174. package/dist/providers/index.js.map +1 -1
  175. package/dist/providers/normalize-claude.d.ts +2 -0
  176. package/dist/providers/normalize-claude.d.ts.map +1 -1
  177. package/dist/providers/normalize-claude.js +1 -0
  178. package/dist/providers/normalize-claude.js.map +1 -1
  179. package/dist/providers/run-annotator-turn.d.ts +24 -0
  180. package/dist/providers/run-annotator-turn.d.ts.map +1 -0
  181. package/dist/providers/run-annotator-turn.js +43 -0
  182. package/dist/providers/run-annotator-turn.js.map +1 -0
  183. package/dist/providers/run-worker-turn.d.ts +26 -0
  184. package/dist/providers/run-worker-turn.d.ts.map +1 -0
  185. package/dist/providers/run-worker-turn.js +58 -0
  186. package/dist/providers/run-worker-turn.js.map +1 -0
  187. package/dist/providers/runner-types.d.ts +1 -1
  188. package/dist/providers/runner-types.d.ts.map +1 -1
  189. package/dist/reporting/headline-composer.d.ts +3 -3
  190. package/dist/reporting/headline-composer.d.ts.map +1 -1
  191. package/dist/review/index.d.ts +4 -3
  192. package/dist/review/index.d.ts.map +1 -1
  193. package/dist/review/index.js +7 -4
  194. package/dist/review/index.js.map +1 -1
  195. package/dist/review/parse-review-report.d.ts +7 -1
  196. package/dist/review/parse-review-report.d.ts.map +1 -1
  197. package/dist/review/parse-review-report.js +13 -21
  198. package/dist/review/parse-review-report.js.map +1 -1
  199. package/dist/review/review-verdict-mapping.d.ts +3 -3
  200. package/dist/review/review-verdict-mapping.d.ts.map +1 -1
  201. package/dist/review/review-verdict-mapping.js +1 -1
  202. package/dist/review/review-verdict-mapping.js.map +1 -1
  203. package/dist/review/run-reviewer.d.ts +40 -0
  204. package/dist/review/run-reviewer.d.ts.map +1 -0
  205. package/dist/review/run-reviewer.js +54 -0
  206. package/dist/review/run-reviewer.js.map +1 -0
  207. package/dist/review/templates/quality-review.d.ts +5 -0
  208. package/dist/review/templates/quality-review.d.ts.map +1 -1
  209. package/dist/review/templates/quality-review.js +35 -25
  210. package/dist/review/templates/quality-review.js.map +1 -1
  211. package/dist/review/templates/spec-review.d.ts +6 -0
  212. package/dist/review/templates/spec-review.d.ts.map +1 -1
  213. package/dist/review/templates/spec-review.js +36 -8
  214. package/dist/review/templates/spec-review.js.map +1 -1
  215. package/dist/stores/batch-cache.d.ts +3 -3
  216. package/dist/stores/batch-cache.d.ts.map +1 -1
  217. package/dist/stores/batch-cache.js.map +1 -1
  218. package/dist/stores/batch-registry.d.ts +31 -0
  219. package/dist/stores/batch-registry.d.ts.map +1 -1
  220. package/dist/stores/batch-registry.js +12 -0
  221. package/dist/stores/batch-registry.js.map +1 -1
  222. package/dist/tools/debug/tool-config.js +1 -1
  223. package/dist/tools/debug/tool-config.js.map +1 -1
  224. package/dist/tools/delegate/tool-config.d.ts.map +1 -1
  225. package/dist/tools/delegate/tool-config.js +3 -1
  226. package/dist/tools/delegate/tool-config.js.map +1 -1
  227. package/dist/tools/execute-plan/tool-config.d.ts.map +1 -1
  228. package/dist/tools/execute-plan/tool-config.js +3 -1
  229. package/dist/tools/execute-plan/tool-config.js.map +1 -1
  230. package/dist/tools/investigate/tool-config.js +1 -1
  231. package/dist/tools/investigate/tool-config.js.map +1 -1
  232. package/dist/tools/retry/tool-config.js.map +1 -1
  233. package/dist/types/run-result.d.ts +164 -213
  234. package/dist/types/run-result.d.ts.map +1 -1
  235. package/dist/types/run-result.js +17 -0
  236. package/dist/types/run-result.js.map +1 -1
  237. package/dist/types.d.ts +1 -1
  238. package/dist/types.d.ts.map +1 -1
  239. package/package.json +1 -1
  240. package/dist/lifecycle/handlers/derive-terminal-status.d.ts +0 -10
  241. package/dist/lifecycle/handlers/derive-terminal-status.d.ts.map +0 -1
  242. package/dist/lifecycle/handlers/derive-terminal-status.js +0 -35
  243. package/dist/lifecycle/handlers/derive-terminal-status.js.map +0 -1
  244. package/dist/lifecycle/handlers/files-written-cross-check.d.ts +0 -27
  245. package/dist/lifecycle/handlers/files-written-cross-check.d.ts.map +0 -1
  246. package/dist/lifecycle/handlers/files-written-cross-check.js +0 -91
  247. package/dist/lifecycle/handlers/files-written-cross-check.js.map +0 -1
  248. package/dist/lifecycle/handlers/verify-stage.d.ts +0 -37
  249. package/dist/lifecycle/handlers/verify-stage.d.ts.map +0 -1
  250. package/dist/lifecycle/handlers/verify-stage.js +0 -208
  251. package/dist/lifecycle/handlers/verify-stage.js.map +0 -1
  252. package/dist/review/default-engines.d.ts +0 -3
  253. package/dist/review/default-engines.d.ts.map +0 -1
  254. package/dist/review/default-engines.js +0 -22
  255. package/dist/review/default-engines.js.map +0 -1
  256. package/dist/review/reviewer-engine.d.ts +0 -53
  257. package/dist/review/reviewer-engine.d.ts.map +0 -1
  258. package/dist/review/reviewer-engine.js +0 -47
  259. package/dist/review/reviewer-engine.js.map +0 -1
  260. package/dist/review/reviewer-output-parser.d.ts +0 -12
  261. package/dist/review/reviewer-output-parser.d.ts.map +0 -1
  262. package/dist/review/reviewer-output-parser.js +0 -213
  263. package/dist/review/reviewer-output-parser.js.map +0 -1
  264. package/dist/review/reviewer-prompt-builder.d.ts +0 -21
  265. package/dist/review/reviewer-prompt-builder.d.ts.map +0 -1
  266. package/dist/review/reviewer-prompt-builder.js +0 -22
  267. package/dist/review/reviewer-prompt-builder.js.map +0 -1
  268. package/dist/review/templates/annotate-completion.d.ts +0 -12
  269. package/dist/review/templates/annotate-completion.d.ts.map +0 -1
  270. package/dist/review/templates/annotate-completion.js +0 -72
  271. package/dist/review/templates/annotate-completion.js.map +0 -1
@@ -1,29 +1,21 @@
1
- import { buildStagePlan } from './stage-plan-builder.js';
1
+ import { STAGE_PLAN } from './stage-plan-builder.js';
2
2
  import { HUMAN_LABEL } from './stage-labels.js';
3
- /** Canonical schemaStage → human-readable label used in `stageLabel` events
4
- * emitted by handlers + shown in the polling headline.
5
- *
6
- * v4.4.x pipeline (5 canonical stages):
7
- * Implementing → Review → Rework → Committing → Annotating
8
- * Plus a tail "Finalizing" slot for the cleanup/emit phase.
9
- *
10
- * Per-route which stages fire:
11
- * Read-only: Implementing → Annotating → Finalizing
12
- * Research: Implementing → Finalizing
13
- * Write: all stages; Rework only when review verdict is changes_required;
14
- * Committing conditional on commit-gate threshold. */
15
- const SCHEMA_STAGE_LABELS = {
16
- implementing: HUMAN_LABEL.implementing,
3
+ /** v5 stage name → human-readable label. `null` = hidden from the user-facing
4
+ * bracket (the stage runs but doesn't get its own slot in the polling
5
+ * headline; prepare + register-block + compose are pure plumbing). */
6
+ const STAGE_LABELS = {
7
+ prepare: null,
8
+ 'register-block': null,
9
+ implement: HUMAN_LABEL.implementing,
17
10
  review: HUMAN_LABEL.review,
18
11
  rework: HUMAN_LABEL.rework,
19
- committing: HUMAN_LABEL.committing,
20
- annotating: HUMAN_LABEL.annotating,
21
- finalizing: 'Finalizing',
12
+ commit: HUMAN_LABEL.committing,
13
+ annotate: HUMAN_LABEL.annotating,
14
+ compose: null,
15
+ terminal: 'Finalizing',
22
16
  };
23
- /** Tool route → (ToolCategory, default reviewPolicy). Mirrors
24
- * task-runner.ts:toolCategoryForRoute + the reviewPolicy each tool-config
25
- * injects into TaskSpec. Keep in sync; if these drift, the user-facing
26
- * stage bracket will denominator-skew. */
17
+ /** Tool route → (ToolCategory, default reviewPolicy). Keep in sync with
18
+ * task-runner.ts:toolCategoryForRoute. */
27
19
  const ROUTE_PROFILE = {
28
20
  delegate: { category: 'artifact_producing', reviewPolicy: 'full' },
29
21
  'execute-plan': { category: 'artifact_producing', reviewPolicy: 'full' },
@@ -35,23 +27,10 @@ const ROUTE_PROFILE = {
35
27
  research: { category: 'read_only', reviewPolicy: 'none' },
36
28
  'register-context-block': { category: 'assist', reviewPolicy: 'none' },
37
29
  };
38
- /** Route-specific label overrides empty post-redesign because each
39
- * route's StagePlan row uses the right schemaStage directly. Kept as a
40
- * stub so the lookup in stageOrderForRoute() doesn't need a special case. */
41
- const ROUTE_LABEL_OVERRIDES = {};
42
- /** Routes where the StagePlan doesn't include a coarse "Finalizing" row
43
- * but we want one in the polling progression so the agent sees a clean
44
- * ramp to completion. Appended to the derived list. */
45
- const FINALIZING_LABEL = 'Finalizing';
46
- /** "Rework-possible happy-path" simulated state. Used to filter StagePlan
47
- * rows by runCondition so the user-facing denominator only counts stages
48
- * that could plausibly fire for this route — not every schemaStage in
49
- * the plan. Verdict flags are set to 'changes_required' so rework rows
50
- * are eligible (the bracket should reflect the maximum reachable
51
- * denominator, not just the happy path). Chain-passed flags are also
52
- * set true so post-chain rows (diff_review / verifying / committing)
53
- * are eligible too. */
54
- function simulatedStateForRoute(route, category, reviewPolicy) {
30
+ /** Simulated state used to filter STAGE_PLAN's shouldRun predicates so the
31
+ * denominator reflects the maximum reachable stage set for the route
32
+ * (the worst-case ramp the user can see). */
33
+ function simulatedState(route, category, reviewPolicy) {
55
34
  return {
56
35
  terminal: false,
57
36
  attemptIndex: 0,
@@ -60,68 +39,53 @@ function simulatedStateForRoute(route, category, reviewPolicy) {
60
39
  shutdownInProgress: false,
61
40
  route,
62
41
  toolCategory: category,
63
- // lastRunResult truthy + a non-empty filesWritten so post-impl rows
64
- // that gate on artifacts (e.g. 5.2 git_commit) are eligible.
65
- lastRunResult: { filesWritten: ['x'] },
66
- filesChanged: ['x'],
67
- // Only artifact_producing routes commit. Setting these correctly here
68
- // makes row 5.2 (git_commit) gate off for read_only audit/review/etc.
69
42
  autoCommit: category === 'artifact_producing',
70
43
  readOnlyTask: category === 'read_only',
71
- specChainPassed: true,
72
- qualityChainPassed: true,
73
- specReviewRound1Verdict: 'changes_required',
74
- specReviewRound2Verdict: 'changes_required',
75
- qualityReviewRound1Verdict: 'changes_required',
76
- qualityReviewRound2Verdict: 'changes_required',
44
+ reviewVerdict: 'changes_required',
45
+ gates: {
46
+ implement: { outcome: 'advance', payload: { workerSelfAssessment: 'done', filesChanged: ['x'] }, telemetry: { stageLabel: 'implement', durationMs: 0, costUSD: 0, turnsUsed: 0, stopReason: 'normal' } },
47
+ review: { outcome: 'advance', payload: { verdict: 'changes_required' }, telemetry: { stageLabel: 'review', durationMs: 0, costUSD: 0, turnsUsed: 0, stopReason: 'normal' } },
48
+ },
49
+ lastRunResult: { filesWritten: ['x'] },
50
+ filesChanged: ['x'],
51
+ halted: false,
77
52
  };
78
53
  }
79
- /** Build the user-facing stage label list for a route by simulating each
80
- * StagePlan row's runCondition under the route's defaults. Distinct
81
- * schemaStages whose runCondition returns true become the user-facing
82
- * stages, in plan order. Route-specific label overrides + a tail
83
- * "Finalizing" slot give the agent a stable bracket. */
54
+ /** Build the user-facing stage label list for a route by walking STAGE_PLAN
55
+ * and including each stage whose Layer-1 (applicableRoutes) AND Layer-2
56
+ * (shouldRun under simulated state) both pass. */
84
57
  export function stageOrderForRoute(route) {
85
58
  const profile = ROUTE_PROFILE[route];
86
59
  if (!profile)
87
- return [FINALIZING_LABEL];
88
- const plan = buildStagePlan(profile.category);
89
- const state = simulatedStateForRoute(route, profile.category, profile.reviewPolicy);
90
- const seen = new Set();
60
+ return ['Finalizing'];
61
+ const state = simulatedState(route, profile.category, profile.reviewPolicy);
91
62
  const ordered = [];
92
- const overrides = ROUTE_LABEL_OVERRIDES[route] ?? {};
93
- for (const row of plan.rows) {
94
- const schema = row.schemaStage;
95
- if (!schema)
96
- continue;
97
- if (seen.has(schema))
63
+ for (const stage of STAGE_PLAN) {
64
+ const def = stage;
65
+ const applies = def.applicableRoutes === 'all'
66
+ ? true
67
+ : def.applicableRoutes.includes(route);
68
+ if (!applies)
98
69
  continue;
99
- // Skip rows whose runCondition wouldn't fire for this route's defaults.
100
- // E.g. spec_review/spec_rework/diff_review/verifying/committing all
101
- // gate on `isAP` — they're absent from the read_only audit denominator.
102
- let eligible = false;
70
+ let runnable = false;
103
71
  try {
104
- eligible = row.runCondition(state);
72
+ runnable = def.shouldRun(state).run;
105
73
  }
106
74
  catch {
107
- eligible = false;
75
+ runnable = false;
108
76
  }
109
- if (!eligible)
77
+ if (!runnable)
110
78
  continue;
111
- seen.add(schema);
112
- const label = overrides[schema] ?? SCHEMA_STAGE_LABELS[schema] ?? schema;
113
- ordered.push(label);
79
+ const label = STAGE_LABELS[def.name];
80
+ if (label === null)
81
+ continue; // hidden from bracket
82
+ const final = label ?? def.name;
83
+ if (!ordered.includes(final))
84
+ ordered.push(final);
114
85
  }
115
- ordered.push(FINALIZING_LABEL);
116
- return ordered;
86
+ return ordered.length > 0 ? ordered : ['Finalizing'];
117
87
  }
118
- /** Memoized lookup so async-dispatch + RunningHeadlineSink don't rebuild
119
- * the stage plan for every event. The plan is pure-of-state, so the
120
- * cache is safe across the daemon's lifetime. */
121
88
  const cache = new Map();
122
- /** Public accessor mirroring the legacy `STAGE_ORDER_BY_ROUTE[route]` shape
123
- * but driven by the StagePlan. Returns an empty array (treated as "1/1")
124
- * for unknown routes. */
125
89
  export const STAGE_ORDER_BY_ROUTE = new Proxy({}, {
126
90
  get(_target, prop) {
127
91
  if (typeof prop !== 'string')
@@ -134,16 +98,9 @@ export const STAGE_ORDER_BY_ROUTE = new Proxy({}, {
134
98
  return cached;
135
99
  },
136
100
  });
137
- /** Normalize a runtime stageLabel ("Spec rework round 1") to a coarse
138
- * label that exists in `stageOrderForRoute(route)`. Reworks map to their
139
- * own coarse slot ("Spec rework" / "Quality rework"), not back to the
140
- * review slot — the StagePlan-derived order DOES contain a rework slot
141
- * (because spec_rework / quality_rework are distinct schemaStages), so
142
- * the bracket advances correctly when a rework fires. */
143
101
  export function normalizeStageLabel(label) {
144
102
  return label;
145
103
  }
146
- /** "(X/Y)" stage-progress bracket for a route + current stageLabel. */
147
104
  export function stageProgress(route, stageLabel) {
148
105
  const order = STAGE_ORDER_BY_ROUTE[route];
149
106
  if (!order || order.length === 0)
@@ -1 +1 @@
1
- {"version":3,"file":"stage-progression.js","sourceRoot":"","sources":["../../src/lifecycle/stage-progression.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stage-progression.js","sourceRoot":"","sources":["../../src/lifecycle/stage-progression.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { RunResult } from '../types.js';
1
+ import type { RuntimeRunResult } from '../types.js';
2
2
  export interface TaskCompletionSummary {
3
3
  batchId: string;
4
4
  taskIndexZero: number;
@@ -14,7 +14,7 @@ export interface TaskCompletionSummary {
14
14
  qualityReviewVerdict: string;
15
15
  }
16
16
  export declare function computeTaskCompletionSummary(args: {
17
- runResult: RunResult;
17
+ runResult: RuntimeRunResult;
18
18
  taskIndexZero: number;
19
19
  totalTasks: number;
20
20
  batchId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"task-completion-summary.d.ts","sourceRoot":"","sources":["../../src/lifecycle/task-completion-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAS7C,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AA+BD,wBAAgB,4BAA4B,CAAC,IAAI,EAAE;IACjD,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,qBAAqB,CA+CxB;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAMnE"}
1
+ {"version":3,"file":"task-completion-summary.d.ts","sourceRoot":"","sources":["../../src/lifecycle/task-completion-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AASpD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AA4BD,wBAAgB,4BAA4B,CAAC,IAAI,EAAE;IACjD,SAAS,EAAE,gBAAgB,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,qBAAqB,CA+CxB;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAMnE"}
@@ -9,12 +9,6 @@ import { clampStageCost, clampTaskCost, clampInputTokens, clampOutputTokens, cla
9
9
  // the V3 event never disagree on cost/token/duration values.
10
10
  function deriveTerminalStatus(rr) {
11
11
  const tr = rr.terminationReason;
12
- if (tr === 'all_tiers_unavailable')
13
- return 'unavailable';
14
- if (tr === 'cost_ceiling')
15
- return 'cost_exceeded';
16
- if (tr === 'round_cap')
17
- return 'incomplete';
18
12
  if (!tr || typeof tr !== 'object')
19
13
  return 'incomplete';
20
14
  switch (tr.cause) {
@@ -1 +1 @@
1
- {"version":3,"file":"task-completion-summary.js","sourceRoot":"","sources":["../../src/lifecycle/task-completion-summary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-completion-summary.js","sourceRoot":"","sources":["../../src/lifecycle/task-completion-summary.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,29 @@
1
1
  import type { ToolConfig } from './tool-config-types.js';
2
2
  import type { ExecutionContext } from './lifecycle-context.js';
3
3
  import type { ExecutorOutput } from './executor-output-types.js';
4
+ import type { TaskSpec, RuntimeRunResult } from '../types.js';
5
+ import { type TaskGroup } from './task-grouping.js';
6
+ /**
7
+ * Inner loop for grouped dispatch. Runs each group in parallel; within
8
+ * each group runs tasks sequentially in caller input order. Aborted
9
+ * not-yet-started tasks receive a cancelled-result envelope.
10
+ * Failures within a group are caught by dispatchOne (RuntimeRunResult
11
+ * with workerStatus='failed') and DO NOT halt subsequent group members.
12
+ *
13
+ * Returns results indexed by original task order.
14
+ */
15
+ export declare function dispatchGroupedWithPrecomputedGroups(tasks: TaskSpec[], groups: TaskGroup[], dispatchOne: (task: TaskSpec, originalIndex: number) => Promise<RuntimeRunResult>, opts: {
16
+ abortSignal?: AbortSignal;
17
+ }): Promise<RuntimeRunResult[]>;
18
+ /**
19
+ * Convenience wrapper that resolves the grouping internally. Used by
20
+ * tests; production callers use the precomputed-groups variant so they
21
+ * can also set ctx.batchGroupCount and call ctx.attachBatchGroups before
22
+ * dispatch begins.
23
+ */
24
+ export declare function dispatchGrouped(tasks: TaskSpec[], dispatchOne: (task: TaskSpec, originalIndex: number) => Promise<RuntimeRunResult>, opts: {
25
+ abortSignal?: AbortSignal;
26
+ }): Promise<RuntimeRunResult[]>;
4
27
  /**
5
28
  * Generic per-task orchestrator. Takes a ToolConfig (which encodes all
6
29
  * tool-specific behavior: brief compilation, TaskSpec building, headline
@@ -1 +1 @@
1
- {"version":3,"file":"task-executor.d.ts","sourceRoot":"","sources":["../../src/lifecycle/task-executor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAYjE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EACpD,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EACxC,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,cAAc,CAAC,CA+MzB"}
1
+ {"version":3,"file":"task-executor.d.ts","sourceRoot":"","sources":["../../src/lifecycle/task-executor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAS9D,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAItE;;;;;;;;GAQG;AACH,wBAAsB,oCAAoC,CACxD,KAAK,EAAE,QAAQ,EAAE,EACjB,MAAM,EAAE,SAAS,EAAE,EACnB,WAAW,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,EACjF,IAAI,EAAE;IAAE,WAAW,CAAC,EAAE,WAAW,CAAA;CAAE,GAClC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAyB7B;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,QAAQ,EAAE,EACjB,WAAW,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,EACjF,IAAI,EAAE;IAAE,WAAW,CAAC,EAAE,WAAW,CAAA;CAAE,GAClC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAG7B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EACpD,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EACxC,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,cAAc,CAAC,CA8OzB"}
@@ -5,9 +5,54 @@ import { computeTimings, computeAggregateCost } from './shared-compute.js';
5
5
  import { autoRegisterContextBlock } from './auto-register-context-block.js';
6
6
  import { mapReviewVerdicts } from '../review/review-verdict-mapping.js';
7
7
  import { notApplicable } from '../reporting/not-applicable.js';
8
- import { createDefaultReviewerEngine } from '../review/default-engines.js';
9
8
  import { parseStructuredReport } from '../reporting/structured-report.js';
10
9
  import { expandContextBlocks } from '../stores/expand-context-blocks.js';
10
+ import { groupTasksByRepo } from './task-grouping.js';
11
+ import { buildCancelledResult } from './build-cancelled-result.js';
12
+ import { getDirtyFiles, formatHygieneAdvisory } from './repo-hygiene.js';
13
+ /**
14
+ * Inner loop for grouped dispatch. Runs each group in parallel; within
15
+ * each group runs tasks sequentially in caller input order. Aborted
16
+ * not-yet-started tasks receive a cancelled-result envelope.
17
+ * Failures within a group are caught by dispatchOne (RuntimeRunResult
18
+ * with workerStatus='failed') and DO NOT halt subsequent group members.
19
+ *
20
+ * Returns results indexed by original task order.
21
+ */
22
+ export async function dispatchGroupedWithPrecomputedGroups(tasks, groups, dispatchOne, opts) {
23
+ const results = new Array(tasks.length);
24
+ await Promise.all(groups.map(async (group) => {
25
+ const isGitRepo = !group.key.startsWith('/') || true; // group.key is always either a toplevel or realpath
26
+ let isFirstInGroup = true;
27
+ for (const { task, originalIndex } of group.tasks) {
28
+ if (opts.abortSignal?.aborted) {
29
+ results[originalIndex] = buildCancelledResult();
30
+ continue;
31
+ }
32
+ let effectiveTask = task;
33
+ if (!isFirstInGroup && group.tasks.length > 1) {
34
+ const dirty = await getDirtyFiles(group.key);
35
+ if (dirty.length > 0) {
36
+ const advisory = formatHygieneAdvisory(dirty);
37
+ effectiveTask = { ...task, prompt: advisory + task.prompt };
38
+ }
39
+ }
40
+ results[originalIndex] = await dispatchOne(effectiveTask, originalIndex);
41
+ isFirstInGroup = false;
42
+ }
43
+ }));
44
+ return results;
45
+ }
46
+ /**
47
+ * Convenience wrapper that resolves the grouping internally. Used by
48
+ * tests; production callers use the precomputed-groups variant so they
49
+ * can also set ctx.batchGroupCount and call ctx.attachBatchGroups before
50
+ * dispatch begins.
51
+ */
52
+ export async function dispatchGrouped(tasks, dispatchOne, opts) {
53
+ const groups = await groupTasksByRepo(tasks);
54
+ return dispatchGroupedWithPrecomputedGroups(tasks, groups, dispatchOne, opts);
55
+ }
11
56
  /**
12
57
  * Generic per-task orchestrator. Takes a ToolConfig (which encodes all
13
58
  * tool-specific behavior: brief compilation, TaskSpec building, headline
@@ -88,6 +133,8 @@ export async function executeTask(config, ctx, input) {
88
133
  durationMs: Date.now() - startMs,
89
134
  structuredError: { code: 'runner_crash', message: msg, where: `executor:${config.name}` },
90
135
  workerStatus: 'failed',
136
+ actualCostUSD: 0,
137
+ directoriesListed: [],
91
138
  });
92
139
  const buildAgentNotConfiguredResult = (msg) => ({
93
140
  output: '',
@@ -104,6 +151,8 @@ export async function executeTask(config, ctx, input) {
104
151
  retryable: false,
105
152
  durationMs: Date.now() - startMs,
106
153
  workerStatus: 'failed',
154
+ actualCostUSD: 0,
155
+ directoriesListed: [],
107
156
  });
108
157
  const dispatchOne = async (task, i) => {
109
158
  const r = resolvedPerTask[i];
@@ -127,7 +176,7 @@ export async function executeTask(config, ctx, input) {
127
176
  mainModel: ctx.mainModel,
128
177
  bus: ctx.bus,
129
178
  ...(ctx.contextBlockStore && { contextBlockStore: ctx.contextBlockStore }),
130
- reviewerEngine: ctx.reviewerEngine ?? createDefaultReviewerEngine(),
179
+ ...(ctx.reviewerEngine !== undefined && { reviewerEngine: ctx.reviewerEngine }),
131
180
  });
132
181
  }
133
182
  catch (e) {
@@ -138,9 +187,32 @@ export async function executeTask(config, ctx, input) {
138
187
  return buildCrashResult(e instanceof Error ? e.message : String(e));
139
188
  }
140
189
  };
141
- const results = tasks.length === 1
142
- ? [await dispatchOne(tasks[0], 0)]
143
- : await Promise.all(tasks.map((task, i) => dispatchOne(task, i)));
190
+ let results;
191
+ if (config.serializeSameRepo && tasks.length > 1) {
192
+ // Compute groups once so we can both:
193
+ // - set ctx.batchGroupCount BEFORE dispatch (task-runner reads this
194
+ // to gate PARALLEL_SAFETY_SUFFIX), and
195
+ // - call ctx.attachBatchGroups so the 202 headline composer can
196
+ // describe active groups.
197
+ const groups = await groupTasksByRepo(tasks);
198
+ ctx.batchGroupCount = groups.length;
199
+ ctx.attachBatchGroups?.(groups.map((g) => ({
200
+ key: g.key,
201
+ taskIndices: g.tasks.map((t) => t.originalIndex),
202
+ })));
203
+ ctx.setBatchGroupingTelemetry?.({
204
+ groupCount: groups.length,
205
+ groupSizes: groups.map((g) => g.tasks.length),
206
+ serializationApplied: groups.some((g) => g.tasks.length > 1),
207
+ });
208
+ results = await dispatchGroupedWithPrecomputedGroups(tasks, groups, (task, i) => dispatchOne(task, i), { abortSignal: ctx.stall.controller.signal });
209
+ }
210
+ else if (tasks.length === 1) {
211
+ results = [await dispatchOne(tasks[0], 0)];
212
+ }
213
+ else {
214
+ results = await Promise.all(tasks.map((task, i) => dispatchOne(task, i)));
215
+ }
144
216
  const wallClockMs = Date.now() - startMs;
145
217
  // Gap 3 fix (4.0.3+): surface the executor's wall-clock as
146
218
  // result.durationMs on each task. The dispatcher's runResult.durationMs
@@ -1 +1 @@
1
- {"version":3,"file":"task-executor.js","sourceRoot":"","sources":["../../src/lifecycle/task-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-executor.js","sourceRoot":"","sources":["../../src/lifecycle/task-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { TaskSpec } from '../types/task-spec.js';
2
+ export interface TaskGroup {
3
+ key: string;
4
+ tasks: Array<{
5
+ task: TaskSpec;
6
+ originalIndex: number;
7
+ }>;
8
+ }
9
+ /**
10
+ * Buckets tasks by (git toplevel of cwd) ?? realpath(cwd).
11
+ * Tasks in the same bucket share a write surface and must run serially.
12
+ *
13
+ * - Memoizes resolveGitToplevel per unique cwd.
14
+ * - Group order follows the smallest originalIndex in each group, so the
15
+ * group containing tasks[0] is first.
16
+ * - Within each group, tasks appear in caller input order.
17
+ */
18
+ export declare function groupTasksByRepo(tasks: TaskSpec[]): Promise<TaskGroup[]>;
19
+ //# sourceMappingURL=task-grouping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-grouping.d.ts","sourceRoot":"","sources":["../../src/lifecycle/task-grouping.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGtD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzD;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAuC9E"}
@@ -0,0 +1,48 @@
1
+ import { realpathSync } from 'node:fs';
2
+ import { resolveGitToplevel } from './git-toplevel.js';
3
+ /**
4
+ * Buckets tasks by (git toplevel of cwd) ?? realpath(cwd).
5
+ * Tasks in the same bucket share a write surface and must run serially.
6
+ *
7
+ * - Memoizes resolveGitToplevel per unique cwd.
8
+ * - Group order follows the smallest originalIndex in each group, so the
9
+ * group containing tasks[0] is first.
10
+ * - Within each group, tasks appear in caller input order.
11
+ */
12
+ export async function groupTasksByRepo(tasks) {
13
+ const cwds = Array.from(new Set(tasks.map((t) => t.cwd ?? process.cwd())));
14
+ const toplevelByCwd = new Map();
15
+ await Promise.all(cwds.map(async (c) => {
16
+ toplevelByCwd.set(c, await resolveGitToplevel(c));
17
+ }));
18
+ const realpathByCwd = new Map();
19
+ const realpathOf = (cwd) => {
20
+ if (realpathByCwd.has(cwd))
21
+ return realpathByCwd.get(cwd);
22
+ let resolved;
23
+ try {
24
+ resolved = realpathSync(cwd);
25
+ }
26
+ catch {
27
+ resolved = cwd; // verbatim fallback
28
+ }
29
+ realpathByCwd.set(cwd, resolved);
30
+ return resolved;
31
+ };
32
+ const byKey = new Map();
33
+ const keyOrder = []; // tracks first appearance for stable group order
34
+ tasks.forEach((task, originalIndex) => {
35
+ const cwd = task.cwd ?? process.cwd();
36
+ const toplevel = toplevelByCwd.get(cwd);
37
+ const key = toplevel ?? realpathOf(cwd);
38
+ let group = byKey.get(key);
39
+ if (!group) {
40
+ group = { key, tasks: [] };
41
+ byKey.set(key, group);
42
+ keyOrder.push(key);
43
+ }
44
+ group.tasks.push({ task, originalIndex });
45
+ });
46
+ return keyOrder.map((k) => byKey.get(k));
47
+ }
48
+ //# sourceMappingURL=task-grouping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-grouping.js","sourceRoot":"","sources":["../../src/lifecycle/task-grouping.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAOvD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAiB;IACtD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,aAAa,GAAG,IAAI,GAAG,EAAyB,CAAC;IACvD,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACnB,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAChD,MAAM,UAAU,GAAG,CAAC,GAAW,EAAU,EAAE;QACzC,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,aAAa,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QAC3D,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YACH,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,GAAG,CAAC,CAAC,oBAAoB;QACtC,CAAC;QACD,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACjC,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC3C,MAAM,QAAQ,GAAa,EAAE,CAAC,CAAC,iDAAiD;IAEhF,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,QAAQ,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;YAC3B,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC;AAC5C,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { TaskSpec, RunResult, MultiModelConfig, Provider, AgentType } from '../types.js';
1
+ import type { TaskSpec, RuntimeRunResult, MultiModelConfig, Provider, AgentType } from '../types.js';
2
2
  import type { ProgressEvent, RunTasksRuntime } from '../providers/runner-types.js';
3
3
  import type { HeartbeatTickInfo } from '../bounded-execution/activity-tracker.js';
4
4
  import type { HttpServerLog } from '../events/http-server-log.js';
@@ -6,7 +6,21 @@ import type { EventEmitter } from '../events/event-emitter.js';
6
6
  import type { ExecutionContext } from './lifecycle-context.js';
7
7
  import type { ResolvedAgent } from '../escalation/agent-resolver.js';
8
8
  import { LifecycleDispatcher } from './lifecycle-dispatcher.js';
9
- export declare function errorResult(error: string): RunResult;
9
+ export declare function errorResult(error: string): RuntimeRunResult;
10
+ /**
11
+ * Conditionally appends PARALLEL_SAFETY_SUFFIX to each task's prompt.
12
+ * Suffix is appended ONLY when ctx.batchGroupCount > 1, i.e., the batch
13
+ * spans multiple repos. Within a single group, tasks run serially and
14
+ * full builds are safe.
15
+ *
16
+ * Pure function — returns shallow-cloned tasks; original array unchanged.
17
+ */
18
+ export declare function applyParallelSafetySuffixIfNeeded<T extends {
19
+ prompt: string;
20
+ testCommand?: string;
21
+ }>(tasks: T[], ctx: {
22
+ batchGroupCount?: number;
23
+ }): T[];
10
24
  export type ResolvedTask = {
11
25
  task: TaskSpec;
12
26
  resolved: {
@@ -31,7 +45,7 @@ export interface RunTasksOptions {
31
45
  recordTaskCompleted: (ctx: {
32
46
  route: string;
33
47
  taskSpec: TaskSpec;
34
- runResult: RunResult;
48
+ runResult: RuntimeRunResult;
35
49
  client: string;
36
50
  mainModel: string | null;
37
51
  reviewPolicy?: 'full' | 'quality_only' | 'diff_only' | 'none';
@@ -45,9 +59,9 @@ export interface RunTasksOptions {
45
59
  workerOutput: string;
46
60
  brief: string;
47
61
  }) => string;
48
- reviewerEngine?: import('../review/reviewer-engine.js').ReviewerEngine;
62
+ batchGroupCount?: number;
49
63
  }
50
- export declare function runTasks(tasks: TaskSpec[], config: MultiModelConfig, options?: RunTasksOptions): Promise<RunResult[]>;
64
+ export declare function runTasks(tasks: TaskSpec[], config: MultiModelConfig, options?: RunTasksOptions): Promise<RuntimeRunResult[]>;
51
65
  export { extractPlanSection } from './plan-extraction.js';
52
66
  export interface DispatchTaskInput {
53
67
  task: TaskSpec;
@@ -75,7 +89,6 @@ export interface DispatchTaskInput {
75
89
  workerOutput: string;
76
90
  brief: string;
77
91
  }) => string;
78
- reviewerEngine?: import('../review/reviewer-engine.js').ReviewerEngine;
79
92
  }
80
- export declare function runTaskViaDispatcher(input: DispatchTaskInput, dispatcher?: LifecycleDispatcher): Promise<RunResult>;
93
+ export declare function runTaskViaDispatcher(input: DispatchTaskInput, dispatcher?: LifecycleDispatcher): Promise<RuntimeRunResult>;
81
94
  //# sourceMappingURL=task-runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"task-runner.d.ts","sourceRoot":"","sources":["../../src/lifecycle/task-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-runner.d.ts","sourceRoot":"","sources":["../../src/lifecycle/task-runner.ts"],"names":[],"mappings":"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"}