@ginkoai/cli 1.4.13 → 1.6.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 (72) hide show
  1. package/dist/commands/graph/api-client.d.ts +16 -1
  2. package/dist/commands/graph/api-client.d.ts.map +1 -1
  3. package/dist/commands/graph/api-client.js +79 -4
  4. package/dist/commands/graph/api-client.js.map +1 -1
  5. package/dist/commands/graph/health.d.ts +22 -0
  6. package/dist/commands/graph/health.d.ts.map +1 -0
  7. package/dist/commands/graph/health.js +37 -0
  8. package/dist/commands/graph/health.js.map +1 -0
  9. package/dist/commands/graph/index.d.ts.map +1 -1
  10. package/dist/commands/graph/index.js +8 -0
  11. package/dist/commands/graph/index.js.map +1 -1
  12. package/dist/commands/handoff.d.ts +7 -1
  13. package/dist/commands/handoff.d.ts.map +1 -1
  14. package/dist/commands/handoff.js +8 -0
  15. package/dist/commands/handoff.js.map +1 -1
  16. package/dist/commands/log.d.ts +5 -4
  17. package/dist/commands/log.d.ts.map +1 -1
  18. package/dist/commands/log.js +197 -216
  19. package/dist/commands/log.js.map +1 -1
  20. package/dist/commands/start/start-reflection.d.ts +22 -0
  21. package/dist/commands/start/start-reflection.d.ts.map +1 -1
  22. package/dist/commands/start/start-reflection.js +249 -30
  23. package/dist/commands/start/start-reflection.js.map +1 -1
  24. package/dist/index.js +7 -6
  25. package/dist/index.js.map +1 -1
  26. package/dist/lib/charter-loader.d.ts +74 -0
  27. package/dist/lib/charter-loader.d.ts.map +1 -0
  28. package/dist/lib/charter-loader.js +328 -0
  29. package/dist/lib/charter-loader.js.map +1 -0
  30. package/dist/lib/context-loader-events.d.ts +49 -0
  31. package/dist/lib/context-loader-events.d.ts.map +1 -1
  32. package/dist/lib/context-loader-events.js +280 -34
  33. package/dist/lib/context-loader-events.js.map +1 -1
  34. package/dist/lib/event-logger.d.ts +8 -5
  35. package/dist/lib/event-logger.d.ts.map +1 -1
  36. package/dist/lib/event-logger.js +54 -14
  37. package/dist/lib/event-logger.js.map +1 -1
  38. package/dist/lib/event-task-linker.d.ts +81 -0
  39. package/dist/lib/event-task-linker.d.ts.map +1 -0
  40. package/dist/lib/event-task-linker.js +132 -0
  41. package/dist/lib/event-task-linker.js.map +1 -0
  42. package/dist/lib/output-formatter.d.ts +172 -0
  43. package/dist/lib/output-formatter.d.ts.map +1 -0
  44. package/dist/lib/output-formatter.js +219 -0
  45. package/dist/lib/output-formatter.js.map +1 -0
  46. package/dist/lib/session-cursor.d.ts +12 -5
  47. package/dist/lib/session-cursor.d.ts.map +1 -1
  48. package/dist/lib/session-cursor.js +12 -5
  49. package/dist/lib/session-cursor.js.map +1 -1
  50. package/dist/lib/sprint-loader.d.ts +91 -0
  51. package/dist/lib/sprint-loader.d.ts.map +1 -0
  52. package/dist/lib/sprint-loader.js +296 -0
  53. package/dist/lib/sprint-loader.js.map +1 -0
  54. package/dist/lib/sprint-parser.d.ts +79 -0
  55. package/dist/lib/sprint-parser.d.ts.map +1 -0
  56. package/dist/lib/sprint-parser.js +346 -0
  57. package/dist/lib/sprint-parser.js.map +1 -0
  58. package/dist/lib/write-dispatcher/adapters/local-adapter.d.ts.map +1 -1
  59. package/dist/lib/write-dispatcher/adapters/local-adapter.js +8 -2
  60. package/dist/lib/write-dispatcher/adapters/local-adapter.js.map +1 -1
  61. package/dist/utils/command-helpers.d.ts +76 -0
  62. package/dist/utils/command-helpers.d.ts.map +1 -0
  63. package/dist/utils/command-helpers.js +314 -0
  64. package/dist/utils/command-helpers.js.map +1 -0
  65. package/dist/utils/graph-health-monitor.d.ts +75 -0
  66. package/dist/utils/graph-health-monitor.d.ts.map +1 -0
  67. package/dist/utils/graph-health-monitor.js +108 -0
  68. package/dist/utils/graph-health-monitor.js.map +1 -0
  69. package/dist/utils/synthesis.d.ts.map +1 -1
  70. package/dist/utils/synthesis.js +17 -9
  71. package/dist/utils/synthesis.js.map +1 -1
  72. package/package.json +1 -1
