@idea1/cli 1.4.7 → 1.4.9
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/dist/commands/start-project-item.d.ts.map +1 -1
- package/dist/commands/start-project-item.js +41 -37
- package/dist/commands/start-project-item.js.map +1 -1
- package/dist/lib/project-item-url.d.ts +3 -0
- package/dist/lib/project-item-url.d.ts.map +1 -0
- package/dist/lib/project-item-url.js +28 -0
- package/dist/lib/project-item-url.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -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,EAA+D,MAAM,mBAAmB,CAAC;
|
|
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;AA6F9G,eAAO,MAAM,uBAAuB,EAAE,OAsJrC,CAAC"}
|
|
@@ -4,6 +4,7 @@ import * as git from '../services/git.js';
|
|
|
4
4
|
import * as claude from '../services/claude.js';
|
|
5
5
|
import * as worktree from '../services/worktree.js';
|
|
6
6
|
import { configService } from '../services/config.js';
|
|
7
|
+
import { isProjectItemUrl, validateProjectItemUrl } from '../lib/project-item-url.js';
|
|
7
8
|
const VALID_PERMISSION_MODES = ['acceptEdits', 'bypassPermissions', 'default', 'delegate', 'dontAsk', 'plan'];
|
|
8
9
|
const VALID_ENTRY_POINT_MODES = ['launch', 'inline', 'none'];
|
|
9
10
|
const ENTRY_POINT_MODE_CHOICES = [
|
|
@@ -24,6 +25,29 @@ const INTEGRATION_BRANCH_CHOICES = [
|
|
|
24
25
|
{ label: 'Create new integration branch', value: 'new' },
|
|
25
26
|
{ label: 'Use existing integration branch', value: 'existing' }
|
|
26
27
|
];
|
|
28
|
+
/**
|
|
29
|
+
* Prompt the user for integration-branch selection. Prompt-only: does not
|
|
30
|
+
* perform any branch writes. Must be invoked before setWorkflowStatus so the
|
|
31
|
+
* user completes all setup questions up front.
|
|
32
|
+
*/
|
|
33
|
+
async function promptForIntegrationBranch() {
|
|
34
|
+
const existingBranches = await worktree.listExistingIntegrationBranches();
|
|
35
|
+
const branchChoice = existingBranches.length > 0
|
|
36
|
+
? await promptSelect('Integration branch', INTEGRATION_BRANCH_CHOICES)
|
|
37
|
+
: 'new';
|
|
38
|
+
if (branchChoice === 'existing') {
|
|
39
|
+
const branchChoices = existingBranches.map(b => ({ label: b, value: b }));
|
|
40
|
+
const integrationBranchName = await promptSelect('Select integration branch', branchChoices);
|
|
41
|
+
const integrationName = await worktree.extractIntegrationName(integrationBranchName);
|
|
42
|
+
return { integrationName, integrationBranchName, isNew: false };
|
|
43
|
+
}
|
|
44
|
+
const integrationName = await promptInput('Integration name (e.g., my-cool-feature)');
|
|
45
|
+
if (!integrationName) {
|
|
46
|
+
throw new Error('Integration name is required');
|
|
47
|
+
}
|
|
48
|
+
const integrationBranchName = await worktree.buildIntegrationBranchName(integrationName);
|
|
49
|
+
return { integrationName, integrationBranchName, isNew: true };
|
|
50
|
+
}
|
|
27
51
|
/**
|
|
28
52
|
* Resolve the stack branch from a project item URL.
|
|
29
53
|
* First checks local git config, then falls back to searching
|
|
@@ -55,14 +79,7 @@ export const startProjectItemCommand = {
|
|
|
55
79
|
{
|
|
56
80
|
longName: 'url',
|
|
57
81
|
description: 'Project item URL',
|
|
58
|
-
validate:
|
|
59
|
-
if (!value)
|
|
60
|
-
return 'URL is required';
|
|
61
|
-
if (!value.includes('idea1.ai/project/items/')) {
|
|
62
|
-
return 'URL should be an idea1.ai project item URL (e.g., https://app.idea1.ai/project/items/123)';
|
|
63
|
-
}
|
|
64
|
-
return undefined;
|
|
65
|
-
}
|
|
82
|
+
validate: validateProjectItemUrl
|
|
66
83
|
},
|
|
67
84
|
{
|
|
68
85
|
longName: 'branch-name',
|
|
@@ -133,7 +150,7 @@ export const startProjectItemCommand = {
|
|
|
133
150
|
throw new Error('Please provide a project item URL');
|
|
134
151
|
}
|
|
135
152
|
// Validate URL format
|
|
136
|
-
if (!projectItemUrl
|
|
153
|
+
if (!isProjectItemUrl(projectItemUrl)) {
|
|
137
154
|
logger.warning('URL does not appear to be an idea1.ai project item URL');
|
|
138
155
|
}
|
|
139
156
|
// Navigate to source path if provided
|
|
@@ -164,6 +181,12 @@ export const startProjectItemCommand = {
|
|
|
164
181
|
}
|
|
165
182
|
logger.info(`Resolved stack branch: ${stackBranch}`);
|
|
166
183
|
}
|
|
184
|
+
// Collect integration-branch answers before the slow workflow status update,
|
|
185
|
+
// so every setup question is asked up front.
|
|
186
|
+
let integrationSelection = null;
|
|
187
|
+
if (workflowType === 'integration') {
|
|
188
|
+
integrationSelection = await promptForIntegrationBranch();
|
|
189
|
+
}
|
|
167
190
|
// Set workflow status to "Agent implementation"
|
|
168
191
|
await claude.setWorkflowStatus(projectItemUrl, 'Agent implementation');
|
|
169
192
|
// Generate branch name if not provided
|
|
@@ -181,7 +204,10 @@ export const startProjectItemCommand = {
|
|
|
181
204
|
await startIndependentFeature(projectItemUrl, shortBranchName, baseBranch, permissionMode, claudeEntryPointMode, stackBranch);
|
|
182
205
|
}
|
|
183
206
|
else {
|
|
184
|
-
|
|
207
|
+
if (!integrationSelection) {
|
|
208
|
+
throw new Error('Integration selection was not collected');
|
|
209
|
+
}
|
|
210
|
+
await startWorkForIntegration(projectItemUrl, shortBranchName, baseBranch, permissionMode, claudeEntryPointMode, stackBranch, integrationSelection);
|
|
185
211
|
}
|
|
186
212
|
}
|
|
187
213
|
};
|
|
@@ -217,34 +243,12 @@ async function startIndependentFeature(projectItemUrl, shortBranchName, baseBran
|
|
|
217
243
|
/**
|
|
218
244
|
* Start a Work for Integration workflow
|
|
219
245
|
*/
|
|
220
|
-
async function startWorkForIntegration(projectItemUrl, shortBranchName, baseBranch, permissionMode, claudeEntryPointMode, stackBranch) {
|
|
246
|
+
async function startWorkForIntegration(projectItemUrl, shortBranchName, baseBranch, permissionMode, claudeEntryPointMode, stackBranch, integrationSelection) {
|
|
221
247
|
logger.section('Work for Integration Workflow');
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
const existingBranches = await worktree.listExistingIntegrationBranches();
|
|
227
|
-
let branchChoice;
|
|
228
|
-
if (existingBranches.length > 0) {
|
|
229
|
-
branchChoice = await promptSelect('Integration branch', INTEGRATION_BRANCH_CHOICES);
|
|
230
|
-
}
|
|
231
|
-
else {
|
|
232
|
-
branchChoice = 'new';
|
|
233
|
-
}
|
|
234
|
-
if (branchChoice === 'existing') {
|
|
235
|
-
// Let user pick from existing integration branches
|
|
236
|
-
const branchChoices = existingBranches.map(b => ({ label: b, value: b }));
|
|
237
|
-
integrationBranchName = await promptSelect('Select integration branch', branchChoices);
|
|
238
|
-
integrationName = await worktree.extractIntegrationName(integrationBranchName);
|
|
239
|
-
}
|
|
240
|
-
else {
|
|
241
|
-
// Create new integration branch
|
|
242
|
-
integrationName = await promptInput('Integration name (e.g., my-cool-feature)');
|
|
243
|
-
if (!integrationName) {
|
|
244
|
-
throw new Error('Integration name is required');
|
|
245
|
-
}
|
|
246
|
-
integrationBranchName = await worktree.buildIntegrationBranchName(integrationName);
|
|
247
|
-
// Create the integration branch from baseBranch if it doesn't exist
|
|
248
|
+
const { integrationName, integrationBranchName, isNew } = integrationSelection;
|
|
249
|
+
if (isNew) {
|
|
250
|
+
// Create the integration branch from baseBranch if it doesn't exist.
|
|
251
|
+
// Runs after setWorkflowStatus so the slow remote write is not blocking user prompts.
|
|
248
252
|
await worktree.ensureIntegrationBranch(integrationBranchName, baseBranch);
|
|
249
253
|
}
|
|
250
254
|
logger.info(`Integration branch: ${integrationBranchName}`);
|
|
@@ -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,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC7D,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":"project-item-url.d.ts","sourceRoot":"","sources":["../../src/lib/project-item-url.ts"],"names":[],"mappings":"AAOA,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAWvD;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMxE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const ACCEPTED_HOST_PATTERNS = [
|
|
2
|
+
/^app\.idea1\.ai$/i,
|
|
3
|
+
/^localhost(:\d+)?$/i,
|
|
4
|
+
];
|
|
5
|
+
const PROJECT_ITEM_PATH_PATTERN = /^\/project\/items\/\d+\/?$/;
|
|
6
|
+
export function isProjectItemUrl(value) {
|
|
7
|
+
let parsed;
|
|
8
|
+
try {
|
|
9
|
+
parsed = new URL(value);
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:')
|
|
15
|
+
return false;
|
|
16
|
+
if (!ACCEPTED_HOST_PATTERNS.some(pattern => pattern.test(parsed.host)))
|
|
17
|
+
return false;
|
|
18
|
+
return PROJECT_ITEM_PATH_PATTERN.test(parsed.pathname);
|
|
19
|
+
}
|
|
20
|
+
export function validateProjectItemUrl(value) {
|
|
21
|
+
if (!value)
|
|
22
|
+
return 'URL is required';
|
|
23
|
+
if (!isProjectItemUrl(value)) {
|
|
24
|
+
return 'URL should be an idea1.ai project item URL (e.g., https://app.idea1.ai/project/items/123)';
|
|
25
|
+
}
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=project-item-url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-item-url.js","sourceRoot":"","sources":["../../src/lib/project-item-url.ts"],"names":[],"mappings":"AAAA,MAAM,sBAAsB,GAAa;IACvC,mBAAmB;IACnB,qBAAqB;CACtB,CAAC;AAEF,MAAM,yBAAyB,GAAG,4BAA4B,CAAC;AAE/D,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9E,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrF,OAAO,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,IAAI,CAAC,KAAK;QAAE,OAAO,iBAAiB,CAAC;IACrC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,2FAA2F,CAAC;IACrG,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "1.4.
|
|
1
|
+
export declare const VERSION = "1.4.9";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED