@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.
- package/README.md +205 -69
- 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 +24 -41
- 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 +27 -7
- 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 +17 -11
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/index.d.ts +2 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +3 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/integrate.d.ts +13 -0
- package/dist/commands/integrate.d.ts.map +1 -0
- package/dist/commands/integrate.js +128 -0
- package/dist/commands/integrate.js.map +1 -0
- 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 +20 -21
- 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 +27 -19
- package/dist/commands/ready-for-approval.js.map +1 -1
- package/dist/commands/release.d.ts +6 -0
- package/dist/commands/release.d.ts.map +1 -1
- package/dist/commands/release.js +189 -25
- package/dist/commands/release.js.map +1 -1
- package/dist/commands/ship-local-changes.d.ts +8 -0
- package/dist/commands/ship-local-changes.d.ts.map +1 -0
- package/dist/commands/ship-local-changes.js +34 -0
- package/dist/commands/ship-local-changes.js.map +1 -0
- 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-project-item.d.ts +27 -0
- package/dist/commands/start-project-item.d.ts.map +1 -0
- package/dist/commands/start-project-item.js +325 -0
- package/dist/commands/start-project-item.js.map +1 -0
- package/dist/commands/start.d.ts +8 -2
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +76 -35
- 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/claude-options.d.ts +3 -2
- package/dist/lib/claude-options.d.ts.map +1 -1
- package/dist/lib/claude-options.js +15 -4
- package/dist/lib/claude-options.js.map +1 -1
- 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/settings.d.ts +13 -3
- package/dist/lib/settings.d.ts.map +1 -1
- package/dist/lib/settings.js +12 -3
- package/dist/lib/settings.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 +41 -13
- package/dist/services/git.d.ts.map +1 -1
- package/dist/services/git.js +85 -46
- package/dist/services/git.js.map +1 -1
- package/dist/services/github.d.ts +28 -0
- package/dist/services/github.d.ts.map +1 -1
- package/dist/services/github.js +82 -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 +61 -37
- package/dist/services/setup.js.map +1 -1
- package/dist/services/workflow.d.ts +17 -0
- package/dist/services/workflow.d.ts.map +1 -0
- package/dist/services/workflow.js +39 -0
- package/dist/services/workflow.js.map +1 -0
- package/dist/services/worktree.js +1 -1
- package/dist/services/worktree.js.map +1 -1
- package/dist/types/index.d.ts +25 -24
- package/dist/types/index.d.ts.map +1 -1
- package/dist/version.d.ts +2 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +3 -2
- package/dist/version.js.map +1 -1
- package/dist/workflow/engine/approval-flow.d.ts +10 -2
- package/dist/workflow/engine/approval-flow.d.ts.map +1 -1
- package/dist/workflow/engine/approval-flow.js +58 -9
- package/dist/workflow/engine/approval-flow.js.map +1 -1
- package/dist/workflow/engine/handlers/agent-implementation.d.ts.map +1 -1
- package/dist/workflow/engine/handlers/agent-implementation.js +4 -11
- package/dist/workflow/engine/handlers/agent-implementation.js.map +1 -1
- package/dist/workflow/engine/handlers/approve-pr.d.ts.map +1 -1
- package/dist/workflow/engine/handlers/approve-pr.js +9 -3
- package/dist/workflow/engine/handlers/approve-pr.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/handlers/ready-for-approval.d.ts +5 -0
- package/dist/workflow/engine/handlers/ready-for-approval.d.ts.map +1 -1
- package/dist/workflow/engine/handlers/ready-for-approval.js +11 -7
- package/dist/workflow/engine/handlers/ready-for-approval.js.map +1 -1
- package/dist/workflow/engine/{release-flow.d.ts → release-engine.d.ts} +83 -6
- package/dist/workflow/engine/release-engine.d.ts.map +1 -0
- package/dist/workflow/engine/{release-flow.js → release-engine.js} +291 -19
- package/dist/workflow/engine/release-engine.js.map +1 -0
- package/dist/workflow/engine/ship-flow.d.ts +87 -0
- package/dist/workflow/engine/ship-flow.d.ts.map +1 -0
- package/dist/workflow/engine/ship-flow.js +221 -0
- package/dist/workflow/engine/ship-flow.js.map +1 -0
- package/dist/workflow/engine/workflow-engine.d.ts +85 -15
- package/dist/workflow/engine/workflow-engine.d.ts.map +1 -1
- package/dist/workflow/engine/workflow-engine.js +195 -66
- package/dist/workflow/engine/workflow-engine.js.map +1 -1
- package/package.json +3 -3
- package/dist/workflow/engine/release-flow.d.ts.map +0 -1
- package/dist/workflow/engine/release-flow.js.map +0 -1
|
@@ -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
|
|
@@ -16,19 +15,13 @@ import { isWorkMerged, requireLiveContext, requireWorkingPath } from '../workflo
|
|
|
16
15
|
*/
|
|
17
16
|
export const agentImplementationHandler = {
|
|
18
17
|
state: WorkflowStates.AgentImplementation,
|
|
19
|
-
options: [isolationModeOption, ...claudeSessionOptions,
|
|
18
|
+
options: [isolationModeOption, claudeEntryPointOption, ...claudeSessionOptions, ...claudeEntryPointPromptOptions],
|
|
20
19
|
async prepare(transition) {
|
|
21
20
|
if (isWorkMerged(transition)) {
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approve-pr.d.ts","sourceRoot":"","sources":["../../../../src/workflow/engine/handlers/approve-pr.ts"],"names":[],"mappings":"AAOA,OAAO,EAAoD,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEpH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"approve-pr.d.ts","sourceRoot":"","sources":["../../../../src/workflow/engine/handlers/approve-pr.ts"],"names":[],"mappings":"AAOA,OAAO,EAAoD,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEpH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,EAAE,oBAuD9B,CAAC"}
|
|
@@ -3,8 +3,8 @@ import * as git from '../../../services/git.js';
|
|
|
3
3
|
import * as github from '../../../services/github.js';
|
|
4
4
|
import { WorkflowBranchState } from '../../data/workflow-context.js';
|
|
5
5
|
import { WorkflowStates } from '../../data/workflow-states.js';
|
|
6
|
-
import { cleanUpMergedBranch, mergeAsApprover } from '../approval-flow.js';
|
|
7
|
-
import { confirmApproverIdentity } from '../release-
|
|
6
|
+
import { cleanUpMergedBranch, mergeAsApprover, mergeConfirmationOption } from '../approval-flow.js';
|
|
7
|
+
import { confirmApproverIdentity } from '../release-engine.js';
|
|
8
8
|
import { isWorkMerged, requireContext, requireLiveContext } from '../workflow-engine.js';
|
|
9
9
|
/**
|
|
10
10
|
* Entering "Approved and Merged": merge the PR. The merge IS the approval - it is performed by
|
|
@@ -20,6 +20,7 @@ import { isWorkMerged, requireContext, requireLiveContext } from '../workflow-en
|
|
|
20
20
|
*/
|
|
21
21
|
export const approvePrHandler = {
|
|
22
22
|
state: WorkflowStates.ApprovedAndMerged,
|
|
23
|
+
options: [mergeConfirmationOption],
|
|
23
24
|
async prepare(transition) {
|
|
24
25
|
// The pull request was merged on an earlier pass through this state.
|
|
25
26
|
if (isWorkMerged(transition)) {
|
|
@@ -43,7 +44,12 @@ export const approvePrHandler = {
|
|
|
43
44
|
return;
|
|
44
45
|
}
|
|
45
46
|
await confirmApproverIdentity(context.branchName);
|
|
46
|
-
await mergeAsApprover({
|
|
47
|
+
await mergeAsApprover({
|
|
48
|
+
branchName: context.branchName,
|
|
49
|
+
baseBranch: context.baseBranch,
|
|
50
|
+
prNumber: prInfo.number,
|
|
51
|
+
confirmed: transition.options[mergeConfirmationOption.longName] === 'true'
|
|
52
|
+
});
|
|
47
53
|
context.branchState = WorkflowBranchState.Merged;
|
|
48
54
|
},
|
|
49
55
|
async complete(transition) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approve-pr.js","sourceRoot":"","sources":["../../../../src/workflow/engine/handlers/approve-pr.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,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"approve-pr.js","sourceRoot":"","sources":["../../../../src/workflow/engine/handlers/approve-pr.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,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAA6B,MAAM,uBAAuB,CAAC;AAEpH;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAyB;IACpD,KAAK,EAAE,cAAc,CAAC,iBAAiB;IACvC,OAAO,EAAE,CAAC,uBAAuB,CAAC;IAElC,KAAK,CAAC,OAAO,CAAC,UAAU;QACtB,qEAAqE;QACrE,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;YACtE,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAE/C,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;YAC3B,MAAM,GAAG,CAAC,oBAAoB,EAAE,CAAC;QACnC,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC;QAC1C,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC;QAEpC,oFAAoF;QACpF,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC5C,MAAM,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,MAAM,yCAAyC,CAAC,CAAC;YAC1E,OAAO,CAAC,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC;YACjD,OAAO;QACT,CAAC;QAED,MAAM,uBAAuB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,eAAe,CAAC;YACpB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM;YACvB,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,uBAAuB,CAAC,QAAQ,CAAC,KAAK,MAAM;SAC3E,CAAC,CAAC;QACH,OAAO,CAAC,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,UAAU;QACvB,MAAM,OAAO,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,mBAAmB,CAAC;YACxB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,WAAW,EAAE,UAAU,CAAC,WAAW;SACpC,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACrC,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,kBAAkB,OAAO,CAAC,UAAU,uCAAuC,CAAC,CAAC;QACzF,MAAM,CAAC,IAAI,CAAC,iBAAiB,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;IAC5D,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"}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
+
import type { CommandOption } from '../../../types/index.js';
|
|
1
2
|
import { type WorkflowStateHandler } from '../workflow-engine.js';
|
|
3
|
+
/**
|
|
4
|
+
* Reviewers requested on the PR. Optional: the assignee is the approver.
|
|
5
|
+
*/
|
|
6
|
+
export declare const reviewersOption: CommandOption;
|
|
2
7
|
/**
|
|
3
8
|
* Entering "Needs Approval for Release": the PR is complete and gets its assignee - the person
|
|
4
9
|
* who will approve it by merging it with `idea1 approve-pr`. The assignee is required: without
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ready-for-approval.d.ts","sourceRoot":"","sources":["../../../../src/workflow/engine/handlers/ready-for-approval.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ready-for-approval.d.ts","sourceRoot":"","sources":["../../../../src/workflow/engine/handlers/ready-for-approval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAM7D,OAAO,EAAoC,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAEpG;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,aAM7B,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,EAAE,oBAgDrC,CAAC"}
|
|
@@ -4,6 +4,16 @@ import { removeWorktreeForWorkflowState } from '../../../services/worktree.js';
|
|
|
4
4
|
import { WorkflowStates } from '../../data/workflow-states.js';
|
|
5
5
|
import { ensurePrReadyForApproval } from '../approval-flow.js';
|
|
6
6
|
import { isWorkMerged, requireLiveContext } from '../workflow-engine.js';
|
|
7
|
+
/**
|
|
8
|
+
* Reviewers requested on the PR. Optional: the assignee is the approver.
|
|
9
|
+
*/
|
|
10
|
+
export const reviewersOption = {
|
|
11
|
+
longName: 'reviewers',
|
|
12
|
+
shortName: 'r',
|
|
13
|
+
description: 'Who to request a review from - optional, the assignee is the approver (select any number)',
|
|
14
|
+
choices: 'github-members',
|
|
15
|
+
multiSelect: true
|
|
16
|
+
};
|
|
7
17
|
/**
|
|
8
18
|
* Entering "Needs Approval for Release": the PR is complete and gets its assignee - the person
|
|
9
19
|
* who will approve it by merging it with `idea1 approve-pr`. The assignee is required: without
|
|
@@ -23,13 +33,7 @@ export const readyForApprovalHandler = {
|
|
|
23
33
|
choices: 'github-members',
|
|
24
34
|
validate: value => value.trim() ? undefined : 'An assignee is required - the assignee is the approver of record'
|
|
25
35
|
},
|
|
26
|
-
|
|
27
|
-
longName: 'reviewers',
|
|
28
|
-
shortName: 'r',
|
|
29
|
-
description: 'Who to request a review from - optional, the assignee is the approver (select any number)',
|
|
30
|
-
choices: 'github-members',
|
|
31
|
-
multiSelect: true
|
|
32
|
-
}
|
|
36
|
+
reviewersOption
|
|
33
37
|
],
|
|
34
38
|
async prepare(transition) {
|
|
35
39
|
if (isWorkMerged(transition)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ready-for-approval.js","sourceRoot":"","sources":["../../../../src/workflow/engine/handlers/ready-for-approval.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ready-for-approval.js","sourceRoot":"","sources":["../../../../src/workflow/engine/handlers/ready-for-approval.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,KAAK,GAAG,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAA6B,MAAM,uBAAuB,CAAC;AAEpG;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAkB;IAC5C,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,GAAG;IACd,WAAW,EAAE,2FAA2F;IACxG,OAAO,EAAE,gBAAgB;IACzB,WAAW,EAAE,IAAI;CAClB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAyB;IAC3D,KAAK,EAAE,cAAc,CAAC,uBAAuB;IAC7C,OAAO,EAAE;QACP;YACE,QAAQ,EAAE,UAAU;YACpB,SAAS,EAAE,GAAG;YACd,WAAW,EAAE,+FAA+F;YAC5G,OAAO,EAAE,gBAAgB;YACzB,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kEAAkE;SACjH;QACD,eAAe;KAChB;IAED,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,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;YAC3B,MAAM,GAAG,CAAC,oBAAoB,EAAE,CAAC;QACnC,CAAC;QAED,oFAAoF;QACpF,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC;YAC5C,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC;YACxC,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE;YAChD,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAC;QACH,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC;IACtC,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,uBAAuB,EAAE,UAAU,EAAE,UAAU,CAAC,cAAc,EAAE,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC,CAAC;QAEzJ,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,qGAAqG,CAAC,CAAC;IACrH,CAAC;CACF,CAAC"}
|
|
@@ -1,11 +1,23 @@
|
|
|
1
|
-
import type { CommandOption } from '../../types/index.js';
|
|
1
|
+
import type { CommandOption, VersionedPackage } from '../../types/index.js';
|
|
2
2
|
/**
|
|
3
|
-
* The gated PR sequence
|
|
3
|
+
* The release engine: the gated PR sequence, a PR whose body is the approval chain of the changes it carries, assigned
|
|
4
4
|
* to its approver, merged only once the required CI/CD checks have passed. `idea1 release`
|
|
5
5
|
* (release branch -> main) runs the whole sequence here, including the one sanctioned admin
|
|
6
6
|
* override (change-management-policy.md clause 3) recorded on the PR before any merge happens.
|
|
7
7
|
* `idea1 ready-for-approval` opens a stage-1 change PR with the same kind of body for a branch
|
|
8
8
|
* that has no project item (see approval-flow.ts).
|
|
9
|
+
*
|
|
10
|
+
* A release's version bumps land on the release branch before its PR is opened, so the PR's head,
|
|
11
|
+
* and the one CI/CD run the release is gated on, already carry them. The packages that changed since
|
|
12
|
+
* the last release are detected here, and this engine makes the bump itself: it edits each package's
|
|
13
|
+
* `package.json` and the lockfiles above it in the local checkout, commits the edit as one
|
|
14
|
+
* `chore: bump ...` commit, and pushes it. The repository only declares which folders are candidates
|
|
15
|
+
* (`release.versionedPackages` in `.idea1/settings.json`); no script or workflow is involved.
|
|
16
|
+
*
|
|
17
|
+
* The platform's `ReleaseEngine` (backend-core/applicationlayer/workflow) runs the same release
|
|
18
|
+
* sequence from the web app and writes the same PR and the same bump commit, by making the same edits
|
|
19
|
+
* to the same files and committing them through the GitHub API instead of a local checkout, so a
|
|
20
|
+
* release cut on either side reads the same. Keep the two in step.
|
|
9
21
|
*/
|
|
10
22
|
/** Which command opened the PR; shapes the PR body and the override record. */
|
|
11
23
|
export interface GatedPrKind {
|
|
@@ -28,7 +40,8 @@ export type PrMode = 'create' | 'merge';
|
|
|
28
40
|
/**
|
|
29
41
|
* The `--pr-mode` option of `idea1 release`. `create` is the default: the PR is opened and the
|
|
30
42
|
* approver merges it in GitHub once the required checks are green - that merge is the approval of
|
|
31
|
-
* record, exactly as in `merge` mode, where the CLI
|
|
43
|
+
* record, exactly as in `merge` mode, where the CLI turns on GitHub's auto-merge on the approver's
|
|
44
|
+
* behalf (or, where GitHub can't auto-merge, waits for the checks and merges here).
|
|
32
45
|
*/
|
|
33
46
|
export declare const PR_MODE_OPTION: CommandOption;
|
|
34
47
|
/** The first line of the comment that records an admin override; the evidence script keys on it. */
|
|
@@ -40,11 +53,50 @@ export declare const OVERRIDE_COMMENT_MARKER = "**Change-management exception: m
|
|
|
40
53
|
* the two separately.
|
|
41
54
|
*/
|
|
42
55
|
export declare const UNAPPROVED_COMMITS_COMMENT_MARKER = "**Change-management exception: released with commits that had no pull request.**";
|
|
56
|
+
/**
|
|
57
|
+
* The first line of the comment that records a release approved in the Idea1 web app. A web merge,
|
|
58
|
+
* or a web-enabled auto-merge, is performed by the Idea1 GitHub App, so GitHub records the app as
|
|
59
|
+
* `merged_by`; the platform posts this comment, naming the approver, before the merge happens, and
|
|
60
|
+
* the evidence script keys on it to attribute the merge to that approver.
|
|
61
|
+
*/
|
|
62
|
+
export declare const RELEASE_APPROVAL_COMMENT_MARKER = "**Change-management approval: release approved in Idea1.**";
|
|
43
63
|
/**
|
|
44
64
|
* The local checkout must be the source branch, clean, fully pushed and level with origin, so the
|
|
45
65
|
* PR carries exactly what the person running the command is looking at.
|
|
46
66
|
*/
|
|
47
67
|
export declare function validateSourceBranch(sourceBranch: string): Promise<void>;
|
|
68
|
+
export type VersionBumpType = 'patch' | 'minor' | 'major';
|
|
69
|
+
export declare const VERSION_BUMP_TYPES: readonly VersionBumpType[];
|
|
70
|
+
/** A versioned package that changed in the release without its version being bumped yet. */
|
|
71
|
+
export interface PendingVersionBump extends VersionedPackage {
|
|
72
|
+
currentVersion: string;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* The versioned packages the release still has to bump, read from origin's branches as last
|
|
76
|
+
* fetched. A package needs a bump when its folder changed between the target and the release
|
|
77
|
+
* branch and its package.json version is still the same on both - a version that already differs
|
|
78
|
+
* was bumped for this release, so re-running a release never bumps twice. The Idea1 web app applies
|
|
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.
|
|
84
|
+
*/
|
|
85
|
+
export declare function detectPendingVersionBumps(packages: readonly VersionedPackage[], releaseBranch: string, targetBranch: string, incomingBranches: readonly string[]): Promise<PendingVersionBump[]>;
|
|
86
|
+
export interface CommitVersionBumpsOptions {
|
|
87
|
+
/** The release branch, which must be the checked-out branch. */
|
|
88
|
+
releaseBranch: string;
|
|
89
|
+
/** The packages that need a bump, as `detectPendingVersionBumps` returned them. */
|
|
90
|
+
pending: readonly PendingVersionBump[];
|
|
91
|
+
/** Bump type per package name; every pending package needs one. */
|
|
92
|
+
bumps: Record<string, VersionBumpType>;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Bump the versions of the pending packages in one commit on the release branch and push it, so
|
|
96
|
+
* the release PR opens against a branch that already carries them. The commit is `chore: bump
|
|
97
|
+
* <package> <version>, ...` and is made as whoever runs the command.
|
|
98
|
+
*/
|
|
99
|
+
export declare function commitVersionBumps(options: CommitVersionBumpsOptions): Promise<void>;
|
|
48
100
|
interface BranchCommit {
|
|
49
101
|
sha: string;
|
|
50
102
|
author: string;
|
|
@@ -101,20 +153,45 @@ export declare function confirmApproverIdentity(branchName: string): Promise<voi
|
|
|
101
153
|
* comment cannot be posted, nothing is merged.
|
|
102
154
|
*/
|
|
103
155
|
export declare function mergeWithCheckGate(branchName: string, kind: GatedPrKind): Promise<void>;
|
|
156
|
+
/** What `enableAutoMergeOrPoll` left the PR as. */
|
|
157
|
+
export type AutoMergeOutcome = 'auto-merge-enabled' | 'merged';
|
|
158
|
+
/**
|
|
159
|
+
* Merge the PR the way that records the person running this as `merged_by`, without them having to
|
|
160
|
+
* wait: GitHub's auto-merge, which merges once the required checks pass. Where GitHub can't
|
|
161
|
+
* auto-merge (the PR is already mergeable, or the repository doesn't allow auto-merge), it falls
|
|
162
|
+
* back to waiting for the checks here and merging (`mergeWithCheckGate`, with its admin-override
|
|
163
|
+
* path). Any other refusal throws.
|
|
164
|
+
*/
|
|
165
|
+
export declare function enableAutoMergeOrPoll(branchName: string, kind: GatedPrKind): Promise<AutoMergeOutcome>;
|
|
104
166
|
export interface RunPrModeOptions {
|
|
105
167
|
mode: PrMode;
|
|
106
168
|
sourceBranch: string;
|
|
107
169
|
targetBranch: string;
|
|
108
170
|
prUrl: string;
|
|
109
171
|
kind: GatedPrKind;
|
|
110
|
-
/**
|
|
172
|
+
/**
|
|
173
|
+
* Open the Actions page after a merge made here - the merge to main triggers the production
|
|
174
|
+
* deploy. An auto-merge GitHub performs later opens nothing.
|
|
175
|
+
*/
|
|
111
176
|
openActionsAfterMerge: boolean;
|
|
177
|
+
/** The approver already said to merge (`--yes`), so the merge is not confirmed again. */
|
|
178
|
+
confirmed: boolean;
|
|
112
179
|
}
|
|
113
180
|
/**
|
|
114
181
|
* Finish the sequence in the chosen mode. Either way the merge is the approval of record: in
|
|
115
182
|
* `create` mode the approver performs it in GitHub once the checks are green; in `merge` mode the
|
|
116
|
-
* CLI
|
|
183
|
+
* CLI turns on GitHub's auto-merge as the approver, so GitHub merges once the checks pass and
|
|
184
|
+
* records the approver as the merger - or, where GitHub can't auto-merge, waits for the checks and
|
|
185
|
+
* merges here.
|
|
117
186
|
*/
|
|
118
187
|
export declare function runPrMode(options: RunPrModeOptions): Promise<void>;
|
|
188
|
+
/**
|
|
189
|
+
* `idea1 release --approve`: approve and merge the open release PR from the source branch into the
|
|
190
|
+
* target, as its approver. With every check passed it merges now; with checks still running it
|
|
191
|
+
* turns on auto-merge (or waits and merges where GitHub can't auto-merge); with a failed check it
|
|
192
|
+
* goes to the gate's admin-override path, which refuses unless the override is confirmed, reasoned
|
|
193
|
+
* and recorded.
|
|
194
|
+
*/
|
|
195
|
+
export declare function approveRelease(sourceBranch: string, targetBranch: string): Promise<void>;
|
|
119
196
|
export {};
|
|
120
|
-
//# sourceMappingURL=release-
|
|
197
|
+
//# sourceMappingURL=release-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-engine.d.ts","sourceRoot":"","sources":["../../../src/workflow/engine/release-engine.ts"],"names":[],"mappings":"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"}
|