ai-sdlc 0.3.0 → 0.3.1-alpha.0

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 (84) hide show
  1. package/README.md +78 -6
  2. package/dist/agents/implementation.d.ts +5 -0
  3. package/dist/agents/implementation.d.ts.map +1 -1
  4. package/dist/agents/implementation.js +78 -9
  5. package/dist/agents/implementation.js.map +1 -1
  6. package/dist/agents/planning.d.ts.map +1 -1
  7. package/dist/agents/planning.js +10 -3
  8. package/dist/agents/planning.js.map +1 -1
  9. package/dist/agents/research.d.ts.map +1 -1
  10. package/dist/agents/research.js +14 -6
  11. package/dist/agents/research.js.map +1 -1
  12. package/dist/agents/review.d.ts +81 -0
  13. package/dist/agents/review.d.ts.map +1 -1
  14. package/dist/agents/review.js +405 -39
  15. package/dist/agents/review.js.map +1 -1
  16. package/dist/agents/single-task.d.ts +1 -1
  17. package/dist/agents/single-task.d.ts.map +1 -1
  18. package/dist/agents/single-task.js +1 -1
  19. package/dist/cli/batch-processor.d.ts +64 -0
  20. package/dist/cli/batch-processor.d.ts.map +1 -0
  21. package/dist/cli/batch-processor.js +85 -0
  22. package/dist/cli/batch-processor.js.map +1 -0
  23. package/dist/cli/batch-validator.d.ts +80 -0
  24. package/dist/cli/batch-validator.d.ts.map +1 -0
  25. package/dist/cli/batch-validator.js +121 -0
  26. package/dist/cli/batch-validator.js.map +1 -0
  27. package/dist/cli/commands.d.ts +7 -0
  28. package/dist/cli/commands.d.ts.map +1 -1
  29. package/dist/cli/commands.js +285 -1
  30. package/dist/cli/commands.js.map +1 -1
  31. package/dist/cli/dependency-resolver.d.ts +49 -0
  32. package/dist/cli/dependency-resolver.d.ts.map +1 -0
  33. package/dist/cli/dependency-resolver.js +133 -0
  34. package/dist/cli/dependency-resolver.js.map +1 -0
  35. package/dist/cli/epic-processor.d.ts +16 -0
  36. package/dist/cli/epic-processor.d.ts.map +1 -0
  37. package/dist/cli/epic-processor.js +489 -0
  38. package/dist/cli/epic-processor.js.map +1 -0
  39. package/dist/cli/formatting.d.ts +15 -0
  40. package/dist/cli/formatting.d.ts.map +1 -1
  41. package/dist/cli/formatting.js +19 -0
  42. package/dist/cli/formatting.js.map +1 -1
  43. package/dist/cli/progress-dashboard.d.ts +58 -0
  44. package/dist/cli/progress-dashboard.d.ts.map +1 -0
  45. package/dist/cli/progress-dashboard.js +216 -0
  46. package/dist/cli/progress-dashboard.js.map +1 -0
  47. package/dist/cli/table-renderer.d.ts.map +1 -1
  48. package/dist/cli/table-renderer.js +5 -1
  49. package/dist/cli/table-renderer.js.map +1 -1
  50. package/dist/core/agent-executor.d.ts +13 -0
  51. package/dist/core/agent-executor.d.ts.map +1 -0
  52. package/dist/core/agent-executor.js +153 -0
  53. package/dist/core/agent-executor.js.map +1 -0
  54. package/dist/core/config.d.ts +16 -1
  55. package/dist/core/config.d.ts.map +1 -1
  56. package/dist/core/config.js +113 -0
  57. package/dist/core/config.js.map +1 -1
  58. package/dist/core/git-utils.d.ts +19 -0
  59. package/dist/core/git-utils.d.ts.map +1 -1
  60. package/dist/core/git-utils.js +58 -0
  61. package/dist/core/git-utils.js.map +1 -1
  62. package/dist/core/kanban.d.ts +125 -1
  63. package/dist/core/kanban.d.ts.map +1 -1
  64. package/dist/core/kanban.js +371 -4
  65. package/dist/core/kanban.js.map +1 -1
  66. package/dist/core/orchestrator.d.ts +63 -0
  67. package/dist/core/orchestrator.d.ts.map +1 -0
  68. package/dist/core/orchestrator.js +320 -0
  69. package/dist/core/orchestrator.js.map +1 -0
  70. package/dist/core/story.d.ts +84 -0
  71. package/dist/core/story.d.ts.map +1 -1
  72. package/dist/core/story.js +159 -14
  73. package/dist/core/story.js.map +1 -1
  74. package/dist/core/worktree.d.ts +7 -0
  75. package/dist/core/worktree.d.ts.map +1 -1
  76. package/dist/core/worktree.js +44 -0
  77. package/dist/core/worktree.js.map +1 -1
  78. package/dist/index.js +53 -0
  79. package/dist/index.js.map +1 -1
  80. package/dist/types/index.d.ts +252 -0
  81. package/dist/types/index.d.ts.map +1 -1
  82. package/dist/types/index.js +23 -0
  83. package/dist/types/index.js.map +1 -1
  84. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { Story, StateAssessment, KanbanFolder, StoryStatus } from '../types/index.js';
1
+ import { Story, StateAssessment, KanbanFolder, StoryStatus, GroupingDimension, GroupingSummary } from '../types/index.js';
2
2
  /**
3
3
  * Find all stories in the stories/ folder structure
4
4
  * Globs stories/*\u200B/story.md and returns all story objects
@@ -46,4 +46,128 @@ export declare function kanbanExists(sdlcRoot: string): boolean;
46
46
  * Get board statistics
47
47
  */
48
48
  export declare function getBoardStats(sdlcRoot: string): Record<KanbanFolder, number>;
49
+ /**
50
+ * Check if a label matches a glob pattern.
51
+ * Supports wildcard (*) for pattern matching with proper regex escaping.
52
+ *
53
+ * @param label - The label to test
54
+ * @param pattern - The glob pattern (e.g., 'epic-*', '*-test')
55
+ * @returns true if label matches pattern
56
+ * @throws Error if pattern exceeds maximum length
57
+ *
58
+ * @example
59
+ * labelMatchesPattern('epic-ticketing', 'epic-*') // true
60
+ * labelMatchesPattern('sprint-2024-q1', 'epic-*') // false
61
+ * labelMatchesPattern('test.label', 'test.label') // true (special chars escaped)
62
+ */
63
+ export declare function labelMatchesPattern(label: string, pattern: string): boolean;
64
+ /**
65
+ * Find stories by exact label match.
66
+ * Returns stories sorted by priority ascending.
67
+ *
68
+ * @param sdlcRoot - Path to .ai-sdlc folder
69
+ * @param label - Exact label to match
70
+ * @returns Array of stories with the specified label
71
+ *
72
+ * @example
73
+ * findStoriesByLabel(sdlcRoot, 'epic-ticketing')
74
+ */
75
+ export declare function findStoriesByLabel(sdlcRoot: string, label: string): Story[];
76
+ /**
77
+ * Find stories by multiple labels with AND/OR logic.
78
+ * Returns stories sorted by priority ascending.
79
+ *
80
+ * @param sdlcRoot - Path to .ai-sdlc folder
81
+ * @param labels - Array of labels to match
82
+ * @param mode - 'all' requires all labels (AND), 'any' requires at least one (OR)
83
+ * @returns Array of matching stories
84
+ *
85
+ * @example
86
+ * // Stories with BOTH epic-ticketing AND team-backend
87
+ * findStoriesByLabels(sdlcRoot, ['epic-ticketing', 'team-backend'], 'all')
88
+ *
89
+ * // Stories with EITHER epic-ticketing OR epic-auth
90
+ * findStoriesByLabels(sdlcRoot, ['epic-ticketing', 'epic-auth'], 'any')
91
+ */
92
+ export declare function findStoriesByLabels(sdlcRoot: string, labels: string[], mode: 'all' | 'any'): Story[];
93
+ /**
94
+ * Find stories by glob pattern matching on labels.
95
+ * Returns deduplicated stories sorted by priority ascending.
96
+ *
97
+ * @param sdlcRoot - Path to .ai-sdlc folder
98
+ * @param pattern - Glob pattern (e.g., 'epic-*', '*-test', 'team-*-backend')
99
+ * @returns Array of stories with at least one matching label
100
+ *
101
+ * @example
102
+ * findStoriesByPattern(sdlcRoot, 'epic-*') // All stories with epic-* labels
103
+ * findStoriesByPattern(sdlcRoot, '*-test') // All stories with *-test labels
104
+ */
105
+ export declare function findStoriesByPattern(sdlcRoot: string, pattern: string): Story[];
106
+ /**
107
+ * Get all unique labels across all stories.
108
+ * Returns labels sorted alphabetically.
109
+ *
110
+ * @param sdlcRoot - Path to .ai-sdlc folder
111
+ * @returns Sorted array of unique labels
112
+ *
113
+ * @example
114
+ * getUniqueLabels(sdlcRoot) // ['epic-auth', 'epic-ticketing', 'team-backend', ...]
115
+ */
116
+ export declare function getUniqueLabels(sdlcRoot: string): string[];
117
+ /**
118
+ * Get grouping summaries for a specific dimension.
119
+ * Returns groupings sorted by story count descending.
120
+ *
121
+ * @param sdlcRoot - Path to .ai-sdlc folder
122
+ * @param dimension - Grouping dimension ('thematic', 'temporal', 'structural')
123
+ * @returns Array of grouping summaries with story counts and status breakdowns
124
+ *
125
+ * @example
126
+ * getGroupings(sdlcRoot, 'thematic')
127
+ * // [
128
+ * // { id: 'ticketing', label: 'epic-ticketing', dimension: 'thematic',
129
+ * // storyCount: 5, statusBreakdown: { backlog: 2, ready: 1, ... } },
130
+ * // ...
131
+ * // ]
132
+ */
133
+ export declare function getGroupings(sdlcRoot: string, dimension: GroupingDimension): GroupingSummary[];
134
+ /**
135
+ * Find stories belonging to a specific epic.
136
+ * Checks both the epic frontmatter field (primary) and labels (backwards compatibility).
137
+ *
138
+ * @param sdlcRoot - Path to .ai-sdlc folder
139
+ * @param epicId - Epic identifier (without 'epic-' prefix)
140
+ * @returns Array of stories belonging to the specified epic
141
+ *
142
+ * @example
143
+ * findStoriesByEpic(sdlcRoot, 'ticketing-integration')
144
+ * // Returns stories with epic: 'ticketing-integration' or label 'epic-ticketing-integration'
145
+ */
146
+ export declare function findStoriesByEpic(sdlcRoot: string, epicId: string): Story[];
147
+ /**
148
+ * Find stories by sprint label (convenience wrapper).
149
+ * Queries for stories with 'sprint-{sprintId}' label.
150
+ *
151
+ * @param sdlcRoot - Path to .ai-sdlc folder
152
+ * @param sprintId - Sprint identifier (without 'sprint-' prefix)
153
+ * @returns Array of stories with the specified sprint label
154
+ *
155
+ * @example
156
+ * findStoriesBySprint(sdlcRoot, '2024-q1')
157
+ * // Returns stories with label 'sprint-2024-q1'
158
+ */
159
+ export declare function findStoriesBySprint(sdlcRoot: string, sprintId: string): Story[];
160
+ /**
161
+ * Find stories by team label (convenience wrapper).
162
+ * Queries for stories with 'team-{teamId}' label.
163
+ *
164
+ * @param sdlcRoot - Path to .ai-sdlc folder
165
+ * @param teamId - Team identifier (without 'team-' prefix)
166
+ * @returns Array of stories with the specified team label
167
+ *
168
+ * @example
169
+ * findStoriesByTeam(sdlcRoot, 'backend')
170
+ * // Returns stories with label 'team-backend'
171
+ */
172
+ export declare function findStoriesByTeam(sdlcRoot: string, teamId: string): Story[];
49
173
  //# sourceMappingURL=kanban.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"kanban.d.ts","sourceRoot":"","sources":["../../src/core/kanban.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,eAAe,EAA0B,YAAY,EAA+D,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAK3K;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,EAAE,CA6BxD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,KAAK,EAAE,CAalF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,KAAK,EAAE,CAclF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAiC1E;AAKD;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAG5E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAO7D;AAeD;;GAEG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA6M5E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMvD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAItD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAa5E"}