@@ -1,12 +1,19 @@
1
1
  /**
2
2
  * @fileType: utility
3
- * @status: current
4
- * @updated: 2025-11-04
5
- * @tags: [session, cursor, event-stream, adr-043, multi-context]
6
- * @related: [commands/start/index.ts, utils/helpers.ts, lib/write-dispatcher/write-dispatcher.ts]
7
- * @priority: critical
3
+ * @status: deprecated
4
+ * @updated: 2025-11-19
5
+ * @tags: [session, cursor, event-stream, adr-043, multi-context, deprecated]
6
+ * @related: [commands/start/index.ts, utils/helpers.ts, lib/write-dispatcher/write-dispatcher.ts, context-loader-events.ts]
7
+ * @priority: low
8
8
  * @complexity: medium
9
9
  * @dependencies: [fs-extra, simple-git]
10
+ *
11
+ * @deprecated TASK-011: Cursors are over-engineered for our use case.
12
+ * We only need "last N events" queries, not stateful cursor tracking.
13
+ * Use loadRecentEvents() from context-loader-events.ts instead.
14
+ *
15
+ * Kept for backward compatibility during transition period.
16
+ * Will be removed in a future version after cloud-first refactor is complete.
10
17
  */
11
18
  import fs from 'fs-extra';
12
19
  import path from 'path';
