@idea1/cli 1.5.1 → 1.6.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.
Files changed (108) hide show
  1. package/README.md +124 -93
  2. package/dist/commands/approve-pr.d.ts.map +1 -1
  3. package/dist/commands/approve-pr.js +7 -163
  4. package/dist/commands/approve-pr.js.map +1 -1
  5. package/dist/commands/attach-project-item.d.ts.map +1 -1
  6. package/dist/commands/attach-project-item.js +38 -89
  7. package/dist/commands/attach-project-item.js.map +1 -1
  8. package/dist/commands/close-worktree.d.ts.map +1 -1
  9. package/dist/commands/close-worktree.js +3 -2
  10. package/dist/commands/close-worktree.js.map +1 -1
  11. package/dist/commands/help.d.ts.map +1 -1
  12. package/dist/commands/help.js +17 -14
  13. package/dist/commands/help.js.map +1 -1
  14. package/dist/commands/index.d.ts +3 -2
  15. package/dist/commands/index.d.ts.map +1 -1
  16. package/dist/commands/index.js +5 -3
  17. package/dist/commands/index.js.map +1 -1
  18. package/dist/commands/join-project-item.d.ts.map +1 -1
  19. package/dist/commands/join-project-item.js +38 -77
  20. package/dist/commands/join-project-item.js.map +1 -1
  21. package/dist/commands/next-workflow-step.d.ts.map +1 -1
  22. package/dist/commands/next-workflow-step.js +66 -51
  23. package/dist/commands/next-workflow-step.js.map +1 -1
  24. package/dist/commands/ready-for-approval.d.ts.map +1 -1
  25. package/dist/commands/ready-for-approval.js +7 -66
  26. package/dist/commands/ready-for-approval.js.map +1 -1
  27. package/dist/commands/start-agent-implementation.d.ts +3 -0
  28. package/dist/commands/start-agent-implementation.d.ts.map +1 -0
  29. package/dist/commands/start-agent-implementation.js +41 -0
  30. package/dist/commands/start-agent-implementation.js.map +1 -0
  31. package/dist/commands/start-dev-implementation.d.ts.map +1 -1
  32. package/dist/commands/start-dev-implementation.js +8 -54
  33. package/dist/commands/start-dev-implementation.js.map +1 -1
  34. package/dist/commands/start.d.ts +13 -0
  35. package/dist/commands/start.d.ts.map +1 -0
  36. package/dist/commands/start.js +81 -0
  37. package/dist/commands/start.js.map +1 -0
  38. package/dist/interactive.d.ts.map +1 -1
  39. package/dist/interactive.js +29 -9
  40. package/dist/interactive.js.map +1 -1
  41. package/dist/lib/claude-options.d.ts +33 -0
  42. package/dist/lib/claude-options.d.ts.map +1 -0
  43. package/dist/lib/claude-options.js +83 -0
  44. package/dist/lib/claude-options.js.map +1 -0
  45. package/dist/lib/settings.d.ts.map +1 -1
  46. package/dist/lib/settings.js +5 -5
  47. package/dist/lib/settings.js.map +1 -1
  48. package/dist/lib/workflow-states.d.ts +21 -3
  49. package/dist/lib/workflow-states.d.ts.map +1 -1
  50. package/dist/lib/workflow-states.generated.d.ts +21 -0
  51. package/dist/lib/workflow-states.generated.d.ts.map +1 -0
  52. package/dist/lib/workflow-states.generated.js +34 -0
  53. package/dist/lib/workflow-states.generated.js.map +1 -0
  54. package/dist/lib/workflow-states.js +47 -26
  55. package/dist/lib/workflow-states.js.map +1 -1
  56. package/dist/services/branch-setup.d.ts +42 -0
  57. package/dist/services/branch-setup.d.ts.map +1 -0
  58. package/dist/services/branch-setup.js +116 -0
  59. package/dist/services/branch-setup.js.map +1 -0
  60. package/dist/services/claude.d.ts +14 -4
  61. package/dist/services/claude.d.ts.map +1 -1
  62. package/dist/services/claude.js +39 -4
  63. package/dist/services/claude.js.map +1 -1
  64. package/dist/services/git.d.ts +66 -0
  65. package/dist/services/git.d.ts.map +1 -1
  66. package/dist/services/git.js +161 -6
  67. package/dist/services/git.js.map +1 -1
  68. package/dist/services/workflow-engine.d.ts +67 -0
  69. package/dist/services/workflow-engine.d.ts.map +1 -0
  70. package/dist/services/workflow-engine.js +371 -0
  71. package/dist/services/workflow-engine.js.map +1 -0
  72. package/dist/services/workflow-handlers/agent-implementation.d.ts +9 -0
  73. package/dist/services/workflow-handlers/agent-implementation.d.ts.map +1 -0
  74. package/dist/services/workflow-handlers/agent-implementation.js +37 -0
  75. package/dist/services/workflow-handlers/agent-implementation.js.map +1 -0
  76. package/dist/services/workflow-handlers/approve-pr.d.ts +8 -0
  77. package/dist/services/workflow-handlers/approve-pr.d.ts.map +1 -0
  78. package/dist/services/workflow-handlers/approve-pr.js +161 -0
  79. package/dist/services/workflow-handlers/approve-pr.js.map +1 -0
  80. package/dist/services/workflow-handlers/dev-implementation.d.ts +8 -0
  81. package/dist/services/workflow-handlers/dev-implementation.d.ts.map +1 -0
  82. package/dist/services/workflow-handlers/dev-implementation.js +34 -0
  83. package/dist/services/workflow-handlers/dev-implementation.js.map +1 -0
  84. package/dist/services/workflow-handlers/index.d.ts +18 -0
  85. package/dist/services/workflow-handlers/index.d.ts.map +1 -0
  86. package/dist/services/workflow-handlers/index.js +36 -0
  87. package/dist/services/workflow-handlers/index.js.map +1 -0
  88. package/dist/services/workflow-handlers/ready-for-approval.d.ts +8 -0
  89. package/dist/services/workflow-handlers/ready-for-approval.d.ts.map +1 -0
  90. package/dist/services/workflow-handlers/ready-for-approval.js +60 -0
  91. package/dist/services/workflow-handlers/ready-for-approval.js.map +1 -0
  92. package/dist/services/workflow.d.ts +1 -21
  93. package/dist/services/workflow.d.ts.map +1 -1
  94. package/dist/services/workflow.js +1 -67
  95. package/dist/services/workflow.js.map +1 -1
  96. package/dist/services/worktree.d.ts +29 -27
  97. package/dist/services/worktree.d.ts.map +1 -1
  98. package/dist/services/worktree.js +51 -77
  99. package/dist/services/worktree.js.map +1 -1
  100. package/dist/types/index.d.ts +41 -4
  101. package/dist/types/index.d.ts.map +1 -1
  102. package/dist/version.d.ts +1 -1
  103. package/dist/version.js +1 -1
  104. package/package.json +2 -2
  105. package/dist/commands/start-project-item.d.ts +0 -27
  106. package/dist/commands/start-project-item.d.ts.map +0 -1
  107. package/dist/commands/start-project-item.js +0 -325
  108. package/dist/commands/start-project-item.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"join-project-item.js","sourceRoot":"","sources":["../../src/commands/join-project-item.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"join-project-item.js","sourceRoot":"","sources":["../../src/commands/join-project-item.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"next-workflow-step.d.ts","sourceRoot":"","sources":["../../src/commands/next-workflow-step.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAmBjD,eAAO,MAAM,uBAAuB,EAAE,OAqDrC,CAAC"}
1
+ {"version":3,"file":"next-workflow-step.d.ts","sourceRoot":"","sources":["../../src/commands/next-workflow-step.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAQjD,eAAO,MAAM,uBAAuB,EAAE,OA0DrC,CAAC"}
@@ -1,61 +1,76 @@
1
1
  import { logger } from '../lib/logger.js';
2
- import { resolveOptions } from '../cli/resolver.js';
3
- import * as workflow from '../services/workflow.js';
4
- import { startDevImplementationCommand } from './start-dev-implementation.js';
5
- import { readyForApprovalCommand } from './ready-for-approval.js';
6
- import { approvePrCommand } from './approve-pr.js';
7
- /**
8
- * Resolve a transition command's options (prompting for any that weren't
9
- * supplied) before executing it. Running the transition directly with an empty
10
- * object would skip resolution entirely, leaving options like the PR assignee
11
- * undefined.
12
- */
13
- async function runTransition(command) {
14
- const resolved = await resolveOptions(command, {});
15
- await command.execute(resolved);
16
- }
2
+ import { validateProjectItemUrl } from '../lib/project-item-url.js';
3
+ import { WORKFLOW_STATES, getNextWorkflowState, isStateAtOrAfter, normalizeWorkflowState } from '../lib/workflow-states.js';
4
+ import { branchCreationOptions } from '../services/branch-setup.js';
5
+ import { advanceTo, ensureManaged, resolveContext } from '../services/workflow-engine.js';
6
+ import { deferredHandlerOptions } from '../services/workflow-handlers/index.js';
17
7
  export const nextWorkflowStepCommand = {
18
8
  name: 'next-workflow-step',
19
9
  aliases: ['next', 'n'],
20
- description: 'Automatically perform the next workflow transition',
21
- async execute(_resolved) {
22
- // Get current workflow status
23
- const status = await workflow.getWorkflowStatus();
24
- if (!status.projectItemUrl) {
25
- throw new Error('This branch is not under workflow management. Start with: idea1 start-project-item <url>');
10
+ description: 'Advance the project item to the next workflow state (or through several, with --to), running the automation of every state entered',
11
+ options: [
12
+ {
13
+ longName: 'url',
14
+ shortName: 'u',
15
+ description: 'Project item URL (required when not on the item\'s branch)',
16
+ defaultValue: '',
17
+ promptWhenDefaultExists: false,
18
+ validate: (value) => (value ? validateProjectItemUrl(value) : undefined)
19
+ },
20
+ {
21
+ longName: 'to',
22
+ description: 'Workflow state to advance to; every state between the current one and it is entered in order',
23
+ defaultValue: '',
24
+ promptWhenDefaultExists: false,
25
+ validate: (value) => (value === '' || normalizeWorkflowState(value) !== null
26
+ ? undefined
27
+ : `Unknown workflow state '${value}'. One of: ${WORKFLOW_STATES.join(', ')}`)
28
+ },
29
+ {
30
+ longName: 'source-path',
31
+ shortName: 'p',
32
+ description: 'Path to source directory',
33
+ defaultValue: '',
34
+ promptWhenDefaultExists: false
35
+ },
36
+ // Branch creation choices apply when the item has no branch yet; the engine
37
+ // prompts for what it needs, so none of these are asked up front.
38
+ ...branchCreationOptions.map(option => ({ ...option, dependsOn: () => false })),
39
+ ...deferredHandlerOptions()
40
+ ],
41
+ async execute(resolved) {
42
+ const sourcePath = resolved['source-path'];
43
+ if (sourcePath) {
44
+ process.chdir(sourcePath);
26
45
  }
27
- if (!status.workflowState) {
28
- throw new Error('No workflow state found for this branch.');
29
- }
30
- logger.info(`Current workflow state: ${status.workflowState}`);
31
- // Get the next transition
32
- const nextTransition = await workflow.getNextTransition();
33
- if (!nextTransition) {
34
- if (status.workflowState === 'Approved and Merged' || status.workflowState === 'Released') {
35
- logger.success('Workflow is complete! No more steps to perform.');
36
- logger.hint(`Project item: ${status.projectItemUrl}`);
37
- }
38
- else {
39
- logger.warning('No valid transitions available from the current state.');
40
- }
46
+ const context = await resolveContext({ projectItemUrl: resolved['url'] || undefined, options: resolved });
47
+ const targetState = resolveTargetState(context.currentState, resolved['to']);
48
+ if (!targetState) {
49
+ logger.success('Workflow is complete! No more steps to perform.');
50
+ logger.hint(`Project item: ${context.projectItemUrl}`);
41
51
  return;
42
52
  }
43
- logger.info(`Executing next transition: ${nextTransition}`);
44
- logger.newline();
45
- // Execute the appropriate command
46
- switch (nextTransition) {
47
- case 'start-dev-implementation':
48
- await runTransition(startDevImplementationCommand);
49
- break;
50
- case 'ready-for-approval':
51
- await runTransition(readyForApprovalCommand);
52
- break;
53
- case 'approve-pr':
54
- await runTransition(approvePrCommand);
55
- break;
56
- default:
57
- throw new Error(`Unknown transition: ${nextTransition}`);
58
- }
53
+ logger.info(`Current workflow state: ${context.currentState ?? '(not started)'}`);
54
+ // An item that was never started enters the first state here, which is the
55
+ // whole transition; otherwise the branch is only made consistent and the
56
+ // transition below records the new state.
57
+ await ensureManaged(context, { deferItemStatusWrite: context.currentState !== null });
58
+ await advanceTo(context, targetState);
59
59
  }
60
60
  };
61
+ /**
62
+ * The state to move to: the requested one, or the next state when none was
63
+ * requested. Null when there is nothing ahead. Requesting a state the item is
64
+ * already at or past is an error — the CLI never moves an item backwards.
65
+ */
66
+ function resolveTargetState(currentState, requested) {
67
+ if (!requested) {
68
+ return getNextWorkflowState(currentState);
69
+ }
70
+ const targetState = normalizeWorkflowState(requested);
71
+ if (currentState !== null && isStateAtOrAfter(currentState, targetState)) {
72
+ throw new Error(`The item is already at '${currentState}', which is not before '${targetState}'. Move it back in the web client if that is intended; the CLI only advances.`);
73
+ }
74
+ return targetState;
75
+ }
61
76
  //# sourceMappingURL=next-workflow-step.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"next-workflow-step.js","sourceRoot":"","sources":["../../src/commands/next-workflow-step.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;;;GAKG;AACH,KAAK,UAAU,aAAa,CAAC,OAAgB;IAC3C,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACnD,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAY;IAC9C,IAAI,EAAE,oBAAoB;IAC1B,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC;IACtB,WAAW,EAAE,oDAAoD;IAEjE,KAAK,CAAC,OAAO,CAAC,SAAiC;QAC7C,8BAA8B;QAC9B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAElD,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;QAC9G,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,2BAA2B,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;QAE/D,0BAA0B;QAC1B,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAE1D,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,IAAI,MAAM,CAAC,aAAa,KAAK,qBAAqB,IAAI,MAAM,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;gBAC1F,MAAM,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC;gBAClE,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,OAAO,CAAC,wDAAwD,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,8BAA8B,cAAc,EAAE,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,EAAE,CAAC;QAEjB,kCAAkC;QAClC,QAAQ,cAAc,EAAE,CAAC;YACvB,KAAK,0BAA0B;gBAC7B,MAAM,aAAa,CAAC,6BAA6B,CAAC,CAAC;gBACnD,MAAM;YAER,KAAK,oBAAoB;gBACvB,MAAM,aAAa,CAAC,uBAAuB,CAAC,CAAC;gBAC7C,MAAM;YAER,KAAK,YAAY;gBACf,MAAM,aAAa,CAAC,gBAAgB,CAAC,CAAC;gBACtC,MAAM;YAER;gBACE,MAAM,IAAI,KAAK,CAAC,uBAAuB,cAAc,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"next-workflow-step.js","sourceRoot":"","sources":["../../src/commands/next-workflow-step.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ready-for-approval.d.ts","sourceRoot":"","sources":["../../src/commands/ready-for-approval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAQjD,eAAO,MAAM,uBAAuB,EAAE,OA+ErC,CAAC"}
1
+ {"version":3,"file":"ready-for-approval.d.ts","sourceRoot":"","sources":["../../src/commands/ready-for-approval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAKjD,eAAO,MAAM,uBAAuB,EAAE,OAWrC,CAAC"}
@@ -1,74 +1,15 @@
1
- import { logger } from '../lib/logger.js';
2
- import * as git from '../services/git.js';
3
- import * as github from '../services/github.js';
4
- import * as claude from '../services/claude.js';
5
- import * as workflow from '../services/workflow.js';
6
- import { removeWorktreeForWorkflowState } from '../services/worktree.js';
1
+ import { WorkflowStates } from '../lib/workflow-states.js';
2
+ import { advanceTo, requireCurrentState, resolveContext } from '../services/workflow-engine.js';
3
+ import { readyForApprovalHandler } from '../services/workflow-handlers/ready-for-approval.js';
7
4
  export const readyForApprovalCommand = {
8
5
  name: 'ready-for-approval',
9
6
  aliases: ['rfa'],
10
7
  description: 'Mark PR as ready for approval and assign reviewers/assignee',
11
- options: [
12
- {
13
- longName: 'assignee',
14
- shortName: 'a',
15
- description: 'Who to assign the PR to',
16
- choices: 'github-members',
17
- allowNone: true
18
- },
19
- {
20
- longName: 'reviewers',
21
- shortName: 'r',
22
- description: 'Who to request a review from (select any number)',
23
- choices: 'github-members',
24
- multiSelect: true
25
- }
26
- ],
8
+ options: readyForApprovalHandler.options,
27
9
  async execute(resolved) {
28
- const assignee = resolved['assignee'] ?? '';
29
- const reviewers = (resolved['reviewers'] ?? '')
30
- .split(',')
31
- .map(name => name.trim())
32
- .filter(name => name.length > 0);
33
- // Validate transition
34
- const validation = await workflow.validateTransition('ready-for-approval');
35
- if (!validation.valid) {
36
- throw new Error(validation.error ?? 'Invalid transition');
37
- }
38
- // Ensure workflow preconditions
39
- await workflow.ensureWorkflowPreconditions();
40
- // Get branch info
41
- const branchName = await git.getCurrentBranch();
42
- const projectItemUrl = await git.getProjectItemUrl();
43
- const baseBranch = await git.getBaseBranch() ?? 'working/release';
44
- if (!projectItemUrl) {
45
- throw new Error('No project item URL found for this branch.');
46
- }
47
- logger.info(`Current branch: ${branchName}`);
48
- // Check PR exists
49
- const prInfo = await github.checkPrExists(branchName, baseBranch);
50
- if (!prInfo) {
51
- throw new Error('No PR exists for this branch. Create a PR first with: idea1 push');
52
- }
53
- logger.info(`PR #${prInfo.number} found`);
54
- // Request reviews and set the assignee (each no-ops when nothing was chosen)
55
- await github.assignReviewers(branchName, reviewers);
56
- await github.assignAssignee(branchName, assignee);
57
- if (reviewers.length === 0 && !assignee) {
58
- logger.dim('No reviewers requested and no assignee set.');
59
- }
60
- // Update workflow state, commit metadata, and push before worktree removal
61
- await git.storeWorkflowState('Needs Approval for Release');
62
- await git.commitBranchMetadataIfChanged(branchName);
63
- await git.pushToRemote(branchName);
64
- await claude.setWorkflowStatus(projectItemUrl, 'Needs Approval for Release');
65
- // If in a worktree, remove it when settings say the worktree goes at this state
66
- await removeWorktreeForWorkflowState('Needs Approval for Release', branchName);
67
- logger.newline();
68
- logger.success('PR is ready for approval');
69
- logger.newline();
70
- logger.hint(`PR: ${prInfo.url}`);
71
- logger.hint('When approved, run: idea1 approve-pr');
10
+ const context = await resolveContext({ options: resolved });
11
+ requireCurrentState(context, WorkflowStates.DevImplementation, 'ready-for-approval');
12
+ await advanceTo(context, WorkflowStates.NeedsApprovalForRelease);
72
13
  }
73
14
  };
74
15
  //# sourceMappingURL=ready-for-approval.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ready-for-approval.js","sourceRoot":"","sources":["../../src/commands/ready-for-approval.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ready-for-approval.js","sourceRoot":"","sources":["../../src/commands/ready-for-approval.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AAE9F,MAAM,CAAC,MAAM,uBAAuB,GAAY;IAC9C,IAAI,EAAE,oBAAoB;IAC1B,OAAO,EAAE,CAAC,KAAK,CAAC;IAChB,WAAW,EAAE,6DAA6D;IAC1E,OAAO,EAAE,uBAAuB,CAAC,OAAO;IAExC,KAAK,CAAC,OAAO,CAAC,QAAgC;QAC5C,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5D,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC;QACrF,MAAM,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,uBAAuB,CAAC,CAAC;IACnE,CAAC;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from '../types/index.js';
2
+ export declare const startAgentImplementationCommand: Command;
3
+ //# sourceMappingURL=start-agent-implementation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-agent-implementation.d.ts","sourceRoot":"","sources":["../../src/commands/start-agent-implementation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAQjD,eAAO,MAAM,+BAA+B,EAAE,OA0C7C,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { logger } from '../lib/logger.js';
2
+ import { WorkflowStates, isStateAtOrAfter } from '../lib/workflow-states.js';
3
+ import { branchCreationOptions } from '../services/branch-setup.js';
4
+ import { advanceTo, ensureManaged, resolveContext } from '../services/workflow-engine.js';
5
+ import { agentImplementationHandler } from '../services/workflow-handlers/agent-implementation.js';
6
+ import { projectItemTargetOptions, resolveOrCreateProjectItem } from './start.js';
7
+ export const startAgentImplementationCommand = {
8
+ name: 'start-agent-implementation',
9
+ // 'start-project-item' is kept so existing team command templates keep working.
10
+ aliases: ['implement', 'sai', 'start-project-item'],
11
+ description: 'Start implementing a project item: put it under workflow management, move it to Agent Implementation and launch Claude',
12
+ options: [
13
+ ...projectItemTargetOptions,
14
+ ...branchCreationOptions,
15
+ ...(agentImplementationHandler.options ?? [])
16
+ ],
17
+ async execute(resolved) {
18
+ const sourcePath = resolved['source-path'];
19
+ if (sourcePath) {
20
+ process.chdir(sourcePath);
21
+ }
22
+ const projectItemUrl = await resolveOrCreateProjectItem(resolved);
23
+ const context = await resolveContext({ projectItemUrl, options: resolved });
24
+ if (context.currentState && isStateAtOrAfter(context.currentState, WorkflowStates.DevImplementation)) {
25
+ throw new Error(`${projectItemUrl} is already past Agent Implementation (state: ${context.currentState}). ` +
26
+ `Use 'idea1 join-project-item --project-item-url ${projectItemUrl}' to set up a working environment.`);
27
+ }
28
+ logger.section('Agent Implementation');
29
+ const alreadyImplementing = context.currentState === WorkflowStates.AgentImplementation;
30
+ await ensureManaged(context, { deferItemStatusWrite: !alreadyImplementing });
31
+ if (alreadyImplementing) {
32
+ // Nothing to transition: set up the working environment and launch Claude.
33
+ logger.info('The item is already in Agent Implementation — setting up the working environment.');
34
+ await agentImplementationHandler.prepare?.(context);
35
+ await agentImplementationHandler.complete?.(context);
36
+ return;
37
+ }
38
+ await advanceTo(context, WorkflowStates.AgentImplementation);
39
+ }
40
+ };
41
+ //# sourceMappingURL=start-agent-implementation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-agent-implementation.js","sourceRoot":"","sources":["../../src/commands/start-agent-implementation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,uDAAuD,CAAC;AACnG,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAElF,MAAM,CAAC,MAAM,+BAA+B,GAAY;IACtD,IAAI,EAAE,4BAA4B;IAClC,gFAAgF;IAChF,OAAO,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,oBAAoB,CAAC;IACnD,WAAW,EAAE,wHAAwH;IACrI,OAAO,EAAE;QACP,GAAG,wBAAwB;QAC3B,GAAG,qBAAqB;QACxB,GAAG,CAAC,0BAA0B,CAAC,OAAO,IAAI,EAAE,CAAC;KAC9C;IAED,KAAK,CAAC,OAAO,CAAC,QAAgC;QAC5C,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC3C,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,cAAc,GAAG,MAAM,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE5E,IAAI,OAAO,CAAC,YAAY,IAAI,gBAAgB,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACrG,MAAM,IAAI,KAAK,CACb,GAAG,cAAc,iDAAiD,OAAO,CAAC,YAAY,KAAK;gBAC3F,mDAAmD,cAAc,oCAAoC,CACtG,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAEvC,MAAM,mBAAmB,GAAG,OAAO,CAAC,YAAY,KAAK,cAAc,CAAC,mBAAmB,CAAC;QACxF,MAAM,aAAa,CAAC,OAAO,EAAE,EAAE,oBAAoB,EAAE,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAE7E,IAAI,mBAAmB,EAAE,CAAC;YACxB,2EAA2E;YAC3E,MAAM,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;YACjG,MAAM,0BAA0B,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,0BAA0B,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC;YACrD,OAAO;QACT,CAAC;QAED,MAAM,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,mBAAmB,CAAC,CAAC;IAC/D,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"start-dev-implementation.d.ts","sourceRoot":"","sources":["../../src/commands/start-dev-implementation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAQjD,eAAO,MAAM,6BAA6B,EAAE,OA+E3C,CAAC"}
1
+ {"version":3,"file":"start-dev-implementation.d.ts","sourceRoot":"","sources":["../../src/commands/start-dev-implementation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAKjD,eAAO,MAAM,6BAA6B,EAAE,OAyB3C,CAAC"}
@@ -1,9 +1,6 @@
1
- import { logger } from '../lib/logger.js';
2
- import * as git from '../services/git.js';
3
- import * as github from '../services/github.js';
4
- import * as claude from '../services/claude.js';
5
- import * as workflow from '../services/workflow.js';
6
- import { removeWorktreeForWorkflowState } from '../services/worktree.js';
1
+ import { WorkflowStates } from '../lib/workflow-states.js';
2
+ import { advanceTo, requireCurrentState, resolveContext } from '../services/workflow-engine.js';
3
+ import { devImplementationHandler } from '../services/workflow-handlers/dev-implementation.js';
7
4
  export const startDevImplementationCommand = {
8
5
  name: 'start-dev-implementation',
9
6
  aliases: ['dev'],
@@ -15,60 +12,17 @@ export const startDevImplementationCommand = {
15
12
  description: 'Path to worktree directory',
16
13
  defaultValue: '',
17
14
  promptWhenDefaultExists: false
18
- }
15
+ },
16
+ ...(devImplementationHandler.options ?? [])
19
17
  ],
20
18
  async execute(resolved) {
21
19
  const sourcePath = resolved['source-path'];
22
- // Navigate to source path if provided
23
20
  if (sourcePath) {
24
21
  process.chdir(sourcePath);
25
22
  }
26
- // Validate transition
27
- const validation = await workflow.validateTransition('start-dev-implementation');
28
- if (!validation.valid) {
29
- throw new Error(validation.error ?? 'Invalid transition');
30
- }
31
- // Ensure workflow preconditions (has project item URL, no uncommitted changes)
32
- // Note: For this transition, we allow uncommitted changes since we'll commit them
33
- const projectItemUrl = await git.getProjectItemUrl();
34
- if (!projectItemUrl) {
35
- throw new Error('This branch is not under workflow management. Start with: idea1 start-project-item <url>');
36
- }
37
- // Get branch info
38
- const branchName = await git.getCurrentBranch();
39
- const baseBranch = await git.getBaseBranch() ?? 'working/release';
40
- logger.info(`Current branch: ${branchName}`);
41
- logger.info(`Base branch: ${baseBranch}`);
42
- // Check for uncommitted changes and commit them
43
- const hasChanges = await git.hasUncommittedChanges();
44
- if (hasChanges) {
45
- const commitMessage = `Agent Implementation of ${projectItemUrl} on ${branchName}`;
46
- await git.commitAllChanges(commitMessage);
47
- }
48
- // Update workflow state and commit metadata before push
49
- await git.storeWorkflowState('Dev Implementation');
50
- await git.commitBranchMetadataIfChanged(branchName);
51
- // Push changes to remote
52
- await git.pushToRemote(branchName);
53
- // Create PR if it doesn't exist
54
- let prInfo = await github.checkPrExists(branchName, baseBranch);
55
- if (!prInfo) {
56
- prInfo = await github.createPrIfNeeded(branchName, baseBranch, projectItemUrl);
57
- }
58
- else {
59
- logger.info(`PR #${prInfo.number} already exists for this branch.`);
60
- }
61
- // Update workflow status on idea1.ai
62
- await claude.setWorkflowStatus(projectItemUrl, 'Dev Implementation');
63
- // If in a worktree, close it when settings say the worktree goes at this state
64
- await removeWorktreeForWorkflowState('Dev Implementation', branchName);
65
- logger.newline();
66
- logger.success('Transitioned to Dev Implementation');
67
- logger.newline();
68
- if (prInfo) {
69
- logger.hint(`PR: ${prInfo.url}`);
70
- }
71
- logger.hint('When ready for review, run: idea1 ready-for-approval [--assignee <username>] [--reviewers <user1,user2>]');
23
+ const context = await resolveContext({ options: resolved });
24
+ requireCurrentState(context, WorkflowStates.AgentImplementation, 'start-dev-implementation');
25
+ await advanceTo(context, WorkflowStates.DevImplementation);
72
26
  }
73
27
  };
74
28
  //# 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":"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"}
1
+ {"version":3,"file":"start-dev-implementation.js","sourceRoot":"","sources":["../../src/commands/start-dev-implementation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,EAAE,wBAAwB,EAAE,MAAM,qDAAqD,CAAC;AAE/F,MAAM,CAAC,MAAM,6BAA6B,GAAY;IACpD,IAAI,EAAE,0BAA0B;IAChC,OAAO,EAAE,CAAC,KAAK,CAAC;IAChB,WAAW,EAAE,yFAAyF;IACtG,OAAO,EAAE;QACP;YACE,QAAQ,EAAE,aAAa;YACvB,SAAS,EAAE,GAAG;YACd,WAAW,EAAE,4BAA4B;YACzC,YAAY,EAAE,EAAE;YAChB,uBAAuB,EAAE,KAAK;SAC/B;QACD,GAAG,CAAC,wBAAwB,CAAC,OAAO,IAAI,EAAE,CAAC;KAC5C;IAED,KAAK,CAAC,OAAO,CAAC,QAAgC;QAC5C,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC3C,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5D,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC,mBAAmB,EAAE,0BAA0B,CAAC,CAAC;QAC7F,MAAM,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC7D,CAAC;CACF,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { Command, CommandOption } from '../types/index.js';
2
+ /**
3
+ * Options every command that can put an item under workflow management shares:
4
+ * which item (or a new one to create) and where the repository is.
5
+ */
6
+ export declare const projectItemTargetOptions: CommandOption[];
7
+ /**
8
+ * Resolve the item a command targets: the given URL, or a brand new item
9
+ * created from the title.
10
+ */
11
+ export declare function resolveOrCreateProjectItem(resolved: Record<string, string>): Promise<string>;
12
+ export declare const startCommand: Command;
13
+ //# sourceMappingURL=start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAOhE;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,aAAa,EA6BnD,CAAC;AAEF;;;GAGG;AACH,wBAAsB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAQlG;AAED,eAAO,MAAM,YAAY,EAAE,OAmC1B,CAAC"}
@@ -0,0 +1,81 @@
1
+ import { logger } from '../lib/logger.js';
2
+ import { isProjectItemUrl, validateProjectItemUrl } from '../lib/project-item-url.js';
3
+ import * as claude from '../services/claude.js';
4
+ import { branchCreationOptions } from '../services/branch-setup.js';
5
+ import { ensureManaged, resolveContext } from '../services/workflow-engine.js';
6
+ /**
7
+ * Options every command that can put an item under workflow management shares:
8
+ * which item (or a new one to create) and where the repository is.
9
+ */
10
+ export const projectItemTargetOptions = [
11
+ {
12
+ // Declared first so it's the very first thing prompted — later choices
13
+ // depend on whether it was provided.
14
+ longName: 'url',
15
+ shortName: 'u',
16
+ description: 'Project item URL (leave blank to create a new item)',
17
+ defaultValue: '',
18
+ promptWhenDefaultExists: true,
19
+ // Allow blank (signals "create a new item"); validate format otherwise.
20
+ validate: (value) => (value ? validateProjectItemUrl(value) : undefined)
21
+ },
22
+ {
23
+ // Only prompted (and required) when no URL was given, i.e. the user is
24
+ // creating a new item. Declared after 'url' so it can read its value.
25
+ longName: 'title',
26
+ shortName: 't',
27
+ description: 'Title for the new project item',
28
+ dependsOn: (resolved) => !resolved['url'],
29
+ validate: (value) => value.trim() ? undefined : 'A title is required to create a project item'
30
+ },
31
+ {
32
+ longName: 'source-path',
33
+ shortName: 'p',
34
+ description: 'Path to source directory',
35
+ defaultValue: '',
36
+ promptWhenDefaultExists: false
37
+ }
38
+ ];
39
+ /**
40
+ * Resolve the item a command targets: the given URL, or a brand new item
41
+ * created from the title.
42
+ */
43
+ export async function resolveOrCreateProjectItem(resolved) {
44
+ const projectItemUrl = resolved['url'] || await claude.createProjectItem(resolved['title'].trim());
45
+ if (!isProjectItemUrl(projectItemUrl)) {
46
+ logger.warning('URL does not appear to be an idea1.ai project item URL');
47
+ }
48
+ return projectItemUrl;
49
+ }
50
+ export const startCommand = {
51
+ name: 'start',
52
+ aliases: ['s'],
53
+ description: 'Put a project item under workflow management: create its branch and metadata (no code changes, no Claude)',
54
+ options: [
55
+ ...projectItemTargetOptions,
56
+ ...branchCreationOptions
57
+ ],
58
+ async execute(resolved) {
59
+ const sourcePath = resolved['source-path'];
60
+ if (sourcePath) {
61
+ process.chdir(sourcePath);
62
+ }
63
+ const projectItemUrl = await resolveOrCreateProjectItem(resolved);
64
+ const context = await resolveContext({ projectItemUrl, options: resolved });
65
+ if (context.branchName) {
66
+ // Already managed: make sure the branch carries its metadata file, and report.
67
+ await ensureManaged(context, { deferItemStatusWrite: true });
68
+ logger.info(`${projectItemUrl} is already under workflow management on ${context.branchName} (state: ${context.currentState ?? 'unknown'})`);
69
+ logger.hint('Use `idea1 next --url <url>` to advance to the next workflow step.');
70
+ return;
71
+ }
72
+ logger.section('Start Workflow');
73
+ await ensureManaged(context, { deferItemStatusWrite: false });
74
+ logger.newline();
75
+ logger.success(`${projectItemUrl} is under workflow management on ${context.branchName} (state: ${context.currentState})`);
76
+ logger.newline();
77
+ logger.hint(`Advance one step: idea1 next --url ${projectItemUrl}`);
78
+ logger.hint(`Jump to agent implementation: idea1 start-agent-implementation --url ${projectItemUrl}`);
79
+ }
80
+ };
81
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"AAimBA;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsEzE"}
1
+ {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"AAonBA;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuEzE"}