ai-sdlc 0.2.0-alpha.1 → 0.2.0-alpha.11

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 (55) hide show
  1. package/dist/agents/implementation.d.ts +69 -0
  2. package/dist/agents/implementation.d.ts.map +1 -1
  3. package/dist/agents/implementation.js +481 -79
  4. package/dist/agents/implementation.js.map +1 -1
  5. package/dist/agents/refinement.js +4 -4
  6. package/dist/agents/refinement.js.map +1 -1
  7. package/dist/agents/review.d.ts +12 -0
  8. package/dist/agents/review.d.ts.map +1 -1
  9. package/dist/agents/review.js +98 -7
  10. package/dist/agents/review.js.map +1 -1
  11. package/dist/cli/commands.d.ts +29 -0
  12. package/dist/cli/commands.d.ts.map +1 -1
  13. package/dist/cli/commands.js +568 -159
  14. package/dist/cli/commands.js.map +1 -1
  15. package/dist/cli/daemon.d.ts.map +1 -1
  16. package/dist/cli/daemon.js +20 -7
  17. package/dist/cli/daemon.js.map +1 -1
  18. package/dist/cli/formatting.js +1 -1
  19. package/dist/cli/formatting.js.map +1 -1
  20. package/dist/cli/runner.d.ts.map +1 -1
  21. package/dist/cli/runner.js +34 -15
  22. package/dist/cli/runner.js.map +1 -1
  23. package/dist/core/auth.d.ts +8 -2
  24. package/dist/core/auth.d.ts.map +1 -1
  25. package/dist/core/auth.js +163 -7
  26. package/dist/core/auth.js.map +1 -1
  27. package/dist/core/client.d.ts.map +1 -1
  28. package/dist/core/client.js +11 -1
  29. package/dist/core/client.js.map +1 -1
  30. package/dist/core/config.d.ts +32 -1
  31. package/dist/core/config.d.ts.map +1 -1
  32. package/dist/core/config.js +135 -1
  33. package/dist/core/config.js.map +1 -1
  34. package/dist/core/git-utils.d.ts +19 -0
  35. package/dist/core/git-utils.d.ts.map +1 -0
  36. package/dist/core/git-utils.js +95 -0
  37. package/dist/core/git-utils.js.map +1 -0
  38. package/dist/core/kanban.d.ts +0 -5
  39. package/dist/core/kanban.d.ts.map +1 -1
  40. package/dist/core/kanban.js +7 -46
  41. package/dist/core/kanban.js.map +1 -1
  42. package/dist/core/story.d.ts +56 -2
  43. package/dist/core/story.d.ts.map +1 -1
  44. package/dist/core/story.js +227 -29
  45. package/dist/core/story.js.map +1 -1
  46. package/dist/core/worktree.d.ts +68 -0
  47. package/dist/core/worktree.d.ts.map +1 -0
  48. package/dist/core/worktree.js +195 -0
  49. package/dist/core/worktree.js.map +1 -0
  50. package/dist/index.js +29 -2
  51. package/dist/index.js.map +1 -1
  52. package/dist/types/index.d.ts +40 -0
  53. package/dist/types/index.d.ts.map +1 -1
  54. package/dist/types/index.js.map +1 -1
  55. package/package.json +1 -1