1
+ {"version":3,"file":"kanban.d.ts","sourceRoot":"","sources":["../../src/core/kanban.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,eAAe,EAA0B,YAAY,EAA+D,WAAW,EAAE,iBAAiB,EAAE,eAAe,EAAqB,MAAM,mBAAmB,CAAC;AA+FlO;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,EAAE,CAiCxD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,KAAK,EAAE,CAalF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,KAAK,EAAE,CAclF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,CAiC1E;AAKD;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAG5E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAO7D;AAeD;;GAEG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA6M5E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMvD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAItD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAa5E;AAOD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAsB3E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,CAa3E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,IAAI,EAAE,KAAK,GAAG,KAAK,GAClB,KAAK,EAAE,CA0BT;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,CA+B/E;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAW1D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,eAAe,EAAE,CAoE9F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CAa3E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,EAAE,CAE/E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CAE3E"}
@@ -1,10 +1,90 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
3
  import { glob } from 'glob';
4
- import { KANBAN_FOLDERS, ReviewDecision, STORIES_FOLDER, STORY_FILENAME } from '../types/index.js';
4
+ import { KANBAN_FOLDERS, ReviewDecision, STORIES_FOLDER, STORY_FILENAME, DEFAULT_GROUPINGS } from '../types/index.js';
5
5
  import { parseStory, isAtMaxRetries, canRetryRefinement, getLatestReviewAttempt, moveToBlocked, getEffectiveMaxRetries, sanitizeReasonText } from './story.js';
6
6
  import { loadConfig } from './config.js';
7
7
  import { determineTargetPhase } from '../agents/rework.js';
8
+ import { GitWorktreeService } from './worktree.js';
9
+ /**
10
+ * Load stories from active worktrees.
11
+ * Returns a map of story ID to story object for all stories found in worktrees.
12
+ * Handles missing files, parse errors, and deleted worktrees gracefully with logging.
13
+ *
14
+ * @param sdlcRoot - Path to .ai-sdlc folder
15
+ * @returns Map of story ID to story object from worktrees
16
+ */
17
+ function loadStoriesFromWorktrees(sdlcRoot) {
18
+ const worktreeMap = new Map();
19
+ try {
20
+ // Determine worktree base path and project root
21
+ const projectRoot = path.dirname(sdlcRoot);
22
+ const worktreeBasePath = path.join(sdlcRoot, 'worktrees');
23
+ // Get list of active worktrees
24
+ const worktreeService = new GitWorktreeService(projectRoot, worktreeBasePath);
25
+ const worktrees = worktreeService.list();
26
+ for (const worktree of worktrees) {
27
+ // Skip worktrees that don't exist on filesystem
28
+ if (!worktree.exists) {
29
+ continue;
30
+ }
31
+ // Skip worktrees without a story ID
32
+ if (!worktree.storyId) {
33
+ continue;
34
+ }
35
+ // Construct expected story path in worktree
36
+ // Pattern: {worktreePath}/stories/{storyId}/story.md
37
+ const storyPath = path.join(worktree.path, STORIES_FOLDER, worktree.storyId, STORY_FILENAME);
38
+ // Check if story file exists
39
+ if (!fs.existsSync(storyPath)) {
40
+ console.warn(`Worktree story file missing for ${worktree.storyId}: ${storyPath}`);
41
+ continue;
42
+ }
43
+ try {
44
+ // Parse the story from worktree
45
+ const canonicalPath = fs.realpathSync(storyPath);
46
+ const story = parseStory(canonicalPath);
47
+ worktreeMap.set(worktree.storyId, { ...story, path: canonicalPath });
48
+ }
49
+ catch (err) {
50
+ // Log parse error and continue
51
+ const errorMsg = err instanceof Error ? err.message : 'Unknown error';
52
+ console.error(`Failed to parse worktree story ${worktree.storyId} at ${storyPath}: ${errorMsg}`);
53
+ continue;
54
+ }
55
+ }
56
+ }
57
+ catch (err) {
58
+ // If worktree listing fails, log error but return empty map (graceful fallback)
59
+ const errorMsg = err instanceof Error ? err.message : 'Unknown error';
60
+ console.error(`Failed to load worktree stories: ${errorMsg}`);
61
+ }
62
+ return worktreeMap;
63
+ }
64
+ /**
65
+ * Merge main repository stories with worktree stories.
66
+ * Worktree versions take precedence over main repo versions for the same story ID.
67
+ *
68
+ * @param mainStories - Stories from main repository
69
+ * @param worktreeStories - Map of story ID to story from worktrees
70
+ * @returns Merged array of stories with worktree versions prioritized
71
+ */
72
+ function mergeStories(mainStories, worktreeStories) {
73
+ const merged = [];
74
+ for (const mainStory of mainStories) {
75
+ const storyId = mainStory.frontmatter.id;
76
+ // Check if worktree version exists
77
+ if (worktreeStories.has(storyId)) {
78
+ // Use worktree version (more up-to-date)
79
+ merged.push(worktreeStories.get(storyId));
80
+ }
81
+ else {
82
+ // Use main repo version
83
+ merged.push(mainStory);
84
+ }
85
+ }
86
+ return merged;
87
+ }
8
88
  /**
9
89
  * Find all stories in the stories/ folder structure
10
90
  * Globs stories/*\u200B/story.md and returns all story objects
@@ -15,7 +95,7 @@ export function findAllStories(sdlcRoot) {
15
95
  if (!fs.existsSync(storiesFolder)) {
16
96
  return [];
17
97
  }
18
- const stories = [];
98
+ const mainStories = [];
19
99
  const pattern = path.join(storiesFolder, '*', STORY_FILENAME);
20
100
  try {
21
101
  const storyPaths = glob.sync(pattern);
@@ -23,7 +103,7 @@ export function findAllStories(sdlcRoot) {
23
103
  try {
24
104
  const canonicalPath = fs.realpathSync(storyPath);
25
105
  const story = parseStory(canonicalPath);
26
- stories.push({ ...story, path: canonicalPath });
106
+ mainStories.push({ ...story, path: canonicalPath });
27
107
  }
28
108
  catch (err) {
29
109
  // Skip malformed stories or symlinks that can't be resolved
@@ -35,7 +115,10 @@ export function findAllStories(sdlcRoot) {
35
115
  // If glob fails, return empty array
36
116
  return [];
37
117
  }
38
- return stories;
118
+ // Load stories from active worktrees
119
+ const worktreeStories = loadStoriesFromWorktrees(sdlcRoot);
120
+ // Merge: worktree version takes precedence
121
+ return mergeStories(mainStories, worktreeStories);
39
122
  }
40
123
  /**
41
124
  * Find stories by frontmatter status
@@ -370,4 +453,288 @@ export function getBoardStats(sdlcRoot) {
370
453
  }
371
454
  return stats;
372
455
  }
456
+ /**
457
+ * Maximum allowed pattern length to prevent ReDoS attacks
458
+ */
459
+ const MAX_PATTERN_LENGTH = 100;
460
+ /**
461
+ * Check if a label matches a glob pattern.
462
+ * Supports wildcard (*) for pattern matching with proper regex escaping.
463
+ *
464
+ * @param label - The label to test
465
+ * @param pattern - The glob pattern (e.g., 'epic-*', '*-test')
466
+ * @returns true if label matches pattern
467
+ * @throws Error if pattern exceeds maximum length
468
+ *
469
+ * @example
470
+ * labelMatchesPattern('epic-ticketing', 'epic-*') // true
471
+ * labelMatchesPattern('sprint-2024-q1', 'epic-*') // false
472
+ * labelMatchesPattern('test.label', 'test.label') // true (special chars escaped)
473
+ */
474
+ export function labelMatchesPattern(label, pattern) {
475
+ // Security: Prevent ReDoS by limiting pattern length
476
+ if (pattern.length > MAX_PATTERN_LENGTH) {
477
+ throw new Error(`Pattern exceeds maximum length of ${MAX_PATTERN_LENGTH} characters`);
478
+ }
479
+ // Handle empty pattern edge case
480
+ if (pattern === '') {
481
+ return label === '';
482
+ }
483
+ // Escape special regex characters except *
484
+ // Characters that need escaping: . + ? ^ $ { } ( ) | [ ] \
485
+ const escapedPattern = pattern.replace(/[.+?^${}()|[\]\\]/g, '\\$&');
486
+ // Convert glob wildcard (*) to regex (.*)
487
+ const regexPattern = escapedPattern.replace(/\*/g, '.*');
488
+ // Create anchored regex (exact match from start to end)
489
+ const regex = new RegExp(`^${regexPattern}$`);
490
+ return regex.test(label);
491
+ }
492
+ /**
493
+ * Find stories by exact label match.
494
+ * Returns stories sorted by priority ascending.
495
+ *
496
+ * @param sdlcRoot - Path to .ai-sdlc folder
497
+ * @param label - Exact label to match
498
+ * @returns Array of stories with the specified label
499
+ *
500
+ * @example
501
+ * findStoriesByLabel(sdlcRoot, 'epic-ticketing')
502
+ */
503
+ export function findStoriesByLabel(sdlcRoot, label) {
504
+ const allStories = findAllStories(sdlcRoot);
505
+ return allStories
506
+ .filter(story => story.frontmatter.labels.includes(label))
507
+ .sort((a, b) => {
508
+ // Sort by priority ascending
509
+ if (a.frontmatter.priority !== b.frontmatter.priority) {
510
+ return a.frontmatter.priority - b.frontmatter.priority;
511
+ }
512
+ // Tiebreaker: sort by creation date
513
+ return a.frontmatter.created.localeCompare(b.frontmatter.created);
514
+ });
515
+ }
516
+ /**
517
+ * Find stories by multiple labels with AND/OR logic.
518
+ * Returns stories sorted by priority ascending.
519
+ *
520
+ * @param sdlcRoot - Path to .ai-sdlc folder
521
+ * @param labels - Array of labels to match
522
+ * @param mode - 'all' requires all labels (AND), 'any' requires at least one (OR)
523
+ * @returns Array of matching stories
524
+ *
525
+ * @example
526
+ * // Stories with BOTH epic-ticketing AND team-backend
527
+ * findStoriesByLabels(sdlcRoot, ['epic-ticketing', 'team-backend'], 'all')
528
+ *
529
+ * // Stories with EITHER epic-ticketing OR epic-auth
530
+ * findStoriesByLabels(sdlcRoot, ['epic-ticketing', 'epic-auth'], 'any')
531
+ */
532
+ export function findStoriesByLabels(sdlcRoot, labels, mode) {
533
+ // Return empty array for empty labels input
534
+ if (labels.length === 0) {
535
+ return [];
536
+ }
537
+ const allStories = findAllStories(sdlcRoot);
538
+ const filtered = allStories.filter(story => {
539
+ if (mode === 'all') {
540
+ // All labels must be present (AND logic)
541
+ return labels.every(label => story.frontmatter.labels.includes(label));
542
+ }
543
+ else {
544
+ // At least one label must be present (OR logic)
545
+ return labels.some(label => story.frontmatter.labels.includes(label));
546
+ }
547
+ });
548
+ return filtered.sort((a, b) => {
549
+ // Sort by priority ascending
550
+ if (a.frontmatter.priority !== b.frontmatter.priority) {
551
+ return a.frontmatter.priority - b.frontmatter.priority;
552
+ }
553
+ // Tiebreaker: sort by creation date
554
+ return a.frontmatter.created.localeCompare(b.frontmatter.created);
555
+ });
556
+ }
557
+ /**
558
+ * Find stories by glob pattern matching on labels.
559
+ * Returns deduplicated stories sorted by priority ascending.
560
+ *
561
+ * @param sdlcRoot - Path to .ai-sdlc folder
562
+ * @param pattern - Glob pattern (e.g., 'epic-*', '*-test', 'team-*-backend')
563
+ * @returns Array of stories with at least one matching label
564
+ *
565
+ * @example
566
+ * findStoriesByPattern(sdlcRoot, 'epic-*') // All stories with epic-* labels
567
+ * findStoriesByPattern(sdlcRoot, '*-test') // All stories with *-test labels
568
+ */
569
+ export function findStoriesByPattern(sdlcRoot, pattern) {
570
+ // Return empty array for empty pattern
571
+ if (pattern === '') {
572
+ return [];
573
+ }
574
+ const allStories = findAllStories(sdlcRoot);
575
+ const filtered = allStories.filter(story => {
576
+ // Check if any label matches the pattern
577
+ return story.frontmatter.labels.some(label => labelMatchesPattern(label, pattern));
578
+ });
579
+ // Deduplicate by story ID (in case multiple labels match)
580
+ const seen = new Set();
581
+ const deduplicated = filtered.filter(story => {
582
+ if (seen.has(story.frontmatter.id)) {
583
+ return false;
584
+ }
585
+ seen.add(story.frontmatter.id);
586
+ return true;
587
+ });
588
+ return deduplicated.sort((a, b) => {
589
+ // Sort by priority ascending
590
+ if (a.frontmatter.priority !== b.frontmatter.priority) {
591
+ return a.frontmatter.priority - b.frontmatter.priority;
592
+ }
593
+ // Tiebreaker: sort by creation date
594
+ return a.frontmatter.created.localeCompare(b.frontmatter.created);
595
+ });
596
+ }
597
+ /**
598
+ * Get all unique labels across all stories.
599
+ * Returns labels sorted alphabetically.
600
+ *
601
+ * @param sdlcRoot - Path to .ai-sdlc folder
602
+ * @returns Sorted array of unique labels
603
+ *
604
+ * @example
605
+ * getUniqueLabels(sdlcRoot) // ['epic-auth', 'epic-ticketing', 'team-backend', ...]
606
+ */
607
+ export function getUniqueLabels(sdlcRoot) {
608
+ const allStories = findAllStories(sdlcRoot);
609
+ const labelsSet = new Set();
610
+ for (const story of allStories) {
611
+ for (const label of story.frontmatter.labels) {
612
+ labelsSet.add(label);
613
+ }
614
+ }
615
+ return Array.from(labelsSet).sort();
616
+ }
617
+ /**
618
+ * Get grouping summaries for a specific dimension.
619
+ * Returns groupings sorted by story count descending.
620
+ *
621
+ * @param sdlcRoot - Path to .ai-sdlc folder
622
+ * @param dimension - Grouping dimension ('thematic', 'temporal', 'structural')
623
+ * @returns Array of grouping summaries with story counts and status breakdowns
624
+ *
625
+ * @example
626
+ * getGroupings(sdlcRoot, 'thematic')
627
+ * // [
628
+ * // { id: 'ticketing', label: 'epic-ticketing', dimension: 'thematic',
629
+ * // storyCount: 5, statusBreakdown: { backlog: 2, ready: 1, ... } },
630
+ * // ...
631
+ * // ]
632
+ */
633
+ export function getGroupings(sdlcRoot, dimension) {
634
+ // Find the default configuration for this dimension
635
+ const config = DEFAULT_GROUPINGS.find(g => g.dimension === dimension);
636
+ if (!config) {
637
+ return [];
638
+ }
639
+ const allStories = findAllStories(sdlcRoot);
640
+ const prefix = config.prefix;
641
+ // Collect all labels matching this dimension's prefix
642
+ const groupingMap = new Map();
643
+ for (const story of allStories) {
644
+ const matchingLabels = story.frontmatter.labels.filter(label => label.startsWith(prefix));
645
+ // Check for cardinality violations (multiple labels when cardinality is 'single')
646
+ if (config.cardinality === 'single' && matchingLabels.length > 1) {
647
+ console.warn(`Story ${story.frontmatter.id} has multiple ${dimension} labels (${matchingLabels.join(', ')}) ` +
648
+ `but cardinality is 'single'. Consider using only one ${prefix}* label per story.`);
649
+ }
650
+ for (const label of matchingLabels) {
651
+ if (!groupingMap.has(label)) {
652
+ groupingMap.set(label, {
653
+ label,
654
+ stories: [],
655
+ });
656
+ }
657
+ groupingMap.get(label).stories.push(story);
658
+ }
659
+ }
660
+ // Convert to GroupingSummary array
661
+ const summaries = [];
662
+ for (const [label, data] of groupingMap.entries()) {
663
+ // Extract ID by removing prefix
664
+ const id = label.substring(prefix.length);
665
+ // Calculate status breakdown
666
+ const statusBreakdown = {
667
+ backlog: 0,
668
+ ready: 0,
669
+ 'in-progress': 0,
670
+ done: 0,
671
+ blocked: 0,
672
+ };
673
+ for (const story of data.stories) {
674
+ statusBreakdown[story.frontmatter.status]++;
675
+ }
676
+ summaries.push({
677
+ id,
678
+ label,
679
+ dimension,
680
+ storyCount: data.stories.length,
681
+ statusBreakdown,
682
+ });
683
+ }
684
+ // Sort by story count descending
685
+ return summaries.sort((a, b) => b.storyCount - a.storyCount);
686
+ }
687
+ /**
688
+ * Find stories belonging to a specific epic.
689
+ * Checks both the epic frontmatter field (primary) and labels (backwards compatibility).
690
+ *
691
+ * @param sdlcRoot - Path to .ai-sdlc folder
692
+ * @param epicId - Epic identifier (without 'epic-' prefix)
693
+ * @returns Array of stories belonging to the specified epic
694
+ *
695
+ * @example
696
+ * findStoriesByEpic(sdlcRoot, 'ticketing-integration')
697
+ * // Returns stories with epic: 'ticketing-integration' or label 'epic-ticketing-integration'
698
+ */
699
+ export function findStoriesByEpic(sdlcRoot, epicId) {
700
+ const allStories = findAllStories(sdlcRoot);
701
+ return allStories.filter(story => {
702
+ // Check epic frontmatter field (primary)
703
+ if (story.frontmatter.epic === epicId || story.frontmatter.epic === `epic-${epicId}`) {
704
+ return true;
705
+ }
706
+ // Check labels for backwards compatibility
707
+ return story.frontmatter.labels.some(label => labelMatchesPattern(label, `epic-${epicId}`));
708
+ });
709
+ }
710
+ /**
711
+ * Find stories by sprint label (convenience wrapper).
712
+ * Queries for stories with 'sprint-{sprintId}' label.
713
+ *
714
+ * @param sdlcRoot - Path to .ai-sdlc folder
715
+ * @param sprintId - Sprint identifier (without 'sprint-' prefix)
716
+ * @returns Array of stories with the specified sprint label
717
+ *
718
+ * @example
719
+ * findStoriesBySprint(sdlcRoot, '2024-q1')
720
+ * // Returns stories with label 'sprint-2024-q1'
721
+ */
722
+ export function findStoriesBySprint(sdlcRoot, sprintId) {
723
+ return findStoriesByPattern(sdlcRoot, `sprint-${sprintId}`);
724
+ }
725
+ /**
726
+ * Find stories by team label (convenience wrapper).
727
+ * Queries for stories with 'team-{teamId}' label.
728
+ *
729
+ * @param sdlcRoot - Path to .ai-sdlc folder
730
+ * @param teamId - Team identifier (without 'team-' prefix)
731
+ * @returns Array of stories with the specified team label
732
+ *
733
+ * @example
734
+ * findStoriesByTeam(sdlcRoot, 'backend')
735
+ * // Returns stories with label 'team-backend'
736
+ */
737
+ export function findStoriesByTeam(sdlcRoot, teamId) {
738
+ return findStoriesByPattern(sdlcRoot, `team-${teamId}`);
739
+ }
373
740
  //# sourceMappingURL=kanban.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"kanban.js","sourceRoot":"","sources":["../../src/core/kanban.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kanban.js","sourceRoot":"","sources":["../../src/core/kanban.ts"],"names":[],"mappings":"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"}