@idea1/cli 1.2.3 → 1.3.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 +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 +219 -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 +59 -0
- package/dist/services/git.d.ts.map +1 -1
- package/dist/services/git.js +163 -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 +170 -9
- 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;AA2D9G,eAAO,MAAM,uBAAuB,EAAE,OA8IrC,CAAC"}
|
|
@@ -1,140 +1,60 @@
|
|
|
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.
|
|
29
|
+
* First checks local git config, then falls back to searching
|
|
30
|
+
* remote branches for a committed .idea1/project-item-url file.
|
|
81
31
|
*/
|
|
82
|
-
async function
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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'
|
|
101
|
-
}
|
|
102
|
-
]);
|
|
103
|
-
if (choice === 'current') {
|
|
104
|
-
return currentBranch;
|
|
105
|
-
}
|
|
106
|
-
else if (choice === 'custom') {
|
|
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'
|
|
32
|
+
async function resolveStackBranchFromUrl(projectItemUrl) {
|
|
33
|
+
// Fetch latest so remote refs are up-to-date
|
|
34
|
+
await git.fetchLatest();
|
|
35
|
+
// Fast path: search local git config
|
|
36
|
+
const { exec } = await import('../lib/shell.js');
|
|
37
|
+
const result = await exec('git', ['config', '--local', '--list']);
|
|
38
|
+
if (result.exitCode === 0) {
|
|
39
|
+
const lines = result.stdout.split('\n');
|
|
40
|
+
for (const line of lines) {
|
|
41
|
+
const match = line.match(/^branch\.(.+)\.idea1projectitemurl=(.+)$/i);
|
|
42
|
+
if (match && match[2] === projectItemUrl) {
|
|
43
|
+
return match[1];
|
|
113
44
|
}
|
|
114
|
-
|
|
115
|
-
return customBranch.trim();
|
|
45
|
+
}
|
|
116
46
|
}
|
|
117
|
-
|
|
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>');
|
|
47
|
+
// Fallback: search remote branches for committed metadata
|
|
48
|
+
return git.findBranchByProjectItemFile(projectItemUrl);
|
|
126
49
|
}
|
|
127
50
|
export const startProjectItemCommand = {
|
|
128
51
|
name: 'start-project-item',
|
|
129
52
|
aliases: ['s', 'start'],
|
|
130
53
|
description: 'Start implementing a project item in an isolated environment',
|
|
131
|
-
|
|
54
|
+
options: [
|
|
132
55
|
{
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
description: 'The idea1.ai project item URL to implement',
|
|
136
|
-
required: true,
|
|
137
|
-
type: 'text',
|
|
56
|
+
longName: 'url',
|
|
57
|
+
description: 'Project item URL',
|
|
138
58
|
validate: (value) => {
|
|
139
59
|
if (!value)
|
|
140
60
|
return 'URL is required';
|
|
@@ -145,15 +65,70 @@ export const startProjectItemCommand = {
|
|
|
145
65
|
}
|
|
146
66
|
},
|
|
147
67
|
{
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
description: '
|
|
151
|
-
|
|
152
|
-
|
|
68
|
+
longName: 'branch-name',
|
|
69
|
+
shortName: 'n',
|
|
70
|
+
description: 'Branch name (auto-generated if not provided)',
|
|
71
|
+
defaultValue: undefined,
|
|
72
|
+
promptWhenDefaultExists: true
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
longName: 'source-path',
|
|
76
|
+
shortName: 'p',
|
|
77
|
+
description: 'Path to source directory',
|
|
78
|
+
defaultValue: '',
|
|
79
|
+
promptWhenDefaultExists: false
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
longName: 'base-branch',
|
|
83
|
+
shortName: 'b',
|
|
84
|
+
description: 'Base branch',
|
|
85
|
+
defaultValue: () => configService.getDefaultBaseBranch(),
|
|
86
|
+
promptWhenDefaultExists: false
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
longName: 'permission-mode',
|
|
90
|
+
shortName: 'pm',
|
|
91
|
+
description: 'Claude permission mode',
|
|
92
|
+
defaultValue: 'plan',
|
|
93
|
+
promptWhenDefaultExists: true,
|
|
94
|
+
choices: VALID_PERMISSION_MODES.map(m => ({ label: m, value: m })),
|
|
95
|
+
validate: (value) => {
|
|
96
|
+
if (!VALID_PERMISSION_MODES.includes(value)) {
|
|
97
|
+
return `Must be one of: ${VALID_PERMISSION_MODES.join(', ')}`;
|
|
98
|
+
}
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
longName: 'workflow-type',
|
|
104
|
+
shortName: 'w',
|
|
105
|
+
description: 'Development workflow type',
|
|
106
|
+
defaultValue: undefined,
|
|
107
|
+
choices: WORKFLOW_CHOICES
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
longName: 'claude-entry-point',
|
|
111
|
+
shortName: 'im',
|
|
112
|
+
description: 'How to invoke Claude after setup',
|
|
113
|
+
defaultValue: 'launch',
|
|
114
|
+
promptWhenDefaultExists: false,
|
|
115
|
+
choices: ENTRY_POINT_MODE_CHOICES,
|
|
116
|
+
validate: (value) => {
|
|
117
|
+
if (!VALID_ENTRY_POINT_MODES.includes(value)) {
|
|
118
|
+
return `Must be one of: ${VALID_ENTRY_POINT_MODES.join(', ')}`;
|
|
119
|
+
}
|
|
120
|
+
return undefined;
|
|
121
|
+
}
|
|
153
122
|
}
|
|
154
123
|
],
|
|
155
|
-
async execute(
|
|
156
|
-
const
|
|
124
|
+
async execute(resolved) {
|
|
125
|
+
const projectItemUrl = resolved['url'];
|
|
126
|
+
const sourcePath = resolved['source-path'];
|
|
127
|
+
const baseBranch = resolved['base-branch'];
|
|
128
|
+
const permissionMode = resolved['permission-mode'];
|
|
129
|
+
const workflowType = (resolved['workflow-type'] ?? 'independent');
|
|
130
|
+
const claudeEntryPointMode = (resolved['claude-entry-point'] ?? 'launch');
|
|
131
|
+
let shortBranchName = resolved['branch-name'] || undefined;
|
|
157
132
|
if (!projectItemUrl) {
|
|
158
133
|
throw new Error('Please provide a project item URL');
|
|
159
134
|
}
|
|
@@ -161,19 +136,13 @@ export const startProjectItemCommand = {
|
|
|
161
136
|
if (!projectItemUrl.includes('idea1.ai/project/items/')) {
|
|
162
137
|
logger.warning('URL does not appear to be an idea1.ai project item URL');
|
|
163
138
|
}
|
|
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
139
|
// Navigate to source path if provided
|
|
170
|
-
if (
|
|
171
|
-
process.chdir(
|
|
140
|
+
if (sourcePath) {
|
|
141
|
+
process.chdir(sourcePath);
|
|
172
142
|
}
|
|
173
143
|
// Set workflow status to "Agent implementation"
|
|
174
144
|
await claude.setWorkflowStatus(projectItemUrl, 'Agent implementation');
|
|
175
145
|
// Generate branch name if not provided
|
|
176
|
-
let shortBranchName = providedBranchName;
|
|
177
146
|
if (!shortBranchName) {
|
|
178
147
|
shortBranchName = await claude.generateBranchName(projectItemUrl);
|
|
179
148
|
}
|
|
@@ -181,23 +150,123 @@ export const startProjectItemCommand = {
|
|
|
181
150
|
if (!shortBranchName) {
|
|
182
151
|
throw new Error('Failed to generate a branch name');
|
|
183
152
|
}
|
|
184
|
-
//
|
|
185
|
-
const
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
153
|
+
// Prompt for stack option
|
|
154
|
+
const stackChoice = await promptSelection('Stack this branch on another?', STACK_CHOICES);
|
|
155
|
+
let stackBranch = null;
|
|
156
|
+
if (stackChoice === 'branch') {
|
|
157
|
+
stackBranch = await promptTextInput('Branch to stack on');
|
|
158
|
+
if (!stackBranch) {
|
|
159
|
+
throw new Error('Stack branch is required when stacking');
|
|
160
|
+
}
|
|
161
|
+
const stackExists = await git.branchExists(stackBranch);
|
|
162
|
+
if (!stackExists) {
|
|
163
|
+
throw new Error(`Stack branch '${stackBranch}' does not exist locally or on origin`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
else if (stackChoice === 'url') {
|
|
167
|
+
const stackUrl = await promptTextInput('Project item URL to stack on');
|
|
168
|
+
if (!stackUrl) {
|
|
169
|
+
throw new Error('Project item URL is required when stacking by URL');
|
|
170
|
+
}
|
|
171
|
+
stackBranch = await resolveStackBranchFromUrl(stackUrl);
|
|
172
|
+
if (!stackBranch) {
|
|
173
|
+
throw new Error(`No branch found for project item URL: ${stackUrl}. Make sure the project item has been started.`);
|
|
174
|
+
}
|
|
175
|
+
logger.info(`Resolved stack branch: ${stackBranch}`);
|
|
176
|
+
}
|
|
177
|
+
if (workflowType === 'independent') {
|
|
178
|
+
await startIndependentFeature(projectItemUrl, shortBranchName, baseBranch, permissionMode, claudeEntryPointMode, stackBranch);
|
|
193
179
|
}
|
|
194
180
|
else {
|
|
195
|
-
await
|
|
196
|
-
projectItemUrl,
|
|
197
|
-
launchClaude: true,
|
|
198
|
-
permissionMode: options.permissionMode
|
|
199
|
-
});
|
|
181
|
+
await startWorkForIntegration(projectItemUrl, shortBranchName, baseBranch, permissionMode, claudeEntryPointMode, stackBranch);
|
|
200
182
|
}
|
|
201
183
|
}
|
|
202
184
|
};
|
|
185
|
+
/**
|
|
186
|
+
* Start an Independent Feature workflow
|
|
187
|
+
*/
|
|
188
|
+
async function startIndependentFeature(projectItemUrl, shortBranchName, baseBranch, permissionMode, claudeEntryPointMode, stackBranch) {
|
|
189
|
+
logger.section('Independent Feature Workflow');
|
|
190
|
+
// Resolve branch prefix
|
|
191
|
+
const branchPrefix = await worktree.resolveBranchPrefix();
|
|
192
|
+
// Determine which branch to base off of
|
|
193
|
+
const sourceBranch = stackBranch ?? baseBranch;
|
|
194
|
+
// PR always targets baseBranch for independent features
|
|
195
|
+
const prTargetBranch = baseBranch;
|
|
196
|
+
const fullBranchName = `${branchPrefix}/${shortBranchName}`;
|
|
197
|
+
if (stackBranch) {
|
|
198
|
+
logger.info(`Stacked workflow: branching from ${stackBranch}, PR will target ${baseBranch}`);
|
|
199
|
+
}
|
|
200
|
+
// Prepare branch
|
|
201
|
+
await worktree.prepareBranchForWorktreeWithFullName(fullBranchName, shortBranchName, sourceBranch, prTargetBranch);
|
|
202
|
+
// Store workflow state in git config
|
|
203
|
+
await git.storeWorkflowState('Agent implementation', fullBranchName);
|
|
204
|
+
await git.storeDevWorkflowType('independent', fullBranchName);
|
|
205
|
+
if (stackBranch) {
|
|
206
|
+
await git.storeStackBranch(stackBranch, fullBranchName);
|
|
207
|
+
}
|
|
208
|
+
await worktree.setupWorktreeIsolation(fullBranchName, shortBranchName, prTargetBranch, {
|
|
209
|
+
projectItemUrl,
|
|
210
|
+
permissionMode,
|
|
211
|
+
claudeEntryPointMode
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Start a Work for Integration workflow
|
|
216
|
+
*/
|
|
217
|
+
async function startWorkForIntegration(projectItemUrl, shortBranchName, baseBranch, permissionMode, claudeEntryPointMode, stackBranch) {
|
|
218
|
+
logger.section('Work for Integration Workflow');
|
|
219
|
+
// Get integration branch - either new or existing
|
|
220
|
+
let integrationBranchName;
|
|
221
|
+
let integrationName;
|
|
222
|
+
// Check for existing integration branches
|
|
223
|
+
const existingBranches = await worktree.listExistingIntegrationBranches();
|
|
224
|
+
let branchChoice;
|
|
225
|
+
if (existingBranches.length > 0) {
|
|
226
|
+
branchChoice = await promptSelection('Integration branch', INTEGRATION_BRANCH_CHOICES);
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
branchChoice = 'new';
|
|
230
|
+
}
|
|
231
|
+
if (branchChoice === 'existing') {
|
|
232
|
+
// Let user pick from existing integration branches
|
|
233
|
+
const branchChoices = existingBranches.map(b => ({ label: b, value: b }));
|
|
234
|
+
integrationBranchName = await promptSelection('Select integration branch', branchChoices);
|
|
235
|
+
integrationName = await worktree.extractIntegrationName(integrationBranchName);
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
// Create new integration branch
|
|
239
|
+
integrationName = await promptTextInput('Integration name (e.g., my-cool-feature)');
|
|
240
|
+
if (!integrationName) {
|
|
241
|
+
throw new Error('Integration name is required');
|
|
242
|
+
}
|
|
243
|
+
integrationBranchName = await worktree.buildIntegrationBranchName(integrationName);
|
|
244
|
+
// Create the integration branch from baseBranch if it doesn't exist
|
|
245
|
+
await worktree.ensureIntegrationBranch(integrationBranchName, baseBranch);
|
|
246
|
+
}
|
|
247
|
+
logger.info(`Integration branch: ${integrationBranchName}`);
|
|
248
|
+
// For integration workflow, the integration branch acts as the base for PRs
|
|
249
|
+
const prTargetBranch = integrationBranchName;
|
|
250
|
+
// Determine which branch to base off of
|
|
251
|
+
const sourceBranch = stackBranch ?? integrationBranchName;
|
|
252
|
+
// Build the full work branch name using integration template
|
|
253
|
+
const fullBranchName = await worktree.buildIntegrationWorkBranchName(integrationName, shortBranchName);
|
|
254
|
+
if (stackBranch) {
|
|
255
|
+
logger.info(`Stacked workflow: branching from ${stackBranch}, PR will target ${integrationBranchName}`);
|
|
256
|
+
}
|
|
257
|
+
// Prepare branch
|
|
258
|
+
await worktree.prepareBranchForWorktreeWithFullName(fullBranchName, shortBranchName, sourceBranch, prTargetBranch);
|
|
259
|
+
// Store workflow state in git config
|
|
260
|
+
await git.storeWorkflowState('Agent implementation', fullBranchName);
|
|
261
|
+
await git.storeDevWorkflowType('integration', fullBranchName);
|
|
262
|
+
await git.storeIntegrationBranch(integrationBranchName, fullBranchName);
|
|
263
|
+
if (stackBranch) {
|
|
264
|
+
await git.storeStackBranch(stackBranch, fullBranchName);
|
|
265
|
+
}
|
|
266
|
+
await worktree.setupWorktreeIsolation(fullBranchName, shortBranchName, prTargetBranch, {
|
|
267
|
+
projectItemUrl,
|
|
268
|
+
permissionMode,
|
|
269
|
+
claudeEntryPointMode
|
|
270
|
+
});
|
|
271
|
+
}
|
|
203
272
|
//# 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":"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"}
|
|
@@ -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"}
|