@zhixuan92/multi-model-agent-core 4.5.3 → 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.
- package/README.md +8 -3
- package/dist/escalation/delegate-with-escalation.d.ts +2 -2
- package/dist/escalation/delegate-with-escalation.d.ts.map +1 -1
- package/dist/escalation/delegate-with-escalation.js +11 -17
- package/dist/escalation/delegate-with-escalation.js.map +1 -1
- package/dist/escalation/fallback-helpers.d.ts +5 -5
- package/dist/escalation/fallback-helpers.d.ts.map +1 -1
- package/dist/escalation/fallback-helpers.js +5 -3
- package/dist/escalation/fallback-helpers.js.map +1 -1
- package/dist/events/event-builder.d.ts +36 -5
- package/dist/events/event-builder.d.ts.map +1 -1
- package/dist/events/event-builder.js +175 -33
- package/dist/events/event-builder.js.map +1 -1
- package/dist/events/observability-events.d.ts +6 -0
- package/dist/events/observability-events.d.ts.map +1 -1
- package/dist/events/observability-events.js +5 -0
- package/dist/events/observability-events.js.map +1 -1
- package/dist/events/telemetry-types.d.ts +10 -0
- package/dist/events/telemetry-types.d.ts.map +1 -1
- package/dist/events/verbose-log-channel.d.ts +7 -7
- package/dist/events/verbose-log-channel.js +10 -10
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/lifecycle/annotate-parser.d.ts +9 -0
- package/dist/lifecycle/annotate-parser.d.ts.map +1 -0
- package/dist/lifecycle/annotate-parser.js +83 -0
- package/dist/lifecycle/annotate-parser.js.map +1 -0
- package/dist/lifecycle/annotate-prompts.d.ts +9 -0
- package/dist/lifecycle/annotate-prompts.d.ts.map +1 -0
- package/dist/lifecycle/annotate-prompts.js +86 -0
- package/dist/lifecycle/annotate-prompts.js.map +1 -0
- package/dist/lifecycle/auto-register-context-block.d.ts +2 -2
- package/dist/lifecycle/auto-register-context-block.d.ts.map +1 -1
- package/dist/lifecycle/auto-register-context-block.js.map +1 -1
- package/dist/lifecycle/build-cancelled-result.d.ts +11 -0
- package/dist/lifecycle/build-cancelled-result.d.ts.map +1 -0
- package/dist/lifecycle/build-cancelled-result.js +27 -0
- package/dist/lifecycle/build-cancelled-result.js.map +1 -0
- package/dist/lifecycle/executor-output-types.d.ts +2 -2
- package/dist/lifecycle/executor-output-types.d.ts.map +1 -1
- package/dist/lifecycle/fallback-report.d.ts +2 -2
- package/dist/lifecycle/fallback-report.d.ts.map +1 -1
- package/dist/lifecycle/fallback-report.js.map +1 -1
- package/dist/lifecycle/findings-parser.d.ts +2 -0
- package/dist/lifecycle/findings-parser.d.ts.map +1 -1
- package/dist/lifecycle/findings-parser.js +9 -4
- package/dist/lifecycle/findings-parser.js.map +1 -1
- package/dist/lifecycle/git-toplevel.d.ts +12 -0
- package/dist/lifecycle/git-toplevel.d.ts.map +1 -0
- package/dist/lifecycle/git-toplevel.js +49 -0
- package/dist/lifecycle/git-toplevel.js.map +1 -0
- package/dist/lifecycle/handlers/annotator.d.ts +2 -1
- package/dist/lifecycle/handlers/annotator.d.ts.map +1 -1
- package/dist/lifecycle/handlers/annotator.js +225 -7
- package/dist/lifecycle/handlers/annotator.js.map +1 -1
- package/dist/lifecycle/handlers/baseline-handlers.d.ts +10 -5
- package/dist/lifecycle/handlers/baseline-handlers.d.ts.map +1 -1
- package/dist/lifecycle/handlers/baseline-handlers.js +206 -316
- package/dist/lifecycle/handlers/baseline-handlers.js.map +1 -1
- package/dist/lifecycle/handlers/enrich-runtime-result.d.ts +3 -0
- package/dist/lifecycle/handlers/enrich-runtime-result.d.ts.map +1 -0
- package/dist/lifecycle/handlers/enrich-runtime-result.js +191 -0
- package/dist/lifecycle/handlers/enrich-runtime-result.js.map +1 -0
- package/dist/lifecycle/handlers/git-commit-handler.d.ts +3 -2
- package/dist/lifecycle/handlers/git-commit-handler.d.ts.map +1 -1
- package/dist/lifecycle/handlers/git-commit-handler.js +139 -110
- package/dist/lifecycle/handlers/git-commit-handler.js.map +1 -1
- package/dist/lifecycle/handlers/prepare-execution-context-handler.d.ts +7 -13
- package/dist/lifecycle/handlers/prepare-execution-context-handler.d.ts.map +1 -1
- package/dist/lifecycle/handlers/prepare-execution-context-handler.js +72 -49
- package/dist/lifecycle/handlers/prepare-execution-context-handler.js.map +1 -1
- package/dist/lifecycle/handlers/register-context-block-handlers.d.ts +2 -1
- package/dist/lifecycle/handlers/register-context-block-handlers.d.ts.map +1 -1
- package/dist/lifecycle/handlers/register-context-block-handlers.js +35 -14
- package/dist/lifecycle/handlers/register-context-block-handlers.js.map +1 -1
- package/dist/lifecycle/handlers/review-handler.d.ts +2 -1
- package/dist/lifecycle/handlers/review-handler.d.ts.map +1 -1
- package/dist/lifecycle/handlers/review-handler.js +152 -154
- package/dist/lifecycle/handlers/review-handler.js.map +1 -1
- package/dist/lifecycle/handlers/rework-handler.d.ts +2 -1
- package/dist/lifecycle/handlers/rework-handler.d.ts.map +1 -1
- package/dist/lifecycle/handlers/rework-handler.js +62 -14
- package/dist/lifecycle/handlers/rework-handler.js.map +1 -1
- package/dist/lifecycle/handlers/task-executor.d.ts +5 -4
- package/dist/lifecycle/handlers/task-executor.d.ts.map +1 -1
- package/dist/lifecycle/handlers/task-executor.js +153 -74
- package/dist/lifecycle/handlers/task-executor.js.map +1 -1
- package/dist/lifecycle/handlers/terminal-handlers.d.ts +22 -0
- package/dist/lifecycle/handlers/terminal-handlers.d.ts.map +1 -1
- package/dist/lifecycle/handlers/terminal-handlers.js +86 -5
- package/dist/lifecycle/handlers/terminal-handlers.js.map +1 -1
- package/dist/lifecycle/lifecycle-context.d.ts +31 -3
- package/dist/lifecycle/lifecycle-context.d.ts.map +1 -1
- package/dist/lifecycle/lifecycle-dispatcher.d.ts +18 -19
- package/dist/lifecycle/lifecycle-dispatcher.d.ts.map +1 -1
- package/dist/lifecycle/lifecycle-dispatcher.js +38 -22
- package/dist/lifecycle/lifecycle-dispatcher.js.map +1 -1
- package/dist/lifecycle/lifecycle-driver.d.ts +15 -8
- package/dist/lifecycle/lifecycle-driver.d.ts.map +1 -1
- package/dist/lifecycle/lifecycle-driver.js +110 -29
- package/dist/lifecycle/lifecycle-driver.js.map +1 -1
- package/dist/lifecycle/merge-stage-stats.d.ts +3 -3
- package/dist/lifecycle/merge-stage-stats.d.ts.map +1 -1
- package/dist/lifecycle/merge-stage-stats.js +2 -2
- package/dist/lifecycle/merge-stage-stats.js.map +1 -1
- package/dist/lifecycle/perform-implementation.d.ts +3 -0
- package/dist/lifecycle/perform-implementation.d.ts.map +1 -0
- package/dist/lifecycle/perform-implementation.js +264 -0
- package/dist/lifecycle/perform-implementation.js.map +1 -0
- package/dist/lifecycle/repo-hygiene.d.ts +14 -0
- package/dist/lifecycle/repo-hygiene.d.ts.map +1 -0
- package/dist/lifecycle/repo-hygiene.js +71 -0
- package/dist/lifecycle/repo-hygiene.js.map +1 -0
- package/dist/lifecycle/shared-compute.d.ts +4 -4
- package/dist/lifecycle/shared-compute.d.ts.map +1 -1
- package/dist/lifecycle/shared-compute.js +1 -1
- package/dist/lifecycle/shared-compute.js.map +1 -1
- package/dist/lifecycle/stage-io.d.ts +139 -0
- package/dist/lifecycle/stage-io.d.ts.map +1 -0
- package/dist/lifecycle/stage-io.js +20 -0
- package/dist/lifecycle/stage-io.js.map +1 -0
- package/dist/lifecycle/stage-plan-builder.d.ts +3 -3
- package/dist/lifecycle/stage-plan-builder.d.ts.map +1 -1
- package/dist/lifecycle/stage-plan-builder.js +157 -128
- package/dist/lifecycle/stage-plan-builder.js.map +1 -1
- package/dist/lifecycle/stage-plan-types.d.ts +5 -21
- package/dist/lifecycle/stage-plan-types.d.ts.map +1 -1
- package/dist/lifecycle/stage-progression.d.ts +3 -15
- package/dist/lifecycle/stage-progression.d.ts.map +1 -1
- package/dist/lifecycle/stage-progression.js +48 -91
- package/dist/lifecycle/stage-progression.js.map +1 -1
- package/dist/lifecycle/task-completion-summary.d.ts +2 -2
- package/dist/lifecycle/task-completion-summary.d.ts.map +1 -1
- package/dist/lifecycle/task-completion-summary.js +0 -6
- package/dist/lifecycle/task-completion-summary.js.map +1 -1
- package/dist/lifecycle/task-executor.d.ts +23 -0
- package/dist/lifecycle/task-executor.d.ts.map +1 -1
- package/dist/lifecycle/task-executor.js +77 -5
- package/dist/lifecycle/task-executor.js.map +1 -1
- package/dist/lifecycle/task-grouping.d.ts +19 -0
- package/dist/lifecycle/task-grouping.d.ts.map +1 -0
- package/dist/lifecycle/task-grouping.js +48 -0
- package/dist/lifecycle/task-grouping.js.map +1 -0
- package/dist/lifecycle/task-runner.d.ts +20 -7
- package/dist/lifecycle/task-runner.d.ts.map +1 -1
- package/dist/lifecycle/task-runner.js +42 -278
- package/dist/lifecycle/task-runner.js.map +1 -1
- package/dist/lifecycle/tool-config-types.d.ts +9 -0
- package/dist/lifecycle/tool-config-types.d.ts.map +1 -1
- package/dist/lifecycle/worker-output-contract.d.ts +9 -15
- package/dist/lifecycle/worker-output-contract.d.ts.map +1 -1
- package/dist/lifecycle/worker-output-contract.js +45 -30
- package/dist/lifecycle/worker-output-contract.js.map +1 -1
- package/dist/providers/assemble-run-result.d.ts +3 -3
- package/dist/providers/assemble-run-result.d.ts.map +1 -1
- package/dist/providers/assemble-run-result.js +20 -9
- package/dist/providers/assemble-run-result.js.map +1 -1
- package/dist/providers/claude-session.d.ts.map +1 -1
- package/dist/providers/claude-session.js +1 -0
- package/dist/providers/claude-session.js.map +1 -1
- package/dist/providers/claude.js.map +1 -1
- package/dist/providers/codex-cli-launch.js +1 -1
- package/dist/providers/codex-cli-launch.js.map +1 -1
- package/dist/providers/codex-cli-session.d.ts +4 -1
- package/dist/providers/codex-cli-session.d.ts.map +1 -1
- package/dist/providers/codex-cli-session.js +73 -46
- package/dist/providers/codex-cli-session.js.map +1 -1
- package/dist/providers/codex.js.map +1 -1
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +1 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/normalize-claude.d.ts +2 -0
- package/dist/providers/normalize-claude.d.ts.map +1 -1
- package/dist/providers/normalize-claude.js +1 -0
- package/dist/providers/normalize-claude.js.map +1 -1
- package/dist/providers/run-annotator-turn.d.ts +24 -0
- package/dist/providers/run-annotator-turn.d.ts.map +1 -0
- package/dist/providers/run-annotator-turn.js +43 -0
- package/dist/providers/run-annotator-turn.js.map +1 -0
- package/dist/providers/run-worker-turn.d.ts +26 -0
- package/dist/providers/run-worker-turn.d.ts.map +1 -0
- package/dist/providers/run-worker-turn.js +58 -0
- package/dist/providers/run-worker-turn.js.map +1 -0
- package/dist/providers/runner-types.d.ts +1 -1
- package/dist/providers/runner-types.d.ts.map +1 -1
- package/dist/reporting/headline-composer.d.ts +3 -3
- package/dist/reporting/headline-composer.d.ts.map +1 -1
- package/dist/review/index.d.ts +4 -3
- package/dist/review/index.d.ts.map +1 -1
- package/dist/review/index.js +7 -4
- package/dist/review/index.js.map +1 -1
- package/dist/review/parse-review-report.d.ts +7 -1
- package/dist/review/parse-review-report.d.ts.map +1 -1
- package/dist/review/parse-review-report.js +13 -21
- package/dist/review/parse-review-report.js.map +1 -1
- package/dist/review/review-verdict-mapping.d.ts +3 -3
- package/dist/review/review-verdict-mapping.d.ts.map +1 -1
- package/dist/review/review-verdict-mapping.js +1 -1
- package/dist/review/review-verdict-mapping.js.map +1 -1
- package/dist/review/run-reviewer.d.ts +40 -0
- package/dist/review/run-reviewer.d.ts.map +1 -0
- package/dist/review/run-reviewer.js +54 -0
- package/dist/review/run-reviewer.js.map +1 -0
- package/dist/review/templates/quality-review.d.ts +5 -0
- package/dist/review/templates/quality-review.d.ts.map +1 -1
- package/dist/review/templates/quality-review.js +35 -25
- package/dist/review/templates/quality-review.js.map +1 -1
- package/dist/review/templates/spec-review.d.ts +6 -0
- package/dist/review/templates/spec-review.d.ts.map +1 -1
- package/dist/review/templates/spec-review.js +36 -8
- package/dist/review/templates/spec-review.js.map +1 -1
- package/dist/stores/batch-cache.d.ts +3 -3
- package/dist/stores/batch-cache.d.ts.map +1 -1
- package/dist/stores/batch-cache.js.map +1 -1
- package/dist/stores/batch-registry.d.ts +31 -0
- package/dist/stores/batch-registry.d.ts.map +1 -1
- package/dist/stores/batch-registry.js +12 -0
- package/dist/stores/batch-registry.js.map +1 -1
- package/dist/tools/debug/tool-config.js +1 -1
- package/dist/tools/debug/tool-config.js.map +1 -1
- package/dist/tools/delegate/tool-config.d.ts.map +1 -1
- package/dist/tools/delegate/tool-config.js +3 -1
- package/dist/tools/delegate/tool-config.js.map +1 -1
- package/dist/tools/execute-plan/tool-config.d.ts.map +1 -1
- package/dist/tools/execute-plan/tool-config.js +3 -1
- package/dist/tools/execute-plan/tool-config.js.map +1 -1
- package/dist/tools/investigate/tool-config.js +1 -1
- package/dist/tools/investigate/tool-config.js.map +1 -1
- package/dist/tools/retry/tool-config.js.map +1 -1
- package/dist/types/run-result.d.ts +164 -213
- package/dist/types/run-result.d.ts.map +1 -1
- package/dist/types/run-result.js +17 -0
- package/dist/types/run-result.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/lifecycle/handlers/derive-terminal-status.d.ts +0 -10
- package/dist/lifecycle/handlers/derive-terminal-status.d.ts.map +0 -1
- package/dist/lifecycle/handlers/derive-terminal-status.js +0 -35
- package/dist/lifecycle/handlers/derive-terminal-status.js.map +0 -1
- package/dist/lifecycle/handlers/files-written-cross-check.d.ts +0 -27
- package/dist/lifecycle/handlers/files-written-cross-check.d.ts.map +0 -1
- package/dist/lifecycle/handlers/files-written-cross-check.js +0 -91
- package/dist/lifecycle/handlers/files-written-cross-check.js.map +0 -1
- package/dist/lifecycle/handlers/verify-stage.d.ts +0 -37
- package/dist/lifecycle/handlers/verify-stage.d.ts.map +0 -1
- package/dist/lifecycle/handlers/verify-stage.js +0 -208
- package/dist/lifecycle/handlers/verify-stage.js.map +0 -1
- package/dist/review/default-engines.d.ts +0 -3
- package/dist/review/default-engines.d.ts.map +0 -1
- package/dist/review/default-engines.js +0 -22
- package/dist/review/default-engines.js.map +0 -1
- package/dist/review/reviewer-engine.d.ts +0 -53
- package/dist/review/reviewer-engine.d.ts.map +0 -1
- package/dist/review/reviewer-engine.js +0 -47
- package/dist/review/reviewer-engine.js.map +0 -1
- package/dist/review/reviewer-output-parser.d.ts +0 -12
- package/dist/review/reviewer-output-parser.d.ts.map +0 -1
- package/dist/review/reviewer-output-parser.js +0 -213
- package/dist/review/reviewer-output-parser.js.map +0 -1
- package/dist/review/reviewer-prompt-builder.d.ts +0 -21
- package/dist/review/reviewer-prompt-builder.d.ts.map +0 -1
- package/dist/review/reviewer-prompt-builder.js +0 -22
- package/dist/review/reviewer-prompt-builder.js.map +0 -1
- package/dist/review/templates/annotate-completion.d.ts +0 -12
- package/dist/review/templates/annotate-completion.d.ts.map +0 -1
- package/dist/review/templates/annotate-completion.js +0 -72
- package/dist/review/templates/annotate-completion.js.map +0 -1
|
@@ -1,29 +1,21 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { STAGE_PLAN } from './stage-plan-builder.js';
|
|
2
2
|
import { HUMAN_LABEL } from './stage-labels.js';
|
|
3
|
-
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
12
|
+
commit: HUMAN_LABEL.committing,
|
|
13
|
+
annotate: HUMAN_LABEL.annotating,
|
|
14
|
+
compose: null,
|
|
15
|
+
terminal: 'Finalizing',
|
|
22
16
|
};
|
|
23
|
-
/** Tool route → (ToolCategory, default reviewPolicy).
|
|
24
|
-
* task-runner.ts:toolCategoryForRoute
|
|
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
|
-
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
|
|
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
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
|
80
|
-
*
|
|
81
|
-
*
|
|
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 [
|
|
88
|
-
const
|
|
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
|
|
93
|
-
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
if (
|
|
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
|
-
|
|
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
|
-
|
|
72
|
+
runnable = def.shouldRun(state).run;
|
|
105
73
|
}
|
|
106
74
|
catch {
|
|
107
|
-
|
|
75
|
+
runnable = false;
|
|
108
76
|
}
|
|
109
|
-
if (!
|
|
77
|
+
if (!runnable)
|
|
110
78
|
continue;
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
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.
|
|
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":"
|
|
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 {
|
|
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:
|
|
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,
|
|
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":"AACA,OAAO,EACL,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAiB5B,4EAA4E;AAC5E,8EAA8E;AAC9E,8EAA8E;AAC9E,sEAAsE;AACtE,EAAE;AACF,iEAAiE;AACjE,yEAAyE;AACzE,6DAA6D;AAC7D,SAAS,oBAAoB,CAAC,
|
|
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;
|
|
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
|
|
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
|
-
|
|
142
|
-
|
|
143
|
-
|
|
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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAKzC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAsB,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAAE,
|
|
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,
|
|
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):
|
|
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:
|
|
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
|
-
|
|
62
|
+
batchGroupCount?: number;
|
|
49
63
|
}
|
|
50
|
-
export declare function runTasks(tasks: TaskSpec[], config: MultiModelConfig, options?: RunTasksOptions): Promise<
|
|
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<
|
|
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":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,
|
|
1
|
+
{"version":3,"file":"task-runner.d.ts","sourceRoot":"","sources":["../../src/lifecycle/task-runner.ts"],"names":[],"mappings":"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"}
|