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.
- package/README.md +78 -6
- package/dist/agents/implementation.d.ts +5 -0
- package/dist/agents/implementation.d.ts.map +1 -1
- package/dist/agents/implementation.js +78 -9
- package/dist/agents/implementation.js.map +1 -1
- package/dist/agents/planning.d.ts.map +1 -1
- package/dist/agents/planning.js +10 -3
- package/dist/agents/planning.js.map +1 -1
- package/dist/agents/research.d.ts.map +1 -1
- package/dist/agents/research.js +14 -6
- package/dist/agents/research.js.map +1 -1
- package/dist/agents/review.d.ts +81 -0
- package/dist/agents/review.d.ts.map +1 -1
- package/dist/agents/review.js +405 -39
- package/dist/agents/review.js.map +1 -1
- package/dist/agents/single-task.d.ts +1 -1
- package/dist/agents/single-task.d.ts.map +1 -1
- package/dist/agents/single-task.js +1 -1
- package/dist/cli/batch-processor.d.ts +64 -0
- package/dist/cli/batch-processor.d.ts.map +1 -0
- package/dist/cli/batch-processor.js +85 -0
- package/dist/cli/batch-processor.js.map +1 -0
- package/dist/cli/batch-validator.d.ts +80 -0
- package/dist/cli/batch-validator.d.ts.map +1 -0
- package/dist/cli/batch-validator.js +121 -0
- package/dist/cli/batch-validator.js.map +1 -0
- package/dist/cli/commands.d.ts +7 -0
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +285 -1
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/dependency-resolver.d.ts +49 -0
- package/dist/cli/dependency-resolver.d.ts.map +1 -0
- package/dist/cli/dependency-resolver.js +133 -0
- package/dist/cli/dependency-resolver.js.map +1 -0
- package/dist/cli/epic-processor.d.ts +16 -0
- package/dist/cli/epic-processor.d.ts.map +1 -0
- package/dist/cli/epic-processor.js +489 -0
- package/dist/cli/epic-processor.js.map +1 -0
- package/dist/cli/formatting.d.ts +15 -0
- package/dist/cli/formatting.d.ts.map +1 -1
- package/dist/cli/formatting.js +19 -0
- package/dist/cli/formatting.js.map +1 -1
- package/dist/cli/progress-dashboard.d.ts +58 -0
- package/dist/cli/progress-dashboard.d.ts.map +1 -0
- package/dist/cli/progress-dashboard.js +216 -0
- package/dist/cli/progress-dashboard.js.map +1 -0
- package/dist/cli/table-renderer.d.ts.map +1 -1
- package/dist/cli/table-renderer.js +5 -1
- package/dist/cli/table-renderer.js.map +1 -1
- package/dist/core/agent-executor.d.ts +13 -0
- package/dist/core/agent-executor.d.ts.map +1 -0
- package/dist/core/agent-executor.js +153 -0
- package/dist/core/agent-executor.js.map +1 -0
- package/dist/core/config.d.ts +16 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +113 -0
- 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 -1
- package/dist/core/git-utils.js +58 -0
- package/dist/core/git-utils.js.map +1 -1
- package/dist/core/kanban.d.ts +125 -1
- package/dist/core/kanban.d.ts.map +1 -1
- package/dist/core/kanban.js +371 -4
- package/dist/core/kanban.js.map +1 -1
- package/dist/core/orchestrator.d.ts +63 -0
- package/dist/core/orchestrator.d.ts.map +1 -0
- package/dist/core/orchestrator.js +320 -0
- package/dist/core/orchestrator.js.map +1 -0
- package/dist/core/story.d.ts +84 -0
- package/dist/core/story.d.ts.map +1 -1
- package/dist/core/story.js +159 -14
- package/dist/core/story.js.map +1 -1
- package/dist/core/worktree.d.ts +7 -0
- package/dist/core/worktree.d.ts.map +1 -1
- package/dist/core/worktree.js +44 -0
- package/dist/core/worktree.js.map +1 -1
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +252 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +23 -0
- package/dist/types/index.js.map +1 -1
- package/package.json +1 -1
package/dist/core/kanban.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/core/kanban.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
package/dist/core/kanban.js.map
CHANGED
|
@@ -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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"}
|