@idea1/cli 1.8.2 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/README.md +205 -69
  2. package/dist/cli/resolver.d.ts +1 -0
  3. package/dist/cli/resolver.d.ts.map +1 -1
  4. package/dist/cli/resolver.js +5 -0
  5. package/dist/cli/resolver.js.map +1 -1
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +2 -1
  8. package/dist/cli.js.map +1 -1
  9. package/dist/commands/approve-pr.d.ts.map +1 -1
  10. package/dist/commands/approve-pr.js +24 -41
  11. package/dist/commands/approve-pr.js.map +1 -1
  12. package/dist/commands/attach-project-item.d.ts.map +1 -1
  13. package/dist/commands/attach-project-item.js +27 -7
  14. package/dist/commands/attach-project-item.js.map +1 -1
  15. package/dist/commands/close-worktree.d.ts.map +1 -1
  16. package/dist/commands/close-worktree.js +4 -3
  17. package/dist/commands/close-worktree.js.map +1 -1
  18. package/dist/commands/help.d.ts.map +1 -1
  19. package/dist/commands/help.js +17 -11
  20. package/dist/commands/help.js.map +1 -1
  21. package/dist/commands/index.d.ts +2 -1
  22. package/dist/commands/index.d.ts.map +1 -1
  23. package/dist/commands/index.js +3 -1
  24. package/dist/commands/index.js.map +1 -1
  25. package/dist/commands/integrate.d.ts +13 -0
  26. package/dist/commands/integrate.d.ts.map +1 -0
  27. package/dist/commands/integrate.js +128 -0
  28. package/dist/commands/integrate.js.map +1 -0
  29. package/dist/commands/join-project-item.d.ts.map +1 -1
  30. package/dist/commands/join-project-item.js +22 -48
  31. package/dist/commands/join-project-item.js.map +1 -1
  32. package/dist/commands/next-workflow-step.d.ts.map +1 -1
  33. package/dist/commands/next-workflow-step.js +20 -21
  34. package/dist/commands/next-workflow-step.js.map +1 -1
  35. package/dist/commands/ready-for-approval.d.ts.map +1 -1
  36. package/dist/commands/ready-for-approval.js +27 -19
  37. package/dist/commands/ready-for-approval.js.map +1 -1
  38. package/dist/commands/release.d.ts +6 -0
  39. package/dist/commands/release.d.ts.map +1 -1
  40. package/dist/commands/release.js +189 -25
  41. package/dist/commands/release.js.map +1 -1
  42. package/dist/commands/ship-local-changes.d.ts +8 -0
  43. package/dist/commands/ship-local-changes.d.ts.map +1 -0
  44. package/dist/commands/ship-local-changes.js +34 -0
  45. package/dist/commands/ship-local-changes.js.map +1 -0
  46. package/dist/commands/start-agent-implementation.js +2 -2
  47. package/dist/commands/start-agent-implementation.js.map +1 -1
  48. package/dist/commands/start-dev-implementation.d.ts.map +1 -1
  49. package/dist/commands/start-dev-implementation.js +8 -3
  50. package/dist/commands/start-dev-implementation.js.map +1 -1
  51. package/dist/commands/start-project-item.d.ts +27 -0
  52. package/dist/commands/start-project-item.d.ts.map +1 -0
  53. package/dist/commands/start-project-item.js +325 -0
  54. package/dist/commands/start-project-item.js.map +1 -0
  55. package/dist/commands/start.d.ts +8 -2
  56. package/dist/commands/start.d.ts.map +1 -1
  57. package/dist/commands/start.js +76 -35
  58. package/dist/commands/start.js.map +1 -1
  59. package/dist/index.js +0 -0
  60. package/dist/interactive.d.ts.map +1 -1
  61. package/dist/interactive.js +164 -0
  62. package/dist/interactive.js.map +1 -1
  63. package/dist/jobs/job.d.ts +81 -0
  64. package/dist/jobs/job.d.ts.map +1 -0
  65. package/dist/jobs/job.js +258 -0
  66. package/dist/jobs/job.js.map +1 -0
  67. package/dist/jobs/targets.d.ts +58 -0
  68. package/dist/jobs/targets.d.ts.map +1 -0
  69. package/dist/jobs/targets.js +215 -0
  70. package/dist/jobs/targets.js.map +1 -0
  71. package/dist/lib/claude-options.d.ts +3 -2
  72. package/dist/lib/claude-options.d.ts.map +1 -1
  73. package/dist/lib/claude-options.js +15 -4
  74. package/dist/lib/claude-options.js.map +1 -1
  75. package/dist/lib/logger.d.ts +10 -0
  76. package/dist/lib/logger.d.ts.map +1 -1
  77. package/dist/lib/logger.js +16 -0
  78. package/dist/lib/logger.js.map +1 -1
  79. package/dist/lib/prompt.d.ts +7 -0
  80. package/dist/lib/prompt.d.ts.map +1 -1
  81. package/dist/lib/prompt.js +29 -0
  82. package/dist/lib/prompt.js.map +1 -1
  83. package/dist/lib/settings.d.ts +13 -3
  84. package/dist/lib/settings.d.ts.map +1 -1
  85. package/dist/lib/settings.js +12 -3
  86. package/dist/lib/settings.js.map +1 -1
  87. package/dist/lib/shell.d.ts +2 -1
  88. package/dist/lib/shell.d.ts.map +1 -1
  89. package/dist/lib/shell.js +17 -1
  90. package/dist/lib/shell.js.map +1 -1
  91. package/dist/services/git.d.ts +41 -13
  92. package/dist/services/git.d.ts.map +1 -1
  93. package/dist/services/git.js +85 -46
  94. package/dist/services/git.js.map +1 -1
  95. package/dist/services/github.d.ts +28 -0
  96. package/dist/services/github.d.ts.map +1 -1
  97. package/dist/services/github.js +82 -3
  98. package/dist/services/github.js.map +1 -1
  99. package/dist/services/setup.d.ts +4 -2
  100. package/dist/services/setup.d.ts.map +1 -1
  101. package/dist/services/setup.js +61 -37
  102. package/dist/services/setup.js.map +1 -1
  103. package/dist/services/workflow.d.ts +17 -0
  104. package/dist/services/workflow.d.ts.map +1 -0
  105. package/dist/services/workflow.js +39 -0
  106. package/dist/services/workflow.js.map +1 -0
  107. package/dist/services/worktree.js +1 -1
  108. package/dist/services/worktree.js.map +1 -1
  109. package/dist/types/index.d.ts +25 -24
  110. package/dist/types/index.d.ts.map +1 -1
  111. package/dist/version.d.ts +2 -1
  112. package/dist/version.d.ts.map +1 -1
  113. package/dist/version.js +3 -2
  114. package/dist/version.js.map +1 -1
  115. package/dist/workflow/engine/approval-flow.d.ts +10 -2
  116. package/dist/workflow/engine/approval-flow.d.ts.map +1 -1
  117. package/dist/workflow/engine/approval-flow.js +58 -9
  118. package/dist/workflow/engine/approval-flow.js.map +1 -1
  119. package/dist/workflow/engine/handlers/agent-implementation.d.ts.map +1 -1
  120. package/dist/workflow/engine/handlers/agent-implementation.js +4 -11
  121. package/dist/workflow/engine/handlers/agent-implementation.js.map +1 -1
  122. package/dist/workflow/engine/handlers/approve-pr.d.ts.map +1 -1
  123. package/dist/workflow/engine/handlers/approve-pr.js +9 -3
  124. package/dist/workflow/engine/handlers/approve-pr.js.map +1 -1
  125. package/dist/workflow/engine/handlers/dev-implementation.d.ts +2 -2
  126. package/dist/workflow/engine/handlers/dev-implementation.d.ts.map +1 -1
  127. package/dist/workflow/engine/handlers/dev-implementation.js +13 -7
  128. package/dist/workflow/engine/handlers/dev-implementation.js.map +1 -1
  129. package/dist/workflow/engine/handlers/ready-for-approval.d.ts +5 -0
  130. package/dist/workflow/engine/handlers/ready-for-approval.d.ts.map +1 -1
  131. package/dist/workflow/engine/handlers/ready-for-approval.js +11 -7
  132. package/dist/workflow/engine/handlers/ready-for-approval.js.map +1 -1
  133. package/dist/workflow/engine/{release-flow.d.ts → release-engine.d.ts} +83 -6
  134. package/dist/workflow/engine/release-engine.d.ts.map +1 -0
  135. package/dist/workflow/engine/{release-flow.js → release-engine.js} +291 -19
  136. package/dist/workflow/engine/release-engine.js.map +1 -0
  137. package/dist/workflow/engine/ship-flow.d.ts +87 -0
  138. package/dist/workflow/engine/ship-flow.d.ts.map +1 -0
  139. package/dist/workflow/engine/ship-flow.js +221 -0
  140. package/dist/workflow/engine/ship-flow.js.map +1 -0
  141. package/dist/workflow/engine/workflow-engine.d.ts +85 -15
  142. package/dist/workflow/engine/workflow-engine.d.ts.map +1 -1
  143. package/dist/workflow/engine/workflow-engine.js +195 -66
  144. package/dist/workflow/engine/workflow-engine.js.map +1 -1
  145. package/package.json +3 -3
  146. package/dist/workflow/engine/release-flow.d.ts.map +0 -1
  147. package/dist/workflow/engine/release-flow.js.map +0 -1
