@idea1/cli 1.2.3 → 1.3.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 +19 -152
- package/dist/cli/parser.d.ts +20 -0
- package/dist/cli/parser.d.ts.map +1 -0
- package/dist/cli/parser.js +105 -0
- package/dist/cli/parser.js.map +1 -0
- package/dist/cli/resolver.d.ts +16 -0
- package/dist/cli/resolver.d.ts.map +1 -0
- package/dist/cli/resolver.js +72 -0
- package/dist/cli/resolver.js.map +1 -0
- package/dist/cli.d.ts +0 -5
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +38 -357
- package/dist/cli.js.map +1 -1
- package/dist/commands/approve-pr.d.ts.map +1 -1
- package/dist/commands/approve-pr.js +13 -28
- package/dist/commands/approve-pr.js.map +1 -1
- package/dist/commands/close-worktree.d.ts.map +1 -1
- package/dist/commands/close-worktree.js +29 -42
- package/dist/commands/close-worktree.js.map +1 -1
- package/dist/commands/create-worktree.d.ts.map +1 -1
- package/dist/commands/create-worktree.js +34 -55
- package/dist/commands/create-worktree.js.map +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +107 -68
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/index.d.ts +2 -2
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +10 -8
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/next-workflow-step.js +4 -4
- package/dist/commands/next-workflow-step.js.map +1 -1
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +45 -54
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/ready-for-approval.d.ts.map +1 -1
- package/dist/commands/ready-for-approval.js +25 -62
- package/dist/commands/ready-for-approval.js.map +1 -1
- package/dist/commands/release.d.ts.map +1 -1
- package/dist/commands/release.js +47 -98
- package/dist/commands/release.js.map +1 -1
- package/dist/commands/start-dev-implementation.d.ts.map +1 -1
- package/dist/commands/start-dev-implementation.js +41 -43
- package/dist/commands/start-dev-implementation.js.map +1 -1
- package/dist/commands/start-project-item.d.ts.map +1 -1
- package/dist/commands/start-project-item.js +214 -150
- package/dist/commands/start-project-item.js.map +1 -1
- package/dist/commands/update-branch.d.ts +3 -0
- package/dist/commands/update-branch.d.ts.map +1 -0
- package/dist/commands/update-branch.js +191 -0
- package/dist/commands/update-branch.js.map +1 -0
- package/dist/commands/update-docs.js +1 -1
- package/dist/commands/update-docs.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/interactive.d.ts +19 -0
- package/dist/interactive.d.ts.map +1 -1
- package/dist/interactive.js +14 -56
- package/dist/interactive.js.map +1 -1
- package/dist/lib/settings.d.ts +18 -0
- package/dist/lib/settings.d.ts.map +1 -1
- package/dist/lib/settings.js +30 -0
- package/dist/lib/settings.js.map +1 -1
- package/dist/services/claude.d.ts +5 -0
- package/dist/services/claude.d.ts.map +1 -1
- package/dist/services/claude.js +16 -0
- package/dist/services/claude.js.map +1 -1
- package/dist/services/config.d.ts +8 -0
- package/dist/services/config.d.ts.map +1 -1
- package/dist/services/config.js +14 -1
- package/dist/services/config.js.map +1 -1
- package/dist/services/git.d.ts +49 -0
- package/dist/services/git.d.ts.map +1 -1
- package/dist/services/git.js +129 -2
- package/dist/services/git.js.map +1 -1
- package/dist/services/worktree.d.ts +36 -2
- package/dist/services/worktree.d.ts.map +1 -1
- package/dist/services/worktree.js +164 -7
- package/dist/services/worktree.js.map +1 -1
- package/dist/types/index.d.ts +31 -93
- package/dist/types/index.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -2
|
@@ -1,41 +1,27 @@
|
|
|
1
1
|
import { logger } from '../lib/logger.js';
|
|
2
|
+
import { getRemoveWorktreeOnDevTransition } from '../lib/settings.js';
|
|
2
3
|
import * as git from '../services/git.js';
|
|
3
4
|
import * as github from '../services/github.js';
|
|
4
5
|
import * as claude from '../services/claude.js';
|
|
5
6
|
import * as workflow from '../services/workflow.js';
|
|
6
|
-
/**
|
|
7
|
-
* Parse command line arguments for start-dev-implementation
|
|
8
|
-
*/
|
|
9
|
-
function parseArgs(args) {
|
|
10
|
-
const options = {};
|
|
11
|
-
let i = 0;
|
|
12
|
-
while (i < args.length) {
|
|
13
|
-
const arg = args[i];
|
|
14
|
-
switch (arg) {
|
|
15
|
-
case '--source-path':
|
|
16
|
-
case '-p':
|
|
17
|
-
i++;
|
|
18
|
-
options.sourcePath = args[i];
|
|
19
|
-
break;
|
|
20
|
-
default:
|
|
21
|
-
if (arg.startsWith('-')) {
|
|
22
|
-
throw new Error(`Unknown option: ${arg}`);
|
|
23
|
-
}
|
|
24
|
-
throw new Error(`Unexpected argument: ${arg}`);
|
|
25
|
-
}
|
|
26
|
-
i++;
|
|
27
|
-
}
|
|
28
|
-
return options;
|
|
29
|
-
}
|
|
30
7
|
export const startDevImplementationCommand = {
|
|
31
8
|
name: 'start-dev-implementation',
|
|
32
9
|
aliases: ['dev'],
|
|
33
|
-
description: 'Transition from agent to dev implementation - creates PR and closes worktree',
|
|
34
|
-
|
|
35
|
-
|
|
10
|
+
description: 'Transition from agent to dev implementation - creates PR and optionally closes worktree',
|
|
11
|
+
options: [
|
|
12
|
+
{
|
|
13
|
+
longName: 'source-path',
|
|
14
|
+
shortName: 'p',
|
|
15
|
+
description: 'Path to worktree directory',
|
|
16
|
+
defaultValue: '',
|
|
17
|
+
promptWhenDefaultExists: false
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
async execute(resolved) {
|
|
21
|
+
const sourcePath = resolved['source-path'];
|
|
36
22
|
// Navigate to source path if provided
|
|
37
|
-
if (
|
|
38
|
-
process.chdir(
|
|
23
|
+
if (sourcePath) {
|
|
24
|
+
process.chdir(sourcePath);
|
|
39
25
|
}
|
|
40
26
|
// Validate transition
|
|
41
27
|
const validation = await workflow.validateTransition('start-dev-implementation');
|
|
@@ -74,20 +60,15 @@ export const startDevImplementationCommand = {
|
|
|
74
60
|
// Update workflow state
|
|
75
61
|
await git.storeWorkflowState('Dev implementation');
|
|
76
62
|
await claude.setWorkflowStatus(projectItemUrl, 'Dev implementation');
|
|
77
|
-
// If in a worktree, close it
|
|
63
|
+
// If in a worktree, optionally close it based on settings
|
|
78
64
|
if (isWorktree) {
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
// Garbage collect orphaned branch configs
|
|
87
|
-
logger.step('Cleaning up orphaned branch configs...');
|
|
88
|
-
await git.gcOrphanedBranchConfigs();
|
|
89
|
-
// Checkout the branch in main repo
|
|
90
|
-
await git.checkoutBranch(branchName);
|
|
65
|
+
const shouldRemove = await getRemoveWorktreeOnDevTransition(mainRepoRoot);
|
|
66
|
+
if (shouldRemove) {
|
|
67
|
+
await removeCurrentWorktree(mainRepoRoot, branchName);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
logger.dim('Worktree kept (removeWorktreeOnDevTransition is not enabled)');
|
|
71
|
+
}
|
|
91
72
|
}
|
|
92
73
|
logger.newline();
|
|
93
74
|
logger.success('Transitioned to Dev implementation');
|
|
@@ -95,7 +76,24 @@ export const startDevImplementationCommand = {
|
|
|
95
76
|
if (prInfo) {
|
|
96
77
|
logger.hint(`PR: ${prInfo.url}`);
|
|
97
78
|
}
|
|
98
|
-
logger.hint('When ready for review, run: idea1 ready-for-approval [reviewer]');
|
|
79
|
+
logger.hint('When ready for review, run: idea1 ready-for-approval [--reviewer <username>]');
|
|
99
80
|
}
|
|
100
81
|
};
|
|
82
|
+
/**
|
|
83
|
+
* Remove the current worktree and checkout the branch in the main repo
|
|
84
|
+
*/
|
|
85
|
+
async function removeCurrentWorktree(mainRepoRoot, branchName) {
|
|
86
|
+
const worktreePath = process.cwd();
|
|
87
|
+
// Navigate to main repo root
|
|
88
|
+
process.chdir(mainRepoRoot);
|
|
89
|
+
// Remove the worktree
|
|
90
|
+
logger.newline();
|
|
91
|
+
logger.step('Removing worktree...');
|
|
92
|
+
await git.removeWorktree(worktreePath);
|
|
93
|
+
// Garbage collect orphaned branch configs
|
|
94
|
+
logger.step('Cleaning up orphaned branch configs...');
|
|
95
|
+
await git.gcOrphanedBranchConfigs();
|
|
96
|
+
// Checkout the branch in main repo
|
|
97
|
+
await git.checkoutBranch(branchName);
|
|
98
|
+
}
|
|
101
99
|
//# sourceMappingURL=start-dev-implementation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-dev-implementation.js","sourceRoot":"","sources":["../../src/commands/start-dev-implementation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAEpD
|
|
1
|
+
{"version":3,"file":"start-dev-implementation.js","sourceRoot":"","sources":["../../src/commands/start-dev-implementation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-project-item.d.ts","sourceRoot":"","sources":["../../src/commands/start-project-item.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"start-project-item.d.ts","sourceRoot":"","sources":["../../src/commands/start-project-item.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAA+D,MAAM,mBAAmB,CAAC;AAqD9G,eAAO,MAAM,uBAAuB,EAAE,OA8IrC,CAAC"}
|
|
@@ -1,140 +1,55 @@
|
|
|
1
1
|
import { logger } from '../lib/logger.js';
|
|
2
|
+
import { promptTextInput, promptSelection } from '../interactive.js';
|
|
2
3
|
import * as git from '../services/git.js';
|
|
3
4
|
import * as claude from '../services/claude.js';
|
|
4
5
|
import * as worktree from '../services/worktree.js';
|
|
5
6
|
import { configService } from '../services/config.js';
|
|
6
|
-
import inquirer from 'inquirer';
|
|
7
|
-
/**
|
|
8
|
-
* Parse command line arguments for start-project-item
|
|
9
|
-
*/
|
|
10
7
|
const VALID_PERMISSION_MODES = ['acceptEdits', 'bypassPermissions', 'default', 'delegate', 'dontAsk', 'plan'];
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
throw new Error('--isolation-mode must be either "worktree" or "container"');
|
|
33
|
-
}
|
|
34
|
-
break;
|
|
35
|
-
case '--source-path':
|
|
36
|
-
case '-p':
|
|
37
|
-
i++;
|
|
38
|
-
options.sourcePath = args[i];
|
|
39
|
-
break;
|
|
40
|
-
case '--base-branch':
|
|
41
|
-
case '-b':
|
|
42
|
-
i++;
|
|
43
|
-
options.baseBranch = args[i];
|
|
44
|
-
break;
|
|
45
|
-
case '--build-image':
|
|
46
|
-
options.buildImage = true;
|
|
47
|
-
break;
|
|
48
|
-
case '--disable-firewall':
|
|
49
|
-
options.disableFirewall = true;
|
|
50
|
-
break;
|
|
51
|
-
case '--permission-mode':
|
|
52
|
-
case '-pm':
|
|
53
|
-
i++;
|
|
54
|
-
if (VALID_PERMISSION_MODES.includes(args[i])) {
|
|
55
|
-
options.permissionMode = args[i];
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
throw new Error(`--permission-mode must be one of: ${VALID_PERMISSION_MODES.join(', ')}`);
|
|
59
|
-
}
|
|
60
|
-
break;
|
|
61
|
-
default:
|
|
62
|
-
if (arg.startsWith('-')) {
|
|
63
|
-
throw new Error(`Unknown option: ${arg}`);
|
|
64
|
-
}
|
|
65
|
-
if (!projectItemUrl) {
|
|
66
|
-
projectItemUrl = arg;
|
|
67
|
-
}
|
|
68
|
-
else if (!shortBranchName) {
|
|
69
|
-
shortBranchName = arg;
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
throw new Error('Too many arguments');
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
i++;
|
|
76
|
-
}
|
|
77
|
-
return { projectItemUrl, shortBranchName, options };
|
|
78
|
-
}
|
|
8
|
+
const VALID_ENTRY_POINT_MODES = ['launch', 'inline', 'none'];
|
|
9
|
+
const ENTRY_POINT_MODE_CHOICES = [
|
|
10
|
+
{ label: 'Launch new Claude session', value: 'launch' },
|
|
11
|
+
{ label: 'Output prompt for current Claude session', value: 'inline' },
|
|
12
|
+
{ label: 'Do not invoke Claude', value: 'none' }
|
|
13
|
+
];
|
|
14
|
+
const WORKFLOW_CHOICES = [
|
|
15
|
+
{ label: 'Independent Feature', value: 'independent' },
|
|
16
|
+
{ label: 'Work for Integration', value: 'integration' }
|
|
17
|
+
];
|
|
18
|
+
const STACK_CHOICES = [
|
|
19
|
+
{ label: 'No', value: 'no' },
|
|
20
|
+
{ label: 'Yes - specify a branch', value: 'branch' },
|
|
21
|
+
{ label: 'Yes - specify a project item URL', value: 'url' }
|
|
22
|
+
];
|
|
23
|
+
const INTEGRATION_BRANCH_CHOICES = [
|
|
24
|
+
{ label: 'Create new integration branch', value: 'new' },
|
|
25
|
+
{ label: 'Use existing integration branch', value: 'existing' }
|
|
26
|
+
];
|
|
79
27
|
/**
|
|
80
|
-
*
|
|
28
|
+
* Resolve the stack branch from a project item URL by looking up its branch in git config
|
|
81
29
|
*/
|
|
82
|
-
async function
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
{
|
|
92
|
-
|
|
93
|
-
name: 'choice',
|
|
94
|
-
message: 'Select base branch:',
|
|
95
|
-
choices: [
|
|
96
|
-
{ name: `Current branch (${currentBranch})`, value: 'current' },
|
|
97
|
-
{ name: 'working/release', value: 'working/release' },
|
|
98
|
-
{ name: 'Enter custom branch', value: 'custom' }
|
|
99
|
-
],
|
|
100
|
-
default: 'current'
|
|
30
|
+
async function resolveStackBranchFromUrl(projectItemUrl) {
|
|
31
|
+
// Search git config for a branch that has this project item URL
|
|
32
|
+
const { exec } = await import('../lib/shell.js');
|
|
33
|
+
const result = await exec('git', ['config', '--local', '--list']);
|
|
34
|
+
if (result.exitCode !== 0)
|
|
35
|
+
return null;
|
|
36
|
+
const lines = result.stdout.split('\n');
|
|
37
|
+
for (const line of lines) {
|
|
38
|
+
const match = line.match(/^branch\.(.+)\.idea1ProjectItemUrl=(.+)$/);
|
|
39
|
+
if (match && match[2] === projectItemUrl) {
|
|
40
|
+
return match[1];
|
|
101
41
|
}
|
|
102
|
-
]);
|
|
103
|
-
if (choice === 'current') {
|
|
104
|
-
return currentBranch;
|
|
105
42
|
}
|
|
106
|
-
|
|
107
|
-
const { customBranch } = await inquirer.prompt([
|
|
108
|
-
{
|
|
109
|
-
type: 'input',
|
|
110
|
-
name: 'customBranch',
|
|
111
|
-
message: 'Enter branch name:',
|
|
112
|
-
validate: (input) => input.trim() ? true : 'Branch name cannot be empty'
|
|
113
|
-
}
|
|
114
|
-
]);
|
|
115
|
-
return customBranch.trim();
|
|
116
|
-
}
|
|
117
|
-
return choice;
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Setup container isolation mode (not yet implemented)
|
|
121
|
-
*/
|
|
122
|
-
async function setupContainerIsolation(_fullBranchName, _shortBranchName, _projectItemUrl, _options) {
|
|
123
|
-
logger.error('Container isolation mode is not yet implemented in the CLI tool.');
|
|
124
|
-
logger.info('Please use the shell script directly:');
|
|
125
|
-
logger.plain('dev/workflow/start-project-item.sh --isolation-mode container <url>');
|
|
43
|
+
return null;
|
|
126
44
|
}
|
|
127
45
|
export const startProjectItemCommand = {
|
|
128
46
|
name: 'start-project-item',
|
|
129
47
|
aliases: ['s', 'start'],
|
|
130
48
|
description: 'Start implementing a project item in an isolated environment',
|
|
131
|
-
|
|
49
|
+
options: [
|
|
132
50
|
{
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
description: 'The idea1.ai project item URL to implement',
|
|
136
|
-
required: true,
|
|
137
|
-
type: 'text',
|
|
51
|
+
longName: 'url',
|
|
52
|
+
description: 'Project item URL',
|
|
138
53
|
validate: (value) => {
|
|
139
54
|
if (!value)
|
|
140
55
|
return 'URL is required';
|
|
@@ -145,15 +60,70 @@ export const startProjectItemCommand = {
|
|
|
145
60
|
}
|
|
146
61
|
},
|
|
147
62
|
{
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
description: '
|
|
151
|
-
|
|
152
|
-
|
|
63
|
+
longName: 'branch-name',
|
|
64
|
+
shortName: 'n',
|
|
65
|
+
description: 'Branch name (auto-generated if not provided)',
|
|
66
|
+
defaultValue: undefined,
|
|
67
|
+
promptWhenDefaultExists: true
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
longName: 'source-path',
|
|
71
|
+
shortName: 'p',
|
|
72
|
+
description: 'Path to source directory',
|
|
73
|
+
defaultValue: '',
|
|
74
|
+
promptWhenDefaultExists: false
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
longName: 'base-branch',
|
|
78
|
+
shortName: 'b',
|
|
79
|
+
description: 'Base branch',
|
|
80
|
+
defaultValue: () => configService.getDefaultBaseBranch(),
|
|
81
|
+
promptWhenDefaultExists: false
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
longName: 'permission-mode',
|
|
85
|
+
shortName: 'pm',
|
|
86
|
+
description: 'Claude permission mode',
|
|
87
|
+
defaultValue: 'plan',
|
|
88
|
+
promptWhenDefaultExists: true,
|
|
89
|
+
choices: VALID_PERMISSION_MODES.map(m => ({ label: m, value: m })),
|
|
90
|
+
validate: (value) => {
|
|
91
|
+
if (!VALID_PERMISSION_MODES.includes(value)) {
|
|
92
|
+
return `Must be one of: ${VALID_PERMISSION_MODES.join(', ')}`;
|
|
93
|
+
}
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
longName: 'workflow-type',
|
|
99
|
+
shortName: 'w',
|
|
100
|
+
description: 'Development workflow type',
|
|
101
|
+
defaultValue: undefined,
|
|
102
|
+
choices: WORKFLOW_CHOICES
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
longName: 'claude-entry-point',
|
|
106
|
+
shortName: 'im',
|
|
107
|
+
description: 'How to invoke Claude after setup',
|
|
108
|
+
defaultValue: 'launch',
|
|
109
|
+
promptWhenDefaultExists: false,
|
|
110
|
+
choices: ENTRY_POINT_MODE_CHOICES,
|
|
111
|
+
validate: (value) => {
|
|
112
|
+
if (!VALID_ENTRY_POINT_MODES.includes(value)) {
|
|
113
|
+
return `Must be one of: ${VALID_ENTRY_POINT_MODES.join(', ')}`;
|
|
114
|
+
}
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
153
117
|
}
|
|
154
118
|
],
|
|
155
|
-
async execute(
|
|
156
|
-
const
|
|
119
|
+
async execute(resolved) {
|
|
120
|
+
const projectItemUrl = resolved['url'];
|
|
121
|
+
const sourcePath = resolved['source-path'];
|
|
122
|
+
const baseBranch = resolved['base-branch'];
|
|
123
|
+
const permissionMode = resolved['permission-mode'];
|
|
124
|
+
const workflowType = (resolved['workflow-type'] ?? 'independent');
|
|
125
|
+
const claudeEntryPointMode = (resolved['claude-entry-point'] ?? 'launch');
|
|
126
|
+
let shortBranchName = resolved['branch-name'] || undefined;
|
|
157
127
|
if (!projectItemUrl) {
|
|
158
128
|
throw new Error('Please provide a project item URL');
|
|
159
129
|
}
|
|
@@ -161,19 +131,13 @@ export const startProjectItemCommand = {
|
|
|
161
131
|
if (!projectItemUrl.includes('idea1.ai/project/items/')) {
|
|
162
132
|
logger.warning('URL does not appear to be an idea1.ai project item URL');
|
|
163
133
|
}
|
|
164
|
-
// Handle --base-branch prompt
|
|
165
|
-
if (options.baseBranch === 'prompt') {
|
|
166
|
-
options.baseBranch = await promptBaseBranch();
|
|
167
|
-
logger.info(`Using base branch: ${options.baseBranch}`);
|
|
168
|
-
}
|
|
169
134
|
// Navigate to source path if provided
|
|
170
|
-
if (
|
|
171
|
-
process.chdir(
|
|
135
|
+
if (sourcePath) {
|
|
136
|
+
process.chdir(sourcePath);
|
|
172
137
|
}
|
|
173
138
|
// Set workflow status to "Agent implementation"
|
|
174
139
|
await claude.setWorkflowStatus(projectItemUrl, 'Agent implementation');
|
|
175
140
|
// Generate branch name if not provided
|
|
176
|
-
let shortBranchName = providedBranchName;
|
|
177
141
|
if (!shortBranchName) {
|
|
178
142
|
shortBranchName = await claude.generateBranchName(projectItemUrl);
|
|
179
143
|
}
|
|
@@ -181,23 +145,123 @@ export const startProjectItemCommand = {
|
|
|
181
145
|
if (!shortBranchName) {
|
|
182
146
|
throw new Error('Failed to generate a branch name');
|
|
183
147
|
}
|
|
184
|
-
//
|
|
185
|
-
const
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
148
|
+
// Prompt for stack option
|
|
149
|
+
const stackChoice = await promptSelection('Stack this branch on another?', STACK_CHOICES);
|
|
150
|
+
let stackBranch = null;
|
|
151
|
+
if (stackChoice === 'branch') {
|
|
152
|
+
stackBranch = await promptTextInput('Branch to stack on');
|
|
153
|
+
if (!stackBranch) {
|
|
154
|
+
throw new Error('Stack branch is required when stacking');
|
|
155
|
+
}
|
|
156
|
+
const stackExists = await git.branchExists(stackBranch);
|
|
157
|
+
if (!stackExists) {
|
|
158
|
+
throw new Error(`Stack branch '${stackBranch}' does not exist locally or on origin`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
else if (stackChoice === 'url') {
|
|
162
|
+
const stackUrl = await promptTextInput('Project item URL to stack on');
|
|
163
|
+
if (!stackUrl) {
|
|
164
|
+
throw new Error('Project item URL is required when stacking by URL');
|
|
165
|
+
}
|
|
166
|
+
stackBranch = await resolveStackBranchFromUrl(stackUrl);
|
|
167
|
+
if (!stackBranch) {
|
|
168
|
+
throw new Error(`No branch found for project item URL: ${stackUrl}. Make sure the project item has been started.`);
|
|
169
|
+
}
|
|
170
|
+
logger.info(`Resolved stack branch: ${stackBranch}`);
|
|
171
|
+
}
|
|
172
|
+
if (workflowType === 'independent') {
|
|
173
|
+
await startIndependentFeature(projectItemUrl, shortBranchName, baseBranch, permissionMode, claudeEntryPointMode, stackBranch);
|
|
193
174
|
}
|
|
194
175
|
else {
|
|
195
|
-
await
|
|
196
|
-
projectItemUrl,
|
|
197
|
-
launchClaude: true,
|
|
198
|
-
permissionMode: options.permissionMode
|
|
199
|
-
});
|
|
176
|
+
await startWorkForIntegration(projectItemUrl, shortBranchName, baseBranch, permissionMode, claudeEntryPointMode, stackBranch);
|
|
200
177
|
}
|
|
201
178
|
}
|
|
202
179
|
};
|
|
180
|
+
/**
|
|
181
|
+
* Start an Independent Feature workflow
|
|
182
|
+
*/
|
|
183
|
+
async function startIndependentFeature(projectItemUrl, shortBranchName, baseBranch, permissionMode, claudeEntryPointMode, stackBranch) {
|
|
184
|
+
logger.section('Independent Feature Workflow');
|
|
185
|
+
// Resolve branch prefix
|
|
186
|
+
const branchPrefix = await worktree.resolveBranchPrefix();
|
|
187
|
+
// Determine which branch to base off of
|
|
188
|
+
const sourceBranch = stackBranch ?? baseBranch;
|
|
189
|
+
// PR always targets baseBranch for independent features
|
|
190
|
+
const prTargetBranch = baseBranch;
|
|
191
|
+
const fullBranchName = `${branchPrefix}/${shortBranchName}`;
|
|
192
|
+
if (stackBranch) {
|
|
193
|
+
logger.info(`Stacked workflow: branching from ${stackBranch}, PR will target ${baseBranch}`);
|
|
194
|
+
}
|
|
195
|
+
// Prepare branch
|
|
196
|
+
await worktree.prepareBranchForWorktreeWithFullName(fullBranchName, shortBranchName, sourceBranch, prTargetBranch);
|
|
197
|
+
// Store workflow state in git config
|
|
198
|
+
await git.storeWorkflowState('Agent implementation', fullBranchName);
|
|
199
|
+
await git.storeDevWorkflowType('independent', fullBranchName);
|
|
200
|
+
if (stackBranch) {
|
|
201
|
+
await git.storeStackBranch(stackBranch, fullBranchName);
|
|
202
|
+
}
|
|
203
|
+
await worktree.setupWorktreeIsolation(fullBranchName, shortBranchName, prTargetBranch, {
|
|
204
|
+
projectItemUrl,
|
|
205
|
+
permissionMode,
|
|
206
|
+
claudeEntryPointMode
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Start a Work for Integration workflow
|
|
211
|
+
*/
|
|
212
|
+
async function startWorkForIntegration(projectItemUrl, shortBranchName, baseBranch, permissionMode, claudeEntryPointMode, stackBranch) {
|
|
213
|
+
logger.section('Work for Integration Workflow');
|
|
214
|
+
// Get integration branch - either new or existing
|
|
215
|
+
let integrationBranchName;
|
|
216
|
+
let integrationName;
|
|
217
|
+
// Check for existing integration branches
|
|
218
|
+
const existingBranches = await worktree.listExistingIntegrationBranches();
|
|
219
|
+
let branchChoice;
|
|
220
|
+
if (existingBranches.length > 0) {
|
|
221
|
+
branchChoice = await promptSelection('Integration branch', INTEGRATION_BRANCH_CHOICES);
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
branchChoice = 'new';
|
|
225
|
+
}
|
|
226
|
+
if (branchChoice === 'existing') {
|
|
227
|
+
// Let user pick from existing integration branches
|
|
228
|
+
const branchChoices = existingBranches.map(b => ({ label: b, value: b }));
|
|
229
|
+
integrationBranchName = await promptSelection('Select integration branch', branchChoices);
|
|
230
|
+
integrationName = await worktree.extractIntegrationName(integrationBranchName);
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
// Create new integration branch
|
|
234
|
+
integrationName = await promptTextInput('Integration name (e.g., my-cool-feature)');
|
|
235
|
+
if (!integrationName) {
|
|
236
|
+
throw new Error('Integration name is required');
|
|
237
|
+
}
|
|
238
|
+
integrationBranchName = await worktree.buildIntegrationBranchName(integrationName);
|
|
239
|
+
// Create the integration branch from baseBranch if it doesn't exist
|
|
240
|
+
await worktree.ensureIntegrationBranch(integrationBranchName, baseBranch);
|
|
241
|
+
}
|
|
242
|
+
logger.info(`Integration branch: ${integrationBranchName}`);
|
|
243
|
+
// For integration workflow, the integration branch acts as the base for PRs
|
|
244
|
+
const prTargetBranch = integrationBranchName;
|
|
245
|
+
// Determine which branch to base off of
|
|
246
|
+
const sourceBranch = stackBranch ?? integrationBranchName;
|
|
247
|
+
// Build the full work branch name using integration template
|
|
248
|
+
const fullBranchName = await worktree.buildIntegrationWorkBranchName(integrationName, shortBranchName);
|
|
249
|
+
if (stackBranch) {
|
|
250
|
+
logger.info(`Stacked workflow: branching from ${stackBranch}, PR will target ${integrationBranchName}`);
|
|
251
|
+
}
|
|
252
|
+
// Prepare branch
|
|
253
|
+
await worktree.prepareBranchForWorktreeWithFullName(fullBranchName, shortBranchName, sourceBranch, prTargetBranch);
|
|
254
|
+
// Store workflow state in git config
|
|
255
|
+
await git.storeWorkflowState('Agent implementation', fullBranchName);
|
|
256
|
+
await git.storeDevWorkflowType('integration', fullBranchName);
|
|
257
|
+
await git.storeIntegrationBranch(integrationBranchName, fullBranchName);
|
|
258
|
+
if (stackBranch) {
|
|
259
|
+
await git.storeStackBranch(stackBranch, fullBranchName);
|
|
260
|
+
}
|
|
261
|
+
await worktree.setupWorktreeIsolation(fullBranchName, shortBranchName, prTargetBranch, {
|
|
262
|
+
projectItemUrl,
|
|
263
|
+
permissionMode,
|
|
264
|
+
claudeEntryPointMode
|
|
265
|
+
});
|
|
266
|
+
}
|
|
203
267
|
//# sourceMappingURL=start-project-item.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-project-item.js","sourceRoot":"","sources":["../../src/commands/start-project-item.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"start-project-item.js","sourceRoot":"","sources":["../../src/commands/start-project-item.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,sBAAsB,GAA2B,CAAC,aAAa,EAAE,mBAAmB,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AACtI,MAAM,uBAAuB,GAA2B,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAErF,MAAM,wBAAwB,GAAG;IAC/B,EAAE,KAAK,EAAE,2BAA2B,EAAE,KAAK,EAAE,QAAQ,EAAE;IACvD,EAAE,KAAK,EAAE,0CAA0C,EAAE,KAAK,EAAE,QAAQ,EAAE;IACtE,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,EAAE;CACjD,CAAC;AAEF,MAAM,gBAAgB,GAAG;IACvB,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;AAEF;;GAEG;AACH,KAAK,UAAU,yBAAyB,CAAC,cAAsB;IAC7D,gEAAgE;IAChE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClE,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACrE,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,cAAc,EAAE,CAAC;YACzC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAY;IAC9C,IAAI,EAAE,oBAAoB;IAC1B,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,8DAA8D;IAC3E,OAAO,EAAE;QACP;YACE,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,kBAAkB;YAC/B,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,IAAI,CAAC,KAAK;oBAAE,OAAO,iBAAiB,CAAC;gBACrC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;oBAC/C,OAAO,2FAA2F,CAAC;gBACrG,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;SACF;QACD;YACE,QAAQ,EAAE,aAAa;YACvB,SAAS,EAAE,GAAG;YACd,WAAW,EAAE,8CAA8C;YAC3D,YAAY,EAAE,SAAS;YACvB,uBAAuB,EAAE,IAAI;SAC9B;QACD;YACE,QAAQ,EAAE,aAAa;YACvB,SAAS,EAAE,GAAG;YACd,WAAW,EAAE,0BAA0B;YACvC,YAAY,EAAE,EAAE;YAChB,uBAAuB,EAAE,KAAK;SAC/B;QACD;YACE,QAAQ,EAAE,aAAa;YACvB,SAAS,EAAE,GAAG;YACd,WAAW,EAAE,aAAa;YAC1B,YAAY,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,oBAAoB,EAAE;YACxD,uBAAuB,EAAE,KAAK;SAC/B;QACD;YACE,QAAQ,EAAE,iBAAiB;YAC3B,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,wBAAwB;YACrC,YAAY,EAAE,MAAM;YACpB,uBAAuB,EAAE,IAAI;YAC7B,OAAO,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAClE,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,KAA6B,CAAC,EAAE,CAAC;oBACpE,OAAO,mBAAmB,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChE,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;SACF;QACD;YACE,QAAQ,EAAE,eAAe;YACzB,SAAS,EAAE,GAAG;YACd,WAAW,EAAE,2BAA2B;YACxC,YAAY,EAAE,SAAS;YACvB,OAAO,EAAE,gBAAgB;SAC1B;QACD;YACE,QAAQ,EAAE,oBAAoB;YAC9B,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,kCAAkC;YAC/C,YAAY,EAAE,QAAQ;YACtB,uBAAuB,EAAE,KAAK;YAC9B,OAAO,EAAE,wBAAwB;YACjC,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,KAA6B,CAAC,EAAE,CAAC;oBACrE,OAAO,mBAAmB,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjE,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;SACF;KACF;IAED,KAAK,CAAC,OAAO,CAAC,QAAgC;QAC5C,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC3C,MAAM,cAAc,GAAG,QAAQ,CAAC,iBAAiB,CAAyB,CAAC;QAC3E,MAAM,YAAY,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,aAAa,CAAoB,CAAC;QACrF,MAAM,oBAAoB,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,QAAQ,CAAyB,CAAC;QAClG,IAAI,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC;QAE3D,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;YACxD,MAAM,CAAC,OAAO,CAAC,wDAAwD,CAAC,CAAC;QAC3E,CAAC;QAED,sCAAsC;QACtC,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;QAED,gDAAgD;QAChD,MAAM,MAAM,CAAC,iBAAiB,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC;QAEvE,uCAAuC;QACvC,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,eAAe,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,sBAAsB,eAAe,EAAE,CAAC,CAAC;QAErD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,0BAA0B;QAC1B,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,+BAA+B,EAAE,aAAa,CAAC,CAAC;QAC1F,IAAI,WAAW,GAAkB,IAAI,CAAC;QAEtC,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC7B,WAAW,GAAG,MAAM,eAAe,CAAC,oBAAoB,CAAC,CAAC;YAC1D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC5D,CAAC;YACD,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACxD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,iBAAiB,WAAW,uCAAuC,CAAC,CAAC;YACvF,CAAC;QACH,CAAC;aAAM,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,8BAA8B,CAAC,CAAC;YACvE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACvE,CAAC;YACD,WAAW,GAAG,MAAM,yBAAyB,CAAC,QAAQ,CAAC,CAAC;YACxD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,yCAAyC,QAAQ,gDAAgD,CAAC,CAAC;YACrH,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,0BAA0B,WAAW,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,YAAY,KAAK,aAAa,EAAE,CAAC;YACnC,MAAM,uBAAuB,CAAC,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,oBAAoB,EAAE,WAAW,CAAC,CAAC;QAChI,CAAC;aAAM,CAAC;YACN,MAAM,uBAAuB,CAAC,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,oBAAoB,EAAE,WAAW,CAAC,CAAC;QAChI,CAAC;IACH,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,KAAK,UAAU,uBAAuB,CACpC,cAAsB,EACtB,eAAuB,EACvB,UAAkB,EAClB,cAAoC,EACpC,oBAA0C,EAC1C,WAA0B;IAE1B,MAAM,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAE/C,wBAAwB;IACxB,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,mBAAmB,EAAE,CAAC;IAE1D,wCAAwC;IACxC,MAAM,YAAY,GAAG,WAAW,IAAI,UAAU,CAAC;IAC/C,wDAAwD;IACxD,MAAM,cAAc,GAAG,UAAU,CAAC;IAElC,MAAM,cAAc,GAAG,GAAG,YAAY,IAAI,eAAe,EAAE,CAAC;IAE5D,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,oCAAoC,WAAW,oBAAoB,UAAU,EAAE,CAAC,CAAC;IAC/F,CAAC;IAED,iBAAiB;IACjB,MAAM,QAAQ,CAAC,oCAAoC,CACjD,cAAc,EACd,eAAe,EACf,YAAY,EACZ,cAAc,CACf,CAAC;IAEF,qCAAqC;IACrC,MAAM,GAAG,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAC;IACrE,MAAM,GAAG,CAAC,oBAAoB,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAE9D,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,QAAQ,CAAC,sBAAsB,CACnC,cAAc,EACd,eAAe,EACf,cAAc,EACd;QACE,cAAc;QACd,cAAc;QACd,oBAAoB;KACrB,CACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,uBAAuB,CACpC,cAAsB,EACtB,eAAuB,EACvB,UAAkB,EAClB,cAAoC,EACpC,oBAA0C,EAC1C,WAA0B;IAE1B,MAAM,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAEhD,kDAAkD;IAClD,IAAI,qBAA6B,CAAC;IAClC,IAAI,eAAuB,CAAC;IAE5B,0CAA0C;IAC1C,MAAM,gBAAgB,GAAG,MAAM,QAAQ,CAAC,+BAA+B,EAAE,CAAC;IAE1E,IAAI,YAAoB,CAAC;IACzB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,YAAY,GAAG,MAAM,eAAe,CAAC,oBAAoB,EAAE,0BAA0B,CAAC,CAAC;IACzF,CAAC;SAAM,CAAC;QACN,YAAY,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,IAAI,YAAY,KAAK,UAAU,EAAE,CAAC;QAChC,mDAAmD;QACnD,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1E,qBAAqB,GAAG,MAAM,eAAe,CAAC,2BAA2B,EAAE,aAAa,CAAC,CAAC;QAC1F,eAAe,GAAG,MAAM,QAAQ,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,CAAC;IACjF,CAAC;SAAM,CAAC;QACN,gCAAgC;QAChC,eAAe,GAAG,MAAM,eAAe,CAAC,0CAA0C,CAAC,CAAC;QACpF,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QACD,qBAAqB,GAAG,MAAM,QAAQ,CAAC,0BAA0B,CAAC,eAAe,CAAC,CAAC;QAEnF,oEAAoE;QACpE,MAAM,QAAQ,CAAC,uBAAuB,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,uBAAuB,qBAAqB,EAAE,CAAC,CAAC;IAE5D,4EAA4E;IAC5E,MAAM,cAAc,GAAG,qBAAqB,CAAC;IAE7C,wCAAwC;IACxC,MAAM,YAAY,GAAG,WAAW,IAAI,qBAAqB,CAAC;IAE1D,6DAA6D;IAC7D,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,8BAA8B,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAEvG,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,oCAAoC,WAAW,oBAAoB,qBAAqB,EAAE,CAAC,CAAC;IAC1G,CAAC;IAED,iBAAiB;IACjB,MAAM,QAAQ,CAAC,oCAAoC,CACjD,cAAc,EACd,eAAe,EACf,YAAY,EACZ,cAAc,CACf,CAAC;IAEF,qCAAqC;IACrC,MAAM,GAAG,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAC;IACrE,MAAM,GAAG,CAAC,oBAAoB,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAC9D,MAAM,GAAG,CAAC,sBAAsB,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAC;IAExE,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,QAAQ,CAAC,sBAAsB,CACnC,cAAc,EACd,eAAe,EACf,cAAc,EACd;QACE,cAAc;QACd,cAAc;QACd,oBAAoB;KACrB,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-branch.d.ts","sourceRoot":"","sources":["../../src/commands/update-branch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,mBAAmB,CAAC;AAsDlE,eAAO,MAAM,mBAAmB,EAAE,OAiLjC,CAAC"}
|