@@ -1 +1 @@
1
- {"version":3,"file":"session-cursor.js","sourceRoot":"","sources":["../../src/lib/session-cursor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-cursor.js","sourceRoot":"","sources":["../../src/lib/session-cursor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2025-11-21
5
+ * @tags: [sprint, task-checklist, epic-001, session-context]
6
+ * @related: [charter-loader.ts, start-reflection.ts, context-loader-events.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: [fs-extra, path]
10
+ */
11
+ /**
12
+ * Task state enumeration
13
+ */
14
+ export type TaskState = 'todo' | 'in_progress' | 'complete';
15
+ /**
16
+ * Individual task from sprint checklist
17
+ */
18
+ export interface Task {
19
+ id: string;
20
+ title: string;
21
+ state: TaskState;
22
+ files?: string[];
23
+ pattern?: string;
24
+ effort?: string;
25
+ priority?: string;
26
+ }
27
+ /**
28
+ * Sprint checklist with task states and progress
29
+ */
30
+ export interface SprintChecklist {
31
+ name: string;
32
+ file: string;
33
+ progress: {
34
+ complete: number;
35
+ inProgress: number;
36
+ todo: number;
37
+ total: number;
38
+ };
39
+ tasks: Task[];
40
+ currentTask?: Task;
41
+ recentCompletions: Task[];
42
+ }
43
+ /**
44
+ * Find active sprint file
45
+ *
46
+ * Looks for most recent SPRINT-*.md file in docs/sprints/
47
+ * that is not marked as "Complete" in its status
48
+ *
49
+ * @param projectRoot - Project root directory
50
+ * @returns Path to active sprint file or null
51
+ */
52
+ export declare function findActiveSprint(projectRoot?: string): Promise<string | null>;
53
+ /**
54
+ * Parse sprint markdown into task checklist
55
+ *
56
+ * Looks for:
57
+ * - Sprint name from title (# SPRINT: ...)
58
+ * - Tasks from ## Sprint Tasks or ### TASK-N sections
59
+ * - Checkbox states: [ ], [@], [x]
60
+ * - Task metadata (files, priority, effort)
61
+ *
62
+ * @param markdown - Sprint markdown content
63
+ * @param filePath - Path to sprint file
64
+ * @returns Parsed sprint checklist
65
+ */
66
+ export declare function parseSprintChecklist(markdown: string, filePath: string): SprintChecklist;
67
+ /**
68
+ * Load active sprint checklist
69
+ *
70
+ * Finds active sprint file and parses into structured checklist
71
+ *
72
+ * @param projectRoot - Project root directory (defaults to git root)
73
+ * @returns Parsed sprint checklist or null if no sprint found
74
+ */
75
+ export declare function loadSprintChecklist(projectRoot?: string): Promise<SprintChecklist | null>;
76
+ /**
77
+ * Format sprint checklist for display in ginko start
78
+ *
79
+ * @param checklist - Parsed sprint checklist
80
+ * @param maxTasks - Maximum tasks to display before truncating
81
+ * @returns Formatted string for terminal display
82
+ */
83
+ export declare function formatSprintChecklist(checklist: SprintChecklist, maxTasks?: number): string;
84
+ /**
85
+ * Format current task details for display
86
+ *
87
+ * @param task - Current task
88
+ * @returns Formatted task details
89
+ */
90
+ export declare function formatCurrentTaskDetails(task: Task): string;
91
+ //# sourceMappingURL=sprint-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprint-loader.d.ts","sourceRoot":"","sources":["../../src/lib/sprint-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAmBH;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,aAAa,GAAG,UAAU,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QACR,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,iBAAiB,EAAE,IAAI,EAAE,CAAC;CAC3B;AAiBD;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA8CnF;AAeD;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,CA8FxF;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAe/F;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,eAAe,EAAE,QAAQ,GAAE,MAAU,GAAG,MAAM,CAqD9F;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAyB3D"}
@@ -0,0 +1,296 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2025-11-21
5
+ * @tags: [sprint, task-checklist, epic-001, session-context]
6
+ * @related: [charter-loader.ts, start-reflection.ts, context-loader-events.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: [fs-extra, path]
10
+ */
11
+ /**
12
+ * Sprint Loader (EPIC-001 TASK-5)
13
+ *
14
+ * Loads active sprint from filesystem (docs/sprints/SPRINT-*.md)
15
+ * and parses into task checklist with [@] symbol support.
16
+ *
17
+ * Provides AI partners with:
18
+ * - Clear task progress ([ ] / [@] / [x] states)
19
+ * - Current task identification (first [@] or [ ])
20
+ * - Progress visibility (N/M complete, X in progress)
21
+ * - Eliminates task priority ambiguity
22
+ */
23
+ import fs from 'fs-extra';
24
+ import path from 'path';
25
+ import { execSync } from 'child_process';
26
+ /**
27
+ * Find git root directory
28
+ */
29
+ async function findGitRoot() {
30
+ try {
31
+ const root = execSync('git rev-parse --show-toplevel', {
32
+ encoding: 'utf-8',
33
+ stdio: ['pipe', 'pipe', 'ignore']
34
+ }).trim();
35
+ return root;
36
+ }
37
+ catch {
38
+ return process.cwd();
39
+ }
40
+ }
41
+ /**
42
+ * Find active sprint file
43
+ *
44
+ * Looks for most recent SPRINT-*.md file in docs/sprints/
45
+ * that is not marked as "Complete" in its status
46
+ *
47
+ * @param projectRoot - Project root directory
48
+ * @returns Path to active sprint file or null
49
+ */
50
+ export async function findActiveSprint(projectRoot) {
51
+ try {
52
+ const root = projectRoot || await findGitRoot();
53
+ const sprintsDir = path.join(root, 'docs', 'sprints');
54
+ if (!fs.existsSync(sprintsDir)) {
55
+ return null;
56
+ }
57
+ // Get all sprint files sorted by date (newest first)
58
+ const sprintFiles = (await fs.readdir(sprintsDir))
59
+ .filter(f => f.startsWith('SPRINT-') && f.endsWith('.md'))
60
+ .sort()
61
+ .reverse();
62
+ // Find first sprint that's not complete
63
+ for (const file of sprintFiles) {
64
+ const filePath = path.join(sprintsDir, file);
65
+ const content = await fs.readFile(filePath, 'utf-8');
66
+ // Check if sprint is marked complete
67
+ const statusMatch = content.match(/\*\*Sprint Status\*\*:\s*(.+)/);
68
+ const progressMatch = content.match(/\*\*Progress\*\*:\s*(\d+)%/);
69
+ // Skip if explicitly marked complete or 100% progress
70
+ if (statusMatch && statusMatch[1].toLowerCase().includes('complete') &&
71
+ !statusMatch[1].includes('[@]')) {
72
+ continue;
73
+ }
74
+ if (progressMatch && parseInt(progressMatch[1]) === 100) {
75
+ continue;
76
+ }
77
+ return filePath;
78
+ }
79
+ // If no active sprint found, return most recent
80
+ return sprintFiles.length > 0
81
+ ? path.join(sprintsDir, sprintFiles[0])
82
+ : null;
83
+ }
84
+ catch (error) {
85
+ console.error('Failed to find active sprint:', error.message);
86
+ return null;
87
+ }
88
+ }
89
+ /**
90
+ * Parse task state from checkbox symbol
91
+ *
92
+ * @param symbol - Checkbox content: ' ', '@', or 'x'
93
+ * @returns Task state enum
94
+ */
95
+ function parseTaskState(symbol) {
96
+ const trimmed = symbol.trim();
97
+ if (trimmed === 'x' || trimmed === 'X')
98
+ return 'complete';
99
+ if (trimmed === '@')
100
+ return 'in_progress';
101
+ return 'todo';
102
+ }
103
+ /**
104
+ * Parse sprint markdown into task checklist
105
+ *
106
+ * Looks for:
107
+ * - Sprint name from title (# SPRINT: ...)
108
+ * - Tasks from ## Sprint Tasks or ### TASK-N sections
109
+ * - Checkbox states: [ ], [@], [x]
110
+ * - Task metadata (files, priority, effort)
111
+ *
112
+ * @param markdown - Sprint markdown content
113
+ * @param filePath - Path to sprint file
114
+ * @returns Parsed sprint checklist
115
+ */
116
+ export function parseSprintChecklist(markdown, filePath) {
117
+ const lines = markdown.split('\n');
118
+ const tasks = [];
119
+ // Extract sprint name from title
120
+ const titleMatch = markdown.match(/^#\s+SPRINT:\s*(.+?)$/m);
121
+ const sprintName = titleMatch ? titleMatch[1].trim() : path.basename(filePath, '.md');
122
+ let parsingTask = null;
123
+ for (let i = 0; i < lines.length; i++) {
124
+ const line = lines[i];
125
+ // Match task headers: ### TASK-N: Title
126
+ const taskHeaderMatch = line.match(/^###\s+(TASK-\d+):\s*(.+?)(?:\s*\((.+?)\))?$/);
127
+ if (taskHeaderMatch) {
128
+ // Save previous task if exists
129
+ if (parsingTask?.id && parsingTask?.title) {
130
+ tasks.push(parsingTask);
131
+ }
132
+ // Start new task
133
+ parsingTask = {
134
+ id: taskHeaderMatch[1],
135
+ title: taskHeaderMatch[2].trim(),
136
+ effort: taskHeaderMatch[3]?.trim(),
137
+ state: 'todo', // Default, will update from Status line
138
+ files: [],
139
+ };
140
+ continue;
141
+ }
142
+ // Match task status: **Status:** [@] In Progress
143
+ const statusMatch = line.match(/\*\*Status:\*\*\s*\[([x@\s])\]\s*(.+)/i);
144
+ if (statusMatch && parsingTask) {
145
+ parsingTask.state = parseTaskState(statusMatch[1]);
146
+ continue;
147
+ }
148
+ // Match task priority: **Priority:** HIGH
149
+ const priorityMatch = line.match(/\*\*Priority:\*\*\s*(.+)/i);
150
+ if (priorityMatch && parsingTask) {
151
+ parsingTask.priority = priorityMatch[1].trim();
152
+ continue;
153
+ }
154
+ // Match files section
155
+ if (line.match(/^\*\*Files:\*\*/) && parsingTask) {
156
+ // Look ahead for file list
157
+ let j = i + 1;
158
+ while (j < lines.length && lines[j].match(/^-\s+(Create|Modify):/)) {
159
+ const fileMatch = lines[j].match(/^-\s+(?:Create|Modify):\s+`([^`]+)`/);
160
+ if (fileMatch) {
161
+ parsingTask.files = parsingTask.files || [];
162
+ parsingTask.files.push(fileMatch[1]);
163
+ }
164
+ j++;
165
+ }
166
+ continue;
167
+ }
168
+ }
169
+ // Save last task
170
+ if (parsingTask?.id && parsingTask?.title) {
171
+ tasks.push(parsingTask);
172
+ }
173
+ // Calculate progress
174
+ const complete = tasks.filter(t => t.state === 'complete').length;
175
+ const inProgress = tasks.filter(t => t.state === 'in_progress').length;
176
+ const todo = tasks.filter(t => t.state === 'todo').length;
177
+ // Find current task: first [@], or first [ ] if no [@] exists
178
+ const firstInProgress = tasks.find(t => t.state === 'in_progress');
179
+ const firstTodo = tasks.find(t => t.state === 'todo');
180
+ const currentTask = firstInProgress || firstTodo;
181
+ // Recent completions: last 3 completed tasks
182
+ const completedTasks = tasks.filter(t => t.state === 'complete');
183
+ const recentCompletions = completedTasks.slice(-3).reverse();
184
+ return {
185
+ name: sprintName,
186
+ file: filePath,
187
+ progress: {
188
+ complete,
189
+ inProgress,
190
+ todo,
191
+ total: tasks.length,
192
+ },
193
+ tasks,
194
+ currentTask,
195
+ recentCompletions,
196
+ };
197
+ }
198
+ /**
199
+ * Load active sprint checklist
200
+ *
201
+ * Finds active sprint file and parses into structured checklist
202
+ *
203
+ * @param projectRoot - Project root directory (defaults to git root)
204
+ * @returns Parsed sprint checklist or null if no sprint found
205
+ */
206
+ export async function loadSprintChecklist(projectRoot) {
207
+ try {
208
+ const sprintFile = await findActiveSprint(projectRoot);
209
+ if (!sprintFile) {
210
+ return null;
211
+ }
212
+ const content = await fs.readFile(sprintFile, 'utf-8');
213
+ return parseSprintChecklist(content, sprintFile);
214
+ }
215
+ catch (error) {
216
+ console.error('Failed to load sprint checklist:', error.message);
217
+ return null;
218
+ }
219
+ }
220
+ /**
221
+ * Format sprint checklist for display in ginko start
222
+ *
223
+ * @param checklist - Parsed sprint checklist
224
+ * @param maxTasks - Maximum tasks to display before truncating
225
+ * @returns Formatted string for terminal display
226
+ */
227
+ export function formatSprintChecklist(checklist, maxTasks = 7) {
228
+ const { name, progress, tasks, currentTask } = checklist;
229
+ let output = '';
230
+ // Header with progress
231
+ output += `📋 Active Sprint: ${name}\n`;
232
+ const progressPercent = progress.total > 0
233
+ ? Math.round((progress.complete / progress.total) * 100)
234
+ : 0;
235
+ let progressLine = `Progress: ${progress.complete}/${progress.total} complete`;
236
+ if (progress.inProgress > 0) {
237
+ progressLine += `, ${progress.inProgress} in progress`;
238
+ }
239
+ progressLine += ` (${progressPercent}%)`;
240
+ output += progressLine + '\n\n';
241
+ // Sprint complete celebration
242
+ if (progress.complete === progress.total && progress.total > 0) {
243
+ output += '🎉 Sprint Complete! All tasks done.\n';
244
+ return output;
245
+ }
246
+ // Task list
247
+ output += 'Tasks:\n';
248
+ const displayTasks = tasks.slice(0, maxTasks);
249
+ for (const task of displayTasks) {
250
+ const symbol = task.state === 'complete' ? '[x]' :
251
+ task.state === 'in_progress' ? '[@]' : '[ ]';
252
+ const marker = currentTask && task.id === currentTask.id ? ' ← RESUME HERE' : '';
253
+ output += ` ${symbol} ${task.id}: ${task.title}${marker}\n`;
254
+ }
255
+ // Truncation indicator
256
+ if (tasks.length > maxTasks) {
257
+ const remaining = tasks.length - maxTasks;
258
+ output += ` ... (${remaining} more tasks)\n`;
259
+ }
260
+ // Multiple in-progress warning
261
+ if (progress.inProgress > 1) {
262
+ const inProgressTasks = tasks.filter(t => t.state === 'in_progress');
263
+ output += `\n⚠️ Multiple tasks in progress (${progress.inProgress})\n`;
264
+ output += `Primary: ${inProgressTasks[0].id}\n`;
265
+ output += `Also active: ${inProgressTasks.slice(1).map(t => t.id).join(', ')}\n`;
266
+ }
267
+ return output;
268
+ }
269
+ /**
270
+ * Format current task details for display
271
+ *
272
+ * @param task - Current task
273
+ * @returns Formatted task details
274
+ */
275
+ export function formatCurrentTaskDetails(task) {
276
+ let output = `🎯 Current Task (${task.id}):\n`;
277
+ output += ` Status: ${task.state === 'in_progress' ? 'In progress' : 'Ready to start'}\n`;
278
+ if (task.files && task.files.length > 0) {
279
+ output += ` Files: ${task.files.slice(0, 3).join(', ')}`;
280
+ if (task.files.length > 3) {
281
+ output += ` (+${task.files.length - 3} more)`;
282
+ }
283
+ output += '\n';
284
+ }
285
+ if (task.pattern) {
286
+ output += ` Pattern: ${task.pattern}\n`;
287
+ }
288
+ if (task.priority) {
289
+ output += ` Priority: ${task.priority}\n`;
290
+ }
291
+ if (task.effort) {
292
+ output += ` Effort: ${task.effort}\n`;
293
+ }
294
+ return output;
295
+ }
296
+ //# sourceMappingURL=sprint-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprint-loader.js","sourceRoot":"","sources":["../../src/lib/sprint-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2025-11-21
5
+ * @tags: [sprint, graph-sync, task-1, epic-001]
6
+ * @related: [charter-loader.ts, context-loader-events.ts]
7
+ * @priority: critical
8
+ * @complexity: medium
9
+ * @dependencies: [fs-extra, path, child_process]
10
+ */
11
+ /**
12
+ * Structured sprint graph data
13
+ * Ready for Neo4j sync via graph API
14
+ */
15
+ export interface SprintGraph {
16
+ sprint: {
17
+ id: string;
18
+ name: string;
19
+ goal: string;
20
+ epicId: string;
21
+ startDate: Date;
22
+ endDate: Date;
23
+ duration: string;
24
+ type: string;
25
+ successCriteria: string[];
26
+ progress: number;
27
+ };
28
+ tasks: Array<{
29
+ id: string;
30
+ title: string;
31
+ status: 'not_started' | 'in_progress' | 'complete';
32
+ effort: string;
33
+ priority: string;
34
+ owner?: string;
35
+ goal: string;
36
+ acceptanceCriteria: string[];
37
+ files: string[];
38
+ relatedADRs: string[];
39
+ }>;
40
+ relationships: {
41
+ sprintContainsTasks: string[][];
42
+ sprintNextTask: string | null;
43
+ };
44
+ }
45
+ /**
46
+ * Load sprint from filesystem
47
+ *
48
+ * @param sprintPath - Path to sprint markdown file (optional, defaults to active sprint)
49
+ * @returns Parsed sprint graph or null if not found
50
+ */
51
+ export declare function loadSprint(sprintPath?: string): Promise<SprintGraph | null>;
52
+ /**
53
+ * Parse sprint markdown into graph structure
54
+ *
55
+ * Extracts:
56
+ * - Sprint metadata (name, goal, dates, progress)
57
+ * - Tasks with status, effort, priority, files, ADRs
58
+ * - Relationships (CONTAINS, NEXT_TASK)
59
+ *
60
+ * @param content - Raw sprint markdown content
61
+ * @returns Structured sprint graph data
62
+ */
63
+ export declare function parseSprint(markdown: string): Promise<SprintGraph>;
64
+ /**
65
+ * Sync sprint file to graph (full workflow)
66
+ *
67
+ * Steps:
68
+ * 1. Read sprint markdown file
69
+ * 2. Parse into SprintGraph structure
70
+ * 3. Create/update Sprint node
71
+ * 4. Create/update Task nodes
72
+ * 5. Create relationships (CONTAINS, NEXT_TASK)
73
+ * 6. Create Task→File relationships (MODIFIES)
74
+ *
75
+ * @param sprintFile - Path to sprint markdown file
76
+ * @returns Promise resolving when sync complete
77
+ */
78
+ export declare function syncSprintToGraph(sprintFile: string): Promise<void>;
79
+ //# sourceMappingURL=sprint-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprint-parser.d.ts","sourceRoot":"","sources":["../../src/lib/sprint-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA6BH;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,IAAI,CAAC;QAChB,OAAO,EAAE,IAAI,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,aAAa,GAAG,aAAa,GAAG,UAAU,CAAC;QACnD,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,kBAAkB,EAAE,MAAM,EAAE,CAAC;QAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC,CAAC;IACH,aAAa,EAAE;QACb,mBAAmB,EAAE,MAAM,EAAE,EAAE,CAAC;QAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,CAAC;CACH;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAcjF;AA8CD;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA+DxE;AA0LD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBzE"}