@@ -1,4 +1,7 @@
1
+ import { existsSync, readFileSync, writeFileSync } from 'fs';
2
+ import { join } from 'path';
1
3
  import { logger } from '../../lib/logger.js';
4
+ import { readReleaseSettings } from '../../lib/settings.js';
2
5
  import { exec, execOrThrow } from '../../lib/shell.js';
3
6
  import { promptConfirm, promptInput } from '../../lib/prompt.js';
4
7
  import * as git from '../../services/git.js';
@@ -8,7 +11,8 @@ export const CHANGE_KIND = { commandName: 'idea1 ready-for-approval', label: 'Ch
8
11
  /**
9
12
  * The `--pr-mode` option of `idea1 release`. `create` is the default: the PR is opened and the
10
13
  * approver merges it in GitHub once the required checks are green - that merge is the approval of
11
- * record, exactly as in `merge` mode, where the CLI waits for the checks and merges here.
14
+ * record, exactly as in `merge` mode, where the CLI turns on GitHub's auto-merge on the approver's
15
+ * behalf (or, where GitHub can't auto-merge, waits for the checks and merges here).
12
16
  */
13
17
  export const PR_MODE_OPTION = {
14
18
  longName: 'pr-mode',
@@ -18,7 +22,7 @@ export const PR_MODE_OPTION = {
18
22
  promptWhenDefaultExists: true,
19
23
  choices: [
20
24
  { label: 'create - Create the PR and open it in the browser; merge it there once the required checks pass', value: 'create' },
21
- { label: 'merge - Wait for every required check with gh, then merge here', value: 'merge' }
25
+ { label: 'merge - Enable auto-merge so GitHub merges once the required checks pass (or wait for the checks with gh and merge here)', value: 'merge' }
22
26
  ]
23
27
  };
24
28
  /** The first line of the comment that records an admin override; the evidence script keys on it. */
@@ -30,6 +34,13 @@ export const OVERRIDE_COMMENT_MARKER = '**Change-management exception: merged wi
30
34
  * the two separately.
31
35
  */
32
36
  export const UNAPPROVED_COMMITS_COMMENT_MARKER = '**Change-management exception: released with commits that had no pull request.**';
37
+ /**
38
+ * The first line of the comment that records a release approved in the Idea1 web app. A web merge,
39
+ * or a web-enabled auto-merge, is performed by the Idea1 GitHub App, so GitHub records the app as
40
+ * `merged_by`; the platform posts this comment, naming the approver, before the merge happens, and
41
+ * the evidence script keys on it to attribute the merge to that approver.
42
+ */
43
+ export const RELEASE_APPROVAL_COMMENT_MARKER = '**Change-management approval: release approved in Idea1.**';
33
44
  /**
34
45
  * The local checkout must be the source branch, clean, fully pushed and level with origin, so the
35
46
  * PR carries exactly what the person running the command is looking at.
@@ -72,6 +83,185 @@ export async function validateSourceBranch(sourceBranch) {
72
83
  logger.success('Local branch matches remote');
73
84
  logger.newline();
74
85
  }
86
+ export const VERSION_BUMP_TYPES = ['patch', 'minor', 'major'];
87
+ /** The subject prefix of the commit a version bump makes, which both the CLI and the platform write. */
88
+ const VERSION_BUMP_SUBJECT_PREFIX = 'chore: bump ';
89
+ /** The tree of `path` at `origin/<branch>`, or null when the branch has no such path. */
90
+ async function readRemoteTreeSha(branch, path) {
91
+ const result = await exec('git', ['rev-parse', '--verify', '--quiet', `origin/${branch}:${path}`]);
92
+ return result.exitCode === 0 ? result.stdout.trim() : null;
93
+ }
94
+ /** The `version` of `<path>/package.json` at `origin/<branch>`, or null when it has none. */
95
+ async function readRemotePackageVersion(branch, path) {
96
+ const result = await exec('git', ['show', `origin/${branch}:${path}/package.json`]);
97
+ if (result.exitCode !== 0) {
98
+ return null;
99
+ }
100
+ return JSON.parse(result.stdout).version ?? null;
101
+ }
102
+ /**
103
+ * The versioned packages the release still has to bump, read from origin's branches as last
104
+ * fetched. A package needs a bump when its folder changed between the target and the release
105
+ * branch and its package.json version is still the same on both - a version that already differs
106
+ * was bumped for this release, so re-running a release never bumps twice. The Idea1 web app applies
107
+ * the same rule.
108
+ *
109
+ * `incomingBranches` are branches about to merge into the release branch before it is released:
110
+ * a package they change is counted as changed, so a release that approves them first can ask for
111
+ * every bump it will need before any of them merges.
112
+ */
113
+ export async function detectPendingVersionBumps(packages, releaseBranch, targetBranch, incomingBranches) {
114
+ const pending = [];
115
+ for (const pkg of packages) {
116
+ const targetTree = await readRemoteTreeSha(targetBranch, pkg.path);
117
+ let changed = false;
118
+ for (const branch of [releaseBranch, ...incomingBranches]) {
119
+ if (await readRemoteTreeSha(branch, pkg.path) !== targetTree) {
120
+ changed = true;
121
+ break;
122
+ }
123
+ }
124
+ if (!changed) {
125
+ continue;
126
+ }
127
+ const releaseVersion = await readRemotePackageVersion(releaseBranch, pkg.path);
128
+ const targetVersion = await readRemotePackageVersion(targetBranch, pkg.path);
129
+ if (releaseVersion === null || releaseVersion !== targetVersion) {
130
+ continue;
131
+ }
132
+ pending.push({ ...pkg, currentVersion: releaseVersion });
133
+ }
134
+ return pending;
135
+ }
136
+ /** The version a bump of `type` moves `current` to; only plain `major.minor.patch` versions are bumped. */
137
+ function nextVersion(current, type) {
138
+ const match = /^(\d+)\.(\d+)\.(\d+)$/.exec(current);
139
+ if (!match) {
140
+ throw new Error(`Cannot bump version '${current}': only plain major.minor.patch versions are bumped automatically. Bump it by hand.`);
141
+ }
142
+ const [major, minor, patch] = match.slice(1).map(Number);
143
+ switch (type) {
144
+ case 'major': return `${major + 1}.0.0`;
145
+ case 'minor': return `${major}.${minor + 1}.0`;
146
+ default: return `${major}.${minor}.${patch + 1}`;
147
+ }
148
+ }
149
+ function escapeRegExp(value) {
150
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
151
+ }
152
+ /** The `version` of the root object of `json`, or of the lockfile `packages` entry under `entryKey`. */
153
+ function readVersion(json, entryKey) {
154
+ const root = JSON.parse(json);
155
+ const version = entryKey === null ? root.version : root.packages?.[entryKey]?.version;
156
+ return typeof version === 'string' ? version : null;
157
+ }
158
+ /**
159
+ * The JSON text with the `version` of one object replaced, and everything else byte for byte as it was.
160
+ *
161
+ * With a null `entryKey` the object is the document's root (a `package.json`, or a lockfile's own
162
+ * header); otherwise it is the object under that key (a lockfile's `packages` entry, where the empty
163
+ * key is the lockfile's root package). The `version` is the object's own property, found by its
164
+ * indentation, never one nested deeper such as a dependency's. Returns null when the object is not in
165
+ * the text or has no `version`, and throws when the edited text does not read back as the new version.
166
+ * The platform's `ReleaseEngine.SetVersion` makes the same edit.
167
+ */
168
+ function setVersion(json, path, entryKey, version) {
169
+ let regionStart = 0;
170
+ let regionEnd = json.length;
171
+ if (entryKey !== null) {
172
+ const entry = new RegExp(`^([ \\t]*)"${escapeRegExp(entryKey)}"[ \\t]*:[ \\t]*\\{[ \\t]*\\r?$`, 'm').exec(json);
173
+ if (!entry) {
174
+ return null;
175
+ }
176
+ regionStart = entry.index + entry[0].length;
177
+ const close = new RegExp(`^${escapeRegExp(entry[1])}\\}`, 'm').exec(json.slice(regionStart));
178
+ regionEnd = close ? regionStart + close.index : json.length;
179
+ }
180
+ const region = json.slice(regionStart, regionEnd);
181
+ const firstProperty = /^([ \t]+)"/m.exec(region);
182
+ if (!firstProperty) {
183
+ return null;
184
+ }
185
+ const property = new RegExp(`^${escapeRegExp(firstProperty[1])}"version"[ \\t]*:[ \\t]*"([^"\\r\\n]*)"`, 'dm').exec(region);
186
+ if (!property?.indices) {
187
+ return null;
188
+ }
189
+ const [valueStart, valueEnd] = property.indices[1];
190
+ const edited = json.slice(0, regionStart + valueStart) + version + json.slice(regionStart + valueEnd);
191
+ if (readVersion(edited, entryKey) !== version) {
192
+ throw new Error(`Could not update the version in ${path}: it is not formatted the way npm writes it.`);
193
+ }
194
+ return edited;
195
+ }
196
+ /**
197
+ * Move one package to `version` in the working tree: its `package.json`, and each lockfile at or
198
+ * above its folder that records it. Returns the repo-relative paths of the files that changed.
199
+ *
200
+ * A lockfile in the package's own folder records the package as its root; a workspace root's
201
+ * lockfile records it as the entry for its path relative to the lockfile. These are the files
202
+ * `npm version` would touch, edited in place so nothing else in them changes.
203
+ */
204
+ function writeVersionFiles(repoRoot, pkg, version) {
205
+ const changed = [];
206
+ const edit = (path, entryKeys) => {
207
+ const original = readFileSync(join(repoRoot, path), 'utf-8');
208
+ const content = entryKeys.reduce((current, entryKey) => setVersion(current, path, entryKey, version) ?? current, original);
209
+ if (content !== original) {
210
+ writeFileSync(join(repoRoot, path), content);
211
+ changed.push(path);
212
+ }
213
+ };
214
+ edit(`${pkg.path}/package.json`, [null]);
215
+ for (const directory of ancestorDirectories(pkg.path)) {
216
+ const lockfile = lockfilePath(directory);
217
+ if (existsSync(join(repoRoot, lockfile))) {
218
+ const relativePath = pkg.path.slice(directory.length).replace(/^\//, '');
219
+ edit(lockfile, relativePath === '' ? [null, ''] : [relativePath]);
220
+ }
221
+ }
222
+ return changed;
223
+ }
224
+ /** A folder and each folder above it, ending with the repository root (the empty path). */
225
+ function ancestorDirectories(directory) {
226
+ const directories = [];
227
+ for (let current = directory; current !== ''; current = current.includes('/') ? current.slice(0, current.lastIndexOf('/')) : '') {
228
+ directories.push(current);
229
+ }
230
+ return [...directories, ''];
231
+ }
232
+ const lockfilePath = (directory) => directory === '' ? 'package-lock.json' : `${directory}/package-lock.json`;
233
+ /**
234
+ * The version files of the declared packages: each package's `package.json` and the lockfiles at or
235
+ * above its folder, the files a version bump edits. The platform's `ReleaseEngine` applies the same set.
236
+ */
237
+ function versionFilePaths(packages) {
238
+ return new Set(packages.flatMap(pkg => [`${pkg.path}/package.json`, ...ancestorDirectories(pkg.path).map(lockfilePath)]));
239
+ }
240
+ /**
241
+ * Bump the versions of the pending packages in one commit on the release branch and push it, so
242
+ * the release PR opens against a branch that already carries them. The commit is `chore: bump
243
+ * <package> <version>, ...` and is made as whoever runs the command.
244
+ */
245
+ export async function commitVersionBumps(options) {
246
+ const { releaseBranch, pending, bumps } = options;
247
+ const repoRoot = await git.getRepoRoot();
248
+ const missing = pending.filter(pkg => !(pkg.name in bumps)).map(pkg => pkg.label);
249
+ if (missing.length > 0) {
250
+ throw new Error(`Choose a version bump for: ${missing.join(', ')}.`);
251
+ }
252
+ const changedFiles = [];
253
+ const summary = [];
254
+ for (const pkg of pending) {
255
+ const version = nextVersion(pkg.currentVersion, bumps[pkg.name]);
256
+ changedFiles.push(...writeVersionFiles(repoRoot, pkg, version));
257
+ summary.push(`${pkg.name} ${version}`);
258
+ }
259
+ logger.status(`Committing the version bump to ${releaseBranch} (${summary.join(', ')})...`);
260
+ await execOrThrow('git', ['add', '--', ...changedFiles]);
261
+ await execOrThrow('git', ['commit', '-m', `${VERSION_BUMP_SUBJECT_PREFIX}${summary.join(', ')}`]);
262
+ await git.pushToRemote(releaseBranch);
263
+ logger.success('Versions bumped');
264
+ }
75
265
  /**
76
266
  * The commits that landed on the source branch since the target last caught up, first-parent
77
267
  * only: one merge commit per merge-commit PR, one squash commit per squash PR, the rebased commits
@@ -102,13 +292,19 @@ function escapeTableCell(value) {
102
292
  return value.replace(/\\/g, '\\\\').replace(/\|/g, '\\|');
103
293
  }
104
294
  /**
105
- * The version bump the `pre-release` hook commits straight onto the release branch just before the
106
- * release PR is opened (release-version-bump.sh, wired up as `pre-release` in .idea1/settings.json).
107
- * It is release automation rather than a change: it has no pull request by design, so counting it
108
- * as an unapproved commit would refuse every release that bumps a version.
295
+ * Whether a commit only changes version files, which a release may commit straight onto the release
296
+ * branch with no pull request, whoever made it (`idea1 release` or the Idea1 web app). Such a commit
297
+ * is release automation rather than a change: counting it as an unapproved commit would refuse every
298
+ * release that bumps a version. A commit that touches any other file is not exempt, whatever it is
299
+ * called. The platform's `ReleaseEngine.ChangesOnlyVersionFilesAsync` applies the same rule.
109
300
  */
110
- function isReleaseVersionBump(commit) {
111
- return commit.author === 'github-actions[bot]' && commit.subject.startsWith('chore: bump ');
301
+ async function changesOnlyVersionFiles(commit, versionFiles) {
302
+ if (versionFiles.size === 0) {
303
+ return false;
304
+ }
305
+ const result = await exec('git', ['diff-tree', '--no-commit-id', '--name-only', '-r', commit.sha]);
306
+ const changedFiles = result.stdout.split('\n').filter(file => file.trim().length > 0);
307
+ return result.exitCode === 0 && changedFiles.length > 0 && changedFiles.every(file => versionFiles.has(file));
112
308
  }
113
309
  /**
114
310
  * The refusal, and the one way past it. A release whose commits never went through a pull request
@@ -177,6 +373,7 @@ export async function buildApprovalChain(sourceBranch, targetBranch, kind) {
177
373
  if (commits.length === 0) {
178
374
  throw new Error(`Nothing to ${kind.label.toLowerCase()}: origin/${targetBranch} already contains everything on origin/${sourceBranch}.`);
179
375
  }
376
+ const versionFiles = versionFilePaths((await readReleaseSettings(await git.getRepoRoot())).versionedPackages);
180
377
  logger.step(`Attributing ${commits.length} commit(s) on ${sourceBranch} to their pull requests...`);
181
378
  const prNumbers = new Set();
182
379
  const versionBumps = [];
@@ -190,13 +387,13 @@ export async function buildApprovalChain(sourceBranch, targetBranch, kind) {
190
387
  }
191
388
  continue;
192
389
  }
193
- if (isReleaseVersionBump(commit)) {
390
+ if (await changesOnlyVersionFiles(commit, versionFiles)) {
194
391
  versionBumps.push(commit);
195
392
  continue;
196
393
  }
197
394
  unapprovedCommits.push(commit);
198
395
  }
199
- // A release of nothing but the pre-release version bump is a release of release automation:
396
+ // A release of nothing but the version bump is a release of release automation:
200
397
  // there is no unapproved change in it, so there is nothing to refuse. A change PR is never
201
398
  // refused over direct commits: they are what its assignee reviews.
202
399
  const exception = !kind.assigneeReviewsCommits && prNumbers.size === 0 && unapprovedCommits.length > 0
@@ -246,9 +443,9 @@ export async function buildApprovalChain(sourceBranch, targetBranch, kind) {
246
443
  lines.push('');
247
444
  lines.push('## Version bumps (release automation)');
248
445
  lines.push('');
249
- lines.push(`The commits below were made by the \`pre-release\` hook and pushed to \`${sourceBranch}\` as part`);
250
- lines.push('of cutting this release. They carry no change of their own, so they have no pull request');
251
- lines.push('and are not an exception under change-management-policy.md clause 2.');
446
+ lines.push(`The commits below were pushed to \`${sourceBranch}\` as part of cutting this release (\`idea1 release\` or the Idea1 web app).`);
447
+ lines.push('They only change version files (the `package.json` and lockfiles of the versioned packages), so they carry no');
448
+ lines.push('change of their own, have no pull request, and are not an exception under change-management-policy.md clause 2.');
252
449
  lines.push('');
253
450
  lines.push('| Commit | Author | Subject |');
254
451
  lines.push('|---|---|---|');
@@ -294,7 +491,7 @@ export async function buildApprovalChain(sourceBranch, targetBranch, kind) {
294
491
  export async function createGatedPr(options) {
295
492
  await github.ensureGitHubCli();
296
493
  const chain = await buildApprovalChain(options.sourceBranch, options.targetBranch, options.kind);
297
- logger.step(`Creating pull request (assigned to @${options.assignee})...`);
494
+ logger.status(`Creating pull request (assigned to @${options.assignee})...`);
298
495
  const prUrl = await github.createPr({
299
496
  sourceBranch: options.sourceBranch,
300
497
  targetBranch: options.targetBranch,
@@ -393,6 +590,33 @@ export async function mergeWithCheckGate(branchName, kind) {
393
590
  }
394
591
  logger.success('Exception recorded on the PR');
395
592
  }
593
+ /**
594
+ * GitHub's answers to an auto-merge request that mean auto-merge is not the way to merge this PR:
595
+ * it is already mergeable (nothing left to gate on), the repository doesn't allow auto-merge, or
596
+ * the base branch has no protection for auto-merge to wait on.
597
+ */
598
+ const AUTO_MERGE_UNAVAILABLE = /\b(clean|unstable) status\b|auto.?merge is not allowed|protected branch rules not configured/i;
599
+ /**
600
+ * Merge the PR the way that records the person running this as `merged_by`, without them having to
601
+ * wait: GitHub's auto-merge, which merges once the required checks pass. Where GitHub can't
602
+ * auto-merge (the PR is already mergeable, or the repository doesn't allow auto-merge), it falls
603
+ * back to waiting for the checks here and merging (`mergeWithCheckGate`, with its admin-override
604
+ * path). Any other refusal throws.
605
+ */
606
+ export async function enableAutoMergeOrPoll(branchName, kind) {
607
+ const result = await github.enablePrAutoMerge(branchName);
608
+ if (result.success) {
609
+ logger.success('Auto-merge enabled: GitHub merges the PR once the required checks pass, recording you as the merger.');
610
+ return 'auto-merge-enabled';
611
+ }
612
+ const error = result.error ?? '';
613
+ if (!AUTO_MERGE_UNAVAILABLE.test(error)) {
614
+ throw new Error(`Could not enable auto-merge on the PR for ${branchName}: ${error}`);
615
+ }
616
+ logger.dim(`GitHub can't auto-merge this PR (${error.split('\n')[0]}) - waiting for the checks and merging here instead.`);
617
+ await mergeWithCheckGate(branchName, kind);
618
+ return 'merged';
619
+ }
396
620
  /**
397
621
  * Open URL in browser (cross-platform)
398
622
  */
@@ -420,7 +644,9 @@ async function openGitHubActions() {
420
644
  /**
421
645
  * Finish the sequence in the chosen mode. Either way the merge is the approval of record: in
422
646
  * `create` mode the approver performs it in GitHub once the checks are green; in `merge` mode the
423
- * CLI waits for the checks and performs it here, as the approver.
647
+ * CLI turns on GitHub's auto-merge as the approver, so GitHub merges once the checks pass and
648
+ * records the approver as the merger - or, where GitHub can't auto-merge, waits for the checks and
649
+ * merges here.
424
650
  */
425
651
  export async function runPrMode(options) {
426
652
  const { mode, sourceBranch, targetBranch, prUrl, kind } = options;
@@ -436,15 +662,25 @@ export async function runPrMode(options) {
436
662
  return;
437
663
  }
438
664
  await confirmApproverIdentity(sourceBranch);
439
- const confirmMerge = await promptConfirm(`Merge ${noun} (${sourceBranch} -> ${targetBranch}) once the required checks pass?`, { default: true });
665
+ const confirmMerge = options.confirmed || await promptConfirm(`Merge ${noun} (${sourceBranch} -> ${targetBranch}) once the required checks pass?`, { default: true });
440
666
  if (!confirmMerge) {
441
667
  logger.info(`Merge cancelled. The ${noun} is created and can be merged from GitHub instead.`);
442
668
  logger.hint(`PR: ${prUrl}`);
443
669
  return;
444
670
  }
445
- await mergeWithCheckGate(sourceBranch, kind);
671
+ const outcome = await enableAutoMergeOrPoll(sourceBranch, kind);
446
672
  logger.newline();
447
- if (options.openActionsAfterMerge) {
673
+ await reportMergeOutcome(outcome, kind, targetBranch, prUrl, options.openActionsAfterMerge);
674
+ }
675
+ async function reportMergeOutcome(outcome, kind, targetBranch, prUrl, openActionsAfterMerge) {
676
+ if (outcome === 'auto-merge-enabled') {
677
+ logger.success('================================================');
678
+ logger.success(`${kind.label} PR will merge to ${targetBranch} once the required checks pass`);
679
+ logger.success('================================================');
680
+ logger.hint(`Follow it on the PR: ${prUrl}`);
681
+ return;
682
+ }
683
+ if (openActionsAfterMerge) {
448
684
  await openGitHubActions();
449
685
  logger.newline();
450
686
  }
@@ -452,4 +688,40 @@ export async function runPrMode(options) {
452
688
  logger.success(`${kind.label} merge to ${targetBranch} complete!`);
453
689
  logger.success('========================================');
454
690
  }
455
- //# sourceMappingURL=release-flow.js.map
691
+ /**
692
+ * `idea1 release --approve`: approve and merge the open release PR from the source branch into the
693
+ * target, as its approver. With every check passed it merges now; with checks still running it
694
+ * turns on auto-merge (or waits and merges where GitHub can't auto-merge); with a failed check it
695
+ * goes to the gate's admin-override path, which refuses unless the override is confirmed, reasoned
696
+ * and recorded.
697
+ */
698
+ export async function approveRelease(sourceBranch, targetBranch) {
699
+ const pr = await github.checkPrExists(sourceBranch, targetBranch);
700
+ if (!pr) {
701
+ throw new Error(`There is no open release PR from ${sourceBranch} into ${targetBranch}. Run idea1 release to open one.`);
702
+ }
703
+ logger.info(`Release PR #${pr.number}: ${pr.url}`);
704
+ await confirmApproverIdentity(sourceBranch);
705
+ const checkState = await github.getPrCheckState(sourceBranch);
706
+ logger.info(`Checks: ${checkState}`);
707
+ let outcome;
708
+ if (checkState === 'passed') {
709
+ const result = await github.mergePr(sourceBranch);
710
+ if (!result.success) {
711
+ throw new Error(`Failed to merge PR: ${result.error}`);
712
+ }
713
+ outcome = 'merged';
714
+ }
715
+ else if (checkState === 'pending') {
716
+ outcome = await enableAutoMergeOrPoll(sourceBranch, RELEASE_KIND);
717
+ }
718
+ else {
719
+ // Failed checks reach the gate's admin-override path; checks not reported yet are waited for
720
+ // there, and a repository with no CI/CD at all merges straight through it.
721
+ await mergeWithCheckGate(sourceBranch, RELEASE_KIND);
722
+ outcome = 'merged';
723
+ }
724
+ logger.newline();
725
+ await reportMergeOutcome(outcome, RELEASE_KIND, targetBranch, pr.url, true);
726
+ }
727
+ //# sourceMappingURL=release-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-engine.js","sourceRoot":"","sources":["../../../src/workflow/engine/release-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import type { CommandOption } from '../../types/index.js';
2
+ import { type WorkflowTransition } from './workflow-engine.js';
3
+ /**
4
+ * Shipping work that exists before its project item's branch does. Uncommitted changes in a
5
+ * checkout of the branch an item's branch is cut from (the base branch, `working/release` by
6
+ * default) are carried onto the item's branch: committed and pushed there, never on the base
7
+ * branch, and checked out per the isolation mode. The item can then be advanced through every
8
+ * workflow state up to Approved and Merged with nothing asked on the way: no Claude session is
9
+ * started, the PR is opened and assigned to the person running the command (who, by merging it, is
10
+ * the approver of record), and it merges once the required checks pass - the same gate as every
11
+ * other stage-1 merge.
12
+ *
13
+ * Changes are carried only onto a branch with no work of its own: one created for them, or a live
14
+ * branch that still matches the branch it is cut from.
15
+ */
16
+ export declare const carryLocalChangesOption: CommandOption;
17
+ export declare const approveAndMergeOption: CommandOption;
18
+ /**
19
+ * Whether the resolved options carry local changes. Reads a flag, so options that depend on it are
20
+ * declared after `carryLocalChangesOption`.
21
+ */
22
+ export declare function carriesLocalChanges(resolved: Record<string, string>): boolean;
23
+ /**
24
+ * Whether the resolved options approve and merge the item's PR.
25
+ */
26
+ export declare function approvesAndMerges(resolved: Record<string, string>): boolean;
27
+ /**
28
+ * The branch creation options alongside carrying: carried changes go onto an independent branch,
29
+ * so the workflow type is asked only when nothing is carried.
30
+ */
31
+ export declare const branchCreationOptionsWithCarrying: CommandOption[];
32
+ export declare const commitMessageOption: CommandOption;
33
+ /**
34
+ * Reviewers requested on the PR when the item is approved and merged. Never asked: the PR's
35
+ * assignee approves it.
36
+ */
37
+ export declare const unpromptedReviewersOption: CommandOption;
38
+ /**
39
+ * The options that apply once changes are carried or the item is approved and merged. Declared
40
+ * after the two flags, which they depend on.
41
+ */
42
+ export declare const shipOptions: CommandOption[];
43
+ /**
44
+ * Uncommitted changes in the checkout of the branch an item's branch is cut from.
45
+ */
46
+ export interface LocalChanges {
47
+ /** The branch checked out where the changes are; the item's branch is cut from it. */
48
+ sourceBranch: string;
49
+ /** The checkout holding the changes. */
50
+ checkoutPath: string;
51
+ }
52
+ /**
53
+ * The uncommitted changes of the current checkout, to carry onto an item's branch; null when there
54
+ * are none. Read before anything is created, so a checkout the changes cannot be carried from stops
55
+ * the command before an item or branch exists. `expectedSourceBranch` is the branch a new item's
56
+ * branch will be cut from, or null when an existing item decides that, which carrying checks.
57
+ *
58
+ * The checkout's own branch must have no commits that origin lacks: carrying takes uncommitted
59
+ * changes only, and such commits would either travel with them or be left behind on the base branch.
60
+ */
61
+ export declare function findLocalChanges(expectedSourceBranch: string | null): Promise<LocalChanges | null>;
62
+ /**
63
+ * Carry uncommitted changes onto the item's branch. The changes are committed on top of the
64
+ * checkout's commit without touching the checkout, and the commit becomes the tip of the item's
65
+ * branch on origin: a new branch, recorded on the platform as the item's, for an item with no live
66
+ * branch, or the item's live branch while it has no commits of its own. The base branch is left as
67
+ * origin has it.
68
+ *
69
+ * The branch then gets its local checkout per the isolation mode. In the main repository, the
70
+ * checkout that held the changes switches to the branch with its working tree as it is, which is
71
+ * the branch's tip. Otherwise the branch gets a worktree, and the checkout that held the changes is
72
+ * cleaned of them, unless they changed meanwhile.
73
+ *
74
+ * Reads `commit-message`, `title`, `branch-name`, `base-branch` and `isolation` from the
75
+ * transition's options.
76
+ */
77
+ export declare function carryLocalChanges(transition: WorkflowTransition, changes: LocalChanges): Promise<void>;
78
+ /**
79
+ * Advance the item through every workflow state up to Approved and Merged, asking nothing: the
80
+ * states on the way get the options a person would otherwise be asked for. No Claude session is
81
+ * started on the way through Agent Implementation, the PR is assigned to the person running the
82
+ * command, who merges it once the required checks pass (which brings the base branch's local
83
+ * checkout up to date with the merge). Each state runs its usual automation, so a run that stops -
84
+ * on failing checks, say - continues from where it stopped when run again.
85
+ */
86
+ export declare function approveAndMerge(transition: WorkflowTransition): Promise<void>;
87
+ //# sourceMappingURL=ship-flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship-flow.d.ts","sourceRoot":"","sources":["../../../src/workflow/engine/ship-flow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAY1D,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,uBAAuB,EAAE,aAKrC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,aAInC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAE7E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAE3E;AAED;;;GAGG;AACH,eAAO,MAAM,iCAAiC,EAAE,aAAa,EAI5D,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,aAMjC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,aAA8D,CAAC;AAEvG;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,aAAa,EAOtC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,sFAAsF;IACtF,YAAY,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,oBAAoB,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA0BxG;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,kBAAkB,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAsD5G;AAoCD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAYnF"}