agent-pipeline 0.1.0 â 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +2 -3
- package/README.md +110 -55
- package/dist/cli/commands/agent/info.js +1 -1
- package/dist/cli/commands/agent/info.js.map +1 -1
- package/dist/cli/commands/agent/list.js +1 -1
- package/dist/cli/commands/agent/list.js.map +1 -1
- package/dist/cli/commands/agent/pull.d.ts +1 -0
- package/dist/cli/commands/agent/pull.d.ts.map +1 -1
- package/dist/cli/commands/agent/pull.js +67 -44
- package/dist/cli/commands/agent/pull.js.map +1 -1
- package/dist/cli/commands/cleanup.d.ts +4 -0
- package/dist/cli/commands/cleanup.d.ts.map +1 -1
- package/dist/cli/commands/cleanup.js +197 -37
- package/dist/cli/commands/cleanup.js.map +1 -1
- package/dist/cli/commands/history.d.ts.map +1 -1
- package/dist/cli/commands/history.js +3 -22
- package/dist/cli/commands/history.js.map +1 -1
- package/dist/cli/commands/hooks.d.ts +10 -0
- package/dist/cli/commands/hooks.d.ts.map +1 -0
- package/dist/cli/commands/hooks.js +88 -0
- package/dist/cli/commands/hooks.js.map +1 -0
- package/dist/cli/commands/init.d.ts +1 -6
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +173 -58
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/loop-context.d.ts +2 -0
- package/dist/cli/commands/loop-context.d.ts.map +1 -0
- package/dist/cli/commands/loop-context.js +88 -0
- package/dist/cli/commands/loop-context.js.map +1 -0
- package/dist/cli/commands/pipeline/create.d.ts.map +1 -1
- package/dist/cli/commands/pipeline/create.js +156 -68
- package/dist/cli/commands/pipeline/create.js.map +1 -1
- package/dist/cli/commands/run.d.ts +1 -1
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +29 -5
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/schema.d.ts +9 -0
- package/dist/cli/commands/schema.d.ts.map +1 -0
- package/dist/cli/commands/schema.js +541 -0
- package/dist/cli/commands/schema.js.map +1 -0
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +0 -6
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/help/index.d.ts +6 -0
- package/dist/cli/help/index.d.ts.map +1 -0
- package/dist/cli/help/index.js +538 -0
- package/dist/cli/help/index.js.map +1 -0
- package/dist/cli/help/types.d.ts +22 -0
- package/dist/cli/help/types.d.ts.map +1 -0
- package/dist/cli/help/types.js +2 -0
- package/dist/cli/help/types.js.map +1 -0
- package/dist/cli/hooks.d.ts +5 -1
- package/dist/cli/hooks.d.ts.map +1 -1
- package/dist/cli/hooks.js +106 -12
- package/dist/cli/hooks.js.map +1 -1
- package/dist/cli/templates/agents/code-review-agents/code-reviewer.md +46 -0
- package/dist/cli/templates/agents/code-review-agents/memory-doc-updater.md +189 -0
- package/dist/cli/templates/agents/code-review-agents/quality-checker.md +52 -0
- package/dist/cli/templates/agents/frontend-agents/brutalist_purist.md +563 -0
- package/dist/cli/templates/agents/frontend-agents/cyberpunk_hacker.md +824 -0
- package/dist/cli/templates/agents/frontend-agents/frontend-pipeline-ref.md +32 -0
- package/dist/cli/templates/agents/frontend-agents/indie_game_dev.md +715 -0
- package/dist/cli/templates/agents/frontend-agents/luxury_editorial.md +628 -0
- package/dist/cli/templates/agents/frontend-agents/product_owner.md +159 -0
- package/dist/cli/templates/agents/frontend-agents/retro_90s_webmaster.md +385 -0
- package/dist/cli/templates/agents/frontend-agents/showcase.md +362 -0
- package/dist/cli/templates/agents/frontend-agents/swiss_modernist.md +716 -0
- package/dist/cli/templates/agents/loop-agents/socratic-explorer.md +91 -0
- package/dist/cli/templates/instructions/handover.md +40 -0
- package/dist/cli/templates/instructions/loop.md +35 -0
- package/dist/cli/templates/pipelines/front-end-parallel-example.yml +81 -0
- package/dist/cli/templates/pipelines/loop-example.yml +25 -0
- package/dist/cli/templates/pipelines/post-commit-example.yml +49 -58
- package/dist/cli/templates/schema/pipeline-config.schema.json +400 -0
- package/dist/cli/templates/schema/pipeline-config.schema.yaml +301 -0
- package/dist/cli/utils/agent-importer.d.ts +1 -0
- package/dist/cli/utils/agent-importer.d.ts.map +1 -1
- package/dist/cli/utils/agent-importer.js +67 -0
- package/dist/cli/utils/agent-importer.js.map +1 -1
- package/dist/cli/utils/interactive-prompts.d.ts +4 -0
- package/dist/cli/utils/interactive-prompts.d.ts.map +1 -1
- package/dist/cli/utils/interactive-prompts.js +59 -13
- package/dist/cli/utils/interactive-prompts.js.map +1 -1
- package/dist/config/pipeline-loader.d.ts +4 -1
- package/dist/config/pipeline-loader.d.ts.map +1 -1
- package/dist/config/pipeline-loader.js +58 -0
- package/dist/config/pipeline-loader.js.map +1 -1
- package/dist/config/schema.d.ts +65 -35
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/core/abort-controller.d.ts +16 -0
- package/dist/core/abort-controller.d.ts.map +1 -0
- package/dist/core/abort-controller.js +52 -0
- package/dist/core/abort-controller.js.map +1 -0
- package/dist/core/agent-query-runner.d.ts +0 -1
- package/dist/core/agent-query-runner.d.ts.map +1 -1
- package/dist/core/agent-query-runner.js +0 -22
- package/dist/core/agent-query-runner.js.map +1 -1
- package/dist/core/agent-runtimes/claude-code-headless-runtime.d.ts +5 -1
- package/dist/core/agent-runtimes/claude-code-headless-runtime.d.ts.map +1 -1
- package/dist/core/agent-runtimes/claude-code-headless-runtime.js +127 -12
- package/dist/core/agent-runtimes/claude-code-headless-runtime.js.map +1 -1
- package/dist/core/agent-runtimes/claude-sdk-runtime.d.ts +0 -2
- package/dist/core/agent-runtimes/claude-sdk-runtime.d.ts.map +1 -1
- package/dist/core/agent-runtimes/claude-sdk-runtime.js +1 -22
- package/dist/core/agent-runtimes/claude-sdk-runtime.js.map +1 -1
- package/dist/core/branch-manager.d.ts +3 -1
- package/dist/core/branch-manager.d.ts.map +1 -1
- package/dist/core/branch-manager.js +11 -1
- package/dist/core/branch-manager.js.map +1 -1
- package/dist/core/git-manager.d.ts +17 -1
- package/dist/core/git-manager.d.ts.map +1 -1
- package/dist/core/git-manager.js +147 -3
- package/dist/core/git-manager.js.map +1 -1
- package/dist/core/group-execution-orchestrator.d.ts +7 -13
- package/dist/core/group-execution-orchestrator.d.ts.map +1 -1
- package/dist/core/group-execution-orchestrator.js +53 -142
- package/dist/core/group-execution-orchestrator.js.map +1 -1
- package/dist/core/handover-manager.d.ts +24 -0
- package/dist/core/handover-manager.d.ts.map +1 -0
- package/dist/core/handover-manager.js +214 -0
- package/dist/core/handover-manager.js.map +1 -0
- package/dist/core/instruction-loader.d.ts +23 -0
- package/dist/core/instruction-loader.d.ts.map +1 -0
- package/dist/core/instruction-loader.js +112 -0
- package/dist/core/instruction-loader.js.map +1 -0
- package/dist/core/loop-state-manager.d.ts +12 -7
- package/dist/core/loop-state-manager.d.ts.map +1 -1
- package/dist/core/loop-state-manager.js +49 -3
- package/dist/core/loop-state-manager.js.map +1 -1
- package/dist/core/parallel-executor.d.ts +12 -3
- package/dist/core/parallel-executor.d.ts.map +1 -1
- package/dist/core/parallel-executor.js +92 -14
- package/dist/core/parallel-executor.js.map +1 -1
- package/dist/core/pipeline-finalizer.d.ts +12 -4
- package/dist/core/pipeline-finalizer.d.ts.map +1 -1
- package/dist/core/pipeline-finalizer.js +244 -33
- package/dist/core/pipeline-finalizer.js.map +1 -1
- package/dist/core/pipeline-initializer.d.ts +13 -5
- package/dist/core/pipeline-initializer.d.ts.map +1 -1
- package/dist/core/pipeline-initializer.js +53 -25
- package/dist/core/pipeline-initializer.js.map +1 -1
- package/dist/core/pipeline-runner.d.ts +13 -1
- package/dist/core/pipeline-runner.d.ts.map +1 -1
- package/dist/core/pipeline-runner.js +352 -60
- package/dist/core/pipeline-runner.js.map +1 -1
- package/dist/core/pr-creator.d.ts +0 -1
- package/dist/core/pr-creator.d.ts.map +1 -1
- package/dist/core/pr-creator.js +12 -4
- package/dist/core/pr-creator.js.map +1 -1
- package/dist/core/stage-executor.d.ts +17 -9
- package/dist/core/stage-executor.d.ts.map +1 -1
- package/dist/core/stage-executor.js +152 -166
- package/dist/core/stage-executor.js.map +1 -1
- package/dist/core/types/agent-runtime.d.ts +3 -2
- package/dist/core/types/agent-runtime.d.ts.map +1 -1
- package/dist/core/worktree-manager.d.ts +21 -0
- package/dist/core/worktree-manager.d.ts.map +1 -0
- package/dist/core/worktree-manager.js +133 -0
- package/dist/core/worktree-manager.js.map +1 -0
- package/dist/index.js +118 -112
- package/dist/index.js.map +1 -1
- package/dist/notifications/notification-manager.d.ts +1 -0
- package/dist/notifications/notification-manager.d.ts.map +1 -1
- package/dist/notifications/notification-manager.js +17 -3
- package/dist/notifications/notification-manager.js.map +1 -1
- package/dist/notifications/notifiers/local-notifier.d.ts.map +1 -1
- package/dist/notifications/notifiers/local-notifier.js +5 -2
- package/dist/notifications/notifiers/local-notifier.js.map +1 -1
- package/dist/notifications/notifiers/slack-notifier.d.ts.map +1 -1
- package/dist/notifications/notifiers/slack-notifier.js +39 -8
- package/dist/notifications/notifiers/slack-notifier.js.map +1 -1
- package/dist/notifications/types.d.ts +1 -1
- package/dist/notifications/types.d.ts.map +1 -1
- package/dist/ui/components/execution-group.d.ts.map +1 -1
- package/dist/ui/components/execution-group.js +1 -1
- package/dist/ui/components/execution-group.js.map +1 -1
- package/dist/ui/components/interactive-summary.d.ts +9 -0
- package/dist/ui/components/interactive-summary.d.ts.map +1 -0
- package/dist/ui/components/interactive-summary.js +166 -0
- package/dist/ui/components/interactive-summary.js.map +1 -0
- package/dist/ui/components/keyboard-hints.d.ts +12 -0
- package/dist/ui/components/keyboard-hints.d.ts.map +1 -0
- package/dist/ui/components/keyboard-hints.js +13 -0
- package/dist/ui/components/keyboard-hints.js.map +1 -0
- package/dist/ui/components/live-timer.d.ts +9 -0
- package/dist/ui/components/live-timer.d.ts.map +1 -0
- package/dist/ui/components/live-timer.js +25 -0
- package/dist/ui/components/live-timer.js.map +1 -0
- package/dist/ui/components/loop-iteration-history.d.ts +8 -0
- package/dist/ui/components/loop-iteration-history.d.ts.map +1 -0
- package/dist/ui/components/loop-iteration-history.js +106 -0
- package/dist/ui/components/loop-iteration-history.js.map +1 -0
- package/dist/ui/components/loop-session-summary.d.ts +9 -0
- package/dist/ui/components/loop-session-summary.d.ts.map +1 -0
- package/dist/ui/components/loop-session-summary.js +39 -0
- package/dist/ui/components/loop-session-summary.js.map +1 -0
- package/dist/ui/components/stage-row.d.ts +0 -1
- package/dist/ui/components/stage-row.d.ts.map +1 -1
- package/dist/ui/components/stage-row.js +5 -15
- package/dist/ui/components/stage-row.js.map +1 -1
- package/dist/ui/components/status-badge.d.ts.map +1 -1
- package/dist/ui/components/status-badge.js +1 -0
- package/dist/ui/components/status-badge.js.map +1 -1
- package/dist/ui/pipeline-ui.d.ts +1 -0
- package/dist/ui/pipeline-ui.d.ts.map +1 -1
- package/dist/ui/pipeline-ui.js +22 -18
- package/dist/ui/pipeline-ui.js.map +1 -1
- package/dist/utils/error-factory.d.ts.map +1 -1
- package/dist/utils/error-factory.js +10 -2
- package/dist/utils/error-factory.js.map +1 -1
- package/dist/utils/pipeline-formatter.d.ts +8 -2
- package/dist/utils/pipeline-formatter.d.ts.map +1 -1
- package/dist/utils/pipeline-formatter.js +30 -26
- package/dist/utils/pipeline-formatter.js.map +1 -1
- package/dist/utils/pipeline-logger.d.ts +19 -0
- package/dist/utils/pipeline-logger.d.ts.map +1 -0
- package/dist/utils/pipeline-logger.js +80 -0
- package/dist/utils/pipeline-logger.js.map +1 -0
- package/dist/utils/platform-opener.d.ts +4 -0
- package/dist/utils/platform-opener.d.ts.map +1 -0
- package/dist/utils/platform-opener.js +52 -0
- package/dist/utils/platform-opener.js.map +1 -0
- package/dist/validators/agent-validator.d.ts +10 -0
- package/dist/validators/agent-validator.d.ts.map +1 -0
- package/dist/validators/agent-validator.js +87 -0
- package/dist/validators/agent-validator.js.map +1 -0
- package/dist/validators/dag-validator.d.ts +9 -0
- package/dist/validators/dag-validator.d.ts.map +1 -0
- package/dist/validators/dag-validator.js +51 -0
- package/dist/validators/dag-validator.js.map +1 -0
- package/dist/validators/environment-validator.d.ts +9 -0
- package/dist/validators/environment-validator.d.ts.map +1 -0
- package/dist/validators/environment-validator.js +35 -0
- package/dist/validators/environment-validator.js.map +1 -0
- package/dist/validators/execution-validator.d.ts +8 -0
- package/dist/validators/execution-validator.d.ts.map +1 -0
- package/dist/validators/execution-validator.js +51 -0
- package/dist/validators/execution-validator.js.map +1 -0
- package/dist/validators/git-validator.d.ts +13 -0
- package/dist/validators/git-validator.d.ts.map +1 -0
- package/dist/validators/git-validator.js +135 -0
- package/dist/validators/git-validator.js.map +1 -0
- package/dist/validators/notification-validator.d.ts +8 -0
- package/dist/validators/notification-validator.d.ts.map +1 -0
- package/dist/validators/notification-validator.js +27 -0
- package/dist/validators/notification-validator.js.map +1 -0
- package/dist/validators/pipeline-validator.d.ts +3 -26
- package/dist/validators/pipeline-validator.d.ts.map +1 -1
- package/dist/validators/pipeline-validator.js +5 -515
- package/dist/validators/pipeline-validator.js.map +1 -1
- package/dist/validators/retry-validator.d.ts +9 -0
- package/dist/validators/retry-validator.d.ts.map +1 -0
- package/dist/validators/retry-validator.js +34 -0
- package/dist/validators/retry-validator.js.map +1 -0
- package/dist/validators/runtime-validator.d.ts +9 -0
- package/dist/validators/runtime-validator.d.ts.map +1 -0
- package/dist/validators/runtime-validator.js +82 -0
- package/dist/validators/runtime-validator.js.map +1 -0
- package/dist/validators/structure-validator.d.ts +8 -0
- package/dist/validators/structure-validator.d.ts.map +1 -0
- package/dist/validators/structure-validator.js +39 -0
- package/dist/validators/structure-validator.js.map +1 -0
- package/dist/validators/types.d.ts +19 -0
- package/dist/validators/types.d.ts.map +1 -0
- package/dist/validators/types.js +2 -0
- package/dist/validators/types.js.map +1 -0
- package/dist/validators/validation-orchestrator.d.ts +9 -0
- package/dist/validators/validation-orchestrator.d.ts.map +1 -0
- package/dist/validators/validation-orchestrator.js +43 -0
- package/dist/validators/validation-orchestrator.js.map +1 -0
- package/package.json +17 -11
- package/dist/cli/commands/install.d.ts +0 -2
- package/dist/cli/commands/install.d.ts.map +0 -1
- package/dist/cli/commands/install.js +0 -15
- package/dist/cli/commands/install.js.map +0 -1
- package/dist/cli/commands/uninstall.d.ts +0 -2
- package/dist/cli/commands/uninstall.d.ts.map +0 -1
- package/dist/cli/commands/uninstall.js +0 -6
- package/dist/cli/commands/uninstall.js.map +0 -1
- package/dist/cli/templates/agents/cleanup-reporter.md +0 -107
- package/dist/cli/templates/agents/code-reducer.md +0 -51
- package/dist/cli/templates/agents/code-reviewer.md +0 -34
- package/dist/cli/templates/agents/context-reducer.md +0 -94
- package/dist/cli/templates/agents/dependency-auditor.md +0 -127
- package/dist/cli/templates/agents/detective-empath.md +0 -26
- package/dist/cli/templates/agents/detective-linguist.md +0 -26
- package/dist/cli/templates/agents/detective-logician.md +0 -26
- package/dist/cli/templates/agents/detective-skeptic.md +0 -26
- package/dist/cli/templates/agents/detective-statistician.md +0 -26
- package/dist/cli/templates/agents/doc-updater.md +0 -30
- package/dist/cli/templates/agents/judge.md +0 -27
- package/dist/cli/templates/agents/memory-updater.md +0 -72
- package/dist/cli/templates/agents/quality-checker.md +0 -32
- package/dist/cli/templates/agents/security-auditor.md +0 -32
- package/dist/cli/templates/agents/storyteller.md +0 -26
- package/dist/cli/templates/agents/summary.md +0 -32
- package/dist/cli/templates/agents/synthesizer.md +0 -26
- package/dist/cli/templates/pipelines/large-pipeline-example.yml +0 -178
- package/dist/cli/templates/pipelines/post-merge-example.yml +0 -78
- package/dist/cli/templates/pipelines/pre-commit-example.yml +0 -41
- package/dist/cli/templates/pipelines/pre-push-example.yml +0 -51
- package/dist/cli/templates/pipelines/test-pipeline.yml +0 -90
- package/dist/config/project-config-loader.d.ts +0 -11
- package/dist/config/project-config-loader.d.ts.map +0 -1
- package/dist/config/project-config-loader.js +0 -100
- package/dist/config/project-config-loader.js.map +0 -1
- package/dist/core/condition-evaluator.d.ts +0 -16
- package/dist/core/condition-evaluator.d.ts.map +0 -1
- package/dist/core/condition-evaluator.js +0 -121
- package/dist/core/condition-evaluator.js.map +0 -1
- package/dist/core/context-reducer.d.ts +0 -15
- package/dist/core/context-reducer.d.ts.map +0 -1
- package/dist/core/context-reducer.js +0 -224
- package/dist/core/context-reducer.js.map +0 -1
- package/dist/core/output-storage-manager.d.ts +0 -14
- package/dist/core/output-storage-manager.d.ts.map +0 -1
- package/dist/core/output-storage-manager.js +0 -68
- package/dist/core/output-storage-manager.js.map +0 -1
- package/dist/core/output-tool-builder.d.ts +0 -6
- package/dist/core/output-tool-builder.d.ts.map +0 -1
- package/dist/core/output-tool-builder.js +0 -50
- package/dist/core/output-tool-builder.js.map +0 -1
- /package/{license â LICENSE} +0 -0
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
import { ErrorFactory } from '../utils/error-factory.js';
|
|
2
|
+
import { PipelineAbortError } from './abort-controller.js';
|
|
2
3
|
export class ParallelExecutor {
|
|
3
4
|
stageExecutor;
|
|
4
5
|
onStateChange;
|
|
5
|
-
|
|
6
|
+
abortController;
|
|
7
|
+
constructor(stageExecutor, onStateChange, abortController) {
|
|
6
8
|
this.stageExecutor = stageExecutor;
|
|
7
9
|
this.onStateChange = onStateChange;
|
|
10
|
+
this.abortController = abortController;
|
|
8
11
|
}
|
|
9
12
|
emitStateChange(state) {
|
|
10
13
|
if (this.onStateChange) {
|
|
11
14
|
this.onStateChange(state);
|
|
12
15
|
}
|
|
13
16
|
}
|
|
17
|
+
isAborted() {
|
|
18
|
+
return this.abortController?.aborted ?? false;
|
|
19
|
+
}
|
|
14
20
|
createFailedExecution(stageConfig, reason) {
|
|
15
21
|
const timestamp = new Date().toISOString();
|
|
16
22
|
return {
|
|
@@ -39,45 +45,117 @@ export class ParallelExecutor {
|
|
|
39
45
|
duration
|
|
40
46
|
};
|
|
41
47
|
}
|
|
42
|
-
|
|
48
|
+
addRunningStage(stageConfig, pipelineState) {
|
|
49
|
+
pipelineState.stages.push({
|
|
50
|
+
stageName: stageConfig.name,
|
|
51
|
+
status: 'running',
|
|
52
|
+
startTime: new Date().toISOString(),
|
|
53
|
+
retryAttempt: 0,
|
|
54
|
+
maxRetries: stageConfig.retry?.maxAttempts || 0
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
updateStageInState(execution, pipelineState) {
|
|
58
|
+
const index = pipelineState.stages.findIndex(s => s.stageName === execution.stageName);
|
|
59
|
+
if (index >= 0) {
|
|
60
|
+
pipelineState.stages[index] = execution;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
async executeParallelGroup(stages, pipelineState, onOutputUpdate, groupContext) {
|
|
43
64
|
const startTime = Date.now();
|
|
65
|
+
if (this.isAborted()) {
|
|
66
|
+
const skipTimestamp = new Date().toISOString();
|
|
67
|
+
const skippedExecutions = stages.map(stage => ({
|
|
68
|
+
stageName: stage.name,
|
|
69
|
+
status: 'skipped',
|
|
70
|
+
startTime: skipTimestamp,
|
|
71
|
+
endTime: skipTimestamp,
|
|
72
|
+
duration: 0
|
|
73
|
+
}));
|
|
74
|
+
for (const execution of skippedExecutions) {
|
|
75
|
+
pipelineState.stages.push(execution);
|
|
76
|
+
}
|
|
77
|
+
this.emitStateChange(pipelineState);
|
|
78
|
+
return this.buildExecutionResult(skippedExecutions, startTime);
|
|
79
|
+
}
|
|
80
|
+
if (groupContext?.isFinalGroup !== undefined) {
|
|
81
|
+
this.stageExecutor.updateLoopContext({ isFinalGroup: groupContext.isFinalGroup });
|
|
82
|
+
}
|
|
83
|
+
for (const stageConfig of stages) {
|
|
84
|
+
this.addRunningStage(stageConfig, pipelineState);
|
|
85
|
+
}
|
|
86
|
+
this.emitStateChange(pipelineState);
|
|
44
87
|
const promises = stages.map(async (stageConfig) => {
|
|
45
88
|
const stageOutputCallback = this.createStageCallback(stageConfig.name, onOutputUpdate);
|
|
46
89
|
try {
|
|
47
90
|
const execution = await this.stageExecutor.executeStage(stageConfig, pipelineState, stageOutputCallback);
|
|
91
|
+
this.updateStageInState(execution, pipelineState);
|
|
48
92
|
this.emitStateChange(pipelineState);
|
|
49
93
|
return execution;
|
|
50
94
|
}
|
|
51
95
|
catch (error) {
|
|
96
|
+
if (error instanceof PipelineAbortError) {
|
|
97
|
+
const abortedExecution = this.createFailedExecution(stageConfig, error);
|
|
98
|
+
this.updateStageInState(abortedExecution, pipelineState);
|
|
99
|
+
this.emitStateChange(pipelineState);
|
|
100
|
+
throw error;
|
|
101
|
+
}
|
|
102
|
+
const failedExecution = this.createFailedExecution(stageConfig, error);
|
|
103
|
+
this.updateStageInState(failedExecution, pipelineState);
|
|
52
104
|
this.emitStateChange(pipelineState);
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
const results = await Promise.allSettled(promises);
|
|
57
|
-
const executions = results.map((result, index) => {
|
|
58
|
-
if (result.status === 'fulfilled') {
|
|
59
|
-
return result.value;
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
const stageConfig = stages[index];
|
|
63
|
-
return this.createFailedExecution(stageConfig, result.reason);
|
|
105
|
+
return failedExecution;
|
|
64
106
|
}
|
|
65
107
|
});
|
|
108
|
+
const executions = await Promise.all(promises);
|
|
66
109
|
return this.buildExecutionResult(executions, startTime);
|
|
67
110
|
}
|
|
68
|
-
async executeSequentialGroup(stages, pipelineState, onOutputUpdate) {
|
|
111
|
+
async executeSequentialGroup(stages, pipelineState, onOutputUpdate, groupContext) {
|
|
69
112
|
const startTime = Date.now();
|
|
70
113
|
const executions = [];
|
|
114
|
+
if (groupContext?.isFinalGroup !== undefined) {
|
|
115
|
+
this.stageExecutor.updateLoopContext({ isFinalGroup: groupContext.isFinalGroup });
|
|
116
|
+
}
|
|
71
117
|
for (const stageConfig of stages) {
|
|
118
|
+
if (this.isAborted()) {
|
|
119
|
+
const skipTimestamp = new Date().toISOString();
|
|
120
|
+
const skippedExecution = {
|
|
121
|
+
stageName: stageConfig.name,
|
|
122
|
+
status: 'skipped',
|
|
123
|
+
startTime: skipTimestamp,
|
|
124
|
+
endTime: skipTimestamp,
|
|
125
|
+
duration: 0
|
|
126
|
+
};
|
|
127
|
+
executions.push(skippedExecution);
|
|
128
|
+
pipelineState.stages.push(skippedExecution);
|
|
129
|
+
this.emitStateChange(pipelineState);
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
this.addRunningStage(stageConfig, pipelineState);
|
|
133
|
+
this.emitStateChange(pipelineState);
|
|
72
134
|
const stageOutputCallback = this.createStageCallback(stageConfig.name, onOutputUpdate);
|
|
73
135
|
try {
|
|
74
136
|
const execution = await this.stageExecutor.executeStage(stageConfig, pipelineState, stageOutputCallback);
|
|
75
137
|
executions.push(execution);
|
|
138
|
+
this.updateStageInState(execution, pipelineState);
|
|
76
139
|
this.emitStateChange(pipelineState);
|
|
77
140
|
}
|
|
78
141
|
catch (error) {
|
|
142
|
+
if (error instanceof PipelineAbortError) {
|
|
143
|
+
const abortedExecution = {
|
|
144
|
+
stageName: stageConfig.name,
|
|
145
|
+
status: 'failed',
|
|
146
|
+
startTime: new Date().toISOString(),
|
|
147
|
+
endTime: new Date().toISOString(),
|
|
148
|
+
duration: 0,
|
|
149
|
+
error: { message: 'Stage aborted', timestamp: new Date().toISOString() }
|
|
150
|
+
};
|
|
151
|
+
executions.push(abortedExecution);
|
|
152
|
+
this.updateStageInState(abortedExecution, pipelineState);
|
|
153
|
+
this.emitStateChange(pipelineState);
|
|
154
|
+
throw error;
|
|
155
|
+
}
|
|
79
156
|
const failedExecution = this.createFailedExecution(stageConfig, error);
|
|
80
157
|
executions.push(failedExecution);
|
|
158
|
+
this.updateStageInState(failedExecution, pipelineState);
|
|
81
159
|
this.emitStateChange(pipelineState);
|
|
82
160
|
}
|
|
83
161
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parallel-executor.js","sourceRoot":"","sources":["../../src/core/parallel-executor.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"parallel-executor.js","sourceRoot":"","sources":["../../src/core/parallel-executor.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAA2B,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AASpF,MAAM,OAAO,gBAAgB;IAEjB;IACA;IACA;IAHV,YACU,aAA4B,EAC5B,aAA8C,EAC9C,eAAyC;QAFzC,kBAAa,GAAb,aAAa,CAAe;QAC5B,kBAAa,GAAb,aAAa,CAAiC;QAC9C,oBAAe,GAAf,eAAe,CAA0B;IAChD,CAAC;IAEI,eAAe,CAAC,KAAoB;QAC1C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAKO,SAAS;QACf,OAAO,IAAI,CAAC,eAAe,EAAE,OAAO,IAAI,KAAK,CAAC;IAChD,CAAC;IAEO,qBAAqB,CAC3B,WAA6B,EAC7B,MAAe;QAEf,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,OAAO;YACL,SAAS,EAAE,WAAW,CAAC,IAAI;YAC3B,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,CAAC;YACX,KAAK,EAAE,YAAY,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC;SAChE,CAAC;IACJ,CAAC;IAEO,mBAAmB,CACzB,SAAiB,EACjB,cAA4D;QAE5D,OAAO,cAAc;YACnB,CAAC,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC;YACvD,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAEO,oBAAoB,CAC1B,UAA4B,EAC5B,SAAiB;QAEjB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;QAC9C,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;QACnE,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;QAE9D,OAAO;YACL,UAAU;YACV,YAAY;YACZ,SAAS;YACT,QAAQ;SACT,CAAC;IACJ,CAAC;IAKO,eAAe,CACrB,WAA6B,EAC7B,aAA4B;QAE5B,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;YACxB,SAAS,EAAE,WAAW,CAAC,IAAI;YAC3B,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,IAAI,CAAC;SAChD,CAAC,CAAC;IACL,CAAC;IAKO,kBAAkB,CACxB,SAAyB,EACzB,aAA4B;QAE5B,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,SAAS,CAC1C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,CACzC,CAAC;QACF,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;QAC1C,CAAC;IACH,CAAC;IAUD,KAAK,CAAC,oBAAoB,CACxB,MAA0B,EAC1B,aAA4B,EAC5B,cAA4D,EAC5D,YAAwC;QAExC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAG7B,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACrB,MAAM,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC/C,MAAM,iBAAiB,GAAqB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC/D,SAAS,EAAE,KAAK,CAAC,IAAI;gBACrB,MAAM,EAAE,SAAkB;gBAC1B,SAAS,EAAE,aAAa;gBACxB,OAAO,EAAE,aAAa;gBACtB,QAAQ,EAAE,CAAC;aACZ,CAAC,CAAC,CAAC;YACJ,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE,CAAC;gBAC1C,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvC,CAAC;YACD,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;QACjE,CAAC;QAGD,IAAI,YAAY,EAAE,YAAY,KAAK,SAAS,EAAE,CAAC;YAC7C,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC;QACpF,CAAC;QAGD,KAAK,MAAM,WAAW,IAAI,MAAM,EAAE,CAAC;YACjC,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QAIpC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,EAA2B,EAAE;YACzE,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAEvF,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CACrD,WAAW,EACX,aAAa,EACb,mBAAmB,CACpB,CAAC;gBAEF,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;gBAClD,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;gBACpC,OAAO,SAAS,CAAC;YACnB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;oBACxC,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;oBACxE,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;oBACzD,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;oBACpC,MAAM,KAAK,CAAC;gBACd,CAAC;gBAED,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;gBACvE,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;gBACxD,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;gBACpC,OAAO,eAAe,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;QAGH,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE/C,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC1D,CAAC;IAUD,KAAK,CAAC,sBAAsB,CAC1B,MAA0B,EAC1B,aAA4B,EAC5B,cAA4D,EAC5D,YAAwC;QAExC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAqB,EAAE,CAAC;QAGxC,IAAI,YAAY,EAAE,YAAY,KAAK,SAAS,EAAE,CAAC;YAC7C,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,KAAK,MAAM,WAAW,IAAI,MAAM,EAAE,CAAC;YAEjC,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;gBAErB,MAAM,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAC/C,MAAM,gBAAgB,GAAmB;oBACvC,SAAS,EAAE,WAAW,CAAC,IAAI;oBAC3B,MAAM,EAAE,SAAS;oBACjB,SAAS,EAAE,aAAa;oBACxB,OAAO,EAAE,aAAa;oBACtB,QAAQ,EAAE,CAAC;iBACZ,CAAC;gBACF,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAClC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC5C,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;gBACpC,SAAS;YACX,CAAC;YAGD,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;YACjD,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;YAEpC,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YACvF,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CACrD,WAAW,EACX,aAAa,EACb,mBAAmB,CACpB,CAAC;gBACF,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAE3B,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;gBAClD,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAEf,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;oBACxC,MAAM,gBAAgB,GAAmB;wBACvC,SAAS,EAAE,WAAW,CAAC,IAAI;wBAC3B,MAAM,EAAE,QAAQ;wBAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACnC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACjC,QAAQ,EAAE,CAAC;wBACX,KAAK,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;qBACzE,CAAC;oBACF,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;oBAClC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;oBACzD,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;oBACpC,MAAM,KAAK,CAAC;gBACd,CAAC;gBAED,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;gBACvE,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACjC,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;gBACxD,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAC1D,CAAC;IAMD,gBAAgB,CAAC,MAA+B;QAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;QAChF,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;QAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;QAEvC,OAAO,aAAa,KAAK,cAAc,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,UAAU,eAAe,MAAM,UAAU,CAAC;IACnH,CAAC;CACF"}
|
|
@@ -4,6 +4,7 @@ import { PRCreator } from './pr-creator.js';
|
|
|
4
4
|
import { StateManager } from './state-manager.js';
|
|
5
5
|
import { PipelineConfig, PipelineState } from '../config/schema.js';
|
|
6
6
|
import { NotificationContext } from '../notifications/types.js';
|
|
7
|
+
import { PipelineLogger } from '../utils/pipeline-logger.js';
|
|
7
8
|
export declare class PipelineFinalizer {
|
|
8
9
|
private gitManager;
|
|
9
10
|
private branchManager;
|
|
@@ -12,13 +13,20 @@ export declare class PipelineFinalizer {
|
|
|
12
13
|
private repoPath;
|
|
13
14
|
private dryRun;
|
|
14
15
|
private shouldLog;
|
|
16
|
+
private worktreeManager;
|
|
15
17
|
constructor(gitManager: GitManager, branchManager: BranchManager, prCreator: PRCreator, stateManager: StateManager, repoPath: string, dryRun: boolean, shouldLog: (interactive: boolean) => boolean);
|
|
16
|
-
finalize(state: PipelineState, config: PipelineConfig, pipelineBranch: string | undefined,
|
|
18
|
+
finalize(state: PipelineState, config: PipelineConfig, pipelineBranch: string | undefined, worktreePath: string | undefined, executionRepoPath: string, startTime: number, interactive: boolean, verbose: boolean, notifyCallback: (context: NotificationContext) => Promise<void>, stateChangeCallback: (state: PipelineState) => void, options?: {
|
|
19
|
+
suppressCompletionNotification?: boolean;
|
|
20
|
+
pipelineLogger?: PipelineLogger;
|
|
21
|
+
}): Promise<PipelineState>;
|
|
17
22
|
private calculateMetrics;
|
|
18
|
-
private
|
|
19
|
-
private
|
|
23
|
+
private handleMergeStrategy;
|
|
24
|
+
private handlePullRequest;
|
|
25
|
+
private handleLocalMerge;
|
|
20
26
|
private notifyCompletion;
|
|
21
27
|
private printSummary;
|
|
22
|
-
private
|
|
28
|
+
private calculateTotalTokens;
|
|
29
|
+
private copyHandoverToMainRepo;
|
|
30
|
+
private handleWorktreeCleanup;
|
|
23
31
|
}
|
|
24
32
|
//# sourceMappingURL=pipeline-finalizer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-finalizer.d.ts","sourceRoot":"","sources":["../../src/core/pipeline-finalizer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pipeline-finalizer.d.ts","sourceRoot":"","sources":["../../src/core/pipeline-finalizer.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAiB,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAc7D,qBAAa,iBAAiB;IAI1B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;IATnB,OAAO,CAAC,eAAe,CAAkB;gBAG/B,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,OAAO;IAQhD,QAAQ,CACZ,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,cAAc,EACtB,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,iBAAiB,EAAE,MAAM,EACzB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,OAAO,EACpB,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,EAC/D,mBAAmB,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,EACnD,OAAO,CAAC,EAAE;QAAE,8BAA8B,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,cAAc,CAAA;KAAE,GACtF,OAAO,CAAC,aAAa,CAAC;YA2FX,gBAAgB;YAkBhB,mBAAmB;YAqCnB,iBAAiB;YAwEjB,gBAAgB;YA8FhB,gBAAgB;IAe9B,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,oBAAoB;YAmCd,sBAAsB;YAiCtB,qBAAqB;CAgDpC"}
|
|
@@ -1,5 +1,20 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as fs from 'fs/promises';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { GitManager } from './git-manager.js';
|
|
5
|
+
import { BranchManager } from './branch-manager.js';
|
|
6
|
+
import { WorktreeManager } from './worktree-manager.js';
|
|
2
7
|
import { PipelineFormatter } from '../utils/pipeline-formatter.js';
|
|
8
|
+
const c = {
|
|
9
|
+
success: chalk.green,
|
|
10
|
+
warn: chalk.yellow,
|
|
11
|
+
error: chalk.red,
|
|
12
|
+
dim: chalk.dim,
|
|
13
|
+
cmd: chalk.cyan,
|
|
14
|
+
branch: chalk.magenta,
|
|
15
|
+
path: chalk.yellow,
|
|
16
|
+
header: chalk.bold.white,
|
|
17
|
+
};
|
|
3
18
|
export class PipelineFinalizer {
|
|
4
19
|
gitManager;
|
|
5
20
|
branchManager;
|
|
@@ -8,6 +23,7 @@ export class PipelineFinalizer {
|
|
|
8
23
|
repoPath;
|
|
9
24
|
dryRun;
|
|
10
25
|
shouldLog;
|
|
26
|
+
worktreeManager;
|
|
11
27
|
constructor(gitManager, branchManager, prCreator, stateManager, repoPath, dryRun, shouldLog) {
|
|
12
28
|
this.gitManager = gitManager;
|
|
13
29
|
this.branchManager = branchManager;
|
|
@@ -16,49 +32,103 @@ export class PipelineFinalizer {
|
|
|
16
32
|
this.repoPath = repoPath;
|
|
17
33
|
this.dryRun = dryRun;
|
|
18
34
|
this.shouldLog = shouldLog;
|
|
35
|
+
this.worktreeManager = new WorktreeManager(repoPath);
|
|
19
36
|
}
|
|
20
|
-
async finalize(state, config, pipelineBranch,
|
|
21
|
-
|
|
22
|
-
await this.
|
|
23
|
-
if (
|
|
24
|
-
|
|
37
|
+
async finalize(state, config, pipelineBranch, worktreePath, executionRepoPath, startTime, interactive, verbose, notifyCallback, stateChangeCallback, options) {
|
|
38
|
+
const { pipelineLogger } = options || {};
|
|
39
|
+
await this.calculateMetrics(state, startTime, executionRepoPath);
|
|
40
|
+
if (state.status === 'aborted') {
|
|
41
|
+
if (this.shouldLog(interactive)) {
|
|
42
|
+
console.log(`\n${c.warn('â ')} ${c.warn('Pipeline aborted.')} Work preserved on branch: ${c.branch(pipelineBranch || '(current)')}`);
|
|
43
|
+
if (worktreePath) {
|
|
44
|
+
console.log(` ${c.dim('Worktree preserved for recovery:')} ${c.path(worktreePath)}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (worktreePath && state.artifacts.mainRepoHandoverDir) {
|
|
48
|
+
await this.copyHandoverToMainRepo(state.artifacts.handoverDir, state.artifacts.mainRepoHandoverDir, interactive);
|
|
49
|
+
state.artifacts.handoverDir = state.artifacts.mainRepoHandoverDir;
|
|
50
|
+
}
|
|
51
|
+
await this.stateManager.saveState(state);
|
|
52
|
+
stateChangeCallback(state);
|
|
53
|
+
await notifyCallback({
|
|
54
|
+
event: 'pipeline.aborted',
|
|
55
|
+
pipelineState: state
|
|
56
|
+
});
|
|
57
|
+
return state;
|
|
58
|
+
}
|
|
59
|
+
if (pipelineBranch && config.git) {
|
|
60
|
+
const mergeStrategy = config.git.mergeStrategy || 'none';
|
|
61
|
+
await this.handleMergeStrategy(mergeStrategy, config, pipelineBranch, state, executionRepoPath, interactive, notifyCallback);
|
|
62
|
+
}
|
|
63
|
+
if (worktreePath && state.artifacts.mainRepoHandoverDir) {
|
|
64
|
+
await this.copyHandoverToMainRepo(state.artifacts.handoverDir, state.artifacts.mainRepoHandoverDir, interactive);
|
|
65
|
+
state.artifacts.handoverDir = state.artifacts.mainRepoHandoverDir;
|
|
25
66
|
}
|
|
26
67
|
await this.stateManager.saveState(state);
|
|
27
68
|
stateChangeCallback(state);
|
|
28
|
-
|
|
69
|
+
if (!options?.suppressCompletionNotification) {
|
|
70
|
+
await this.notifyCompletion(state, notifyCallback);
|
|
71
|
+
}
|
|
29
72
|
if (this.shouldLog(interactive)) {
|
|
30
|
-
this.printSummary(state);
|
|
73
|
+
this.printSummary(state, worktreePath, verbose);
|
|
74
|
+
}
|
|
75
|
+
const prCreatedSuccessfully = !!state.artifacts.pullRequest?.url;
|
|
76
|
+
await this.handleWorktreeCleanup(worktreePath, config, state.status, interactive, prCreatedSuccessfully);
|
|
77
|
+
if (pipelineLogger) {
|
|
78
|
+
pipelineLogger.pipelineComplete(state.status, state.artifacts.totalDuration, state.stages.length);
|
|
79
|
+
pipelineLogger.close();
|
|
31
80
|
}
|
|
32
|
-
await this.cleanup(pipelineBranch, originalBranch, interactive);
|
|
33
81
|
return state;
|
|
34
82
|
}
|
|
35
|
-
async calculateMetrics(state, startTime) {
|
|
83
|
+
async calculateMetrics(state, startTime, executionRepoPath) {
|
|
36
84
|
const endTime = Date.now();
|
|
37
85
|
state.artifacts.totalDuration = (endTime - startTime) / 1000;
|
|
38
|
-
|
|
86
|
+
const execGitManager = executionRepoPath !== this.repoPath
|
|
87
|
+
? new GitManager(executionRepoPath)
|
|
88
|
+
: this.gitManager;
|
|
89
|
+
state.artifacts.finalCommit = await execGitManager.getCurrentCommit();
|
|
39
90
|
}
|
|
40
|
-
async
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
91
|
+
async handleMergeStrategy(strategy, config, branchName, state, executionRepoPath, interactive, notifyCallback) {
|
|
92
|
+
const hasCommits = state.stages.some(s => s.commitSha);
|
|
93
|
+
if (!hasCommits && (strategy === 'pull-request' || strategy === 'local-merge')) {
|
|
94
|
+
if (this.shouldLog(interactive)) {
|
|
95
|
+
console.log(`\n${c.dim('đ No commits to merge.')} Work preserved on branch: ${c.branch(branchName)}`);
|
|
96
|
+
}
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
switch (strategy) {
|
|
100
|
+
case 'pull-request':
|
|
101
|
+
await this.handlePullRequest(config, branchName, state, executionRepoPath, interactive, notifyCallback);
|
|
102
|
+
break;
|
|
103
|
+
case 'local-merge':
|
|
104
|
+
await this.handleLocalMerge(config, branchName, interactive);
|
|
105
|
+
break;
|
|
106
|
+
case 'none':
|
|
107
|
+
if (this.shouldLog(interactive)) {
|
|
108
|
+
console.log(`\n${c.dim('đ Work preserved on branch:')} ${c.branch(branchName)}`);
|
|
109
|
+
}
|
|
110
|
+
break;
|
|
45
111
|
}
|
|
46
112
|
}
|
|
47
|
-
async
|
|
113
|
+
async handlePullRequest(config, branchName, state, executionRepoPath, interactive, notifyCallback) {
|
|
48
114
|
try {
|
|
49
|
-
|
|
115
|
+
const pushBranchManager = executionRepoPath !== this.repoPath
|
|
116
|
+
? new BranchManager(executionRepoPath)
|
|
117
|
+
: this.branchManager;
|
|
118
|
+
await pushBranchManager.pushBranch(branchName);
|
|
50
119
|
const exists = await this.prCreator.prExists(branchName);
|
|
51
120
|
if (exists) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
console.log(` View it with: gh pr view ${branchName}`);
|
|
55
|
-
}
|
|
121
|
+
console.log(`\n${c.success('â')} Pull request already exists for ${c.branch(branchName)}`);
|
|
122
|
+
console.log(` ${c.dim('View it with:')} ${c.cmd(`gh pr view ${branchName}`)}`);
|
|
56
123
|
return;
|
|
57
124
|
}
|
|
58
|
-
const prConfig = config.git
|
|
125
|
+
const prConfig = config.git?.pullRequest || {};
|
|
59
126
|
const result = await this.prCreator.createPR(branchName, config.git?.baseBranch || 'main', prConfig, state);
|
|
60
127
|
if (this.shouldLog(interactive)) {
|
|
61
|
-
|
|
128
|
+
const isComplete = state.status === 'completed';
|
|
129
|
+
const statusIcon = isComplete ? c.success('â') : c.warn('â ');
|
|
130
|
+
const statusSuffix = state.status === 'partial' ? c.dim(' (partial success)') : '';
|
|
131
|
+
console.log(`\n${statusIcon} Pull Request created${statusSuffix}: ${c.cmd(result.url)}`);
|
|
62
132
|
}
|
|
63
133
|
state.artifacts.pullRequest = {
|
|
64
134
|
url: result.url,
|
|
@@ -73,11 +143,81 @@ export class PipelineFinalizer {
|
|
|
73
143
|
});
|
|
74
144
|
}
|
|
75
145
|
catch (error) {
|
|
146
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
147
|
+
state.artifacts.prError = errorMessage;
|
|
148
|
+
await this.stateManager.saveState(state);
|
|
149
|
+
console.log(`\n${c.error('â')} ${c.error('Failed to create PR:')} ${c.dim(errorMessage)}`);
|
|
150
|
+
console.log(` ${c.dim('Branch')} ${c.branch(branchName)} ${c.dim('has been pushed to remote.')}`);
|
|
151
|
+
console.log(` ${c.dim('You can create the PR manually with:')} ${c.cmd('gh pr create')}`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
async handleLocalMerge(config, branchName, interactive) {
|
|
155
|
+
const baseBranch = config.git?.baseBranch || 'main';
|
|
156
|
+
const baseCheckedOutPath = await this.gitManager.isBranchCheckedOut(baseBranch);
|
|
157
|
+
let mergeWorktreePath = null;
|
|
158
|
+
let mergeAttemptedOnCheckedOutPath = false;
|
|
159
|
+
try {
|
|
160
|
+
if (baseCheckedOutPath) {
|
|
161
|
+
const checkedOutGitManager = new GitManager(baseCheckedOutPath);
|
|
162
|
+
const hasChanges = await checkedOutGitManager.hasUncommittedChanges();
|
|
163
|
+
if (hasChanges) {
|
|
164
|
+
if (this.shouldLog(interactive)) {
|
|
165
|
+
console.log(`\n${c.warn('â ')} Cannot auto-merge: ${c.branch(baseBranch)} has uncommitted changes.`);
|
|
166
|
+
console.log(` ${c.dim('Pipeline completed successfully. Changes on branch:')} ${c.branch(branchName)}`);
|
|
167
|
+
console.log(`\n ${c.dim('Commit or stash your work, then run:')} ${c.cmd(`git merge ${branchName}`)}`);
|
|
168
|
+
}
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
if (this.shouldLog(interactive)) {
|
|
172
|
+
console.log(`\n${c.dim('đ Merging')} ${c.branch(branchName)} ${c.dim('into')} ${c.branch(baseBranch)}${c.dim('...')}`);
|
|
173
|
+
}
|
|
174
|
+
try {
|
|
175
|
+
mergeAttemptedOnCheckedOutPath = true;
|
|
176
|
+
await checkedOutGitManager.merge(branchName);
|
|
177
|
+
console.log(`${c.success('â')} Merged ${c.branch(branchName)} into ${c.branch(baseBranch)}`);
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
catch (mergeError) {
|
|
181
|
+
if (this.shouldLog(interactive)) {
|
|
182
|
+
console.log(`\n${c.error('â')} Failed to merge: ${mergeError instanceof Error ? mergeError.message : String(mergeError)}`);
|
|
183
|
+
console.log(` ${c.dim('To resolve:')} ${c.cmd('git status')} then fix conflicts and ${c.cmd('git commit')}`);
|
|
184
|
+
console.log(` ${c.dim('Or abort:')} ${c.cmd('git merge --abort')}`);
|
|
185
|
+
}
|
|
186
|
+
throw mergeError;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
const worktreeBaseDir = this.worktreeManager.getWorktreeBaseDir();
|
|
190
|
+
await fs.mkdir(worktreeBaseDir, { recursive: true });
|
|
191
|
+
const safeBranchName = branchName.replace(/[\\/]/g, '-');
|
|
192
|
+
mergeWorktreePath = path.join(worktreeBaseDir, `merge-${safeBranchName}-${Date.now()}`);
|
|
193
|
+
await this.worktreeManager.createWorktree(mergeWorktreePath, baseBranch, baseBranch);
|
|
194
|
+
const mergeGitManager = new GitManager(mergeWorktreePath);
|
|
76
195
|
if (this.shouldLog(interactive)) {
|
|
77
|
-
console.
|
|
78
|
-
console.log(` Branch ${branchName} has been pushed to remote.`);
|
|
79
|
-
console.log(` You can create the PR manually with: gh pr create`);
|
|
196
|
+
console.log(`\n${c.dim('đ Merging')} ${c.branch(branchName)} ${c.dim('into')} ${c.branch(baseBranch)}${c.dim('...')}`);
|
|
80
197
|
}
|
|
198
|
+
await mergeGitManager.merge(branchName);
|
|
199
|
+
await this.worktreeManager.removeWorktree(mergeWorktreePath, true);
|
|
200
|
+
await this.worktreeManager.pruneWorktrees();
|
|
201
|
+
mergeWorktreePath = null;
|
|
202
|
+
console.log(`${c.success('â')} Merged ${c.branch(branchName)} into ${c.branch(baseBranch)}`);
|
|
203
|
+
}
|
|
204
|
+
catch (error) {
|
|
205
|
+
if (mergeAttemptedOnCheckedOutPath) {
|
|
206
|
+
throw error;
|
|
207
|
+
}
|
|
208
|
+
if (this.shouldLog(interactive)) {
|
|
209
|
+
console.log(`\n${c.error('â')} ${c.error('Failed to merge:')} ${c.dim(error instanceof Error ? error.message : String(error))}`);
|
|
210
|
+
console.log(` ${c.dim('Branch')} ${c.branch(branchName)} ${c.dim('still exists with your changes.')}`);
|
|
211
|
+
console.log('');
|
|
212
|
+
console.log(` ${c.dim('You can merge manually with:')}`);
|
|
213
|
+
console.log(` ${c.cmd(`git checkout ${baseBranch} && git merge ${branchName}`)}`);
|
|
214
|
+
if (mergeWorktreePath) {
|
|
215
|
+
console.log('');
|
|
216
|
+
console.log(` ${c.dim('Merge worktree preserved at:')} ${c.path(mergeWorktreePath)}`);
|
|
217
|
+
}
|
|
218
|
+
console.log('');
|
|
219
|
+
}
|
|
220
|
+
throw error;
|
|
81
221
|
}
|
|
82
222
|
}
|
|
83
223
|
async notifyCompletion(state, notifyCallback) {
|
|
@@ -88,15 +228,86 @@ export class PipelineFinalizer {
|
|
|
88
228
|
prUrl: state.artifacts.pullRequest?.url
|
|
89
229
|
});
|
|
90
230
|
}
|
|
91
|
-
printSummary(state) {
|
|
92
|
-
|
|
231
|
+
printSummary(state, worktreePath, verbose = false) {
|
|
232
|
+
const totals = this.calculateTotalTokens(state);
|
|
233
|
+
console.log(PipelineFormatter.formatSummary(state, verbose, totals));
|
|
234
|
+
if (worktreePath && verbose) {
|
|
235
|
+
console.log(`\n${c.dim('đŗ Worktree location:')} ${c.path(worktreePath)}`);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
calculateTotalTokens(state) {
|
|
239
|
+
let totalProcessed = 0;
|
|
240
|
+
let totalOutput = 0;
|
|
241
|
+
let totalTurns = 0;
|
|
242
|
+
let totalCacheRead = 0;
|
|
243
|
+
for (const stage of state.stages) {
|
|
244
|
+
if (stage.tokenUsage) {
|
|
245
|
+
const cacheRead = stage.tokenUsage.cache_read || 0;
|
|
246
|
+
const cacheCreation = stage.tokenUsage.cache_creation || 0;
|
|
247
|
+
const actualInput = stage.tokenUsage.actual_input || 0;
|
|
248
|
+
const cacheCreationIncluded = cacheCreation > 0 && actualInput >= cacheCreation;
|
|
249
|
+
const stageProcessed = actualInput + cacheRead + (cacheCreationIncluded ? 0 : cacheCreation);
|
|
250
|
+
totalProcessed += stageProcessed;
|
|
251
|
+
totalOutput += stage.tokenUsage.output || 0;
|
|
252
|
+
totalTurns += stage.tokenUsage.num_turns || 0;
|
|
253
|
+
totalCacheRead += cacheRead;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
return { totalProcessed, totalOutput, totalTurns, totalCacheRead };
|
|
257
|
+
}
|
|
258
|
+
async copyHandoverToMainRepo(sourcePath, destPath, interactive) {
|
|
259
|
+
try {
|
|
260
|
+
await fs.mkdir(path.dirname(destPath), { recursive: true });
|
|
261
|
+
await fs.cp(sourcePath, destPath, { recursive: true });
|
|
262
|
+
if (this.shouldLog(interactive)) {
|
|
263
|
+
console.log(`\n${c.dim('đ Copied handover files to:')} ${c.path(destPath)}`);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
catch (error) {
|
|
267
|
+
if (this.shouldLog(interactive)) {
|
|
268
|
+
console.log(`\n${c.warn('â ')} ${c.dim('Could not copy handover directory:')} ${c.dim(error instanceof Error ? error.message : String(error))}`);
|
|
269
|
+
console.log(` ${c.dim('Source:')} ${c.path(sourcePath)}`);
|
|
270
|
+
console.log(` ${c.dim('Destination:')} ${c.path(destPath)}`);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
93
273
|
}
|
|
94
|
-
async
|
|
95
|
-
if (
|
|
274
|
+
async handleWorktreeCleanup(worktreePath, config, status, interactive, prCreatedSuccessfully = false) {
|
|
275
|
+
if (!worktreePath || this.dryRun) {
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
const strategy = config.git?.branchStrategy || 'reusable';
|
|
279
|
+
const success = status === 'completed';
|
|
280
|
+
if (strategy === 'reusable') {
|
|
281
|
+
if (this.shouldLog(interactive)) {
|
|
282
|
+
console.log(`\n${c.dim('đŗ Worktree preserved at:')} ${c.path(worktreePath)}`);
|
|
283
|
+
console.log(` ${c.dim('Use')} ${c.cmd('agent-pipeline cleanup --worktrees')} ${c.dim('to remove.')}`);
|
|
284
|
+
}
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
if (strategy === 'unique-and-delete' && success) {
|
|
288
|
+
try {
|
|
289
|
+
await this.worktreeManager.cleanupWorktree(worktreePath, true, prCreatedSuccessfully);
|
|
290
|
+
if (this.shouldLog(interactive)) {
|
|
291
|
+
console.log(`\n${c.dim('đī¸ Cleaned up worktree:')} ${c.path(worktreePath)}`);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
catch (error) {
|
|
295
|
+
if (this.shouldLog(interactive)) {
|
|
296
|
+
console.log(`\n${c.warn('â ')} ${c.dim('Could not cleanup worktree:')} ${c.dim(error instanceof Error ? error.message : String(error))}`);
|
|
297
|
+
console.log(` ${c.dim('Worktree remains at:')} ${c.path(worktreePath)}`);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
else if (strategy === 'unique-per-run' && success) {
|
|
302
|
+
if (this.shouldLog(interactive)) {
|
|
303
|
+
console.log(`\n${c.dim('đŗ Worktree preserved at:')} ${c.path(worktreePath)}`);
|
|
304
|
+
console.log(` ${c.dim('Use')} ${c.cmd('agent-pipeline cleanup --worktrees')} ${c.dim('to remove.')}`);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
else if (!success) {
|
|
96
308
|
if (this.shouldLog(interactive)) {
|
|
97
|
-
console.log(`\n
|
|
309
|
+
console.log(`\n${c.dim('đŗ Worktree preserved for debugging:')} ${c.path(worktreePath)}`);
|
|
98
310
|
}
|
|
99
|
-
await this.branchManager.checkoutBranch(originalBranch);
|
|
100
311
|
}
|
|
101
312
|
}
|
|
102
313
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-finalizer.js","sourceRoot":"","sources":["../../src/core/pipeline-finalizer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pipeline-finalizer.js","sourceRoot":"","sources":["../../src/core/pipeline-finalizer.ts"],"names":[],"mappings":"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"}
|