pipeline-worker 0.1.26 → 0.1.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +6 -2
  2. package/dist/agent/claude.js +32 -1
  3. package/dist/agent/claude.js.map +1 -1
  4. package/dist/agent/types.d.ts +18 -0
  5. package/dist/cli.js +30 -4
  6. package/dist/cli.js.map +1 -1
  7. package/dist/config/loader.js +25 -3
  8. package/dist/config/loader.js.map +1 -1
  9. package/dist/forge/github.js +7 -0
  10. package/dist/forge/github.js.map +1 -1
  11. package/dist/forge/gitlab.js +7 -0
  12. package/dist/forge/gitlab.js.map +1 -1
  13. package/dist/forge/types.d.ts +9 -0
  14. package/dist/state/runState.d.ts +10 -1
  15. package/dist/state/runState.js +20 -2
  16. package/dist/state/runState.js.map +1 -1
  17. package/dist/types.d.ts +4 -0
  18. package/dist/ui/format.d.ts +19 -0
  19. package/dist/ui/format.js +89 -0
  20. package/dist/ui/format.js.map +1 -0
  21. package/dist/ui/renderer.d.ts +41 -0
  22. package/dist/ui/renderer.js +93 -0
  23. package/dist/ui/renderer.js.map +1 -0
  24. package/dist/ui/runTree.d.ts +106 -0
  25. package/dist/ui/runTree.js +133 -0
  26. package/dist/ui/runTree.js.map +1 -0
  27. package/dist/ui/sessions.js +11 -4
  28. package/dist/ui/sessions.js.map +1 -1
  29. package/dist/ui/steps.d.ts +92 -35
  30. package/dist/ui/steps.js +177 -93
  31. package/dist/ui/steps.js.map +1 -1
  32. package/dist/ui/treeRenderer.d.ts +89 -0
  33. package/dist/ui/treeRenderer.js +271 -0
  34. package/dist/ui/treeRenderer.js.map +1 -0
  35. package/dist/ui/welcome.js +15 -9
  36. package/dist/ui/welcome.js.map +1 -1
  37. package/dist/workflow/adoptBranch.js +16 -10
  38. package/dist/workflow/adoptBranch.js.map +1 -1
  39. package/dist/workflow/captureIntent.d.ts +7 -2
  40. package/dist/workflow/captureIntent.js +1 -25
  41. package/dist/workflow/captureIntent.js.map +1 -1
  42. package/dist/workflow/openMergeRequest.d.ts +1 -1
  43. package/dist/workflow/openMergeRequest.js +8 -7
  44. package/dist/workflow/openMergeRequest.js.map +1 -1
  45. package/dist/workflow/orchestrate.d.ts +1 -1
  46. package/dist/workflow/orchestrate.js +61 -39
  47. package/dist/workflow/orchestrate.js.map +1 -1
  48. package/dist/workflow/runPlan.d.ts +18 -0
  49. package/dist/workflow/runPlan.js +53 -0
  50. package/dist/workflow/runPlan.js.map +1 -0
  51. package/dist/workflow/syncTargetBranch.d.ts +37 -0
  52. package/dist/workflow/syncTargetBranch.js +83 -0
  53. package/dist/workflow/syncTargetBranch.js.map +1 -0
  54. package/dist/workflow/watchPipeline.js +61 -23
  55. package/dist/workflow/watchPipeline.js.map +1 -1
  56. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
- /** Top-level control flow wiring the user's workflow stages together — see ui/steps.ts's TOTAL_STAGES for the full numbered sequence. */
1
+ /** Top-level control flow wiring the user's workflow steps together — see workflow/runPlan.ts for the full step skeleton. */
2
+ import { basename } from 'node:path';
2
3
  import { loadConfig } from '../config/loader.js';
3
4
  import { createForge } from '../forge/index.js';
4
5
  import { selectAgent } from '../agent/index.js';
@@ -12,10 +13,12 @@ import { runChecks } from './runChecks.js';
12
13
  import { updateChangelog } from './updateChangelog.js';
13
14
  import { openMergeRequest } from './openMergeRequest.js';
14
15
  import { watchPipeline } from './watchPipeline.js';
15
- import { recordEvent } from '../state/runState.js';
16
+ import { maybeSyncTargetBranch } from './syncTargetBranch.js';
17
+ import { recordEvent, recordAgentTokens } from '../state/runState.js';
16
18
  import { acquireLock } from '../state/lock.js';
17
19
  import { makeIdempotentCleanup, registerExitSignals } from '../process/signalCleanup.js';
