@ginkoai/cli 2.0.6 → 2.1.1

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 (149) hide show
  1. package/dist/commands/epic/index.d.ts +29 -0
  2. package/dist/commands/epic/index.d.ts.map +1 -0
  3. package/dist/commands/epic/index.js +94 -0
  4. package/dist/commands/epic/index.js.map +1 -0
  5. package/dist/commands/epic/status.d.ts +40 -0
  6. package/dist/commands/epic/status.d.ts.map +1 -0
  7. package/dist/commands/epic/status.js +244 -0
  8. package/dist/commands/epic/status.js.map +1 -0
  9. package/dist/commands/graph/api-client.d.ts +221 -1
  10. package/dist/commands/graph/api-client.d.ts.map +1 -1
  11. package/dist/commands/graph/api-client.js +141 -2
  12. package/dist/commands/graph/api-client.js.map +1 -1
  13. package/dist/commands/graph/load.d.ts.map +1 -1
  14. package/dist/commands/graph/load.js +40 -2
  15. package/dist/commands/graph/load.js.map +1 -1
  16. package/dist/commands/handoff.d.ts +3 -3
  17. package/dist/commands/handoff.d.ts.map +1 -1
  18. package/dist/commands/handoff.js +32 -3
  19. package/dist/commands/handoff.js.map +1 -1
  20. package/dist/commands/migrate/index.d.ts +27 -0
  21. package/dist/commands/migrate/index.d.ts.map +1 -0
  22. package/dist/commands/migrate/index.js +76 -0
  23. package/dist/commands/migrate/index.js.map +1 -0
  24. package/dist/commands/migrate/status-migration.d.ts +58 -0
  25. package/dist/commands/migrate/status-migration.d.ts.map +1 -0
  26. package/dist/commands/migrate/status-migration.js +323 -0
  27. package/dist/commands/migrate/status-migration.js.map +1 -0
  28. package/dist/commands/nudging/index.d.ts +24 -0
  29. package/dist/commands/nudging/index.d.ts.map +1 -0
  30. package/dist/commands/nudging/index.js +175 -0
  31. package/dist/commands/nudging/index.js.map +1 -0
  32. package/dist/commands/sprint/create.d.ts +26 -0
  33. package/dist/commands/sprint/create.d.ts.map +1 -0
  34. package/dist/commands/sprint/create.js +269 -0
  35. package/dist/commands/sprint/create.js.map +1 -0
  36. package/dist/commands/sprint/index.d.ts.map +1 -1
  37. package/dist/commands/sprint/index.js +28 -0
  38. package/dist/commands/sprint/index.js.map +1 -1
  39. package/dist/commands/sprint/quick-fix.d.ts +25 -0
  40. package/dist/commands/sprint/quick-fix.d.ts.map +1 -0
  41. package/dist/commands/sprint/quick-fix.js +151 -0
  42. package/dist/commands/sprint/quick-fix.js.map +1 -0
  43. package/dist/commands/sprint/sprint-pipeline-enhanced.d.ts.map +1 -1
  44. package/dist/commands/sprint/sprint-pipeline-enhanced.js +37 -0
  45. package/dist/commands/sprint/sprint-pipeline-enhanced.js.map +1 -1
  46. package/dist/commands/sprint/status.d.ts +42 -0
  47. package/dist/commands/sprint/status.d.ts.map +1 -0
  48. package/dist/commands/sprint/status.js +298 -0
  49. package/dist/commands/sprint/status.js.map +1 -0
  50. package/dist/commands/start/start-reflection.d.ts +53 -0
  51. package/dist/commands/start/start-reflection.d.ts.map +1 -1
  52. package/dist/commands/start/start-reflection.js +464 -71
  53. package/dist/commands/start/start-reflection.js.map +1 -1
  54. package/dist/commands/sync/sprint-syncer.d.ts +19 -12
  55. package/dist/commands/sync/sprint-syncer.d.ts.map +1 -1
  56. package/dist/commands/sync/sprint-syncer.js +58 -140
  57. package/dist/commands/sync/sprint-syncer.js.map +1 -1
  58. package/dist/commands/sync/sync-command.d.ts.map +1 -1
  59. package/dist/commands/sync/sync-command.js +6 -18
  60. package/dist/commands/sync/sync-command.js.map +1 -1
  61. package/dist/commands/task/index.d.ts +25 -0
  62. package/dist/commands/task/index.d.ts.map +1 -0
  63. package/dist/commands/task/index.js +100 -0
  64. package/dist/commands/task/index.js.map +1 -0
  65. package/dist/commands/task/status.d.ts +46 -0
  66. package/dist/commands/task/status.d.ts.map +1 -0
  67. package/dist/commands/task/status.js +348 -0
  68. package/dist/commands/task/status.js.map +1 -0
  69. package/dist/commands/team/index.d.ts +5 -0
  70. package/dist/commands/team/index.d.ts.map +1 -1
  71. package/dist/commands/team/index.js +28 -0
  72. package/dist/commands/team/index.js.map +1 -1
  73. package/dist/commands/team/status.d.ts +16 -0
  74. package/dist/commands/team/status.d.ts.map +1 -0
  75. package/dist/commands/team/status.js +180 -0
  76. package/dist/commands/team/status.js.map +1 -0
  77. package/dist/index.js +21 -32
  78. package/dist/index.js.map +1 -1
  79. package/dist/lib/adoption-score.d.ts +69 -0
  80. package/dist/lib/adoption-score.d.ts.map +1 -0
  81. package/dist/lib/adoption-score.js +206 -0
  82. package/dist/lib/adoption-score.js.map +1 -0
  83. package/dist/lib/coaching-level.d.ts +127 -0
  84. package/dist/lib/coaching-level.d.ts.map +1 -0
  85. package/dist/lib/coaching-level.js +406 -0
  86. package/dist/lib/coaching-level.js.map +1 -0
  87. package/dist/lib/context-loader-events.d.ts.map +1 -1
  88. package/dist/lib/context-loader-events.js +7 -26
  89. package/dist/lib/context-loader-events.js.map +1 -1
  90. package/dist/lib/event-logger.d.ts +42 -0
  91. package/dist/lib/event-logger.d.ts.map +1 -1
  92. package/dist/lib/event-logger.js +77 -0
  93. package/dist/lib/event-logger.js.map +1 -1
  94. package/dist/lib/output-formatter.d.ts +8 -2
  95. package/dist/lib/output-formatter.d.ts.map +1 -1
  96. package/dist/lib/output-formatter.js +98 -18
  97. package/dist/lib/output-formatter.js.map +1 -1
  98. package/dist/lib/pending-updates.d.ts +148 -0
  99. package/dist/lib/pending-updates.d.ts.map +1 -0
  100. package/dist/lib/pending-updates.js +301 -0
  101. package/dist/lib/pending-updates.js.map +1 -0
  102. package/dist/lib/planning-menu.d.ts +69 -0
  103. package/dist/lib/planning-menu.d.ts.map +1 -0
  104. package/dist/lib/planning-menu.js +342 -0
  105. package/dist/lib/planning-menu.js.map +1 -0
  106. package/dist/lib/sprint-loader.d.ts +86 -14
  107. package/dist/lib/sprint-loader.d.ts.map +1 -1
  108. package/dist/lib/sprint-loader.js +293 -98
  109. package/dist/lib/sprint-loader.js.map +1 -1
  110. package/dist/lib/state-cache.d.ts +142 -0
  111. package/dist/lib/state-cache.d.ts.map +1 -0
  112. package/dist/lib/state-cache.js +259 -0
  113. package/dist/lib/state-cache.js.map +1 -0
  114. package/dist/lib/targeted-coaching.d.ts +71 -0
  115. package/dist/lib/targeted-coaching.d.ts.map +1 -0
  116. package/dist/lib/targeted-coaching.js +318 -0
  117. package/dist/lib/targeted-coaching.js.map +1 -0
  118. package/dist/lib/task-graph-sync.d.ts +105 -0
  119. package/dist/lib/task-graph-sync.d.ts.map +1 -0
  120. package/dist/lib/task-graph-sync.js +178 -0
  121. package/dist/lib/task-graph-sync.js.map +1 -0
  122. package/dist/lib/task-parser.d.ts +109 -0
  123. package/dist/lib/task-parser.d.ts.map +1 -0
  124. package/dist/lib/task-parser.js +407 -0
  125. package/dist/lib/task-parser.js.map +1 -0
  126. package/dist/lib/user-sprint.d.ts +53 -0
  127. package/dist/lib/user-sprint.d.ts.map +1 -1
  128. package/dist/lib/user-sprint.js +137 -2
  129. package/dist/lib/user-sprint.js.map +1 -1
  130. package/dist/lib/work-reconciliation.d.ts +59 -0
  131. package/dist/lib/work-reconciliation.d.ts.map +1 -0
  132. package/dist/lib/work-reconciliation.js +267 -0
  133. package/dist/lib/work-reconciliation.js.map +1 -0
  134. package/dist/templates/ai-instructions-template.d.ts.map +1 -1
  135. package/dist/templates/ai-instructions-template.js +7 -5
  136. package/dist/templates/ai-instructions-template.js.map +1 -1
  137. package/dist/templates/epic-template.md +0 -2
  138. package/dist/types/config.d.ts.map +1 -1
  139. package/dist/types/config.js +7 -5
  140. package/dist/types/config.js.map +1 -1
  141. package/dist/utils/synthesis.d.ts +4 -0
  142. package/dist/utils/synthesis.d.ts.map +1 -1
  143. package/dist/utils/synthesis.js +12 -18
  144. package/dist/utils/synthesis.js.map +1 -1
  145. package/dist/utils/version-check.d.ts +26 -0
  146. package/dist/utils/version-check.d.ts.map +1 -0
  147. package/dist/utils/version-check.js +186 -0
  148. package/dist/utils/version-check.js.map +1 -0
  149. package/package.json +2 -2