@@ -10,7 +10,9 @@ import { FOLDER_TO_STATUS, BLOCKED_DIR, STORIES_FOLDER, STORY_FILENAME, DEFAULT_
10
10
  */
11
11
  export function parseStory(filePath) {
12
12
  const content = fs.readFileSync(filePath, 'utf-8');
13
- const { data, content: body } = matter(content);
13
+ // Pass empty options to bypass gray-matter's content-based cache.
14
+ // Without this, repeated parses of modified files return stale data.
15
+ const { data, content: body } = matter(content, {});
14
16
  const frontmatter = data;
15
17
  // Extract slug from frontmatter (new architecture) or filename (old architecture fallback)
16
18
  let slug;
@@ -114,9 +116,42 @@ export function moveToBlocked(storyPath, reason) {
114
116
  writeStory(story);
115
117
  }
116
118
  /**
117
- * Generate a unique story ID
119
+ * Generate a unique story ID in sequential format (S-0001, S-0002, etc.)
120
+ * Scans the stories folder to find the highest existing number.
121
+ *
122
+ * @param storiesFolder - Path to the stories directory
123
+ * @returns Sequential story ID like "S-0001"
124
+ */
125
+ export function generateStoryId(storiesFolder) {
126
+ let maxNum = 0;
127
+ if (storiesFolder && fs.existsSync(storiesFolder)) {
128
+ try {
129
+ const dirs = fs.readdirSync(storiesFolder, { withFileTypes: true });
130
+ for (const dir of dirs) {
131
+ if (!dir.isDirectory())
132
+ continue;
133
+ // Match both S-XXXX format (new) and fall back to checking for any existing
134
+ const match = dir.name.match(/^S-(\d+)$/);
135
+ if (match) {
136
+ const num = parseInt(match[1], 10);
137
+ if (num > maxNum)
138
+ maxNum = num;
139
+ }
140
+ }
141
+ }
142
+ catch {
143
+ // If we can't read, start from 0
144
+ }
145
+ }
146
+ // Generate next ID with zero-padded 4 digits
147
+ const nextId = `S-${String(maxNum + 1).padStart(4, '0')}`;
148
+ return nextId;
149
+ }
150
+ /**
151
+ * Generate a legacy story ID (for backwards compatibility/fallback)
152
+ * @deprecated Use generateStoryId() instead
118
153
  */
119
- export function generateStoryId() {
154
+ export function generateLegacyStoryId() {
120
155
  const timestamp = Date.now().toString(36);
121
156
  const random = Math.random().toString(36).substring(2, 6);
122
157
  return `story-${timestamp}-${random}`;
@@ -144,7 +179,7 @@ export function createStory(title, sdlcRoot, options = {}) {
144
179
  throw new Error(`Stories folder does not exist: ${storiesFolder}. Run 'ai-sdlc init' first.`);
145
180
  }
146
181
  // Generate unique ID and slug
147
- const id = generateStoryId();
182
+ const id = generateStoryId(storiesFolder);
148
183
  const slug = slugify(title);
149
184
  // Create story folder: stories/{id}/
150
185
  const storyFolder = path.join(storiesFolder, id);
@@ -223,7 +258,9 @@ export function createStory(title, sdlcRoot, options = {}) {
223
258
  content,
224
259
  };
225
260
  writeStory(story);
226
- return story;
261
+ // Return story with canonical path for consistency
262
+ const canonicalPath = fs.realpathSync(filePath);
263
+ return { ...story, path: canonicalPath };
227
264
  }
228
265
  /**
229
266
  * Update story frontmatter field
@@ -440,6 +477,62 @@ export function snapshotMaxRetries(story, config) {
440
477
  }
441
478
  return story;
442
479
  }
480
+ /**
481
+ * Get the current implementation retry count for a story
482
+ */
483
+ export function getImplementationRetryCount(story) {
484
+ return story.frontmatter.implementation_retry_count || 0;
485
+ }
486
+ /**
487
+ * Get the effective maximum implementation retries for a story (story-specific or config default)
488
+ * Story-specific overrides are capped at the upper bound to prevent resource exhaustion
489
+ */
490
+ export function getEffectiveMaxImplementationRetries(story, config) {
491
+ const storyMax = story.frontmatter.max_implementation_retries;
492
+ const configMax = config.implementation.maxRetries;
493
+ const upperBound = config.implementation.maxRetriesUpperBound;
494
+ if (storyMax !== undefined) {
495
+ // Cap story override at upper bound
496
+ return Math.min(storyMax, upperBound);
497
+ }
498
+ return configMax;
499
+ }
500
+ /**
501
+ * Check if a story has reached its maximum implementation retry limit.
502
+ * maxRetries represents the number of RETRY attempts allowed after the initial attempt.
503
+ * So with maxRetries=1, you get 1 initial attempt + 1 retry = 2 total attempts.
504
+ */
505
+ export function isAtMaxImplementationRetries(story, config) {
506
+ const currentRetryCount = getImplementationRetryCount(story);
507
+ const maxRetries = getEffectiveMaxImplementationRetries(story, config);
508
+ // Infinity means no limit
509
+ if (!Number.isFinite(maxRetries)) {
510
+ return false;
511
+ }
512
+ // Use > instead of >= because maxRetries is the number of retries allowed,
513
+ // not the total number of attempts. With maxRetries=1, we allow 1 retry
514
+ // (so 2 total attempts before being considered "at max").
515
+ return currentRetryCount > maxRetries;
516
+ }
517
+ /**
518
+ * Reset implementation retry count to 0
519
+ */
520
+ export function resetImplementationRetryCount(story) {
521
+ story.frontmatter.implementation_retry_count = 0;
522
+ story.frontmatter.updated = new Date().toISOString().split('T')[0];
523
+ writeStory(story);
524
+ return story;
525
+ }
526
+ /**
527
+ * Increment the implementation retry count for a story
528
+ */
529
+ export function incrementImplementationRetryCount(story) {
530
+ const currentCount = story.frontmatter.implementation_retry_count || 0;
531
+ story.frontmatter.implementation_retry_count = currentCount + 1;
532
+ story.frontmatter.updated = new Date().toISOString().split('T')[0];
533
+ writeStory(story);
534
+ return story;
535
+ }
443
536
  /**
444
537
  * Sanitize user-controlled text for safe display and storage.
445
538
  * Removes ANSI escape sequences, control characters, and potential injection vectors.
@@ -470,6 +563,118 @@ export function sanitizeReasonText(text) {
470
563
  }
471
564
  return sanitized.trim();
472
565
  }
566
+ /**
567
+ * Find a story by ID using O(1) direct path lookup
568
+ * Falls back to searching old folder structure for backwards compatibility
569
+ *
570
+ * This function is the internal lookup mechanism. Use getStory() for external access.
571
+ *
572
+ * @param sdlcRoot - Root directory of the SDLC workspace
573
+ * @param storyId - Story ID (e.g., 'S-0001')
574
+ * @returns Story object or null if not found
575
+ */
576
+ export function findStoryById(sdlcRoot, storyId) {
577
+ // SECURITY: Validate storyId format (defense-in-depth)
578
+ // Reject any input that could be used for path traversal
579
+ if (!storyId ||
580
+ storyId.includes('..') ||
581
+ storyId.includes('/') ||
582
+ storyId.includes('\\') ||
583
+ path.isAbsolute(storyId)) {
584
+ return null;
585
+ }
586
+ // O(n) directory scan for case-insensitive matching in new architecture
587
+ // Reads all story directories to find case-insensitive match
588
+ // Note: fs.realpathSync() does NOT canonicalize casing on macOS, so we must scan
589
+ const storiesFolder = path.join(sdlcRoot, STORIES_FOLDER);
590
+ if (fs.existsSync(storiesFolder)) {
591
+ try {
592
+ // Read actual directory names from filesystem
593
+ const directories = fs.readdirSync(storiesFolder, { withFileTypes: true })
594
+ .filter(dirent => dirent.isDirectory())
595
+ .map(dirent => dirent.name);
596
+ // Find directory that matches case-insensitively
597
+ const actualDirName = directories.find(dir => dir.toLowerCase() === storyId.toLowerCase());
598
+ if (actualDirName) {
599
+ // Use the actual directory name (with correct filesystem casing)
600
+ const storyPath = path.join(storiesFolder, actualDirName, STORY_FILENAME);
601
+ if (fs.existsSync(storyPath)) {
602
+ const canonicalPath = fs.realpathSync(storyPath);
603
+ const story = parseStory(canonicalPath);
604
+ return { ...story, path: canonicalPath };
605
+ }
606
+ }
607
+ }
608
+ catch (err) {
609
+ // If reading directory fails, fall through to fallback search
610
+ }
611
+ }
612
+ // Fallback: search old folder structure for backwards compatibility
613
+ // Search kanban folders first
614
+ const KANBAN_FOLDERS = ['backlog', 'ready', 'in-progress', 'done'];
615
+ for (const folder of KANBAN_FOLDERS) {
616
+ const folderPath = path.join(sdlcRoot, folder);
617
+ if (!fs.existsSync(folderPath)) {
618
+ continue;
619
+ }
620
+ const files = fs.readdirSync(folderPath).filter(f => f.endsWith('.md'));
621
+ for (const file of files) {
622
+ const filePath = path.join(folderPath, file);
623
+ try {
624
+ const canonicalPath = fs.realpathSync(filePath);
625
+ const story = parseStory(canonicalPath);
626
+ // Case-insensitive comparison to match input
627
+ if (story.frontmatter.id?.toLowerCase() === storyId.toLowerCase()) {
628
+ return { ...story, path: canonicalPath };
629
+ }
630
+ }
631
+ catch (err) {
632
+ continue;
633
+ }
634
+ }
635
+ }
636
+ // Also search blocked folder
637
+ const blockedFolder = path.join(sdlcRoot, BLOCKED_DIR);
638
+ if (fs.existsSync(blockedFolder)) {
639
+ const blockedFiles = fs.readdirSync(blockedFolder).filter(f => f.endsWith('.md'));
640
+ for (const file of blockedFiles) {
641
+ const filePath = path.join(blockedFolder, file);
642
+ try {
643
+ const canonicalPath = fs.realpathSync(filePath);
644
+ const story = parseStory(canonicalPath);
645
+ // Case-insensitive comparison to match input
646
+ if (story.frontmatter.id?.toLowerCase() === storyId.toLowerCase()) {
647
+ return { ...story, path: canonicalPath };
648
+ }
649
+ }
650
+ catch (err) {
651
+ continue;
652
+ }
653
+ }
654
+ }
655
+ return null;
656
+ }
657
+ /**
658
+ * Retrieves a story by ID, resolving its current location across all folders.
659
+ * This is the single source of truth for story lookup - use this instead of
660
+ * directly calling parseStory() with cached paths.
661
+ *
662
+ * @param sdlcRoot - Root directory of the SDLC workspace
663
+ * @param storyId - Story ID (e.g., 'S-0001')
664
+ * @returns Fully parsed Story object with current path and metadata
665
+ * @throws Error if story ID not found in any folder
666
+ */
667
+ export function getStory(sdlcRoot, storyId) {
668
+ const story = findStoryById(sdlcRoot, storyId);
669
+ if (!story) {
670
+ const newStructurePath = path.join(sdlcRoot, STORIES_FOLDER, storyId, STORY_FILENAME);
671
+ throw new Error(`Story not found: ${storyId}\n` +
672
+ `Searched in: ${newStructurePath}\n` +
673
+ `Also searched old folder structure (backlog, in-progress, done, blocked).\n` +
674
+ `The story may have been deleted or the ID is incorrect.`);
675
+ }
676
+ return story;
677
+ }
473
678
  /**
474
679
  * Unblock a story and set status back to in-progress
475
680
  * In the new architecture, this only updates frontmatter - file path remains unchanged
@@ -480,28 +685,8 @@ export function sanitizeReasonText(text) {
480
685
  * @returns The unblocked story
481
686
  */
482
687
  export function unblockStory(storyId, sdlcRoot, options) {
483
- // In new architecture, try direct path lookup first
484
- const storyPath = path.join(sdlcRoot, STORIES_FOLDER, storyId, STORY_FILENAME);
485
- let foundStory = null;
486
- if (fs.existsSync(storyPath)) {
487
- // Found in new structure
488
- foundStory = parseStory(storyPath);
489
- }
490
- else {
491
- // Fallback: search for story in old blocked folder (backwards compatibility)
492
- const blockedFolder = path.join(sdlcRoot, BLOCKED_DIR);
493
- if (fs.existsSync(blockedFolder)) {
494
- const blockedFiles = fs.readdirSync(blockedFolder).filter(f => f.endsWith('.md'));
495
- for (const file of blockedFiles) {
496
- const filePath = path.join(blockedFolder, file);
497
- const story = parseStory(filePath);
498
- if (story.frontmatter.id === storyId) {
499
- foundStory = story;
500
- break;
501
- }
502
- }
503
- }
504
- }
688
+ // Use the centralized getStory() function for lookup
689
+ const foundStory = findStoryById(sdlcRoot, storyId);
505
690
  if (!foundStory) {
506
691
  throw new Error(`Story ${storyId} not found`);
507
692
  }
@@ -517,8 +702,21 @@ export function unblockStory(storyId, sdlcRoot, options) {
517
702
  foundStory.frontmatter.retry_count = 0;
518
703
  foundStory.frontmatter.refinement_count = 0;
519
704
  }
520
- // Update status to in-progress (no file moves in new architecture)
521
- foundStory.frontmatter.status = 'in-progress';
705
+ // Determine appropriate status based on completion flags
706
+ let newStatus;
707
+ if (foundStory.frontmatter.implementation_complete) {
708
+ // Implementation is complete - return to in-progress for review
709
+ newStatus = 'in-progress';
710
+ }
711
+ else if (foundStory.frontmatter.plan_complete) {
712
+ // Plan is complete but implementation is not - ready for implementation
713
+ newStatus = 'ready';
714
+ }
715
+ else {
716
+ // No phases complete - back to backlog
717
+ newStatus = 'backlog';
718
+ }
719
+ foundStory.frontmatter.status = newStatus;
522
720
  foundStory.frontmatter.updated = new Date().toISOString().split('T')[0];
523
721
  // Write back to same location
524
722
  writeStory(foundStory);
@@ -1 +1 @@
1
- {"version":3,"file":"story.js","sourceRoot":"","sources":["../../src/core/story.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"story.js","sourceRoot":"","sources":["../../src/core/story.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import { WorktreeInfo } from '../types/index.js';
2
+ /**
3
+ * Options for creating a git worktree
4
+ */
5
+ export interface WorktreeOptions {
6
+ storyId: string;
7
+ slug: string;
8
+ baseBranch?: string;
9
+ }
10
+ /**
11
+ * Result of worktree validation check
12
+ */
13
+ export interface WorktreeValidationResult {
14
+ valid: boolean;
15
+ error?: string;
16
+ }
17
+ /**
18
+ * Service for managing git worktrees for isolated story execution
19
+ */
20
+ export declare class GitWorktreeService {
21
+ private projectRoot;
22
+ private worktreeBasePath;
23
+ constructor(projectRoot: string, worktreeBasePath: string);
24
+ /**
25
+ * Generate the worktree path for a story
26
+ * Format: {worktreeBasePath}/{storyId}-{slug}
27
+ */
28
+ getWorktreePath(storyId: string, slug: string): string;
29
+ /**
30
+ * Generate the branch name for a worktree
31
+ * Format: ai-sdlc/{storyId}-{slug}
32
+ */
33
+ getBranchName(storyId: string, slug: string): string;
34
+ /**
35
+ * Detect the base branch (main or master) for branching
36
+ * @returns The detected base branch name
37
+ * @throws Error if neither main nor master exists
38
+ */
39
+ detectBaseBranch(): string;
40
+ /**
41
+ * Validate that a worktree can be created
42
+ * Checks for uncommitted changes in the working directory
43
+ */
44
+ validateCanCreateWorktree(): WorktreeValidationResult;
45
+ /**
46
+ * Check if a worktree already exists at the given path
47
+ */
48
+ exists(worktreePath: string): boolean;
49
+ /**
50
+ * Create a new git worktree for isolated story execution
51
+ * @param options - Worktree creation options
52
+ * @returns The path to the created worktree
53
+ * @throws Error if worktree creation fails
54
+ */
55
+ create(options: WorktreeOptions): string;
56
+ /**
57
+ * List all ai-sdlc managed worktrees
58
+ * @returns Array of WorktreeInfo objects for worktrees in the basePath
59
+ */
60
+ list(): WorktreeInfo[];
61
+ /**
62
+ * Remove a git worktree
63
+ * @param worktreePath - Absolute path to the worktree to remove
64
+ * @throws Error if removal fails
65
+ */
66
+ remove(worktreePath: string): void;
67
+ }
68
+ //# sourceMappingURL=worktree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../../src/core/worktree.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAkBD;;GAEG;AACH,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,gBAAgB;gBADhB,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM;IAGlC;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAItD;;;OAGG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAIpD;;;;OAIG;IACH,gBAAgB,IAAI,MAAM;IA4B1B;;;OAGG;IACH,yBAAyB,IAAI,wBAAwB;IAWrD;;OAEG;IACH,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAIrC;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM;IAyCxC;;;OAGG;IACH,IAAI,IAAI,YAAY,EAAE;IA8CtB;;;;OAIG;IACH,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;CAmBnC"}
@@ -0,0 +1,195 @@
1
+ import { spawnSync } from 'child_process';
2
+ import { existsSync } from 'fs';
3
+ import path from 'path';
4
+ import { isCleanWorkingDirectory } from './git-utils.js';
5
+ /**
6
+ * Error messages used by the worktree service
7
+ */
8
+ const ERROR_MESSAGES = {
9
+ UNCOMMITTED_CHANGES: 'Uncommitted changes exist. Commit or stash before using worktrees.',
10
+ PATH_EXISTS: 'Worktree path already exists',
11
+ CREATE_FAILED: 'Failed to create worktree',
12
+ NO_BASE_BRANCH: 'Could not detect base branch (main or master)',
13
+ NOT_GIT_REPO: 'Not a git repository',
14
+ BRANCH_EXISTS: 'A branch with this name already exists',
15
+ WORKTREE_NOT_FOUND: 'Worktree not found',
16
+ WORKTREE_HAS_CHANGES: 'Worktree has uncommitted changes. Use --force to remove.',
17
+ LIST_FAILED: 'Failed to list worktrees',
18
+ REMOVE_FAILED: 'Failed to remove worktree',
19
+ };
20
+ /**
21
+ * Service for managing git worktrees for isolated story execution
22
+ */
23
+ export class GitWorktreeService {
24
+ projectRoot;
25
+ worktreeBasePath;
26
+ constructor(projectRoot, worktreeBasePath) {
27
+ this.projectRoot = projectRoot;
28
+ this.worktreeBasePath = worktreeBasePath;
29
+ }
30
+ /**
31
+ * Generate the worktree path for a story
32
+ * Format: {worktreeBasePath}/{storyId}-{slug}
33
+ */
34
+ getWorktreePath(storyId, slug) {
35
+ return path.join(this.worktreeBasePath, `${storyId}-${slug}`);
36
+ }
37
+ /**
38
+ * Generate the branch name for a worktree
39
+ * Format: ai-sdlc/{storyId}-{slug}
40
+ */
41
+ getBranchName(storyId, slug) {
42
+ return `ai-sdlc/${storyId}-${slug}`;
43
+ }
44
+ /**
45
+ * Detect the base branch (main or master) for branching
46
+ * @returns The detected base branch name
47
+ * @throws Error if neither main nor master exists
48
+ */
49
+ detectBaseBranch() {
50
+ // Check for 'main' first
51
+ const mainResult = spawnSync('git', ['rev-parse', '--verify', 'main'], {
52
+ cwd: this.projectRoot,
53
+ encoding: 'utf-8',
54
+ shell: false,
55
+ stdio: ['ignore', 'pipe', 'pipe'],
56
+ });
57
+ if (mainResult.status === 0) {
58
+ return 'main';
59
+ }
60
+ // Check for 'master' as fallback
61
+ const masterResult = spawnSync('git', ['rev-parse', '--verify', 'master'], {
62
+ cwd: this.projectRoot,
63
+ encoding: 'utf-8',
64
+ shell: false,
65
+ stdio: ['ignore', 'pipe', 'pipe'],
66
+ });
67
+ if (masterResult.status === 0) {
68
+ return 'master';
69
+ }
70
+ throw new Error(ERROR_MESSAGES.NO_BASE_BRANCH);
71
+ }
72
+ /**
73
+ * Validate that a worktree can be created
74
+ * Checks for uncommitted changes in the working directory
75
+ */
76
+ validateCanCreateWorktree() {
77
+ if (!isCleanWorkingDirectory(this.projectRoot)) {
78
+ return {
79
+ valid: false,
80
+ error: ERROR_MESSAGES.UNCOMMITTED_CHANGES,
81
+ };
82
+ }
83
+ return { valid: true };
84
+ }
85
+ /**
86
+ * Check if a worktree already exists at the given path
87
+ */
88
+ exists(worktreePath) {
89
+ return existsSync(worktreePath);
90
+ }
91
+ /**
92
+ * Create a new git worktree for isolated story execution
93
+ * @param options - Worktree creation options
94
+ * @returns The path to the created worktree
95
+ * @throws Error if worktree creation fails
96
+ */
97
+ create(options) {
98
+ const worktreePath = this.getWorktreePath(options.storyId, options.slug);
99
+ const branchName = this.getBranchName(options.storyId, options.slug);
100
+ const baseBranch = options.baseBranch || this.detectBaseBranch();
101
+ // Check if worktree path already exists
102
+ if (this.exists(worktreePath)) {
103
+ throw new Error(`${ERROR_MESSAGES.PATH_EXISTS}: ${worktreePath}`);
104
+ }
105
+ // Execute git worktree add command
106
+ const result = spawnSync('git', ['worktree', 'add', '-b', branchName, worktreePath, baseBranch], {
107
+ cwd: this.projectRoot,
108
+ encoding: 'utf-8',
109
+ shell: false,
110
+ stdio: ['ignore', 'pipe', 'pipe'],
111
+ });
112
+ // Handle errors
113
+ if (result.status !== 0) {
114
+ const stderr = result.stderr?.toString() || '';
115
+ // Provide specific error messages for common failures
116
+ if (stderr.includes('not a git repository')) {
117
+ throw new Error(ERROR_MESSAGES.NOT_GIT_REPO);
118
+ }
119
+ if (stderr.includes('already exists')) {
120
+ throw new Error(`${ERROR_MESSAGES.BRANCH_EXISTS}: ${branchName}`);
121
+ }
122
+ // Generic error with stderr details
123
+ throw new Error(`${ERROR_MESSAGES.CREATE_FAILED}: ${stderr}`);
124
+ }
125
+ return worktreePath;
126
+ }
127
+ /**
128
+ * List all ai-sdlc managed worktrees
129
+ * @returns Array of WorktreeInfo objects for worktrees in the basePath
130
+ */
131
+ list() {
132
+ const result = spawnSync('git', ['worktree', 'list', '--porcelain'], {
133
+ cwd: this.projectRoot,
134
+ encoding: 'utf-8',
135
+ shell: false,
136
+ stdio: ['ignore', 'pipe', 'pipe'],
137
+ });
138
+ if (result.status !== 0) {
139
+ throw new Error(`${ERROR_MESSAGES.LIST_FAILED}: ${result.stderr}`);
140
+ }
141
+ const output = result.stdout || '';
142
+ const worktrees = [];
143
+ const blocks = output.trim().split('\n\n');
144
+ for (const block of blocks) {
145
+ if (!block.trim())
146
+ continue;
147
+ const lines = block.split('\n');
148
+ let worktreePath = '';
149
+ let branch = '';
150
+ for (const line of lines) {
151
+ if (line.startsWith('worktree ')) {
152
+ worktreePath = line.substring(9);
153
+ }
154
+ else if (line.startsWith('branch ')) {
155
+ branch = line.substring(7).replace('refs/heads/', '');
156
+ }
157
+ }
158
+ // Filter to only ai-sdlc managed worktrees
159
+ if (worktreePath && worktreePath.startsWith(this.worktreeBasePath)) {
160
+ const storyIdMatch = branch.match(/^ai-sdlc\/(S-\d+)-/);
161
+ worktrees.push({
162
+ path: worktreePath,
163
+ branch,
164
+ storyId: storyIdMatch ? storyIdMatch[1] : undefined,
165
+ exists: existsSync(worktreePath),
166
+ });
167
+ }
168
+ }
169
+ return worktrees;
170
+ }
171
+ /**
172
+ * Remove a git worktree
173
+ * @param worktreePath - Absolute path to the worktree to remove
174
+ * @throws Error if removal fails
175
+ */
176
+ remove(worktreePath) {
177
+ const result = spawnSync('git', ['worktree', 'remove', worktreePath], {
178
+ cwd: this.projectRoot,
179
+ encoding: 'utf-8',
180
+ shell: false,
181
+ stdio: ['ignore', 'pipe', 'pipe'],
182
+ });
183
+ if (result.status !== 0) {
184
+ const stderr = result.stderr?.toString() || '';
185
+ if (stderr.includes('not a working tree')) {
186
+ throw new Error(ERROR_MESSAGES.WORKTREE_NOT_FOUND);
187
+ }
188
+ if (stderr.includes('modified or untracked files')) {
189
+ throw new Error(ERROR_MESSAGES.WORKTREE_HAS_CHANGES);
190
+ }
191
+ throw new Error(`${ERROR_MESSAGES.REMOVE_FAILED}: ${stderr}`);
192
+ }
193
+ }
194
+ }
195
+ //# sourceMappingURL=worktree.js.map