18
- import { step, runStep, skipStep, note, noteRisk, reportAgentInvocation } from '../ui/steps.js';
20
+ import { beginRun, endRun, runStep, skipStep, addDynamicStep, setRunHeader, note, noteRisk, reportAgentInvocation } from '../ui/steps.js';
21
+ import { freshRunSkeleton } from './runPlan.js';
19
22
  import { printWelcome } from '../ui/welcome.js';
20
23
  /** Function-boundary read so TS reports the declared RunPhase union, not a narrowed literal. */
21
24
  function readPhase(state) {
@@ -45,9 +48,11 @@ function buildApplyConflictPrompt(conflictedFiles) {
45
48
  * nothing to leave an escalation comment on if the agent can't resolve it —
46
49
  * fail the run clearly instead so the user can intervene manually.
47
50
  */
48
- async function resolveApplyConflicts(agent, worktreePath, conflictedFiles) {
49
- const agentResult = await runStep('4.1', '🔧', 'Resolving conflicts', `asking the agent to resolve ${conflictedFiles.length} conflicted file(s)`, () => agent.invoke({ prompt: buildApplyConflictPrompt(conflictedFiles), cwd: worktreePath, permissionMode: 'acceptEdits' }));
51
+ async function resolveApplyConflicts(agent, repoRoot, state, worktreePath, conflictedFiles) {
52
+ addDynamicStep('apply', 'apply/conflicts', 'conflicts');
53
+ const agentResult = await runStep('apply/conflicts', `asking the agent to resolve ${conflictedFiles.length} conflicted file(s)`, () => agent.invoke({ prompt: buildApplyConflictPrompt(conflictedFiles), cwd: worktreePath, permissionMode: 'acceptEdits' }));
50
54
  reportAgentInvocation(agentResult, worktreePath);
55
+ recordAgentTokens(repoRoot, state, 'resolve diff-apply conflicts', agentResult.usage);
51
56
  const stillConflicted = findUnresolvedConflictMarkers(worktreePath, conflictedFiles);
52
57
  if (stillConflicted.length > 0) {
53
58
  throw new Error(`pipeline-worker: could not automatically resolve conflicts applying your diff — ${stillConflicted.join(', ')} ` +
@@ -55,36 +60,36 @@ async function resolveApplyConflicts(agent, worktreePath, conflictedFiles) {
55
60
  }
56
61
  await stageAll(worktreePath);
57
62
  }
58
- /** Stage 1: capture the uncommitted diff, or null (already logged) when there's nothing to process. */
63
+ /** Step 'capture': read the uncommitted diff, or null (already reported) when there's nothing to process. */
59
64
  async function captureRunDiff(repoRoot) {
60
- const { diffText, changedFiles, untrackedFiles } = await runStep(1, '📸', 'Capturing your changes', 'reading uncommitted edits and untracked files from your repo', () => captureDiff(repoRoot));
65
+ const { diffText, changedFiles, untrackedFiles } = await runStep('capture', 'reading uncommitted edits and untracked files from your repo', () => captureDiff(repoRoot));
61
66
  if (diffText.trim().length === 0 && untrackedFiles.length === 0) {
62
- console.log('pipeline-worker: no changes to process.');
63
67
  return null;
64
68
  }
65
69
  note(`${untrackedFiles.length} new file(s), ${diffText.split('\n').length} line(s) of diff`);
66
70
  return { diffText, changedFiles, untrackedFiles };
67
71
  }
68
72
  /** Stages 3-4: sync the worktree with origin, replay the captured diff, and resolve any resulting conflicts. */
69
- async function applyCapturedDiff(agent, repoRoot, worktreePath, targetBranch, diffText, untrackedFiles) {
70
- await runStep(3, '🔄', 'Syncing worktree with origin', `pull --rebase origin ${targetBranch}, so the diff lands on the latest base`, () => syncWithOrigin(worktreePath, targetBranch));
71
- const applyResult = await runStep(4, '📦', 'Applying your changes', 'replay your diff and untracked files into the new worktree', () => applyDiffToWorktree(worktreePath, diffText, untrackedFiles, repoRoot));
73
+ async function applyCapturedDiff(agent, repoRoot, state, worktreePath, targetBranch, diffText, untrackedFiles) {
74
+ await runStep('sync', `pull --rebase origin ${targetBranch}, so the diff lands on the latest base`, () => syncWithOrigin(worktreePath, targetBranch));
75
+ const applyResult = await runStep('apply', 'replay your diff and untracked files into the new worktree', () => applyDiffToWorktree(worktreePath, diffText, untrackedFiles, repoRoot));
72
76
  if (applyResult.conflicted) {
73
77
  note(`conflict in: ${applyResult.conflictedFiles.join(', ')}`);
74
- await resolveApplyConflicts(agent, worktreePath, applyResult.conflictedFiles);
78
+ await resolveApplyConflicts(agent, repoRoot, state, worktreePath, applyResult.conflictedFiles);
75
79
  }
76
80
  }
77
81
  /** Stages 5-6: ask the agent to infer intent from the change, then rename the worktree to the resulting feature branch. */
78
82
  async function captureIntentAndBranch(agent, config, options, worktreePath, changedFiles, untrackedFiles) {
79
- const intent = await runStep(5, '🧠', 'Understanding your changes', `ask ${config.agent} to infer a change type, branch slug, commit message, and summary`, () => captureIntent(agent, [...changedFiles, ...untrackedFiles], worktreePath, config.intentModel));
83
+ const { intent, usage } = await runStep('intent', `ask ${config.agent} to infer a change type, branch slug, commit message, and summary`, () => captureIntent(agent, [...changedFiles, ...untrackedFiles], worktreePath, config.intentModel));
80
84
  note(`${config.agent} says: ${intent.summary}`);
81
85
  noteRisk(intent.risk, intent.riskReason);
82
86
  const branchName = buildBranchName(config.branchPattern, { type: intent.changeType, ticket: options.ticket, name: intent.branchSlug });
83
- const actualBranchName = await runStep(6, '🌿', 'Checkout feature branch', `switch to feature branch ${branchName}`, () => renameBranch(worktreePath, branchName));
87
+ const actualBranchName = await runStep('branch', `switch to feature branch ${branchName}`, () => renameBranch(worktreePath, branchName));
84
88
  if (actualBranchName !== branchName) {
85
89
  note(`"${branchName}" already exists locally — using "${actualBranchName}" instead`);
86
90
  }
87
- return { intent, actualBranchName };
91
+ setRunHeader({ title: actualBranchName });
92
+ return { intent, intentTokens: usage?.totalTokens, actualBranchName };
88
93
  }
89
94
  /**
90
95
  * Stage 7: run build/lint/test, reporting and recording the outcome. Returns
@@ -93,13 +98,14 @@ async function captureIntentAndBranch(agent, config, options, worktreePath, chan
93
98
  * stage before opening a new PR/MR for a branch pipeline-worker never created.
94
99
  */
95
100
  export async function runAndReportChecks(config, worktreePath, state, repoRoot) {
96
- const checks = await runStep(7, '✅', 'Running checks', 'build, lint, and test — whichever your repo has configured', () => runChecks(config, worktreePath));
101
+ const checks = await runStep('checks', 'build, lint, and test — whichever your repo has configured', () => runChecks(config, worktreePath));
97
102
  for (const check of checks)
98
103
  note(`${check.name}: ${check.ok ? 'passed' : 'failed'} (${(check.durationMs / 1000).toFixed(1)}s)`);
99
104
  const failedCheck = checks.find((c) => !c.ok);
100
105
  if (failedCheck) {
101
106
  console.error(`pipeline-worker: ${failedCheck.name} failed, aborting before opening a merge request.\n${failedCheck.stderr}`);
102
107
  recordEvent(repoRoot, state, `${failedCheck.name} check failed, aborted before opening a merge request`, 'error');
108
+ endRun('failed', `${failedCheck.name} failed — aborted before opening a merge request`);
103
109
  process.exitCode = 1;
104
110
  return null;
105
111
  }
@@ -113,18 +119,18 @@ export async function runAndReportChecks(config, worktreePath, state, repoRoot)
113
119
  */
114
120
  export async function maybeUpdateChangelog(config, worktreePath, intent) {
115
121
  if (config.updateChangelog) {
116
- await runStep(8, '📝', 'Updating changelog', "add a bullet under CHANGELOG.md's [Unreleased] section", async () => {
122
+ await runStep('changelog', "add a bullet under CHANGELOG.md's [Unreleased] section", async () => {
117
123
  updateChangelog(worktreePath, intent);
118
124
  await stageAll(worktreePath);
119
125
  });
120
126
  }
121
127
  else {
122
- skipStep(8, '📝', 'Updating changelog', 'config.updateChangelog is disabled');
128
+ skipStep('changelog', 'config.updateChangelog is disabled');
123
129
  }
124
130
  }
125
131
  /** Stage 9 + opening the MR/PR: commit everything staged so far, then open the merge request and record it on state. */
126
132
  async function commitAndOpenMr(forge, worktreePath, state, targetBranch, intent, config, checks, repoRoot) {
127
- await runStep(9, '💾', 'Committing changes', `commit message: "${intent.commitMessage}"`,
133
+ await runStep('commit', `commit message: "${intent.commitMessage}"`,
128
134
  // applyDiffToWorktree (and, if enabled, the changelog step above) left
129
135
  // everything staged; without this commit the push would carry no
130
136
  // changes and the MR would be empty.
@@ -144,7 +150,7 @@ async function commitAndOpenMr(forge, worktreePath, state, targetBranch, intent,
144
150
  */
145
151
  async function maybeCleanupEarly(config, repoRoot, untrackedFiles, branch, releaseLock) {
146
152
  if (config.cleanupOnSuccess && config.cleanupEarly) {
147
- await runStep(13, '🧹', 'Cleaning up your repo', `reset to HEAD — your changes are now safely pushed to ${branch} (MR open)`, () => resetRepo(repoRoot, untrackedFiles));
153
+ await runStep('cleanup', `reset to HEAD — your changes are now safely pushed to ${branch} (MR open)`, () => resetRepo(repoRoot, untrackedFiles));
148
154
  releaseLock();
149
155
  }
150
156
  }
@@ -157,12 +163,13 @@ async function maybeCleanupEarly(config, repoRoot, untrackedFiles, branch, relea
157
163
  * shows up here as a push failure and is logged as a no-op, not an error.
158
164
  */
159
165
  async function maybeSquashCommits(config, worktreePath, branch, targetBranch, intent) {
166
+ addDynamicStep('ci-watch', 'ci-watch/squash', 'squash');
160
167
  if (!config.squashOnMerge) {
161
- skipStep('12.8', '📚', 'Squashing run commits', 'config.squashOnMerge is disabled');
168
+ skipStep('ci-watch/squash', 'config.squashOnMerge is disabled');
162
169
  return;
163
170
  }
164
171
  try {
165
- await runStep('12.8', '📚', 'Squashing run commits', `collapsing into one commit: "${intent.commitMessage}"`, async () => {
172
+ await runStep('ci-watch/squash', `collapsing into one commit: "${intent.commitMessage}"`, async () => {
166
173
  await squashCommitsSinceMergeBase(worktreePath, targetBranch, intent.commitMessage);
167
174
  await forcePushWithLease(worktreePath, 'origin', branch);
168
175
  });
@@ -172,27 +179,30 @@ async function maybeSquashCommits(config, worktreePath, branch, targetBranch, in
172
179
  noteRisk('low', `could not squash run commits (${message}) — likely already merged; leaving history as-is`);
173
180
  }
174
181
  }
175
- /** After watchPipeline settles: report the final outcome and run stage 13's cleanup if it hasn't already run early. */
182
+ /** After watchPipeline settles: report the final outcome, run stage 13's cleanup if it hasn't already run early, then stage 14's local target-branch sync. */
176
183
  // fallow-ignore-next-line complexity
177
- async function finalizeRun(finalPhase, config, mr, state, repoRoot, untrackedFiles, worktreePath, targetBranch, intent) {
184
+ async function finalizeRun(finalPhase, forge, config, mr, state, repoRoot, untrackedFiles, worktreePath, targetBranch, intent) {
178
185
  if (finalPhase === 'done') {
179
186
  await maybeSquashCommits(config, worktreePath, state.branch, targetBranch, intent);
180
- const detail = state.pipelineId !== undefined ? `MR ${mr.webUrl} passed CI` : `MR ${mr.webUrl} opened — no CI pipeline found, nothing to watch`;
181
- step('🎉', 'Done', detail);
182
187
  if (config.cleanupOnSuccess) {
183
- // Only run stage 13 here when it hasn't already run early, above —
184
- // no skip announcement needed in that case, since it did run, just
185
- // sooner than usual, not never.
188
+ // Only run the cleanup step here when it hasn't already run early,
189
+ // above — no skip announcement needed in that case, since it did run,
190
+ // just sooner than usual, not never.
186
191
  if (!config.cleanupEarly) {
187
- await runStep(13, '🧹', 'Cleaning up your repo', `reset to HEAD — your changes are now safely on ${state.branch}`, () => resetRepo(repoRoot, untrackedFiles));
192
+ await runStep('cleanup', `reset to HEAD — your changes are now safely on ${state.branch}`, () => resetRepo(repoRoot, untrackedFiles));
188
193
  }
189
194
  }
190
195
  else {
191
- skipStep(13, '🧹', 'Cleaning up your repo', 'config.cleanupOnSuccess is disabled — leaving your changes on the local repo for you to inspect');
196
+ skipStep('cleanup', 'config.cleanupOnSuccess is disabled — leaving your changes on the local repo for you to inspect');
192
197
  }
198
+ // After cleanup on purpose: with cleanupOnSuccess on, the working tree is
199
+ // clean by now, so the fast-forward can't collide with leftover local edits.
200
+ await maybeSyncTargetBranch(forge, config, repoRoot, targetBranch, mr.iid);
201
+ const detail = state.pipelineId !== undefined ? `MR ${mr.webUrl} passed CI` : `MR ${mr.webUrl} opened — no CI pipeline found, nothing to watch`;
202
+ endRun('done', detail);
193
203
  }
194
204
  else if (finalPhase === 'escalated') {
195
- step('🚨', 'Stopped for human review', `see ${mr.webUrl} for what was tried and why`);
205
+ endRun('escalated', `see ${mr.webUrl} for what was tried and why`);
196
206
  process.exitCode = 1;
197
207
  }
198
208
  }
@@ -210,17 +220,28 @@ export async function runWorkflow(repoRoot, options = {}) {
210
220
  const forge = createForge(config);
211
221
  const agent = selectAgent(config);
212
222
  await printWelcome(config, repoRoot);
223
+ // The skeleton needs the target branch for its sync/merge details, so
224
+ // read it before the first step renders (both are read-only).
225
+ const targetBranch = await currentBranch(repoRoot);
226
+ beginRun(freshRunSkeleton(targetBranch, config.agent), { title: basename(repoRoot) });
213
227
  const diff = await captureRunDiff(repoRoot);
214
- if (!diff)
228
+ if (!diff) {
229
+ endRun('done', 'no changes to process — your working tree is clean');
215
230
  return;
231
+ }
216
232
  const { diffText, changedFiles, untrackedFiles } = diff;
217
- const targetBranch = await currentBranch(repoRoot);
218
233
  const tempBranch = generateTempBranchName();
219
- const worktreePath = await runStep(2, '🌳', 'Creating worktree', `create worktree with name ${tempBranch}`, () => createWorktree(repoRoot, tempBranch));
234
+ const worktreePath = await runStep('worktree', `create worktree with name ${tempBranch}`, () => createWorktree(repoRoot, tempBranch));
235
+ // The uuid tail of the temp branch, shortened, doubles as the header's
236
+ // worktree identifier (the mock's 'worktree a91f').
237
+ setRunHeader({ worktreeShortId: tempBranch.slice(-4) });
220
238
  let state = { branch: tempBranch, targetBranch, worktreePath, ciFixAttempt: 0, conflictAttempt: 0, phase: 'diff' };
221
239
  recordEvent(repoRoot, state, `Created worktree at ${worktreePath} (temp branch ${tempBranch})`);
222
240
  const { cleanup, markDone } = makeIdempotentCleanup(() => removeWorktree(repoRoot, worktreePath));
223
241
  registerExitSignals((exitCode) => {
242
+ // Settle the run display first so the terminal is left readable (and,
243
+ // under the live TTY renderer, the cursor is restored).
244
+ endRun('interrupted', shouldPreserveWorktreeOnInterrupt(state.phase) ? `resume with: pipeline-worker resume --branch ${state.branch}` : undefined);
224
245
  // process.exit() below terminates immediately without unwinding the
225
246
  // suspended runWorkflow() call stack, so the outer `finally { releaseLock() }`
226
247
  // never runs — release it explicitly here first in both branches.
@@ -239,10 +260,10 @@ export async function runWorkflow(repoRoot, options = {}) {
239
260
  });
240
261
  });
241
262
  try {
242
- await applyCapturedDiff(agent, repoRoot, worktreePath, targetBranch, diffText, untrackedFiles);
243
- const { intent, actualBranchName } = await captureIntentAndBranch(agent, config, options, worktreePath, changedFiles, untrackedFiles);
263
+ await applyCapturedDiff(agent, repoRoot, state, worktreePath, targetBranch, diffText, untrackedFiles);
264
+ const { intent, intentTokens, actualBranchName } = await captureIntentAndBranch(agent, config, options, worktreePath, changedFiles, untrackedFiles);
244
265
  state = { ...state, branch: actualBranchName, phase: 'intent' };
245
- recordEvent(repoRoot, state, `Captured intent; renamed to feature branch ${actualBranchName}`);
266
+ recordEvent(repoRoot, state, `Captured intent; renamed to feature branch ${actualBranchName}`, 'info', intentTokens);
246
267
  const checks = await runAndReportChecks(config, worktreePath, state, repoRoot);
247
268
  if (!checks)
248
269
  return;
@@ -257,11 +278,12 @@ export async function runWorkflow(repoRoot, options = {}) {
257
278
  // boundary so TS uses the declared RunPhase return type instead of the
258
279
  // 'mr' literal it narrowed state.phase to just before the call.
259
280
  const finalPhase = readPhase(state);
260
- await finalizeRun(finalPhase, config, mr, state, repoRoot, untrackedFiles, worktreePath, targetBranch, intent);
281
+ await finalizeRun(finalPhase, forge, config, mr, state, repoRoot, untrackedFiles, worktreePath, targetBranch, intent);
261
282
  }
262
283
  catch (error) {
263
284
  const message = error instanceof Error ? error.message : String(error);
264
285
  recordEvent(repoRoot, state, `Run failed: ${message}`, 'error');
286
+ endRun('failed', message);
265
287
  throw error;
266
288
  }
267
289
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrate.js","sourceRoot":"","sources":["../../src/workflow/orchestrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrate.js","sourceRoot":"","sources":["../../src/workflow/orchestrate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Declares the step skeletons each entry point renders as its run tree —
3
+ * kept out of orchestrate.ts so the control flow stays control flow and the
4
+ * tree shape is one readable literal per entry point.
5
+ *
6
+ * Ids are the contract between skeletons and the workflow code that starts/
7
+ * finishes steps (ui/steps.ts facade). Shared helpers (runAndReportChecks,
8
+ * maybeUpdateChangelog, openMergeRequest, watchPipeline, maybeSyncTargetBranch)
9
+ * reference the ids 'checks', 'changelog', 'push', 'mr', 'ci-watch', and
10
+ * 'merge' — any skeleton whose flow reaches those helpers must declare them.
11
+ */
12
+ import type { StepSeed } from '../ui/runTree.js';
13
+ /** A fresh `pipeline-worker run`: the full capture-to-merge sequence. */
14
+ export declare function freshRunSkeleton(targetBranch: string, agentName: string): StepSeed[];
15
+ /** `pipeline-worker resume` on a run with persisted state: only the watch tail actually executes — faking the earlier steps as done would lie. */
16
+ export declare function resumeSkeleton(targetBranch: string): StepSeed[];
17
+ /** `pipeline-worker resume` adopting a branch with no persisted state: inspect it, open/refresh its MR/PR, then the watch tail. */
18
+ export declare function adoptSkeleton(branch: string): StepSeed[];
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Declares the step skeletons each entry point renders as its run tree —
3
+ * kept out of orchestrate.ts so the control flow stays control flow and the
4
+ * tree shape is one readable literal per entry point.
5
+ *
6
+ * Ids are the contract between skeletons and the workflow code that starts/
7
+ * finishes steps (ui/steps.ts facade). Shared helpers (runAndReportChecks,
8
+ * maybeUpdateChangelog, openMergeRequest, watchPipeline, maybeSyncTargetBranch)
9
+ * reference the ids 'checks', 'changelog', 'push', 'mr', 'ci-watch', and
10
+ * 'merge' — any skeleton whose flow reaches those helpers must declare them.
11
+ */
12
+ /** A fresh `pipeline-worker run`: the full capture-to-merge sequence. */
13
+ export function freshRunSkeleton(targetBranch, agentName) {
14
+ return [
15
+ { id: 'capture', label: 'capture', detail: 'staged + unstaged diff' },
16
+ { id: 'worktree', label: 'worktree', detail: 'disposable copy on a temp branch' },
17
+ { id: 'sync', label: 'sync', detail: `pull --rebase origin ${targetBranch}` },
18
+ { id: 'apply', label: 'apply', detail: 'replay diff into the worktree' },
19
+ { id: 'intent', label: 'intent', detail: `${agentName} infers type · slug · commit message` },
20
+ { id: 'branch', label: 'branch', detail: 'checkout feature branch' },
21
+ { id: 'checks', label: 'checks', detail: 'build · lint · test' },
22
+ { id: 'changelog', label: 'changelog', detail: 'CHANGELOG.md bullet' },
23
+ { id: 'commit', label: 'commit', detail: 'commit the applied changes' },
24
+ { id: 'push', label: 'push', detail: 'push the feature branch to origin' },
25
+ { id: 'mr', label: 'mr', detail: 'open the merge request' },
26
+ { id: 'ci-watch', label: 'ci-watch', detail: 'watch CI · fix failures · resolve conflicts' },
27
+ { id: 'cleanup', label: 'cleanup', detail: 'reset your repo to HEAD' },
28
+ { id: 'merge', label: 'merge', detail: `auto-merge + sync local ${targetBranch}` },
29
+ ];
30
+ }
31
+ /** `pipeline-worker resume` on a run with persisted state: only the watch tail actually executes — faking the earlier steps as done would lie. */
32
+ export function resumeSkeleton(targetBranch) {
33
+ return [
34
+ { id: 'resume', label: 'resume', detail: 'reattach to the persisted run' },
35
+ { id: 'ci-watch', label: 'ci-watch', detail: 'watch CI · fix failures · resolve conflicts' },
36
+ { id: 'merge', label: 'merge', detail: `auto-merge + sync local ${targetBranch}` },
37
+ ];
38
+ }
39
+ /** `pipeline-worker resume` adopting a branch with no persisted state: inspect it, open/refresh its MR/PR, then the watch tail. */
40
+ export function adoptSkeleton(branch) {
41
+ return [
42
+ { id: 'adopt', label: 'adopt', detail: `fetch + checkout origin/${branch}` },
43
+ { id: 'inspect', label: 'inspect', detail: 'diff the branch against its target' },
44
+ { id: 'checks', label: 'checks', detail: 'build · lint · test' },
45
+ { id: 'intent', label: 'intent', detail: 'infer summary · risk · file breakdown' },
46
+ { id: 'changelog', label: 'changelog', detail: 'CHANGELOG.md bullet' },
47
+ { id: 'push', label: 'push', detail: 'push the branch to origin' },
48
+ { id: 'mr', label: 'mr', detail: 'open or refresh the merge request' },
49
+ { id: 'ci-watch', label: 'ci-watch', detail: 'watch CI · fix failures · resolve conflicts' },
50
+ { id: 'merge', label: 'merge', detail: 'auto-merge + sync local target' },
51
+ ];
52
+ }
53
+ //# sourceMappingURL=runPlan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runPlan.js","sourceRoot":"","sources":["../../src/workflow/runPlan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Stage 14 (gated on config.autoMergeOnGreen): once the forge has actually
3
+ * auto-merged the MR/PR, bring the user's own repo up to date — wait for the
4
+ * forge to confirm the merge, give its target-branch ref a few seconds to
5
+ * settle, then fast-forward repoRoot's checked-out target branch from origin
6
+ * so the merged result is already on the user's local main when the run ends.
7
+ *
8
+ * Best-effort by design, like maybeSquashCommits: the run has already
9
+ * succeeded by the time this stage runs, so nothing here may fail it. Every
10
+ * way this can go sideways (auto-merge held up by required approvals, the
11
+ * user switched branches mid-run, a dirty/diverged local target branch that
12
+ * refuses a fast-forward) degrades to a note telling the user to `git pull`
13
+ * themselves.
14
+ */
15
+ import type { ForgeClient } from '../forge/types.js';
16
+ import type { PipelineWorkerConfig } from '../types.js';
17
+ /** All delays in one injectable bundle so tests never wait out real seconds. */
18
+ export interface SyncTiming {
19
+ /** How often to re-ask the forge whether the MR/PR has actually merged. */
20
+ pollMs: number;
21
+ /** Give up waiting for the merge after this long — auto-merge can be held indefinitely by required approvals, and this stage must not hang the run on that. */
22
+ timeoutMs: number;
23
+ /** Grace delay between the forge confirming the merge and fetching, so the freshly written target-branch ref is what the fetch actually sees. */
24
+ settleMs: number;
25
+ }
26
+ export declare const DEFAULT_SYNC_TIMING: SyncTiming;
27
+ export type SyncOutcome = 'updated' | 'merge-timeout' | 'not-on-target-branch';
28
+ /**
29
+ * The stage's actual work, throwing on git failures (a dirty or diverged
30
+ * local target branch makes `merge --ff-only` refuse) — the wrapper below
31
+ * catches those. `--ff-only` is what makes this safe to run against the
32
+ * user's own repo: it can only ever move the branch forward onto what origin
33
+ * already has, never create a merge commit or touch conflicting local work.
34
+ */
35
+ export declare function syncTargetBranchAfterMerge(forge: ForgeClient, repoRoot: string, targetBranch: string, mrIid: number, timing?: SyncTiming): Promise<SyncOutcome>;
36
+ /** Step 'merge': announces the skip when auto-merge is off, otherwise runs the sync and reduces any failure to a low-risk note. */
37
+ export declare function maybeSyncTargetBranch(forge: ForgeClient, config: PipelineWorkerConfig, repoRoot: string, targetBranch: string, mrIid: number, timing?: SyncTiming): Promise<void>;
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Stage 14 (gated on config.autoMergeOnGreen): once the forge has actually
3
+ * auto-merged the MR/PR, bring the user's own repo up to date — wait for the
4
+ * forge to confirm the merge, give its target-branch ref a few seconds to
5
+ * settle, then fast-forward repoRoot's checked-out target branch from origin
6
+ * so the merged result is already on the user's local main when the run ends.
7
+ *
8
+ * Best-effort by design, like maybeSquashCommits: the run has already
9
+ * succeeded by the time this stage runs, so nothing here may fail it. Every
10
+ * way this can go sideways (auto-merge held up by required approvals, the
11
+ * user switched branches mid-run, a dirty/diverged local target branch that
12
+ * refuses a fast-forward) degrades to a note telling the user to `git pull`
13
+ * themselves.
14
+ */
15
+ import { execFile } from 'node:child_process';
16
+ import { promisify } from 'node:util';
17
+ import { currentBranch } from '../git/commit.js';
18
+ import { runStep, skipStep, updateStep, note, noteRisk } from '../ui/steps.js';
19
+ const execFileAsync = promisify(execFile);
20
+ export const DEFAULT_SYNC_TIMING = { pollMs: 3000, timeoutMs: 60000, settleMs: 3000 };
21
+ function sleep(ms) {
22
+ return new Promise((resolve) => setTimeout(resolve, ms));
23
+ }
24
+ /** Polls forge.isMrMerged until it confirms, or timing.timeoutMs elapses (false — the MR/PR never merged within the window). */
25
+ async function waitForMerge(forge, mrIid, timing) {
26
+ const deadline = Date.now() + timing.timeoutMs;
27
+ for (;;) {
28
+ if (await forge.isMrMerged(mrIid))
29
+ return true;
30
+ if (Date.now() + timing.pollMs > deadline)
31
+ return false;
32
+ await sleep(timing.pollMs);
33
+ }
34
+ }
35
+ /**
36
+ * The stage's actual work, throwing on git failures (a dirty or diverged
37
+ * local target branch makes `merge --ff-only` refuse) — the wrapper below
38
+ * catches those. `--ff-only` is what makes this safe to run against the
39
+ * user's own repo: it can only ever move the branch forward onto what origin
40
+ * already has, never create a merge commit or touch conflicting local work.
41
+ */
42
+ export async function syncTargetBranchAfterMerge(forge, repoRoot, targetBranch, mrIid, timing = DEFAULT_SYNC_TIMING) {
43
+ if (!(await waitForMerge(forge, mrIid, timing)))
44
+ return 'merge-timeout';
45
+ await sleep(timing.settleMs);
46
+ if ((await currentBranch(repoRoot)) !== targetBranch)
47
+ return 'not-on-target-branch';
48
+ await execFileAsync('git', ['fetch', 'origin', targetBranch], { cwd: repoRoot });
49
+ await execFileAsync('git', ['merge', '--ff-only', `origin/${targetBranch}`], { cwd: repoRoot });
50
+ return 'updated';
51
+ }
52
+ /** Explains each outcome on the merge step's own row and as a note; every non-'updated' branch ends in "you can still just git pull". */
53
+ function reportOutcome(outcome, targetBranch, timing) {
54
+ if (outcome === 'updated') {
55
+ updateStep('merge', { detail: `merged + local ${targetBranch} synced` });
56
+ note(`local ${targetBranch} now includes the merged MR/PR`);
57
+ }
58
+ else if (outcome === 'merge-timeout') {
59
+ updateStep('merge', { detail: `not merged after ${Math.round(timing.timeoutMs / 1000)}s — git pull ${targetBranch} once it lands` });
60
+ note(`the forge had not merged the MR/PR after ${Math.round(timing.timeoutMs / 1000)}s (required approvals still pending?) — ` +
61
+ `run 'git pull' on ${targetBranch} once it merges`);
62
+ }
63
+ else {
64
+ updateStep('merge', { detail: `repo no longer on ${targetBranch} — git pull it yourself` });
65
+ note(`your repo is no longer on ${targetBranch} — skipped; run 'git pull' on ${targetBranch} yourself`);
66
+ }
67
+ }
68
+ /** Step 'merge': announces the skip when auto-merge is off, otherwise runs the sync and reduces any failure to a low-risk note. */
69
+ export async function maybeSyncTargetBranch(forge, config, repoRoot, targetBranch, mrIid, timing = DEFAULT_SYNC_TIMING) {
70
+ if (!config.autoMergeOnGreen) {
71
+ skipStep('merge', 'config.autoMergeOnGreen is disabled — nothing was merged for this run to pull back');
72
+ return;
73
+ }
74
+ try {
75
+ const outcome = await runStep('merge', `wait for the forge to auto-merge the MR/PR, then fast-forward ${targetBranch} from origin`, () => syncTargetBranchAfterMerge(forge, repoRoot, targetBranch, mrIid, timing));
76
+ reportOutcome(outcome, targetBranch, timing);
77
+ }
78
+ catch (error) {
79
+ const message = error instanceof Error ? error.message : String(error);
80
+ noteRisk('low', `could not fast-forward local ${targetBranch} (${message}) — run 'git pull' there yourself`);
81
+ }
82
+ }
83
+ //# sourceMappingURL=syncTargetBranch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncTargetBranch.js","sourceRoot":"","sources":["../../src/workflow/syncTargetBranch.ts"],"names":[],"mappings":"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"}