@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
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// One canonical place for stage I/O contracts. Imported by stage-plan-builder,
|
|
2
|
+
// lifecycle-driver, every handler, and compose.
|
|
3
|
+
// All routes that flow through the per-task lifecycle (implement → review →
|
|
4
|
+
// rework → commit → annotate → compose → terminal). `retry` and `research`
|
|
5
|
+
// share the same flow as their underlying route — retry re-runs a prior
|
|
6
|
+
// batch's tasks; research is an alias for explore's worker shape.
|
|
7
|
+
export const ALL_TASK_ROUTES = ['delegate', 'execute-plan', 'retry', 'audit', 'review', 'debug', 'investigate', 'explore', 'research'];
|
|
8
|
+
export const WRITE_ROUTES = ['delegate', 'execute-plan', 'retry'];
|
|
9
|
+
// ───── Helpers ─────
|
|
10
|
+
/** Canonical "current work artifact" lookup used by commit/annotate/compose. */
|
|
11
|
+
export function currentWork(state) {
|
|
12
|
+
const rework = state.gates['rework'];
|
|
13
|
+
if (rework?.outcome === 'advance')
|
|
14
|
+
return rework.payload;
|
|
15
|
+
const implement = state.gates['implement'];
|
|
16
|
+
if (implement?.outcome === 'advance')
|
|
17
|
+
return implement.payload;
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=stage-io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stage-io.js","sourceRoot":"","sources":["../../src/lifecycle/stage-io.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,gDAAgD;AAOhD,4EAA4E;AAC5E,2EAA2E;AAC3E,wEAAwE;AACxE,kEAAkE;AAClE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,CAAU,CAAC;AAEhJ,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,CAAU,CAAC;AA2I3E,sBAAsB;AAEtB,gFAAgF;AAChF,MAAM,UAAU,WAAW,CAAC,KAAoD;IAG9E,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,MAAM,EAAE,OAAO,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,OAAwB,CAAC;IAC1E,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3C,IAAI,SAAS,EAAE,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC,OAA2B,CAAC;IACnF,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
export declare
|
|
1
|
+
import type { StageDefinition } from './stage-io.js';
|
|
2
|
+
/** v5 canonical stage plan — single source of truth for stage order + gates. */
|
|
3
|
+
export declare const STAGE_PLAN: StageDefinition<unknown>[];
|
|
4
4
|
//# sourceMappingURL=stage-plan-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stage-plan-builder.d.ts","sourceRoot":"","sources":["../../src/lifecycle/stage-plan-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stage-plan-builder.d.ts","sourceRoot":"","sources":["../../src/lifecycle/stage-plan-builder.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAEO,MAAM,eAAe,CAAC;AAmB1D,gFAAgF;AAChF,eAAO,MAAM,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC,EAyIhD,CAAC"}
|
|
@@ -1,130 +1,159 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
{ rowId: '2.2', stageName: 'verify_referenced_blocks', runCondition: (s) => Array.isArray(s.contextBlockIds) && s.contextBlockIds.length > 0,
|
|
19
|
-
isRework: false, handlerKey: 'verify_referenced_blocks' },
|
|
20
|
-
{ rowId: '2.3', stageName: 'apply_defaults', runCondition: () => true, isRework: false, handlerKey: 'apply_defaults' },
|
|
21
|
-
{ rowId: '2.4', stageName: 'mark_intake_complete', runCondition: () => true, isRework: false, handlerKey: 'mark_intake_complete' },
|
|
22
|
-
// 2.5: prepare_execution_context — runs after intake so cwd/userMessage/systemPrompt are available
|
|
23
|
-
{ rowId: '2.5', stageName: 'prepare_execution_context', runCondition: () => true, isRework: false, handlerKey: 'prepare_execution_context' },
|
|
24
|
-
// Stage 3 — Initial Run (row 3.1; route 'register-context-block' skips this)
|
|
25
|
-
{ rowId: '3.1', stageName: 'run_initial_impl', schemaStage: 'implementing',
|
|
26
|
-
runCondition: (s) => !s.terminal && s.route !== 'register-context-block',
|
|
27
|
-
isRework: false, handlerKey: 'run_initial_impl' },
|
|
28
|
-
// 3.5: check_files_written — early-exit when artifact-producing impl wrote zero files.
|
|
29
|
-
// When fired, the handler sets state.terminal=true so review chains, verify, and
|
|
30
|
-
// commit short-circuit.
|
|
31
|
-
{
|
|
32
|
-
rowId: '3.5', stageName: 'check_files_written',
|
|
33
|
-
runCondition: (s) => isAP
|
|
34
|
-
&& s.reviewPolicy !== 'quality_only'
|
|
35
|
-
&& !!s.lastRunResult
|
|
36
|
-
&& Array.isArray(s.lastRunResult.filesWritten)
|
|
37
|
-
&& (s.lastRunResult.filesWritten?.length ?? 0) === 0
|
|
38
|
-
&& !s.terminal,
|
|
39
|
-
isRework: false, handlerKey: 'check_files_written',
|
|
40
|
-
},
|
|
41
|
-
// ── Stage 4 — v4.4.x five-stage pipeline ───────────────────────────────
|
|
42
|
-
// Implementing → Review → Rework → Committing → Annotating
|
|
43
|
-
//
|
|
44
|
-
// 4.1: review (single complex session: spec then quality sequentially).
|
|
45
|
-
// Emits state.reviewVerdict + state.reviewConcerns.
|
|
46
|
-
// 4.2: rework (standard tier, full tools, single pass). Skipped when
|
|
47
|
-
// reviewVerdict === 'approved'.
|
|
48
|
-
// 4.3: committing (write routes only; per-task git commit with full
|
|
49
|
-
// gate logic: no_repo / no_diff / validation_failed /
|
|
50
|
-
// validation_stale / worker_committed_out_of_band / hook_failed).
|
|
51
|
-
// 4.4: annotating (pure transform; builds the unified StructuredReport
|
|
52
|
-
// from lastRunResult + review state + commit outcome).
|
|
53
|
-
{ rowId: '4.1', stageName: 'review', schemaStage: 'review',
|
|
54
|
-
runCondition: (s) => isAP && s.reviewPolicy !== 'none' && !s.terminal,
|
|
55
|
-
isRework: false, handlerKey: 'review' },
|
|
56
|
-
{ rowId: '4.2', stageName: 'rework', schemaStage: 'rework',
|
|
57
|
-
runCondition: (s) => isAP
|
|
58
|
-
&& s.reviewPolicy !== 'none'
|
|
59
|
-
&& s.reviewVerdict === 'changes_required'
|
|
60
|
-
&& !s.terminal,
|
|
61
|
-
isRework: true, handlerKey: 'rework' },
|
|
62
|
-
// 4.3: committing — fires before annotating so the commit outcome
|
|
63
|
-
// (sha / message / skipReason) is available to the annotator's report.
|
|
64
|
-
// Gate is permissive at the stage-plan level; the handler enforces
|
|
65
|
-
// no_repo / no_diff / validation_failed / etc. internally.
|
|
66
|
-
{ rowId: '4.3', stageName: 'git_commit', schemaStage: 'committing',
|
|
67
|
-
runCondition: (s) => {
|
|
68
|
-
if (s.autoCommit !== true)
|
|
69
|
-
return false;
|
|
70
|
-
if (s.readOnlyTask)
|
|
71
|
-
return false;
|
|
72
|
-
if (s.terminal)
|
|
73
|
-
return false;
|
|
74
|
-
// After review: only commit when reviewer approved, or when there
|
|
75
|
-
// was no review at all (reviewPolicy === 'none').
|
|
76
|
-
if (s.reviewPolicy !== 'none' && s.reviewVerdict !== 'approved')
|
|
77
|
-
return false;
|
|
78
|
-
return true;
|
|
79
|
-
},
|
|
80
|
-
isRework: false, handlerKey: 'git_commit' },
|
|
81
|
-
// 4.4: annotating — unified pure transform for read + write routes.
|
|
82
|
-
{ rowId: '4.4', stageName: 'annotating', schemaStage: 'annotating',
|
|
83
|
-
runCondition: (s) => !s.terminal,
|
|
84
|
-
isRework: false, handlerKey: 'annotating' },
|
|
85
|
-
// 5.3.rcb: register_to_block_store — fires for register-context-block
|
|
86
|
-
// route only, before compose_response. Sets state.blockRegistration
|
|
87
|
-
// which compose_response reads to emit {id, size, ttlMs}.
|
|
88
|
-
{ rowId: '5.3.rcb', stageName: 'register_to_block_store',
|
|
89
|
-
runCondition: (s) => s.route === 'register-context-block' && !s.terminal,
|
|
90
|
-
isRework: false, handlerKey: 'register_to_block_store' },
|
|
91
|
-
// 5.3: compose_response — always fires (even after terminal=true) so the
|
|
92
|
-
// response envelope reflects the failure shape correctly.
|
|
93
|
-
{ rowId: '5.3', stageName: 'compose_response',
|
|
94
|
-
runCondition: () => true, isRework: false, handlerKey: 'compose_response',
|
|
95
|
-
runOnTerminal: true },
|
|
96
|
-
// 5.3.5: register_terminal_block — every task except register_context_block.
|
|
97
|
-
// Must fire on terminal=true so failed tasks still get a terminal context block.
|
|
98
|
-
{ rowId: '5.3.5', stageName: 'register_terminal_block',
|
|
99
|
-
runCondition: (s) => s.route !== 'register-context-block',
|
|
100
|
-
isRework: false, handlerKey: 'register_terminal_block', runOnTerminal: true },
|
|
101
|
-
// 5.4: emit_task_terminal — fires the per-task terminal event after register_terminal_block
|
|
102
|
-
{ rowId: '5.4', stageName: 'emit_task_terminal',
|
|
103
|
-
runCondition: () => true, isRework: false, handlerKey: 'emit_task_terminal',
|
|
104
|
-
runOnTerminal: true },
|
|
105
|
-
// 5.5: persist_to_batch_registry — always
|
|
106
|
-
{ rowId: '5.5', stageName: 'persist_to_batch_registry',
|
|
107
|
-
runCondition: () => true, isRework: false, handlerKey: 'persist_to_batch_registry',
|
|
108
|
-
runOnTerminal: true },
|
|
109
|
-
// 5.6: record_task_completed — server-only; calls ctx.recorder.recordTaskCompleted
|
|
110
|
-
// to enqueue the cloud task.completed wire event. No-ops on CLI/test paths
|
|
111
|
-
// (no recorder). Must run on terminal so failures still record.
|
|
112
|
-
{ rowId: '5.6', stageName: 'record_task_completed',
|
|
113
|
-
runCondition: () => true, isRework: false, handlerKey: 'record_task_completed',
|
|
114
|
-
runOnTerminal: true },
|
|
115
|
-
// Stage 6 — emit + cleanup (rows 6.1–6.3)
|
|
116
|
-
// 6.1: flush_telemetry — always; fires on terminal so failure events drain
|
|
117
|
-
{ rowId: '6.1', stageName: 'flush_telemetry',
|
|
118
|
-
runCondition: () => true, isRework: false, handlerKey: 'flush_telemetry',
|
|
119
|
-
runOnTerminal: true },
|
|
120
|
-
// 6.2: project_idle_cleanup_tick — TIMER-DRIVEN (per spec C14); the row exists for plan completeness
|
|
121
|
-
// but never fires from per-request iteration. Returns false so LifecycleDriver skips it.
|
|
122
|
-
{ rowId: '6.2', stageName: 'project_idle_cleanup_tick',
|
|
123
|
-
runCondition: () => false, isRework: false, handlerKey: 'project_idle_cleanup_tick' },
|
|
124
|
-
// 6.3: batch_retention_sweep_tick — TIMER-DRIVEN; same
|
|
125
|
-
{ rowId: '6.3', stageName: 'batch_retention_sweep_tick',
|
|
126
|
-
runCondition: () => false, isRework: false, handlerKey: 'batch_retention_sweep_tick' },
|
|
127
|
-
];
|
|
128
|
-
return { toolCategory: category, rows };
|
|
1
|
+
// ─── v5 STAGE_PLAN ────────────────────────────────────────────────────────────
|
|
2
|
+
//
|
|
3
|
+
// Canonical 9-stage definition array per spec §3-4. Each stage declares static
|
|
4
|
+
// route applicability (Layer 1: applicableRoutes) and dynamic state-level
|
|
5
|
+
// participation (Layer 2: shouldRun). The new driver walks this in order.
|
|
6
|
+
import { ALL_TASK_ROUTES, WRITE_ROUTES, currentWork } from './stage-io.js';
|
|
7
|
+
// We import handler functions where they exist as exports; this is fine for
|
|
8
|
+
// modules with no circular deps. Where the v5 handler is gated to opt-in,
|
|
9
|
+
// the wrapper falls back to a no-op.
|
|
10
|
+
import { prepareExecutionContextHandler } from './handlers/prepare-execution-context-handler.js';
|
|
11
|
+
import { registerToBlockStoreHandler } from './handlers/register-context-block-handlers.js';
|
|
12
|
+
const ALL_TASK_ROUTES_ARR = ALL_TASK_ROUTES;
|
|
13
|
+
const WRITE_ROUTES_ARR = WRITE_ROUTES;
|
|
14
|
+
function alwaysRun() { return { run: true }; }
|
|
15
|
+
// Lazy import to avoid bootstrap-time circular deps.
|
|
16
|
+
async function loadHandler(loader) {
|
|
17
|
+
return await loader();
|
|
129
18
|
}
|
|
19
|
+
/** v5 canonical stage plan — single source of truth for stage order + gates. */
|
|
20
|
+
export const STAGE_PLAN = [
|
|
21
|
+
{
|
|
22
|
+
name: 'prepare',
|
|
23
|
+
runOnHalt: false,
|
|
24
|
+
applicableRoutes: 'all',
|
|
25
|
+
shouldRun: alwaysRun,
|
|
26
|
+
handler: async (state) => {
|
|
27
|
+
const t0 = Date.now();
|
|
28
|
+
try {
|
|
29
|
+
await prepareExecutionContextHandler(state);
|
|
30
|
+
return {
|
|
31
|
+
outcome: 'advance',
|
|
32
|
+
payload: null,
|
|
33
|
+
telemetry: { stageLabel: 'prepare', durationMs: Date.now() - t0, costUSD: 0, turnsUsed: 0, stopReason: 'normal' },
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
38
|
+
const code = /brief schema|invalid brief/i.test(msg) ? 'brief_invalid'
|
|
39
|
+
: /workspace|traversal|sandbox/i.test(msg) ? 'workspace_violation'
|
|
40
|
+
: /context_block|missing/i.test(msg) ? 'context_block_missing'
|
|
41
|
+
: 'prepare_failed';
|
|
42
|
+
return {
|
|
43
|
+
outcome: 'halt',
|
|
44
|
+
comment: `${code}: ${msg}`,
|
|
45
|
+
payload: null,
|
|
46
|
+
telemetry: { stageLabel: 'prepare', durationMs: Date.now() - t0, costUSD: 0, turnsUsed: 0, stopReason: 'transport_error' },
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: 'register-block',
|
|
53
|
+
runOnHalt: false,
|
|
54
|
+
applicableRoutes: ['register-context-block'],
|
|
55
|
+
shouldRun: alwaysRun,
|
|
56
|
+
handler: async (state) => {
|
|
57
|
+
return await registerToBlockStoreHandler(state);
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: 'implement',
|
|
62
|
+
runOnHalt: false,
|
|
63
|
+
applicableRoutes: ALL_TASK_ROUTES_ARR,
|
|
64
|
+
shouldRun: alwaysRun,
|
|
65
|
+
handler: async (state) => {
|
|
66
|
+
const mod = await loadHandler(() => import('./handlers/task-executor.js'));
|
|
67
|
+
return mod.implementHandler(state);
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: 'review',
|
|
72
|
+
runOnHalt: false,
|
|
73
|
+
applicableRoutes: WRITE_ROUTES_ARR,
|
|
74
|
+
shouldRun: (state) => {
|
|
75
|
+
const impl = state.gates?.['implement'];
|
|
76
|
+
if (impl?.outcome !== 'advance') {
|
|
77
|
+
return { run: false, comment: 'review skipped because implement did not advance' };
|
|
78
|
+
}
|
|
79
|
+
if (state.reviewPolicy === 'none') {
|
|
80
|
+
return { run: false, comment: 'review skipped because reviewPolicy=none' };
|
|
81
|
+
}
|
|
82
|
+
return { run: true };
|
|
83
|
+
},
|
|
84
|
+
handler: async (state) => {
|
|
85
|
+
const mod = await loadHandler(() => import('./handlers/review-handler.js'));
|
|
86
|
+
return mod.reviewHandler(state);
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: 'rework',
|
|
91
|
+
runOnHalt: false,
|
|
92
|
+
applicableRoutes: WRITE_ROUTES_ARR,
|
|
93
|
+
shouldRun: (state) => {
|
|
94
|
+
const review = state.gates?.['review'];
|
|
95
|
+
if (review?.outcome !== 'advance') {
|
|
96
|
+
return { run: false, comment: 'rework skipped because review did not produce a verdict' };
|
|
97
|
+
}
|
|
98
|
+
const verdict = review.payload?.verdict;
|
|
99
|
+
if (verdict === 'approved') {
|
|
100
|
+
return { run: false, comment: 'rework skipped because review approved' };
|
|
101
|
+
}
|
|
102
|
+
return { run: true };
|
|
103
|
+
},
|
|
104
|
+
handler: async (state) => {
|
|
105
|
+
const mod = await loadHandler(() => import('./handlers/rework-handler.js'));
|
|
106
|
+
return mod.reworkHandler(state);
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
name: 'commit',
|
|
111
|
+
runOnHalt: false,
|
|
112
|
+
applicableRoutes: WRITE_ROUTES_ARR,
|
|
113
|
+
shouldRun: (state) => {
|
|
114
|
+
if (state.autoCommit === false) {
|
|
115
|
+
return { run: false, comment: 'commit skipped because autoCommit disabled' };
|
|
116
|
+
}
|
|
117
|
+
const work = currentWork({ gates: (state.gates ?? {}) });
|
|
118
|
+
if (!work || work.filesChanged?.length === 0) {
|
|
119
|
+
return { run: false, comment: 'commit skipped because no files changed' };
|
|
120
|
+
}
|
|
121
|
+
return { run: true };
|
|
122
|
+
},
|
|
123
|
+
handler: async (state) => {
|
|
124
|
+
const mod = await loadHandler(() => import('./handlers/git-commit-handler.js'));
|
|
125
|
+
return mod.commitHandler(state);
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
name: 'annotate',
|
|
130
|
+
runOnHalt: false,
|
|
131
|
+
applicableRoutes: ALL_TASK_ROUTES_ARR,
|
|
132
|
+
shouldRun: alwaysRun,
|
|
133
|
+
handler: async (state) => {
|
|
134
|
+
const mod = await loadHandler(() => import('./handlers/annotator.js'));
|
|
135
|
+
return mod.annotator(state);
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
name: 'compose',
|
|
140
|
+
runOnHalt: true,
|
|
141
|
+
applicableRoutes: 'all',
|
|
142
|
+
shouldRun: alwaysRun,
|
|
143
|
+
handler: async (state) => {
|
|
144
|
+
const mod = await loadHandler(() => import('./handlers/baseline-handlers.js'));
|
|
145
|
+
return mod.composeHandler(state);
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
name: 'terminal',
|
|
150
|
+
runOnHalt: true,
|
|
151
|
+
applicableRoutes: 'all',
|
|
152
|
+
shouldRun: alwaysRun,
|
|
153
|
+
handler: async (state) => {
|
|
154
|
+
const mod = await loadHandler(() => import('./handlers/terminal-handlers.js'));
|
|
155
|
+
return mod.terminalHandler(state);
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
];
|
|
130
159
|
//# sourceMappingURL=stage-plan-builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stage-plan-builder.js","sourceRoot":"","sources":["../../src/lifecycle/stage-plan-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stage-plan-builder.js","sourceRoot":"","sources":["../../src/lifecycle/stage-plan-builder.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,EAAE;AACF,+EAA+E;AAC/E,0EAA0E;AAC1E,0EAA0E;AAK1E,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE3E,4EAA4E;AAC5E,0EAA0E;AAC1E,qCAAqC;AACrC,OAAO,EAAE,8BAA8B,EAAE,MAAM,iDAAiD,CAAC;AACjG,OAAO,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AAE5F,MAAM,mBAAmB,GAAsB,eAAe,CAAC;AAC/D,MAAM,gBAAgB,GAAsB,YAAY,CAAC;AAEzD,SAAS,SAAS,KAAoB,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAE7D,qDAAqD;AACrD,KAAK,UAAU,WAAW,CAAI,MAAwB;IACpD,OAAO,MAAM,MAAM,EAAE,CAAC;AACxB,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,MAAM,UAAU,GAA+B;IACpD;QACE,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,KAAK;QAChB,gBAAgB,EAAE,KAAK;QACvB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACvB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,8BAA8B,CAAC,KAAK,CAAC,CAAC;gBAC5C,OAAO;oBACL,OAAO,EAAE,SAAS;oBAClB,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE;iBAClH,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,MAAM,IAAI,GAAG,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe;oBAC3D,CAAC,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,qBAAqB;wBAClE,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB;4BAC9D,CAAC,CAAC,gBAAgB,CAAC;gBAC9B,OAAO;oBACL,OAAO,EAAE,MAAM;oBACf,OAAO,EAAE,GAAG,IAAI,KAAK,GAAG,EAAE;oBAC1B,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE;iBAC3H,CAAC;YACJ,CAAC;QACH,CAAC;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,SAAS,EAAE,KAAK;QAChB,gBAAgB,EAAE,CAAC,wBAAwB,CAAC;QAC5C,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACvB,OAAO,MAAM,2BAA2B,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC;KACF;IACD;QACE,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,KAAK;QAChB,gBAAgB,EAAE,mBAAqE;QACvF,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACvB,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC;YAC3E,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;KACF;IACD;QACE,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,KAAK;QAChB,gBAAgB,EAAE,gBAAkE;QACpF,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACnB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC;YACxC,IAAI,IAAI,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,kDAAkD,EAAE,CAAC;YACrF,CAAC;YACD,IAAI,KAAK,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;gBAClC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,0CAA0C,EAAE,CAAC;YAC7E,CAAC;YACD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QACvB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACvB,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAC;YAC5E,OAAO,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;KACF;IACD;QACE,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,KAAK;QAChB,gBAAgB,EAAE,gBAAkE;QACpF,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACnB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,MAAM,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;gBAClC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,yDAAyD,EAAE,CAAC;YAC5F,CAAC;YACD,MAAM,OAAO,GAAI,MAAM,CAAC,OAAgC,EAAE,OAAO,CAAC;YAClE,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC3B,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,wCAAwC,EAAE,CAAC;YAC3E,CAAC;YACD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QACvB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACvB,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAC;YAC5E,OAAO,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;KACF;IACD;QACE,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,KAAK;QAChB,gBAAgB,EAAE,gBAAkE;QACpF,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACnB,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;gBAC/B,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,4CAA4C,EAAE,CAAC;YAC/E,CAAC;YACD,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAA+D,EAAE,CAAC,CAAC;YACvH,IAAI,CAAC,IAAI,IAAK,IAAoC,CAAC,YAAY,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9E,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;YAC5E,CAAC;YACD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QACvB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACvB,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC,CAAC;YAChF,OAAO,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE,KAAK;QAChB,gBAAgB,EAAE,mBAAqE;QACvF,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACvB,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC;YACvE,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;KACF;IACD;QACE,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,IAAI;QACf,gBAAgB,EAAE,KAAK;QACvB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACvB,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC/E,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE,IAAI;QACf,gBAAgB,EAAE,KAAK;QACvB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACvB,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC/E,OAAO,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;KACF;CACF,CAAC"}
|
|
@@ -1,25 +1,5 @@
|
|
|
1
1
|
import type { ToolCategory } from '../escalation/escalation-policy.js';
|
|
2
2
|
import type { ProjectContext } from '../stores/project-context-registry.js';
|
|
3
|
-
export interface StageRow {
|
|
4
|
-
rowId: string;
|
|
5
|
-
stageName: string;
|
|
6
|
-
schemaStage?: string;
|
|
7
|
-
runCondition: (state: LifecycleState) => boolean;
|
|
8
|
-
isRework: boolean;
|
|
9
|
-
handlerKey: string;
|
|
10
|
-
/**
|
|
11
|
-
* When true, this row's handler runs even after a prior row set
|
|
12
|
-
* `state.terminal = true`. Used by settle/compose/terminal/persist/flush
|
|
13
|
-
* rows that must populate authoritative chain-pass + envelope state on
|
|
14
|
-
* hard-fail paths. The driver loop honors this attribute; non-terminal-safe
|
|
15
|
-
* rows (the default) short-circuit when `state.terminal` is set.
|
|
16
|
-
*/
|
|
17
|
-
runOnTerminal?: boolean;
|
|
18
|
-
}
|
|
19
|
-
export interface StagePlan {
|
|
20
|
-
toolCategory: ToolCategory;
|
|
21
|
-
rows: StageRow[];
|
|
22
|
-
}
|
|
23
3
|
/**
|
|
24
4
|
* Per-round review verdict shape. Matches the verdict values that
|
|
25
5
|
* spec-reviewer.ts and quality-reviewer.ts actually produce. `'concerns'` was
|
|
@@ -31,8 +11,13 @@ type SpecRoundVerdict = 'approved' | 'changes_required' | 'error' | 'skipped';
|
|
|
31
11
|
type QualityRoundVerdict = 'approved' | 'changes_required' | 'annotated' | 'error' | 'skipped';
|
|
32
12
|
type DiffEnvelopeVerdict = 'approved' | 'changes_required' | 'error' | 'skipped';
|
|
33
13
|
type DiffReviewKind = 'approve' | 'concerns' | 'reject' | 'transport_failure';
|
|
14
|
+
import type { StageGate } from './stage-io.js';
|
|
34
15
|
export interface LifecycleState {
|
|
35
16
|
terminal: boolean;
|
|
17
|
+
/** v5: per-stage gate record written by the driver. Empty until prepare runs. */
|
|
18
|
+
gates?: Record<string, StageGate<unknown>>;
|
|
19
|
+
/** v5: halted flag set when any stage returns outcome:'halt'. Driver-only. */
|
|
20
|
+
halted?: boolean;
|
|
36
21
|
workerStatus?: string;
|
|
37
22
|
reviewVerdict?: 'approved' | 'concerns' | 'changes_required' | 'error' | 'skipped';
|
|
38
23
|
attemptIndex: number;
|
|
@@ -59,7 +44,6 @@ export interface LifecycleState {
|
|
|
59
44
|
specUnavailable?: import('../escalation/fallback.js').UnavailableMap;
|
|
60
45
|
qualityUnavailable?: import('../escalation/fallback.js').UnavailableMap;
|
|
61
46
|
diffUnavailable?: import('../escalation/fallback.js').UnavailableMap;
|
|
62
|
-
executor?: (rawRequest: unknown, state: LifecycleState) => Promise<unknown>;
|
|
63
47
|
executorResult?: unknown;
|
|
64
48
|
responseEnvelope?: unknown;
|
|
65
49
|
autoCommit?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stage-plan-types.d.ts","sourceRoot":"","sources":["../../src/lifecycle/stage-plan-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"stage-plan-types.d.ts","sourceRoot":"","sources":["../../src/lifecycle/stage-plan-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,8 @@
|
|
|
1
|
-
/** Build the user-facing stage label list for a route by
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* stages, in plan order. Route-specific label overrides + a tail
|
|
5
|
-
* "Finalizing" slot give the agent a stable bracket. */
|
|
1
|
+
/** Build the user-facing stage label list for a route by walking STAGE_PLAN
|
|
2
|
+
* and including each stage whose Layer-1 (applicableRoutes) AND Layer-2
|
|
3
|
+
* (shouldRun under simulated state) both pass. */
|
|
6
4
|
export declare function stageOrderForRoute(route: string): string[];
|
|
7
|
-
/** Public accessor mirroring the legacy `STAGE_ORDER_BY_ROUTE[route]` shape
|
|
8
|
-
* but driven by the StagePlan. Returns an empty array (treated as "1/1")
|
|
9
|
-
* for unknown routes. */
|
|
10
5
|
export declare const STAGE_ORDER_BY_ROUTE: Record<string, readonly string[]>;
|
|
11
|
-
/** Normalize a runtime stageLabel ("Spec rework round 1") to a coarse
|
|
12
|
-
* label that exists in `stageOrderForRoute(route)`. Reworks map to their
|
|
13
|
-
* own coarse slot ("Spec rework" / "Quality rework"), not back to the
|
|
14
|
-
* review slot — the StagePlan-derived order DOES contain a rework slot
|
|
15
|
-
* (because spec_rework / quality_rework are distinct schemaStages), so
|
|
16
|
-
* the bracket advances correctly when a rework fires. */
|
|
17
6
|
export declare function normalizeStageLabel(label: string): string;
|
|
18
|
-
/** "(X/Y)" stage-progress bracket for a route + current stageLabel. */
|
|
19
7
|
export declare function stageProgress(route: string, stageLabel: string | undefined): string;
|
|
20
8
|
//# sourceMappingURL=stage-progression.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stage-progression.d.ts","sourceRoot":"","sources":["../../src/lifecycle/stage-progression.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stage-progression.d.ts","sourceRoot":"","sources":["../../src/lifecycle/stage-progression.ts"],"names":[],"mappings":"AA4EA;;mDAEmD;AACnD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAyB1D;AAID,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAa7B,CAAC;AAEvC,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CASnF"}
|