@idea1/cli 1.8.3 → 1.9.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/README.md +121 -59
- package/dist/cli/resolver.d.ts +1 -0
- package/dist/cli/resolver.d.ts.map +1 -1
- package/dist/cli/resolver.js +5 -0
- package/dist/cli/resolver.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/approve-pr.d.ts.map +1 -1
- package/dist/commands/approve-pr.js +20 -37
- package/dist/commands/approve-pr.js.map +1 -1
- package/dist/commands/attach-project-item.d.ts.map +1 -1
- package/dist/commands/attach-project-item.js +2 -5
- package/dist/commands/attach-project-item.js.map +1 -1
- package/dist/commands/close-worktree.d.ts.map +1 -1
- package/dist/commands/close-worktree.js +4 -3
- package/dist/commands/close-worktree.js.map +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +9 -5
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/join-project-item.d.ts.map +1 -1
- package/dist/commands/join-project-item.js +22 -48
- package/dist/commands/join-project-item.js.map +1 -1
- package/dist/commands/next-workflow-step.d.ts.map +1 -1
- package/dist/commands/next-workflow-step.js +22 -23
- package/dist/commands/next-workflow-step.js.map +1 -1
- package/dist/commands/ready-for-approval.d.ts.map +1 -1
- package/dist/commands/ready-for-approval.js +26 -18
- package/dist/commands/ready-for-approval.js.map +1 -1
- package/dist/commands/release.d.ts +3 -1
- package/dist/commands/release.d.ts.map +1 -1
- package/dist/commands/release.js +98 -19
- package/dist/commands/release.js.map +1 -1
- package/dist/commands/ship-local-changes.d.ts.map +1 -1
- package/dist/commands/ship-local-changes.js +4 -3
- package/dist/commands/ship-local-changes.js.map +1 -1
- package/dist/commands/start-agent-implementation.js +2 -2
- package/dist/commands/start-agent-implementation.js.map +1 -1
- package/dist/commands/start-dev-implementation.d.ts.map +1 -1
- package/dist/commands/start-dev-implementation.js +8 -3
- package/dist/commands/start-dev-implementation.js.map +1 -1
- package/dist/commands/start.d.ts +2 -2
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +27 -21
- package/dist/commands/start.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/interactive.d.ts.map +1 -1
- package/dist/interactive.js +164 -0
- package/dist/interactive.js.map +1 -1
- package/dist/jobs/job.d.ts +81 -0
- package/dist/jobs/job.d.ts.map +1 -0
- package/dist/jobs/job.js +258 -0
- package/dist/jobs/job.js.map +1 -0
- package/dist/jobs/targets.d.ts +58 -0
- package/dist/jobs/targets.d.ts.map +1 -0
- package/dist/jobs/targets.js +215 -0
- package/dist/jobs/targets.js.map +1 -0
- package/dist/lib/logger.d.ts +10 -0
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +16 -0
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/prompt.d.ts +7 -0
- package/dist/lib/prompt.d.ts.map +1 -1
- package/dist/lib/prompt.js +29 -0
- package/dist/lib/prompt.js.map +1 -1
- package/dist/lib/shell.d.ts +2 -1
- package/dist/lib/shell.d.ts.map +1 -1
- package/dist/lib/shell.js +17 -1
- package/dist/lib/shell.js.map +1 -1
- package/dist/services/git.d.ts +7 -0
- package/dist/services/git.d.ts.map +1 -1
- package/dist/services/git.js +10 -7
- package/dist/services/git.js.map +1 -1
- package/dist/services/github.d.ts +13 -0
- package/dist/services/github.d.ts.map +1 -1
- package/dist/services/github.js +35 -3
- package/dist/services/github.js.map +1 -1
- package/dist/services/setup.d.ts +4 -2
- package/dist/services/setup.d.ts.map +1 -1
- package/dist/services/setup.js +43 -13
- package/dist/services/setup.js.map +1 -1
- package/dist/services/worktree.js +1 -1
- package/dist/services/worktree.js.map +1 -1
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/workflow/engine/approval-flow.d.ts +2 -1
- package/dist/workflow/engine/approval-flow.d.ts.map +1 -1
- package/dist/workflow/engine/approval-flow.js +35 -1
- package/dist/workflow/engine/approval-flow.js.map +1 -1
- package/dist/workflow/engine/branch-setup.d.ts +8 -2
- package/dist/workflow/engine/branch-setup.d.ts.map +1 -1
- package/dist/workflow/engine/branch-setup.js +16 -6
- package/dist/workflow/engine/branch-setup.js.map +1 -1
- package/dist/workflow/engine/handlers/agent-implementation.d.ts.map +1 -1
- package/dist/workflow/engine/handlers/agent-implementation.js +3 -10
- package/dist/workflow/engine/handlers/agent-implementation.js.map +1 -1
- package/dist/workflow/engine/handlers/dev-implementation.d.ts +2 -2
- package/dist/workflow/engine/handlers/dev-implementation.d.ts.map +1 -1
- package/dist/workflow/engine/handlers/dev-implementation.js +13 -7
- package/dist/workflow/engine/handlers/dev-implementation.js.map +1 -1
- package/dist/workflow/engine/release-engine.d.ts +7 -1
- package/dist/workflow/engine/release-engine.d.ts.map +1 -1
- package/dist/workflow/engine/release-engine.js +16 -6
- package/dist/workflow/engine/release-engine.js.map +1 -1
- package/dist/workflow/engine/ship-flow.d.ts +5 -4
- package/dist/workflow/engine/ship-flow.d.ts.map +1 -1
- package/dist/workflow/engine/ship-flow.js +8 -13
- package/dist/workflow/engine/ship-flow.js.map +1 -1
- package/dist/workflow/engine/workflow-engine.d.ts +67 -13
- package/dist/workflow/engine/workflow-engine.d.ts.map +1 -1
- package/dist/workflow/engine/workflow-engine.js +137 -47
- package/dist/workflow/engine/workflow-engine.js.map +1 -1
- package/package.json +2 -2
- package/dist/commands/integrate.d.ts +0 -13
- package/dist/commands/integrate.d.ts.map +0 -1
- package/dist/commands/integrate.js +0 -128
- package/dist/commands/integrate.js.map +0 -1
- package/dist/commands/start-project-item.d.ts +0 -27
- package/dist/commands/start-project-item.d.ts.map +0 -1
- package/dist/commands/start-project-item.js +0 -325
- package/dist/commands/start-project-item.js.map +0 -1
- package/dist/services/hooks.d.ts +0 -8
- package/dist/services/hooks.d.ts.map +0 -1
- package/dist/services/hooks.js +0 -72
- package/dist/services/hooks.js.map +0 -1
- package/dist/services/workflow.d.ts +0 -17
- package/dist/services/workflow.d.ts.map +0 -1
- package/dist/services/workflow.js +0 -39
- package/dist/services/workflow.js.map +0 -1
package/dist/services/setup.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, writeFileSync } from 'fs';
|
|
1
|
+
import { appendFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
2
2
|
import { join } from 'path';
|
|
3
3
|
import { promptConfirm } from '../lib/prompt.js';
|
|
4
4
|
import { logger } from '../lib/logger.js';
|
|
@@ -19,10 +19,15 @@ const DEFAULT_SETTINGS = {
|
|
|
19
19
|
testCommand: DEFAULT_BRANCH_SETTINGS.testCommand
|
|
20
20
|
}
|
|
21
21
|
};
|
|
22
|
+
/** What `.idea1/.gitignore` must ignore: developer setting overrides, and background job logs. */
|
|
23
|
+
const GITIGNORE_ENTRIES = ['settings.local.json', 'jobs/'];
|
|
22
24
|
const GITIGNORE_CONTENT = `# Agent temporary files
|
|
23
25
|
|
|
24
26
|
# Developer-specific setting overrides
|
|
25
27
|
settings.local.json
|
|
28
|
+
|
|
29
|
+
# Logs of the CLI's background jobs
|
|
30
|
+
jobs/
|
|
26
31
|
`;
|
|
27
32
|
const README_CONTENT = `# Idea1 CLI Configuration
|
|
28
33
|
|
|
@@ -98,7 +103,8 @@ individually, so overriding one hook, default or release setting leaves the rest
|
|
|
98
103
|
|
|
99
104
|
## Other files
|
|
100
105
|
|
|
101
|
-
- \`.gitignore\` - Ignores temporary agent files
|
|
106
|
+
- \`.gitignore\` - Ignores temporary agent files, \`settings.local.json\` and \`jobs/\`
|
|
107
|
+
- \`jobs/\` - Logs of the CLI's background jobs (one folder per job, pruned automatically)
|
|
102
108
|
`;
|
|
103
109
|
/**
|
|
104
110
|
* Whether the repository has been set up: the settings file itself has to exist,
|
|
@@ -127,19 +133,43 @@ export function performSetup(repoRoot) {
|
|
|
127
133
|
logger.success('Idea1 CLI setup complete. Created .idea1/ folder with default settings.');
|
|
128
134
|
}
|
|
129
135
|
/**
|
|
130
|
-
* Ensure the repository is set up with the .idea1 folder
|
|
131
|
-
*
|
|
136
|
+
* Ensure the repository is set up with the .idea1 folder. If not present, prompts for confirmation
|
|
137
|
+
* and performs initial setup. Once set up, makes sure `.idea1/.gitignore` ignores what the CLI
|
|
138
|
+
* writes into `.idea1/`, whichever version of the CLI set the repository up. Runs on every start,
|
|
139
|
+
* and changes nothing in a repository that is up to date.
|
|
132
140
|
*/
|
|
133
141
|
export async function ensureSetup(repoRoot) {
|
|
134
|
-
if (
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
142
|
+
if (isSetupComplete(repoRoot)) {
|
|
143
|
+
ensureGitignore(repoRoot);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
logger.info('Idea1 CLI has not been set up in this repository.');
|
|
147
|
+
logger.info('Setup will create a .idea1/ folder with default configuration.');
|
|
148
|
+
const confirmed = await promptConfirm('Would you like to perform initial setup?', { default: true });
|
|
149
|
+
if (!confirmed) {
|
|
150
|
+
logger.error('Setup is required to use Idea1 CLI.');
|
|
151
|
+
process.exit(1);
|
|
152
|
+
}
|
|
153
|
+
performSetup(repoRoot);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Create `.idea1/.gitignore` when it is missing, and add any entry it lacks. A file the repository
|
|
157
|
+
* commits then shows as changed, so the user is told to commit it.
|
|
158
|
+
*/
|
|
159
|
+
function ensureGitignore(repoRoot) {
|
|
160
|
+
const gitignorePath = join(repoRoot, IDEA1_DIR, GITIGNORE_FILE);
|
|
161
|
+
if (!existsSync(gitignorePath)) {
|
|
162
|
+
writeFileSync(gitignorePath, GITIGNORE_CONTENT);
|
|
163
|
+
logger.info(`Created ${IDEA1_DIR}/${GITIGNORE_FILE} - commit it so the files the CLI keeps in ${IDEA1_DIR}/ stay out of the repository.`);
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
const content = readFileSync(gitignorePath, 'utf-8');
|
|
167
|
+
const lines = content.split(/\r?\n/).map(line => line.trim());
|
|
168
|
+
const missing = GITIGNORE_ENTRIES.filter(entry => !lines.includes(entry));
|
|
169
|
+
if (missing.length === 0) {
|
|
170
|
+
return;
|
|
143
171
|
}
|
|
172
|
+
appendFileSync(gitignorePath, `${content.endsWith('\n') ? '' : '\n'}\n# Added by the idea1 CLI\n${missing.join('\n')}\n`);
|
|
173
|
+
logger.info(`Added ${missing.join(', ')} to ${IDEA1_DIR}/${GITIGNORE_FILE} - commit the change.`);
|
|
144
174
|
}
|
|
145
175
|
//# sourceMappingURL=setup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/services/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/services/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxF,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,MAAM,SAAS,GAAG,QAAQ,CAAC;AAC3B,MAAM,aAAa,GAAG,eAAe,CAAC;AACtC,MAAM,cAAc,GAAG,YAAY,CAAC;AACpC,MAAM,WAAW,GAAG,WAAW,CAAC;AAEhC,MAAM,gBAAgB,GAAG;IACvB,KAAK,EAAE,EACN;IACD,QAAQ,EAAE;QACR,YAAY,EAAE,uBAAuB,CAAC,YAAY;QAClD,UAAU,EAAE,uBAAuB,CAAC,UAAU;QAC9C,mBAAmB,EAAE,uBAAuB,CAAC,mBAAmB;QAChE,uBAAuB,EAAE,uBAAuB,CAAC,uBAAuB;QACxE,yBAAyB,EAAE,uBAAuB,CAAC,yBAAyB;QAC5E,6BAA6B,EAAE,uBAAuB,CAAC,6BAA6B;QACpF,WAAW,EAAE,uBAAuB,CAAC,WAAW;KACjD;CACF,CAAC;AAEF,kGAAkG;AAClG,MAAM,iBAAiB,GAAsB,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;AAE9E,MAAM,iBAAiB,GAAG;;;;;;;CAOzB,CAAC;AAEF,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4EtB,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACnD,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAE/C,0BAA0B;IAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,uBAAuB;IACvB,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAE9E,oBAAoB;IACpB,aAAa,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;IAEhD,mBAAmB;IACnB,aAAa,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAE1C,MAAM,CAAC,OAAO,CAAC,yEAAyE,CAAC,CAAC;AAC5F,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAgB;IAChD,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACjE,MAAM,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IAE9E,MAAM,SAAS,GAAG,MAAM,aAAa,CACnC,0CAA0C,EAC1C,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;IAEF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,YAAY,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,QAAgB;IACvC,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,aAAa,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,WAAW,SAAS,IAAI,cAAc,8CAA8C,SAAS,+BAA+B,CAAC,CAAC;QAC1I,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,cAAc,CAAC,aAAa,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,+BAA+B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1H,MAAM,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,SAAS,IAAI,cAAc,uBAAuB,CAAC,CAAC;AACpG,CAAC"}
|
|
@@ -65,7 +65,7 @@ export async function removeWorktreeForWorkflowState(state, branchName, projectI
|
|
|
65
65
|
logger.hint(`Worktree removed: ${worktreePath}`);
|
|
66
66
|
logger.hint(`The main repo at ${mainRepoRoot} stays on its current branch.`);
|
|
67
67
|
logger.hint(`To continue working on this item in the main repo, run:`);
|
|
68
|
-
logger.plain(`cd "${mainRepoRoot}" && idea1 join-project-item --
|
|
68
|
+
logger.plain(`cd "${mainRepoRoot}" && idea1 join-project-item --target ${projectItemUrl} --isolation main-repo`);
|
|
69
69
|
}
|
|
70
70
|
/**
|
|
71
71
|
* Resolve a branch setting through the standard hierarchy:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/services/worktree.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,kBAAkB,EAA+B,MAAM,oBAAoB,CAAC;AAC9J,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAsB,MAAM,qCAAqC,CAAC;AAE3F;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,QAAgB;IACzD,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAEzD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,gCAAgC,WAAW,EAAE,CAAC,CAAC;IAE3D,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE9E,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,6CAA6C,QAAQ,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,YAAoB;IAC9D,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAEnC,4EAA4E;IAC5E,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAE5B,MAAM,CAAC,OAAO,EAAE,CAAC;IACjB,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACpC,MAAM,GAAG,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAEvC,0CAA0C;IAC1C,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACtD,MAAM,GAAG,CAAC,uBAAuB,EAAE,CAAC;IAEpC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,KAAoB,EACpB,UAAkB,EAClB,cAAsB,EACtB,OAA8C;IAE9C,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAChD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,eAAe,EAAE,CAAC;IACjD,MAAM,aAAa,GAAG,MAAM,wBAAwB,CAAC,YAAY,CAAC,CAAC;IAEnE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,4CAA4C,aAAa,IAAI,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAE/D,IAAI,OAAO,CAAC,wBAAwB,EAAE,CAAC;QACrC,MAAM,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,CAAC;IACjB,MAAM,CAAC,IAAI,CAAC,qBAAqB,YAAY,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,IAAI,CAAC,oBAAoB,YAAY,+BAA+B,CAAC,CAAC;IAC7E,MAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACvE,MAAM,CAAC,KAAK,CAAC,OAAO,YAAY,
|
|
1
|
+
{"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/services/worktree.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -51,6 +51,13 @@ export interface CommandOption {
|
|
|
51
51
|
allowNone?: boolean;
|
|
52
52
|
/** Validation function — return error message or undefined */
|
|
53
53
|
validate?: (value: string) => string | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Resolve the option's value when it was not supplied, in place of its default and prompt - for
|
|
56
|
+
* a value that depends on the repository's state as well as on the answers resolved so far (the
|
|
57
|
+
* `--target` of a command, which is the current branch when that can be the target and is asked
|
|
58
|
+
* for otherwise). Like a prompt, it runs in declaration order.
|
|
59
|
+
*/
|
|
60
|
+
resolveValue?: (resolved: Record<string, string>) => Promise<string>;
|
|
54
61
|
}
|
|
55
62
|
/**
|
|
56
63
|
* Command interface for the command registry
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,oFAAoF;IACpF,QAAQ,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IACvC,sGAAsG;IACtG,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC;IAC1D;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sKAAsK;IACtK,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,MAAM,CAAC;IAC3D;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,7 +54,8 @@ export interface CleanUpMergedBranchInput {
|
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
56
|
* After the merge the branch is finished: the remote branch goes, and so do its worktree and local
|
|
57
|
-
* branch, leaving the user on a branch that still exists.
|
|
57
|
+
* branch, leaving the user on a branch that still exists. The base branch's local checkout is
|
|
58
|
+
* brought up to date with the merge wherever it is.
|
|
58
59
|
*/
|
|
59
60
|
export declare function cleanUpMergedBranch(input: CleanUpMergedBranchInput): Promise<void>;
|
|
60
61
|
//# sourceMappingURL=approval-flow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval-flow.d.ts","sourceRoot":"","sources":["../../../src/workflow/engine/approval-flow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAQlE;;;;;;;GAOG;AAEH,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,QAAQ,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,iBAAiB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgC5F;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,aAKrC,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,yFAAyF;IACzF,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"approval-flow.d.ts","sourceRoot":"","sources":["../../../src/workflow/engine/approval-flow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAQlE;;;;;;;GAOG;AAEH,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,QAAQ,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,iBAAiB,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgC5F;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,aAKrC,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,yFAAyF;IACzF,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgChF;AAWD,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAIxF"}
|
|
@@ -62,22 +62,38 @@ export async function mergeAsApprover(input) {
|
|
|
62
62
|
throw new Error('Merge cancelled by user');
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
|
+
// A PR that conflicts with its base can never merge as it stands, so it is refused before the
|
|
66
|
+
// wait for its checks, and again after it: another PR merged meanwhile may have made it conflict.
|
|
67
|
+
await requireMergeable(branchName, baseBranch);
|
|
65
68
|
const checks = await github.waitForPrChecks(branchName);
|
|
66
69
|
if (!checks.passed) {
|
|
67
70
|
throw new Error('Required checks did not pass, so the PR was not merged. There is no override at this stage ' +
|
|
68
71
|
'(change-management-policy.md clause 3) - fix the build and run idea1 approve-pr again.\n\n' +
|
|
69
72
|
checks.summary);
|
|
70
73
|
}
|
|
74
|
+
await requireMergeable(branchName, baseBranch);
|
|
71
75
|
const mergeResult = await github.mergePr(branchName);
|
|
72
76
|
if (!mergeResult.success) {
|
|
73
77
|
throw new Error(`Failed to merge PR: ${mergeResult.error}`);
|
|
74
78
|
}
|
|
75
79
|
}
|
|
80
|
+
async function requireMergeable(branchName, baseBranch) {
|
|
81
|
+
if (await github.getPrMergeability(branchName) === 'conflicting') {
|
|
82
|
+
throw new Error(`The PR for ${branchName} conflicts with ${baseBranch}, so it cannot merge. ` +
|
|
83
|
+
`Run idea1 update-branch on ${branchName} to resolve the conflicts, then approve it again.`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
76
86
|
/**
|
|
77
87
|
* After the merge the branch is finished: the remote branch goes, and so do its worktree and local
|
|
78
|
-
* branch, leaving the user on a branch that still exists.
|
|
88
|
+
* branch, leaving the user on a branch that still exists. The base branch's local checkout is
|
|
89
|
+
* brought up to date with the merge wherever it is.
|
|
79
90
|
*/
|
|
80
91
|
export async function cleanUpMergedBranch(input) {
|
|
92
|
+
logger.status(`Cleaning up ${input.branchName}`);
|
|
93
|
+
await removeMergedBranch(input);
|
|
94
|
+
await fastForwardBaseCheckout(input.baseBranch);
|
|
95
|
+
}
|
|
96
|
+
async function removeMergedBranch(input) {
|
|
81
97
|
const { branchName, baseBranch, workingPath } = input;
|
|
82
98
|
await git.fetchLatest();
|
|
83
99
|
if (!workingPath) {
|
|
@@ -114,6 +130,24 @@ export async function cleanUpMergedBranch(input) {
|
|
|
114
130
|
logger.hint(`Base branch is in worktree at: ${baseWorktreePath}`);
|
|
115
131
|
}
|
|
116
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* Fast-forward the base branch's local checkout, if it has one, to origin, which now carries the
|
|
135
|
+
* merge. A checkout with local commits or changes in the way is left as it is.
|
|
136
|
+
*/
|
|
137
|
+
async function fastForwardBaseCheckout(baseBranch) {
|
|
138
|
+
const checkoutPath = await git.getCheckoutPathForBranch(baseBranch);
|
|
139
|
+
if (!checkoutPath) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
await git.fetchRemoteBranch(baseBranch);
|
|
143
|
+
const result = await git.fastForwardCheckoutToOrigin(baseBranch, checkoutPath);
|
|
144
|
+
if (result === 'fast-forwarded') {
|
|
145
|
+
logger.success(`${baseBranch} at ${checkoutPath} is up to date with the merge`);
|
|
146
|
+
}
|
|
147
|
+
else if (result === 'diverged' || result === 'blocked') {
|
|
148
|
+
logger.warning(`${baseBranch} at ${checkoutPath} could not be fast-forwarded to origin (${result}); pull it once its local work is sorted out.`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
117
151
|
async function deleteBranchQuietly(branchName, deleteRemote) {
|
|
118
152
|
try {
|
|
119
153
|
await git.deleteBranch(branchName, deleteRemote);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval-flow.js","sourceRoot":"","sources":["../../../src/workflow/engine/approval-flow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,GAAG,MAAM,uBAAuB,CAAC;AAC7C,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AA0BjE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,KAA4B;IACzE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEnD,IAAI,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAChE,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,6GAA6G,CAAC,CAAC;QACjI,CAAC;QACD,MAAM,aAAa,CAAC;YAClB,YAAY,EAAE,UAAU;YACxB,YAAY,EAAE,UAAU;YACxB,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,KAAK;YACpC,QAAQ;YACR,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC;QACH,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,cAAc,UAAU,sDAAsD,CAAC,CAAC;QAClG,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS;SAC9B,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SACxB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEnC,MAAM,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACpD,MAAM,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAClD,MAAM,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAkB;IACpD,QAAQ,EAAE,KAAK;IACf,SAAS,EAAE,GAAG;IACd,WAAW,EAAE,uFAAuF;IACpG,MAAM,EAAE,IAAI;CACb,CAAC;AAUF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAA2B;IAC/D,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEnD,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,YAAY,GAAG,MAAM,aAAa,CACtC,eAAe,QAAQ,mBAAmB,UAAU,OAAO,UAAU,IAAI,EACzE,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;QACF,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,6FAA6F;YAC7F,4FAA4F;YAC5F,MAAM,CAAC,OAAO,CACf,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrD,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,uBAAuB,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AASD
|
|
1
|
+
{"version":3,"file":"approval-flow.js","sourceRoot":"","sources":["../../../src/workflow/engine/approval-flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,11 @@ export interface IntegrationBranchSelection {
|
|
|
12
12
|
/**
|
|
13
13
|
* The options every command that can create an item's branch shares: which
|
|
14
14
|
* branch to base it on and which branching workflow to use.
|
|
15
|
+
*
|
|
16
|
+
* The branch name and workflow type are not asked up front: whether a branch is created at all
|
|
17
|
+
* depends on the item's workflow context, which the option resolver cannot see. The engine asks
|
|
18
|
+
* for them in `collectBranchCreationChoices` when it creates a branch, and never for an item whose
|
|
19
|
+
* context already holds one. A value passed on the command line is used as given.
|
|
15
20
|
*/
|
|
16
21
|
export declare const branchCreationOptions: CommandOption[];
|
|
17
22
|
/**
|
|
@@ -25,8 +30,9 @@ export interface BranchCreationChoices {
|
|
|
25
30
|
integrationSelection: IntegrationBranchSelection | null;
|
|
26
31
|
}
|
|
27
32
|
/**
|
|
28
|
-
* Collect every branching decision up front (
|
|
29
|
-
* so all user questions are asked before any slow git or MCP work starts.
|
|
33
|
+
* Collect every branching decision up front (workflow type, branch name, stack branch,
|
|
34
|
+
* integration branch) so all user questions are asked before any slow git or MCP work starts.
|
|
35
|
+
* Decisions already given as options are not asked again.
|
|
30
36
|
*/
|
|
31
37
|
export declare function collectBranchCreationChoices(resolved: Record<string, string>): Promise<BranchCreationChoices>;
|
|
32
38
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branch-setup.d.ts","sourceRoot":"","sources":["../../../src/workflow/engine/branch-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAK1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAGnE,eAAO,MAAM,gBAAgB;;;GAG5B,CAAC;AAaF,MAAM,WAAW,0BAA0B;IACzC,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,KAAK,EAAE,OAAO,CAAC;CAChB;AAED
|
|
1
|
+
{"version":3,"file":"branch-setup.d.ts","sourceRoot":"","sources":["../../../src/workflow/engine/branch-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAK1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAGnE,eAAO,MAAM,gBAAgB;;;GAG5B,CAAC;AAaF,MAAM,WAAW,0BAA0B;IACzC,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAAa,EA2BhD,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,eAAe,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,oBAAoB,EAAE,0BAA0B,GAAG,IAAI,CAAC;CACzD;AAED;;;;GAIG;AACH,wBAAsB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAcnH;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA6BnE;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAoBtF"}
|
|
@@ -19,6 +19,11 @@ const INTEGRATION_BRANCH_CHOICES = [
|
|
|
19
19
|
/**
|
|
20
20
|
* The options every command that can create an item's branch shares: which
|
|
21
21
|
* branch to base it on and which branching workflow to use.
|
|
22
|
+
*
|
|
23
|
+
* The branch name and workflow type are not asked up front: whether a branch is created at all
|
|
24
|
+
* depends on the item's workflow context, which the option resolver cannot see. The engine asks
|
|
25
|
+
* for them in `collectBranchCreationChoices` when it creates a branch, and never for an item whose
|
|
26
|
+
* context already holds one. A value passed on the command line is used as given.
|
|
22
27
|
*/
|
|
23
28
|
export const branchCreationOptions = [
|
|
24
29
|
{
|
|
@@ -26,7 +31,8 @@ export const branchCreationOptions = [
|
|
|
26
31
|
shortName: 'n',
|
|
27
32
|
description: 'Branch name (auto-generated if not provided)',
|
|
28
33
|
defaultValue: undefined,
|
|
29
|
-
promptWhenDefaultExists: true
|
|
34
|
+
promptWhenDefaultExists: true,
|
|
35
|
+
dependsOn: () => false
|
|
30
36
|
},
|
|
31
37
|
{
|
|
32
38
|
// Left empty so the repo's `.idea1/settings.json` still has a say: a default here
|
|
@@ -43,19 +49,23 @@ export const branchCreationOptions = [
|
|
|
43
49
|
shortName: 'w',
|
|
44
50
|
description: 'Development workflow type',
|
|
45
51
|
defaultValue: undefined,
|
|
46
|
-
choices: WORKFLOW_CHOICES
|
|
52
|
+
choices: WORKFLOW_CHOICES,
|
|
53
|
+
dependsOn: () => false
|
|
47
54
|
}
|
|
48
55
|
];
|
|
49
56
|
/**
|
|
50
|
-
* Collect every branching decision up front (
|
|
51
|
-
* so all user questions are asked before any slow git or MCP work starts.
|
|
57
|
+
* Collect every branching decision up front (workflow type, branch name, stack branch,
|
|
58
|
+
* integration branch) so all user questions are asked before any slow git or MCP work starts.
|
|
59
|
+
* Decisions already given as options are not asked again.
|
|
52
60
|
*/
|
|
53
61
|
export async function collectBranchCreationChoices(resolved) {
|
|
54
|
-
const workflowType = (resolved['workflow-type']
|
|
62
|
+
const workflowType = (resolved['workflow-type']
|
|
63
|
+
|| await promptSelect('Development workflow type', WORKFLOW_CHOICES));
|
|
64
|
+
const shortBranchName = resolved['branch-name'] ?? await promptInput('Branch name (blank to generate one)');
|
|
55
65
|
const stackBranch = await promptForStackBranch();
|
|
56
66
|
const integrationSelection = workflowType === 'integration' ? await promptForIntegrationBranch() : null;
|
|
57
67
|
return {
|
|
58
|
-
shortBranchName:
|
|
68
|
+
shortBranchName: shortBranchName || null,
|
|
59
69
|
baseBranch: resolved['base-branch'] || await worktree.resolveBaseBranch(),
|
|
60
70
|
workflowType,
|
|
61
71
|
stackBranch,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branch-setup.js","sourceRoot":"","sources":["../../../src/workflow/engine/branch-setup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,GAAG,MAAM,uBAAuB,CAAC;AAC7C,OAAO,KAAK,QAAQ,MAAM,4BAA4B,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,aAAa,EAAE;IACtD,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,aAAa,EAAE;CACxD,CAAC;AAEF,MAAM,aAAa,GAAG;IACpB,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;IAC5B,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,QAAQ,EAAE;IACpD,EAAE,KAAK,EAAE,kCAAkC,EAAE,KAAK,EAAE,KAAK,EAAE;CAC5D,CAAC;AAEF,MAAM,0BAA0B,GAAG;IACjC,EAAE,KAAK,EAAE,+BAA+B,EAAE,KAAK,EAAE,KAAK,EAAE;IACxD,EAAE,KAAK,EAAE,iCAAiC,EAAE,KAAK,EAAE,UAAU,EAAE;CAChE,CAAC;AAQF
|
|
1
|
+
{"version":3,"file":"branch-setup.js","sourceRoot":"","sources":["../../../src/workflow/engine/branch-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-implementation.d.ts","sourceRoot":"","sources":["../../../../src/workflow/engine/handlers/agent-implementation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-implementation.d.ts","sourceRoot":"","sources":["../../../../src/workflow/engine/handlers/agent-implementation.ts"],"names":[],"mappings":"AAMA,OAAO,EAA2E,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE3I;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,EAAE,oBAmCxC,CAAC"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { isolationModeOption
|
|
1
|
+
import { isolationModeOption } from '../../../lib/isolation.js';
|
|
2
2
|
import { claudeEntryPointOption, claudeEntryPointPromptOptions, claudeSessionOptions, resolveClaudeSessionOptions } from '../../../lib/claude-options.js';
|
|
3
3
|
import { projectItemPromptModel, renderAgentImplementationPrompt } from '../../../prompts/project-item-prompts.js';
|
|
4
|
-
import * as git from '../../../services/git.js';
|
|
5
4
|
import * as worktree from '../../../services/worktree.js';
|
|
6
5
|
import { WorkflowStates } from '../../data/workflow-states.js';
|
|
7
6
|
import { logger } from '../../../lib/logger.js';
|
|
8
|
-
import { isWorkMerged, requireLiveContext, requireWorkingPath } from '../workflow-engine.js';
|
|
7
|
+
import { ensureWorkingPath, isWorkMerged, requireLiveContext, requireWorkingPath } from '../workflow-engine.js';
|
|
9
8
|
/**
|
|
10
9
|
* Entering "Agent Implementation": make sure the branch is checked out locally
|
|
11
10
|
* (worktree or main repo, per the isolation mode), then — once the state is
|
|
@@ -22,13 +21,7 @@ export const agentImplementationHandler = {
|
|
|
22
21
|
logger.dim('The item\'s work is already merged; nothing to do.');
|
|
23
22
|
return;
|
|
24
23
|
}
|
|
25
|
-
|
|
26
|
-
const isolationMode = resolveIsolationMode(transition.options);
|
|
27
|
-
const { workingPath } = await worktree.ensureBranchEnvironment(isolationMode, branchName);
|
|
28
|
-
transition.workingPath = workingPath;
|
|
29
|
-
if ((await git.getRepoRoot()).trim() !== workingPath) {
|
|
30
|
-
process.chdir(workingPath);
|
|
31
|
-
}
|
|
24
|
+
await ensureWorkingPath(transition);
|
|
32
25
|
},
|
|
33
26
|
async complete(transition) {
|
|
34
27
|
if (isWorkMerged(transition)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-implementation.js","sourceRoot":"","sources":["../../../../src/workflow/engine/handlers/agent-implementation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"agent-implementation.js","sourceRoot":"","sources":["../../../../src/workflow/engine/handlers/agent-implementation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC1J,OAAO,EAAE,sBAAsB,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AACnH,OAAO,KAAK,QAAQ,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAA6B,MAAM,uBAAuB,CAAC;AAE3I;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAyB;IAC9D,KAAK,EAAE,cAAc,CAAC,mBAAmB;IACzC,OAAO,EAAE,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,GAAG,oBAAoB,EAAE,GAAG,6BAA6B,CAAC;IAEjH,KAAK,CAAC,OAAO,CAAC,UAAU;QACtB,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QAED,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,UAAU;QACvB,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,EAAE,gCAAgC,CAAC,CAAC;QACrF,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,GAAG,2BAA2B,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAClI,MAAM,MAAM,GAAG,MAAM,+BAA+B,CAClD,sBAAsB,CAAC,UAAU,CAAC,cAAc,EAAE,OAAO,EAAE,WAAW,CAAC,EACvE,gBAAgB,CACjB,CAAC;QAEF,MAAM,QAAQ,CAAC,qBAAqB,CAAC,WAAW,EAAE;YAChD,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,MAAM;YACN,cAAc;YACd,KAAK;YACL,MAAM;YACN,oBAAoB;SACrB,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type WorkflowStateHandler } from '../workflow-engine.js';
|
|
2
2
|
/**
|
|
3
|
-
* Entering "Dev Implementation": the agent's work is committed and pushed
|
|
4
|
-
* PR exists, so a developer can test, clean up and finish the work. Afterwards
|
|
3
|
+
* Entering "Dev Implementation": the agent's work is committed and pushed (from
|
|
4
|
+
* the branch's checkout, when it has one here) and a PR exists, so a developer can test, clean up and finish the work. Afterwards
|
|
5
5
|
* the worktree is removed when `removeWorktreeAtState` says so. Idempotent: an
|
|
6
6
|
* existing PR is reused, a clean branch is pushed as it is, and work that is
|
|
7
7
|
* already merged is left as it is.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-implementation.d.ts","sourceRoot":"","sources":["../../../../src/workflow/engine/handlers/dev-implementation.ts"],"names":[],"mappings":"AAKA,OAAO,
|
|
1
|
+
{"version":3,"file":"dev-implementation.d.ts","sourceRoot":"","sources":["../../../../src/workflow/engine/handlers/dev-implementation.ts"],"names":[],"mappings":"AAKA,OAAO,EAAoC,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEpG;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,EAAE,oBAyCtC,CAAC"}
|
|
@@ -3,10 +3,10 @@ import * as git from '../../../services/git.js';
|
|
|
3
3
|
import * as github from '../../../services/github.js';
|
|
4
4
|
import { removeWorktreeForWorkflowState } from '../../../services/worktree.js';
|
|
5
5
|
import { WorkflowStates } from '../../data/workflow-states.js';
|
|
6
|
-
import { isWorkMerged, requireLiveContext
|
|
6
|
+
import { isWorkMerged, requireLiveContext } from '../workflow-engine.js';
|
|
7
7
|
/**
|
|
8
|
-
* Entering "Dev Implementation": the agent's work is committed and pushed
|
|
9
|
-
* PR exists, so a developer can test, clean up and finish the work. Afterwards
|
|
8
|
+
* Entering "Dev Implementation": the agent's work is committed and pushed (from
|
|
9
|
+
* the branch's checkout, when it has one here) and a PR exists, so a developer can test, clean up and finish the work. Afterwards
|
|
10
10
|
* the worktree is removed when `removeWorktreeAtState` says so. Idempotent: an
|
|
11
11
|
* existing PR is reused, a clean branch is pushed as it is, and work that is
|
|
12
12
|
* already merged is left as it is.
|
|
@@ -19,11 +19,17 @@ export const devImplementationHandler = {
|
|
|
19
19
|
return;
|
|
20
20
|
}
|
|
21
21
|
const context = requireLiveContext(transition);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
// Work done in the branch's checkout is committed and pushed from there; a branch with no
|
|
23
|
+
// checkout here carries its work on origin already.
|
|
24
|
+
if (transition.workingPath) {
|
|
25
|
+
if (await git.hasUncommittedChanges()) {
|
|
26
|
+
await git.commitAllChanges(`Agent Implementation of ${transition.projectItemUrl} on ${context.branchName}`);
|
|
27
|
+
}
|
|
28
|
+
await git.pushToRemote(context.branchName);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
logger.dim(`${context.branchName} has no local checkout; its work is on origin.`);
|
|
25
32
|
}
|
|
26
|
-
await git.pushToRemote(context.branchName);
|
|
27
33
|
const prInfo = await github.createPrIfNeeded(context.branchName, context.baseBranch, transition.projectItemUrl);
|
|
28
34
|
if (prInfo) {
|
|
29
35
|
context.pullRequestUrl = prInfo.url;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-implementation.js","sourceRoot":"","sources":["../../../../src/workflow/engine/handlers/dev-implementation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,KAAK,GAAG,MAAM,0BAA0B,CAAC;AAChD,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"dev-implementation.js","sourceRoot":"","sources":["../../../../src/workflow/engine/handlers/dev-implementation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,KAAK,GAAG,MAAM,0BAA0B,CAAC;AAChD,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAA6B,MAAM,uBAAuB,CAAC;AAEpG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAyB;IAC5D,KAAK,EAAE,cAAc,CAAC,iBAAiB;IAEvC,KAAK,CAAC,OAAO,CAAC,UAAU;QACtB,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAE/C,0FAA0F;QAC1F,oDAAoD;QACpD,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;YAC3B,IAAI,MAAM,GAAG,CAAC,qBAAqB,EAAE,EAAE,CAAC;gBACtC,MAAM,GAAG,CAAC,gBAAgB,CAAC,2BAA2B,UAAU,CAAC,cAAc,OAAO,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;YAC9G,CAAC;YACD,MAAM,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,UAAU,gDAAgD,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;QAChH,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,UAAU;QACvB,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,MAAM,EAAE,UAAU,EAAE,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,8BAA8B,CAAC,cAAc,CAAC,iBAAiB,EAAE,UAAU,EAAE,UAAU,CAAC,cAAc,EAAE,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC,CAAC;QAEnJ,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,0GAA0G,CAAC,CAAC;IAC1H,CAAC;CACF,CAAC"}
|
|
@@ -77,8 +77,12 @@ export interface PendingVersionBump extends VersionedPackage {
|
|
|
77
77
|
* branch and its package.json version is still the same on both - a version that already differs
|
|
78
78
|
* was bumped for this release, so re-running a release never bumps twice. The Idea1 web app applies
|
|
79
79
|
* the same rule.
|
|
80
|
+
*
|
|
81
|
+
* `incomingBranches` are branches about to merge into the release branch before it is released:
|
|
82
|
+
* a package they change is counted as changed, so a release that approves them first can ask for
|
|
83
|
+
* every bump it will need before any of them merges.
|
|
80
84
|
*/
|
|
81
|
-
export declare function detectPendingVersionBumps(packages: readonly VersionedPackage[], releaseBranch: string, targetBranch: string): Promise<PendingVersionBump[]>;
|
|
85
|
+
export declare function detectPendingVersionBumps(packages: readonly VersionedPackage[], releaseBranch: string, targetBranch: string, incomingBranches: readonly string[]): Promise<PendingVersionBump[]>;
|
|
82
86
|
export interface CommitVersionBumpsOptions {
|
|
83
87
|
/** The release branch, which must be the checked-out branch. */
|
|
84
88
|
releaseBranch: string;
|
|
@@ -170,6 +174,8 @@ export interface RunPrModeOptions {
|
|
|
170
174
|
* deploy. An auto-merge GitHub performs later opens nothing.
|
|
171
175
|
*/
|
|
172
176
|
openActionsAfterMerge: boolean;
|
|
177
|
+
/** The approver already said to merge (`--yes`), so the merge is not confirmed again. */
|
|
178
|
+
confirmed: boolean;
|
|
173
179
|
}
|
|
174
180
|
/**
|
|
175
181
|
* Finish the sequence in the chosen mode. Either way the merge is the approval of record: in
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release-engine.d.ts","sourceRoot":"","sources":["../../../src/workflow/engine/release-engine.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAQ5E;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,+EAA+E;AAC/E,MAAM,WAAW,WAAW;IAC1B,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAED,eAAO,MAAM,YAAY,EAAE,WAA+F,CAAC;AAC3H,eAAO,MAAM,WAAW,EAAE,WAAwG,CAAC;AAEnI,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAExC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,aAU5B,CAAC;AAEF,oGAAoG;AACpG,eAAO,MAAM,uBAAuB,iEAAiE,CAAC;AAEtG;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,qFACsC,CAAC;AAErF;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B,+DAA+D,CAAC;AAE5G;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+C9E;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1D,eAAO,MAAM,kBAAkB,EAAE,SAAS,eAAe,EAAgC,CAAC;AAK1F,4FAA4F;AAC5F,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D,cAAc,EAAE,MAAM,CAAC;CACxB;AAiBD
|
|
1
|
+
{"version":3,"file":"release-engine.d.ts","sourceRoot":"","sources":["../../../src/workflow/engine/release-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -105,13 +105,23 @@ async function readRemotePackageVersion(branch, path) {
|
|
|
105
105
|
* branch and its package.json version is still the same on both - a version that already differs
|
|
106
106
|
* was bumped for this release, so re-running a release never bumps twice. The Idea1 web app applies
|
|
107
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.
|
|
108
112
|
*/
|
|
109
|
-
export async function detectPendingVersionBumps(packages, releaseBranch, targetBranch) {
|
|
113
|
+
export async function detectPendingVersionBumps(packages, releaseBranch, targetBranch, incomingBranches) {
|
|
110
114
|
const pending = [];
|
|
111
115
|
for (const pkg of packages) {
|
|
112
|
-
const releaseTree = await readRemoteTreeSha(releaseBranch, pkg.path);
|
|
113
116
|
const targetTree = await readRemoteTreeSha(targetBranch, pkg.path);
|
|
114
|
-
|
|
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) {
|
|
115
125
|
continue;
|
|
116
126
|
}
|
|
117
127
|
const releaseVersion = await readRemotePackageVersion(releaseBranch, pkg.path);
|
|
@@ -246,7 +256,7 @@ export async function commitVersionBumps(options) {
|
|
|
246
256
|
changedFiles.push(...writeVersionFiles(repoRoot, pkg, version));
|
|
247
257
|
summary.push(`${pkg.name} ${version}`);
|
|
248
258
|
}
|
|
249
|
-
logger.
|
|
259
|
+
logger.status(`Committing the version bump to ${releaseBranch} (${summary.join(', ')})...`);
|
|
250
260
|
await execOrThrow('git', ['add', '--', ...changedFiles]);
|
|
251
261
|
await execOrThrow('git', ['commit', '-m', `${VERSION_BUMP_SUBJECT_PREFIX}${summary.join(', ')}`]);
|
|
252
262
|
await git.pushToRemote(releaseBranch);
|
|
@@ -481,7 +491,7 @@ export async function buildApprovalChain(sourceBranch, targetBranch, kind) {
|
|
|
481
491
|
export async function createGatedPr(options) {
|
|
482
492
|
await github.ensureGitHubCli();
|
|
483
493
|
const chain = await buildApprovalChain(options.sourceBranch, options.targetBranch, options.kind);
|
|
484
|
-
logger.
|
|
494
|
+
logger.status(`Creating pull request (assigned to @${options.assignee})...`);
|
|
485
495
|
const prUrl = await github.createPr({
|
|
486
496
|
sourceBranch: options.sourceBranch,
|
|
487
497
|
targetBranch: options.targetBranch,
|
|
@@ -652,7 +662,7 @@ export async function runPrMode(options) {
|
|
|
652
662
|
return;
|
|
653
663
|
}
|
|
654
664
|
await confirmApproverIdentity(sourceBranch);
|
|
655
|
-
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 });
|
|
656
666
|
if (!confirmMerge) {
|
|
657
667
|
logger.info(`Merge cancelled. The ${noun} is created and can be merged from GitHub instead.`);
|
|
658
668
|
logger.hint(`PR: ${prUrl}`);
|