@@ -41,8 +41,8 @@ export async function getUserCurrentSprint() {
41
41
  return null;
42
42
  }
43
43
  const data = await fs.readJSON(filePath);
44
- // Validate required fields
45
- if (!data.sprintId || !data.sprintFile) {
44
+ // Validate required fields (sprintFile can be empty for graph-based sprints)
45
+ if (!data.sprintId) {
46
46
  return null;
47
47
  }
48
48
  return data;
@@ -141,7 +141,142 @@ export async function validateUserSprint(assignment) {
141
141
  * Get sprint file path from user assignment
142
142
  */
143
143
  export async function getSprintFileFromAssignment(assignment) {
144
+ // Graph-based sprints have no local file
145
+ if (!assignment.sprintFile) {
146
+ return '';
147
+ }
144
148
  const projectRoot = await requireGinkoRoot();
145
149
  return path.join(projectRoot, assignment.sprintFile);
146
150
  }
151
+ // =============================================================================
152
+ // EPIC-016 Sprint 4: Work Structure Detection (t01)
153
+ // =============================================================================
154
+ /**
155
+ * Check if user has structured work (sprint with incomplete tasks)
156
+ *
157
+ * Decision matrix:
158
+ * | Has Sprint | Has Tasks | Consecutive Adhoc | Result |
159
+ * |------------|-----------|-------------------|--------|
160
+ * | Yes | Yes | Any | Has structured work |
161
+ * | Yes | No (100%) | Any | No structure (complete) |
162
+ * | No | N/A | <= 1 | No structure (new) |
163
+ * | No | N/A | > 1 | No structure (adhoc pattern) |
164
+ *
165
+ * @param userSprint - User's current sprint assignment
166
+ * @param sprintChecklist - Sprint task data from graph/file (with progress info)
167
+ * @returns WorkStructureStatus with decision
168
+ */
169
+ export function checkWorkStructure(userSprint, sprintChecklist) {
170
+ // Case 1: No sprint assignment
171
+ if (!userSprint || !userSprint.sprintId) {
172
+ return {
173
+ hasStructuredWork: false,
174
+ sprintId: null,
175
+ incompleteTasks: 0,
176
+ consecutiveAdhocSessions: userSprint?.consecutiveAdhocSessions || 0,
177
+ shouldShowPlanningMenu: true,
178
+ reason: 'no_sprint'
179
+ };
180
+ }
181
+ // Case 2: Sprint assigned but no checklist data (graph unavailable)
182
+ if (!sprintChecklist) {
183
+ // Trust the sprint assignment, assume structured
184
+ return {
185
+ hasStructuredWork: true,
186
+ sprintId: userSprint.sprintId,
187
+ incompleteTasks: -1, // Unknown
188
+ consecutiveAdhocSessions: 0,
189
+ shouldShowPlanningMenu: false,
190
+ reason: 'has_sprint'
191
+ };
192
+ }
193
+ // Calculate incomplete tasks
194
+ let incompleteTasks;
195
+ if (sprintChecklist.progress) {
196
+ incompleteTasks = sprintChecklist.progress.total - sprintChecklist.progress.complete;
197
+ }
198
+ else if (sprintChecklist.tasks) {
199
+ incompleteTasks = sprintChecklist.tasks.filter(t => t.state === 'todo' || t.state === 'in_progress').length;
200
+ }
201
+ else {
202
+ incompleteTasks = -1; // Unknown
203
+ }
204
+ // Case 3: Sprint with incomplete tasks
205
+ if (incompleteTasks > 0 || incompleteTasks === -1) {
206
+ return {
207
+ hasStructuredWork: true,
208
+ sprintId: userSprint.sprintId,
209
+ incompleteTasks,
210
+ consecutiveAdhocSessions: 0,
211
+ shouldShowPlanningMenu: false,
212
+ reason: 'has_sprint'
213
+ };
214
+ }
215
+ // Case 4: Sprint 100% complete
216
+ return {
217
+ hasStructuredWork: false,
218
+ sprintId: userSprint.sprintId,
219
+ incompleteTasks: 0,
220
+ consecutiveAdhocSessions: userSprint.consecutiveAdhocSessions || 0,
221
+ shouldShowPlanningMenu: true,
222
+ reason: 'all_tasks_complete'
223
+ };
224
+ }
225
+ /**
226
+ * Increment ad-hoc session counter
227
+ * Called when user chooses ad-hoc work in planning menu
228
+ */
229
+ export async function incrementAdhocSessionCount() {
230
+ const filePath = await getUserSprintFilePath();
231
+ let data = {};
232
+ try {
233
+ if (await fs.pathExists(filePath)) {
234
+ data = await fs.readJSON(filePath);
235
+ }
236
+ }
237
+ catch {
238
+ // Start fresh if file is corrupted
239
+ }
240
+ const newCount = (data.consecutiveAdhocSessions || 0) + 1;
241
+ data.isAdhoc = true;
242
+ data.consecutiveAdhocSessions = newCount;
243
+ data.lastAdhocSessionAt = new Date().toISOString();
244
+ await fs.ensureDir(path.dirname(filePath));
245
+ await fs.writeJSON(filePath, data, { spaces: 2 });
246
+ return newCount;
247
+ }
248
+ /**
249
+ * Reset ad-hoc session counter
250
+ * Called when user starts structured work (creates/selects epic/sprint)
251
+ */
252
+ export async function resetAdhocSessionCount() {
253
+ const filePath = await getUserSprintFilePath();
254
+ try {
255
+ if (await fs.pathExists(filePath)) {
256
+ const data = await fs.readJSON(filePath);
257
+ data.isAdhoc = false;
258
+ data.consecutiveAdhocSessions = 0;
259
+ await fs.writeJSON(filePath, data, { spaces: 2 });
260
+ }
261
+ }
262
+ catch {
263
+ // Ignore errors - non-critical
264
+ }
265
+ }
266
+ /**
267
+ * Create sprint assignment from sprint ID (for graph-based sprints)
268
+ */
269
+ export function createAssignmentFromSprintId(sprintId, sprintName, assignedBy = 'auto') {
270
+ // Extract epic ID from sprint ID (e.g., e016_s04 -> e016, adhoc_260126_s01 -> adhoc_260126)
271
+ const parts = sprintId.split('_s');
272
+ const epicId = parts[0] || sprintId;
273
+ return {
274
+ sprintId,
275
+ epicId,
276
+ sprintFile: '', // Graph-based, no local file
277
+ sprintName,
278
+ assignedAt: new Date().toISOString(),
279
+ assignedBy
280
+ };
281
+ }
147
282
  //# sourceMappingURL=user-sprint.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"user-sprint.js","sourceRoot":"","sources":["../../src/lib/user-sprint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-sprint.js","sourceRoot":"","sources":["../../src/lib/user-sprint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2026-01-26
5
+ * @tags: [reconciliation, handoff, untracked-work, coaching, epic-016-s04]
6
+ * @related: [handoff.ts, planning-menu.ts, user-sprint.ts, event-logger.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: [prompts, chalk, simple-git, event-logger]
10
+ */
11
+ export interface WorkReconciliationResult {
12
+ hasUntrackedWork: boolean;
13
+ untrackedCommits: number;
14
+ untrackedFiles: number;
15
+ userAction: 'tracked' | 'skipped' | 'no-work' | 'cancelled';
16
+ taskCreated?: string;
17
+ }
18
+ interface SessionWorkSummary {
19
+ commits: Array<{
20
+ hash: string;
21
+ message: string;
22
+ date: string;
23
+ }>;
24
+ modifiedFiles: string[];
25
+ hasActiveTask: boolean;
26
+ currentSprintId: string | null;
27
+ }
28
+ /**
29
+ * Get summary of work done in current session
30
+ */
31
+ declare function getSessionWorkSummary(): Promise<SessionWorkSummary>;
32
+ /**
33
+ * Determine if there's significant untracked work
34
+ */
35
+ declare function hasSignificantUntrackedWork(summary: SessionWorkSummary): boolean;
36
+ /**
37
+ * Check for untracked work and prompt user if significant
38
+ *
39
+ * Called during handoff to catch work that should be tracked.
40
+ * Non-blocking - if user declines, handoff continues normally.
41
+ *
42
+ * @returns Reconciliation result with user's action
43
+ */
44
+ export declare function reconcileWork(): Promise<WorkReconciliationResult>;
45
+ /**
46
+ * Quick check if reconciliation might be needed (for verbose output)
47
+ */
48
+ export declare function hasUntrackedWork(): Promise<boolean>;
49
+ export declare const __testing: {
50
+ UNTRACKED_THRESHOLD: {
51
+ commits: number;
52
+ files: number;
53
+ };
54
+ IGNORED_PATTERNS: RegExp[];
55
+ getSessionWorkSummary: typeof getSessionWorkSummary;
56
+ hasSignificantUntrackedWork: typeof hasSignificantUntrackedWork;
57
+ };
58
+ export {};
59
+ //# sourceMappingURL=work-reconciliation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-reconciliation.d.ts","sourceRoot":"","sources":["../../src/lib/work-reconciliation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAyBH,MAAM,WAAW,wBAAwB;IACvC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAyBD;;GAEG;AACH,iBAAe,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CA4ClE;AAED;;GAEG;AACH,iBAAS,2BAA2B,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAWzE;AAkID;;;;;;;GAOG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAyBvE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAOzD;AAMD,eAAO,MAAM,SAAS;;;;;;;;CAKrB,CAAC"}
@@ -0,0 +1,267 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2026-01-26
5
+ * @tags: [reconciliation, handoff, untracked-work, coaching, epic-016-s04]
6
+ * @related: [handoff.ts, planning-menu.ts, user-sprint.ts, event-logger.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: [prompts, chalk, simple-git, event-logger]
10
+ */
11
+ /**
12
+ * Handoff Reconciliation (EPIC-016 Sprint 4 t06)
13
+ *
14
+ * Catches untracked work at session end by:
15
+ * 1. Detecting meaningful changes (commits, modified files)
16
+ * 2. Comparing against tracked sprint/task work
17
+ * 3. Prompting user to create ad-hoc tasks for untracked work
18
+ *
19
+ * Goal: Ensure all significant work is captured for knowledge graph
20
+ * without being annoying or slowing down the workflow.
21
+ */
22
+ import prompts from 'prompts';
23
+ import chalk from 'chalk';
24
+ import simpleGit from 'simple-git';
25
+ import { logEvent } from './event-logger.js';
26
+ import { getUserCurrentSprint } from './user-sprint.js';
27
+ import { createQuickFixTask } from '../commands/sprint/quick-fix.js';
28
+ // =============================================================================
29
+ // Constants
30
+ // =============================================================================
31
+ // Minimum thresholds for prompting about untracked work
32
+ const UNTRACKED_THRESHOLD = {
33
+ commits: 1, // Prompt if 1+ commits without task
34
+ files: 5, // Or 5+ modified files
35
+ };
36
+ // File patterns to ignore when counting modified files
37
+ const IGNORED_PATTERNS = [
38
+ /^\.ginko\//,
39
+ /^node_modules\//,
40
+ /\.log$/,
41
+ /\.tmp$/,
42
+ /\.lock$/,
43
+ ];
44
+ // =============================================================================
45
+ // Work Detection
46
+ // =============================================================================
47
+ /**
48
+ * Get summary of work done in current session
49
+ */
50
+ async function getSessionWorkSummary() {
51
+ const git = simpleGit();
52
+ // Get current sprint info
53
+ const userSprint = await getUserCurrentSprint();
54
+ const hasActiveTask = userSprint !== null;
55
+ const currentSprintId = userSprint?.sprintId || null;
56
+ // Get recent commits (last 24 hours or since last handoff marker)
57
+ let commits = [];
58
+ try {
59
+ const log = await git.log({
60
+ '--since': '24 hours ago',
61
+ maxCount: 20,
62
+ });
63
+ commits = log.all.map(c => ({
64
+ hash: c.hash.slice(0, 7),
65
+ message: c.message.split('\n')[0],
66
+ date: c.date,
67
+ }));
68
+ }
69
+ catch {
70
+ // Git log failed - might not be a git repo
71
+ }
72
+ // Get modified files (staged + unstaged)
73
+ let modifiedFiles = [];
74
+ try {
75
+ const status = await git.status();
76
+ modifiedFiles = [
77
+ ...status.modified,
78
+ ...status.staged,
79
+ ...status.not_added,
80
+ ].filter(f => !IGNORED_PATTERNS.some(p => p.test(f)));
81
+ }
82
+ catch {
83
+ // Git status failed
84
+ }
85
+ return {
86
+ commits,
87
+ modifiedFiles,
88
+ hasActiveTask,
89
+ currentSprintId,
90
+ };
91
+ }
92
+ /**
93
+ * Determine if there's significant untracked work
94
+ */
95
+ function hasSignificantUntrackedWork(summary) {
96
+ // If user has an active task, assume work is tracked
97
+ if (summary.hasActiveTask) {
98
+ return false;
99
+ }
100
+ // Check thresholds
101
+ return (summary.commits.length >= UNTRACKED_THRESHOLD.commits ||
102
+ summary.modifiedFiles.length >= UNTRACKED_THRESHOLD.files);
103
+ }
104
+ // =============================================================================
105
+ // User Prompts
106
+ // =============================================================================
107
+ /**
108
+ * Prompt user about untracked work
109
+ */
110
+ async function promptForUntrackedWork(summary) {
111
+ console.log('');
112
+ console.log(chalk.yellow('📋 You have work that may not be tracked:'));
113
+ if (summary.commits.length > 0) {
114
+ console.log(chalk.dim(` ${summary.commits.length} commit(s) in the last 24h`));
115
+ // Show first commit message as context
116
+ if (summary.commits[0]) {
117
+ console.log(chalk.dim(` Latest: "${summary.commits[0].message.slice(0, 50)}..."`));
118
+ }
119
+ }
120
+ if (summary.modifiedFiles.length > 0) {
121
+ console.log(chalk.dim(` ${summary.modifiedFiles.length} modified file(s)`));
122
+ }
123
+ console.log('');
124
+ const { action } = await prompts({
125
+ type: 'select',
126
+ name: 'action',
127
+ message: 'Would you like to track this work?',
128
+ choices: [
129
+ {
130
+ title: 'Yes, create a quick task',
131
+ description: 'Track this work with a simple description',
132
+ value: 'track',
133
+ },
134
+ {
135
+ title: 'No, skip this time',
136
+ description: 'Continue without tracking',
137
+ value: 'skip',
138
+ },
139
+ ],
140
+ });
141
+ if (action === undefined) {
142
+ return {
143
+ hasUntrackedWork: true,
144
+ untrackedCommits: summary.commits.length,
145
+ untrackedFiles: summary.modifiedFiles.length,
146
+ userAction: 'cancelled',
147
+ };
148
+ }
149
+ if (action === 'skip') {
150
+ // Log that user skipped tracking
151
+ await logEvent({
152
+ category: 'decision',
153
+ description: 'Skipped tracking untracked work at handoff',
154
+ tags: ['handoff', 'untracked-work', 'skipped'],
155
+ impact: 'low',
156
+ }).catch(() => { });
157
+ return {
158
+ hasUntrackedWork: true,
159
+ untrackedCommits: summary.commits.length,
160
+ untrackedFiles: summary.modifiedFiles.length,
161
+ userAction: 'skipped',
162
+ };
163
+ }
164
+ // User wants to track - get description
165
+ const { description } = await prompts({
166
+ type: 'text',
167
+ name: 'description',
168
+ message: 'Brief description of the work:',
169
+ initial: summary.commits[0]?.message.slice(0, 50) || '',
170
+ validate: (v) => v.trim().length >= 5 ? true : 'Please provide a brief description',
171
+ });
172
+ if (!description) {
173
+ return {
174
+ hasUntrackedWork: true,
175
+ untrackedCommits: summary.commits.length,
176
+ untrackedFiles: summary.modifiedFiles.length,
177
+ userAction: 'cancelled',
178
+ };
179
+ }
180
+ // Create quick-fix task
181
+ try {
182
+ const result = await createQuickFixTask(description.trim());
183
+ if (result.success && result.taskId) {
184
+ console.log(chalk.green(`✓ Created: ${result.taskId}`));
185
+ return {
186
+ hasUntrackedWork: true,
187
+ untrackedCommits: summary.commits.length,
188
+ untrackedFiles: summary.modifiedFiles.length,
189
+ userAction: 'tracked',
190
+ taskCreated: result.taskId,
191
+ };
192
+ }
193
+ }
194
+ catch {
195
+ console.log(chalk.dim('Task creation skipped (graph may not be initialized)'));
196
+ }
197
+ // Log the work even if task creation failed
198
+ await logEvent({
199
+ category: 'feature',
200
+ description: `Handoff work: ${description}`,
201
+ tags: ['handoff', 'untracked-work', 'logged'],
202
+ impact: 'medium',
203
+ }).catch(() => { });
204
+ return {
205
+ hasUntrackedWork: true,
206
+ untrackedCommits: summary.commits.length,
207
+ untrackedFiles: summary.modifiedFiles.length,
208
+ userAction: 'tracked',
209
+ };
210
+ }
211
+ // =============================================================================
212
+ // Main Function
213
+ // =============================================================================
214
+ /**
215
+ * Check for untracked work and prompt user if significant
216
+ *
217
+ * Called during handoff to catch work that should be tracked.
218
+ * Non-blocking - if user declines, handoff continues normally.
219
+ *
220
+ * @returns Reconciliation result with user's action
221
+ */
222
+ export async function reconcileWork() {
223
+ try {
224
+ const summary = await getSessionWorkSummary();
225
+ if (!hasSignificantUntrackedWork(summary)) {
226
+ return {
227
+ hasUntrackedWork: false,
228
+ untrackedCommits: 0,
229
+ untrackedFiles: 0,
230
+ userAction: 'no-work',
231
+ };
232
+ }
233
+ return await promptForUntrackedWork(summary);
234
+ }
235
+ catch (error) {
236
+ // Non-critical - don't block handoff on reconciliation errors
237
+ console.warn(chalk.dim('Work reconciliation skipped:'), error instanceof Error ? error.message : String(error));
238
+ return {
239
+ hasUntrackedWork: false,
240
+ untrackedCommits: 0,
241
+ untrackedFiles: 0,
242
+ userAction: 'no-work',
243
+ };
244
+ }
245
+ }
246
+ /**
247
+ * Quick check if reconciliation might be needed (for verbose output)
248
+ */
249
+ export async function hasUntrackedWork() {
250
+ try {
251
+ const summary = await getSessionWorkSummary();
252
+ return hasSignificantUntrackedWork(summary);
253
+ }
254
+ catch {
255
+ return false;
256
+ }
257
+ }
258
+ // =============================================================================
259
+ // Exports for Testing
260
+ // =============================================================================
261
+ export const __testing = {
262
+ UNTRACKED_THRESHOLD,
263
+ IGNORED_PATTERNS,
264
+ getSessionWorkSummary,
265
+ hasSignificantUntrackedWork,
266
+ };
267
+ //# sourceMappingURL=work-reconciliation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-reconciliation.js","sourceRoot":"","sources":["../../src/lib/work-reconciliation.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ai-instructions-template.d.ts","sourceRoot":"","sources":["../../src/templates/ai-instructions-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3E,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;IAC5D,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CA4G/C;IAEA,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAmC3C;IAEA,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAkB5C;IAEA,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAwChD;IAEA,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAuCxC;IAEA,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CA+DjD;IAEA,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM;IAuDpF,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAqBpC,OAAO,CAAC,MAAM,CAAC,8BAA8B;IA0C7C,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAerC,OAAO,CAAC,MAAM,CAAC,kBAAkB;CAQlC"}
1
+ {"version":3,"file":"ai-instructions-template.d.ts","sourceRoot":"","sources":["../../src/templates/ai-instructions-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3E,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;IAC5D,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CA4G/C;IAEA,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAmC3C;IAEA,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAkB5C;IAEA,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAwChD;IAEA,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAuCxC;IAEA,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAiEjD;IAEA,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM;IAuDpF,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAqBpC,OAAO,CAAC,MAAM,CAAC,8BAA8B;IA0C7C,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAerC,OAAO,CAAC,MAAM,CAAC,kBAAkB;CAQlC"}
@@ -293,7 +293,7 @@ ginko sync --type ADR # Sync only ADRs
293
293
 
294
294
  | Question Type | File Location |
295
295
  |--------------|---------------|
296
- | Sprint progress | \`docs/sprints/CURRENT-SPRINT.md\` |
296
+ | Sprint progress | \`docs/sprints/SPRINT-*.md\` (scan for active sprint) |
297
297
  | Architecture decisions | \`docs/adr/ADR-*.md\` |
298
298
  | Project goals | \`docs/PROJECT-CHARTER.md\` |
299
299
  | Recent activity | \`.ginko/sessions/[user]/current-events.jsonl\` |
@@ -302,11 +302,13 @@ ginko sync --type ADR # Sync only ADRs
302
302
  ### Common Query Recipes
303
303
 
304
304
  **"What's our sprint progress?"**
305
- Read \`docs/sprints/CURRENT-SPRINT.md\`, count checkboxes:
305
+ Use graph query or scan sprint files:
306
306
  \`\`\`bash
307
- grep -c "\\[x\\]" docs/sprints/CURRENT-SPRINT.md # complete
308
- grep -c "\\[@\\]" docs/sprints/CURRENT-SPRINT.md # in progress
309
- grep -c "\\[ \\]" docs/sprints/CURRENT-SPRINT.md # pending
307
+ # Via graph (preferred - EPIC-015 Sprint 3)
308
+ ginko graph query "current sprint progress"
309
+
310
+ # Fallback: scan sprint files
311
+ ls docs/sprints/SPRINT-*.md | tail -1 | xargs grep -c "\\[x\\]" # complete tasks
310
312
  \`\`\`
311
313
 
312
314
  **"How do we handle X?" / "What's our approach to X?"**
@@ -1 +1 @@
1
- {"version":3,"file":"ai-instructions-template.js","sourceRoot":"","sources":["../../src/templates/ai-instructions-template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-instructions-template.js","sourceRoot":"","sources":["../../src/templates/ai-instructions-template.ts"],"names":[],"mappings":"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"}
@@ -261,7 +261,6 @@ updated: YYYY-MM-DD
261
261
  ## Sprint Tasks
262
262
 
263
263
  ### TASK-1: [Task Title] ([Effort])
264
- **Status:** [ ] Not Started
265
264
  **Priority:** HIGH
266
265
 
267
266
  **Goal:** [What this task achieves]
@@ -279,7 +278,6 @@ Avoid: [gotcha-name]
279
278
  ---
280
279
 
281
280
  ### TASK-2: [Task Title] ([Effort])
282
- **Status:** [ ] Not Started
283
281
  **Priority:** MEDIUM
284
282
 
285
283
  ...
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,aAAa,GAAG,eAAe,CAAC;AAErE;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,QAAQ,EAAE,cAAc,CAAC;IACzB,cAAc,EAAE,oBAAoB,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;CACzC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,QAAQ,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAiClC,CAAC;AAOF;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,eAAe,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IACxC,aAAa,EAAE,MAAM,GAAG,KAAK,CAAC;IAC9B,cAAc,EAAE,MAAM,GAAG,KAAK,CAAC;IAC/B,aAAa,EAAE,GAAG,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE;QAClB,cAAc,EAAE,OAAO,CAAC;QACxB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,iBAAiB,EAAE,OAAO,CAAC;KAC5B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,kBAAkB,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,GAyB5B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;CAC9B"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,7 @@ export const DEFAULT_GINKO_CONFIG = {
22
22
  paths: {
23
23
  docs: "docs",
24
24
  sprints: "docs/sprints",
25
- currentSprint: "docs/sprints/CURRENT-SPRINT.md",
25
+ // EPIC-015 Sprint 3: currentSprint path deprecated - sprint state comes from graph
26
26
  prds: "docs/PRD",
27
27
  adrs: "docs/adr",
28
28
  architecture: "docs/architecture",
@@ -34,16 +34,18 @@ export const DEFAULT_GINKO_CONFIG = {
34
34
  workMode: {
35
35
  default: "think-build",
36
36
  documentationDepth: {
37
- "hack-ship": ["currentSprint", "sessions"],
38
- "think-build": ["currentSprint", "sessions", "adrs", "prds"],
39
- "full-planning": ["currentSprint", "sessions", "adrs", "prds", "architecture", "bestPractices"]
37
+ // EPIC-015 Sprint 3: currentSprint removed - sprint state comes from graph
38
+ "hack-ship": ["sprints", "sessions"],
39
+ "think-build": ["sprints", "sessions", "adrs", "prds"],
40
+ "full-planning": ["sprints", "sessions", "adrs", "prds", "architecture", "bestPractices"]
40
41
  }
41
42
  },
42
43
  contextLoading: {
43
44
  progressive: true,
44
45
  maxDepth: 3,
45
46
  followReferences: true,
46
- priorityOrder: ["sessions", "currentSprint", "prds", "adrs", "context"]
47
+ // EPIC-015 Sprint 3: currentSprint removed - sprint state comes from graph
48
+ priorityOrder: ["sessions", "sprints", "prds", "adrs", "context"]
47
49
  }
48
50
  };
49
51
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA6DH;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAC/C,OAAO,EAAE,4CAA4C;IACrD,OAAO,EAAE,KAAK;IACd,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,QAAQ;KACf;IACD,KAAK,EAAE;QACL,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,cAAc;QACvB,aAAa,EAAE,gCAAgC;QAC/C,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU;QAChB,YAAY,EAAE,mBAAmB;QACjC,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,wBAAwB;QACjC,QAAQ,EAAE,iBAAiB;QAC3B,aAAa,EAAE,uBAAuB;KACvC;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,aAAa;QACtB,kBAAkB,EAAE;YAClB,WAAW,EAAE,CAAC,eAAe,EAAE,UAAU,CAAC;YAC1C,aAAa,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC;YAC5D,eAAe,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,CAAC;SAChG;KACF;IACD,cAAc,EAAE;QACd,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,CAAC;QACX,gBAAgB,EAAE,IAAI;QACtB,aAAa,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;KACxE;CACF,CAAC;AA0FF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAQ;IACjC,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE;QACL,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM;YACZ,GAAG,EAAE,UAAU;YACf,GAAG,EAAE,UAAU;YACf,OAAO,EAAE,cAAc;SACxB;QACD,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,gBAAgB;YACzB,QAAQ,EAAE,iBAAiB;YAC3B,OAAO,EAAE,gBAAgB;YACzB,QAAQ,EAAE,iBAAiB;YAC3B,aAAa,EAAE,uBAAuB;SACvC;KACF;IACD,QAAQ,EAAE;QACR,WAAW,EAAE,IAAI;QACjB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;QACnB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;KACpB;CACF,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA6DH;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAC/C,OAAO,EAAE,4CAA4C;IACrD,OAAO,EAAE,KAAK;IACd,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,QAAQ;KACf;IACD,KAAK,EAAE;QACL,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,cAAc;QACvB,mFAAmF;QACnF,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU;QAChB,YAAY,EAAE,mBAAmB;QACjC,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,wBAAwB;QACjC,QAAQ,EAAE,iBAAiB;QAC3B,aAAa,EAAE,uBAAuB;KACvC;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,aAAa;QACtB,kBAAkB,EAAE;YAClB,2EAA2E;YAC3E,WAAW,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;YACpC,aAAa,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC;YACtD,eAAe,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,CAAC;SAC1F;KACF;IACD,cAAc,EAAE;QACd,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,CAAC;QACX,gBAAgB,EAAE,IAAI;QACtB,2EAA2E;QAC3E,aAAa,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;KAClE;CACF,CAAC;AA0FF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAQ;IACjC,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE;QACL,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM;YACZ,GAAG,EAAE,UAAU;YACf,GAAG,EAAE,UAAU;YACf,OAAO,EAAE,cAAc;SACxB;QACD,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,gBAAgB;YACzB,QAAQ,EAAE,iBAAiB;YAC3B,OAAO,EAAE,gBAAgB;YACzB,QAAQ,EAAE,iBAAiB;YAC3B,aAAa,EAAE,uBAAuB;SACvC;KACF;IACD,QAAQ,EAAE;QACR,WAAW,EAAE,IAAI;QACjB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;QACnB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;KACpB;CACF,CAAC"}