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.
- package/dist/agents/implementation.d.ts +69 -0
- package/dist/agents/implementation.d.ts.map +1 -1
- package/dist/agents/implementation.js +481 -79
- package/dist/agents/implementation.js.map +1 -1
- package/dist/agents/refinement.js +4 -4
- package/dist/agents/refinement.js.map +1 -1
- package/dist/agents/review.d.ts +12 -0
- package/dist/agents/review.d.ts.map +1 -1
- package/dist/agents/review.js +98 -7
- package/dist/agents/review.js.map +1 -1
- package/dist/cli/commands.d.ts +29 -0
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +568 -159
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/daemon.d.ts.map +1 -1
- package/dist/cli/daemon.js +20 -7
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/formatting.js +1 -1
- package/dist/cli/formatting.js.map +1 -1
- package/dist/cli/runner.d.ts.map +1 -1
- package/dist/cli/runner.js +34 -15
- package/dist/cli/runner.js.map +1 -1
- package/dist/core/auth.d.ts +8 -2
- package/dist/core/auth.d.ts.map +1 -1
- package/dist/core/auth.js +163 -7
- package/dist/core/auth.js.map +1 -1
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +11 -1
- package/dist/core/client.js.map +1 -1
- package/dist/core/config.d.ts +32 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +135 -1
- package/dist/core/config.js.map +1 -1
- package/dist/core/git-utils.d.ts +19 -0
- package/dist/core/git-utils.d.ts.map +1 -0
- package/dist/core/git-utils.js +95 -0
- package/dist/core/git-utils.js.map +1 -0
- package/dist/core/kanban.d.ts +0 -5
- package/dist/core/kanban.d.ts.map +1 -1
- package/dist/core/kanban.js +7 -46
- package/dist/core/kanban.js.map +1 -1
- package/dist/core/story.d.ts +56 -2
- package/dist/core/story.d.ts.map +1 -1
- package/dist/core/story.js +227 -29
- package/dist/core/story.js.map +1 -1
- package/dist/core/worktree.d.ts +68 -0
- package/dist/core/worktree.d.ts.map +1 -0
- package/dist/core/worktree.js +195 -0
- package/dist/core/worktree.js.map +1 -0
- package/dist/index.js +29 -2
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +40 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/package.json +1 -1
package/dist/core/story.js
CHANGED
|
@@ -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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
//
|
|
484
|
-
const
|
|
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
|
-
//
|
|
521
|
-
|
|
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);
|
package/dist/core/story.js.map
CHANGED
|
@@ -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":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAwC,gBAAgB,EAAyB,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAErL;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEnD,kEAAkE;IAClE,qEAAqE;IACrE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAEpD,MAAM,WAAW,GAAG,IAAwB,CAAC;IAE7C,2FAA2F;IAC3F,IAAI,IAAY,CAAC;IACjB,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;QACrB,2CAA2C;QAC3C,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,uDAAuD;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChD,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAErC,mCAAmC;QACnC,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,IAAI;QACJ,WAAW;QACX,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;KACrB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAY;IACrC,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IACnE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAY,EAAE,SAAsB;IACpE,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC;IACrC,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,UAAU,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAY,EAAE,QAAgB,EAAE,QAAgB;IACxE,OAAO,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC;IAEpG,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEnD,8BAA8B;IAC9B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,8DAA8D;IAC9D,MAAM,aAAa,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAClF,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IAE7C,oCAAoC;IACpC,MAAM,WAAW,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;IAC/E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAErD,qBAAqB;IACrB,KAAK,CAAC,WAAW,CAAC,QAAQ,GAAG,WAAW,CAAC;IACzC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,gBAAgB,CAAC,QAAyC,CAAC,CAAC;IACvF,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnE,wBAAwB;IACxB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;IAC3B,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;IACrB,UAAU,CAAC,KAAK,CAAC,CAAC;IAElB,kBAAkB;IAClB,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QAClD,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB,EAAE,MAAc;IAC7D,yDAAyD;IACzD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE5C,gDAAgD;IAChD,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,qDAAqD;IACrD,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAEpC,8DAA8D;IAC9D,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC;IACrC,KAAK,CAAC,WAAW,CAAC,cAAc,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC9D,KAAK,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACxD,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnE,8BAA8B;IAC9B,UAAU,CAAC,KAAK,CAAC,CAAC;AACpB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,aAAsB;IACpD,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,IAAI,aAAa,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YACpE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;oBAAE,SAAS;gBACjC,4EAA4E;gBAC5E,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAC1C,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACnC,IAAI,GAAG,GAAG,MAAM;wBAAE,MAAM,GAAG,GAAG,CAAC;gBACjC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,iCAAiC;QACnC,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,MAAM,MAAM,GAAG,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAC1D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,OAAO,SAAS,SAAS,IAAI,MAAM,EAAE,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,OAAO,KAAK;SACT,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CACzB,KAAa,EACb,QAAgB,EAChB,UAAqC,EAAE;IAEvC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAE1D,4CAA4C;IAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,kCAAkC,aAAa,6BAA6B,CAAC,CAAC;IAChG,CAAC;IAED,8BAA8B;IAC9B,MAAM,EAAE,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAE5B,qCAAqC;IACrC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IACjD,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,gDAAgD;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAExD,iFAAiF;IACjF,IAAI,QAAQ,GAAG,oBAAoB,CAAC,CAAC,8BAA8B;IACnE,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,EAAE,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aACxE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAE1C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;gBACrE,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7B,IAAI,CAAC;wBACH,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;wBAC5C,IAAI,aAAa,CAAC,WAAW,CAAC,QAAQ,GAAG,WAAW,EAAE,CAAC;4BACrD,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC;wBACnD,CAAC;oBACH,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,yBAAyB;wBACzB,SAAS;oBACX,CAAC;gBACH,CAAC;YACH,CAAC;YACD,QAAQ,GAAG,WAAW,GAAG,oBAAoB,CAAC;QAChD,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,mEAAmE;QACnE,QAAQ,GAAG,oBAAoB,CAAC;IAClC,CAAC;IAED,MAAM,WAAW,GAAqB;QACpC,EAAE;QACF,KAAK;QACL,IAAI;QACJ,QAAQ;QACR,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS;QAC/B,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;QAC5B,iBAAiB,EAAE,KAAK;QACxB,aAAa,EAAE,KAAK;QACpB,uBAAuB,EAAE,KAAK;QAC9B,gBAAgB,EAAE,KAAK;QACvB,GAAG,OAAO;KACX,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,KAAK;;;;;;;;;;;;;;;;;;;;oCAoBQ,CAAC;IAEnC,MAAM,KAAK,GAAU;QACnB,IAAI,EAAE,QAAQ;QACd,IAAI;QACJ,WAAW;QACX,OAAO;KACR,CAAC;IAEF,UAAU,CAAC,KAAK,CAAC,CAAC;IAElB,mDAAmD;IACnD,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChD,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAY,EACZ,KAAQ,EACR,KAA0B;IAE1B,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IACjC,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,UAAU,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAY,EAAE,OAAe,EAAE,OAAe;IAC5E,MAAM,aAAa,GAAG,MAAM,OAAO,EAAE,CAAC;IACtC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAE1D,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;QACxB,2CAA2C;QAC3C,KAAK,CAAC,OAAO,IAAI,OAAO,aAAa,OAAO,OAAO,EAAE,CAAC;IACxD,CAAC;SAAM,CAAC;QACN,0CAA0C;QAC1C,MAAM,WAAW,GAAG,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC;QACxD,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7E,MAAM,WAAW,GAAG,gBAAgB;YAClC,CAAC,CAAC,WAAW,GAAG,gBAAgB,CAAC,KAAM;YACvC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAEzB,qCAAqC;QACrC,KAAK,CAAC,OAAO;YACX,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,OAAO,EAAE;gBACjD,MAAM;gBACN,OAAO;gBACP,IAAI;gBACJ,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,UAAU,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAY,EACZ,SAAiB,EACjB,cAAsB;IAEtB,gDAAgD;IAChD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC;QAC7C,KAAK,CAAC,WAAW,CAAC,qBAAqB,GAAG,EAAE,CAAC;QAC7C,KAAK,CAAC,WAAW,CAAC,gBAAgB,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,gBAAgB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAChE,MAAM,gBAAgB,GAAG;QACvB,SAAS;QACT,SAAS;QACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,cAAc;QACd,MAAM,EAAE,aAAsB;KAC/B,CAAC;IAEF,KAAK,CAAC,WAAW,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC/D,KAAK,CAAC,WAAW,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAC/C,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnE,UAAU,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAY;IAC7C,OAAO,KAAK,CAAC,WAAW,CAAC,gBAAgB,IAAI,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAY,EAAE,WAAmB;IAClE,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,uBAAuB,CAAC;IAC3D,MAAM,YAAY,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;IACrE,OAAO,YAAY,GAAG,YAAY,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAY,EACZ,KAAwC;IAExC,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,UAAU;YACb,KAAK,CAAC,WAAW,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC5C,MAAM;QACR,KAAK,MAAM;YACT,KAAK,CAAC,WAAW,CAAC,aAAa,GAAG,KAAK,CAAC;YACxC,MAAM;QACR,KAAK,WAAW;YACd,KAAK,CAAC,WAAW,CAAC,uBAAuB,GAAG,KAAK,CAAC;YAClD,MAAM;IACV,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,UAAU,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAY;IAClD,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACtF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mFAAmF;IACnF,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/C,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAY,EACZ,SAAiB,EACjB,QAAgB;IAEhB,MAAM,cAAc,GAAG,4BAA4B,SAAS,OAAO,QAAQ,EAAE,CAAC;IAC9E,OAAO,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAY,EAAE,MAAc;IACjE,OAAO,KAAK,CAAC,WAAW,CAAC,WAAW,KAAK,SAAS;QAChD,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW;QAC/B,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAY,EAAE,MAAc,EAAE,qBAA8B;IACzF,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC;IAC7D,0EAA0E;IAC1E,MAAM,UAAU,GAAG,qBAAqB,KAAK,SAAS;QACpD,CAAC,CAAC,qBAAqB;QACvB,CAAC,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC1C,0BAA0B;IAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,iBAAiB,IAAI,UAAU,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAY;IAC9C,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC;IACxD,KAAK,CAAC,WAAW,CAAC,WAAW,GAAG,YAAY,GAAG,CAAC,CAAC;IACjD,KAAK,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpE,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,UAAU,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAY,EAAE,MAAc;IACzD,oDAAoD;IACpD,KAAK,CAAC,WAAW,CAAC,aAAa,GAAG,KAAK,CAAC;IACxC,KAAK,CAAC,WAAW,CAAC,uBAAuB,GAAG,KAAK,CAAC;IAClD,KAAK,CAAC,WAAW,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAC3C,KAAK,CAAC,WAAW,CAAC,mBAAmB,GAAG,MAAM,CAAC;IAC/C,KAAK,CAAC,WAAW,CAAC,sBAAsB,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpE,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnE,wBAAwB;IACxB,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC;IACxD,KAAK,CAAC,WAAW,CAAC,WAAW,GAAG,YAAY,GAAG,CAAC,CAAC;IAEjD,UAAU,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAY,EAAE,OAAsB;IACtE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;QACtC,KAAK,CAAC,WAAW,CAAC,cAAc,GAAG,EAAE,CAAC;IACxC,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE/C,6DAA6D;IAC7D,IAAI,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACjD,KAAK,CAAC,WAAW,CAAC,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,UAAU,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAY;IACjD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,IAAI,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAY;IAC5C,KAAK,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAC3C,KAAK,CAAC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC;IACvC,KAAK,CAAC,WAAW,CAAC,uBAAuB,GAAG,IAAI,CAAC;IACjD,KAAK,CAAC,WAAW,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC1C,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,UAAU,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAY,EAAE,MAAc;IAC7D,IAAI,KAAK,CAAC,WAAW,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QAChD,KAAK,CAAC,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC;QAC/D,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,UAAU,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAAY;IACtD,OAAO,KAAK,CAAC,WAAW,CAAC,0BAA0B,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oCAAoC,CAAC,KAAY,EAAE,MAAc;IAC/E,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,0BAA0B,CAAC;IAC9D,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC;IACnD,MAAM,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC;IAE9D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,oCAAoC;QACpC,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAAY,EAAE,MAAc;IACvE,MAAM,iBAAiB,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,oCAAoC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAEvE,0BAA0B;IAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,2EAA2E;IAC3E,wEAAwE;IACxE,0DAA0D;IAC1D,OAAO,iBAAiB,GAAG,UAAU,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAAC,KAAY;IACxD,KAAK,CAAC,WAAW,CAAC,0BAA0B,GAAG,CAAC,CAAC;IACjD,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,UAAU,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iCAAiC,CAAC,KAAY;IAC5D,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,0BAA0B,IAAI,CAAC,CAAC;IACvE,KAAK,CAAC,WAAW,CAAC,0BAA0B,GAAG,YAAY,GAAG,CAAC,CAAC;IAChE,KAAK,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,UAAU,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,IAAI,SAAS,GAAG,IAAI;QAClB,uEAAuE;SACtE,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC;QACtC,6FAA6F;SAC5F,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC;SAClC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;QACrC,oDAAoD;SACnD,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACrB,wCAAwC;SACvC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC;QAC1B,iDAAiD;SAChD,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;QACtB,oGAAoG;SACnG,OAAO,CAAC,yCAAyC,EAAE,EAAE,CAAC,CAAC;IAE1D,iDAAiD;IACjD,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAEvC,oCAAoC;IACpC,IAAI,SAAS,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QAC3B,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;IAClD,CAAC;IAED,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,OAAe;IAC7D,uDAAuD;IACvD,yDAAyD;IACzD,IACE,CAAC,OAAO;QACR,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QACtB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EACxB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wEAAwE;IACxE,6DAA6D;IAC7D,iFAAiF;IACjF,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAE1D,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,8CAA8C;YAC9C,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;iBACvE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;iBACtC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAE9B,iDAAiD;YACjD,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CACpC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CACnD,CAAC;YAEF,IAAI,aAAa,EAAE,CAAC;gBAClB,iEAAiE;gBACjE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;gBAE1E,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7B,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;oBACjD,MAAM,KAAK,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;oBACxC,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;gBAC3C,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,8DAA8D;QAChE,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,8BAA8B;IAC9B,MAAM,cAAc,GAAqD,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IACrH,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACxE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAChD,MAAM,KAAK,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;gBACxC,6CAA6C;gBAC7C,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;oBAClE,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;gBAC3C,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,SAAS;YACX,CAAC;QACH,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACvD,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAClF,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAChD,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAChD,MAAM,KAAK,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;gBACxC,6CAA6C;gBAC7C,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;oBAClE,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;gBAC3C,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,SAAS;YACX,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,QAAQ,CAAC,QAAgB,EAAE,OAAe;IACxD,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAE/C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;QACtF,MAAM,IAAI,KAAK,CACb,oBAAoB,OAAO,IAAI;YAC/B,gBAAgB,gBAAgB,IAAI;YACpC,6EAA6E;YAC7E,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAe,EACf,QAAgB,EAChB,OAAoC;IAEpC,qDAAqD;IACrD,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEpD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,SAAS,OAAO,YAAY,CAAC,CAAC;IAChD,CAAC;IAED,mCAAmC;IACnC,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,SAAS,OAAO,oCAAoC,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IACxG,CAAC;IAED,wBAAwB;IACxB,OAAO,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC;IAC7C,OAAO,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC;IAEzC,6BAA6B;IAC7B,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;QAC1B,UAAU,CAAC,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC;QACvC,UAAU,CAAC,WAAW,CAAC,gBAAgB,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,yDAAyD;IACzD,IAAI,SAAsB,CAAC;IAC3B,IAAI,UAAU,CAAC,WAAW,CAAC,uBAAuB,EAAE,CAAC;QACnD,gEAAgE;QAChE,SAAS,GAAG,aAAa,CAAC;IAC5B,CAAC;SAAM,IAAI,UAAU,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;QAChD,wEAAwE;QACxE,SAAS,GAAG,OAAO,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,uCAAuC;QACvC,SAAS,GAAG,SAAS,CAAC;IACxB,CAAC;IAED,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1C,UAAU,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAExE,8BAA8B;IAC9B,UAAU,CAAC,UAAU,CAAC,CAAC;IAEvB,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -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
|