@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
@@ -0,0 +1,58 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2026-01-20
5
+ * @tags: [migrate, status, sprint-to-graph, epic-015, sprint-3]
6
+ * @related: [../sync/sprint-syncer.ts, ../graph/api-client.ts, ../task/status.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: [glob, chalk, fs]
10
+ */
11
+ import { TaskStatus } from '../graph/api-client.js';
12
+ export interface MigrationTask {
13
+ id: string;
14
+ currentStatus: string;
15
+ targetStatus: TaskStatus;
16
+ sprintId: string;
17
+ sprintFile: string;
18
+ lineNumber: number;
19
+ }
20
+ export interface MigrationReport {
21
+ totalTasks: number;
22
+ toUpdate: MigrationTask[];
23
+ noChange: MigrationTask[];
24
+ errors: Array<{
25
+ task: MigrationTask;
26
+ error: string;
27
+ }>;
28
+ updated: MigrationTask[];
29
+ skipped: MigrationTask[];
30
+ }
31
+ export interface StatusMigrationOptions {
32
+ dryRun?: boolean;
33
+ verbose?: boolean;
34
+ }
35
+ /**
36
+ * Find all sprint files in the project
37
+ */
38
+ export declare function findSprintFiles(projectRoot: string): Promise<string[]>;
39
+ /**
40
+ * Parse tasks from sprint markdown content
41
+ * Supports two formats:
42
+ * 1. Block format with **ID:** and **Status:** lines
43
+ * 2. Simple list format: - [x] e015_s03_t01 - Description
44
+ */
45
+ export declare function parseTasksFromMarkdown(content: string, sprintFile: string, sprintId: string): MigrationTask[];
46
+ /**
47
+ * Scan all sprint files and build migration plan
48
+ */
49
+ export declare function buildMigrationPlan(projectRoot: string): Promise<MigrationTask[]>;
50
+ /**
51
+ * Execute the migration
52
+ */
53
+ export declare function executeMigration(tasks: MigrationTask[], options?: StatusMigrationOptions): Promise<MigrationReport>;
54
+ /**
55
+ * Main migration command entry point
56
+ */
57
+ export declare function runStatusMigration(options?: StatusMigrationOptions): Promise<void>;
58
+ //# sourceMappingURL=status-migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-migration.d.ts","sourceRoot":"","sources":["../../../src/commands/migrate/status-migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAoBH,OAAO,EAAkB,UAAU,EAAE,MAAM,wBAAwB,CAAC;AASpE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,UAAU,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA6CD;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAM5E;AAsDD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,aAAa,EAAE,CAmDjB;AAMD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAqBtF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,aAAa,EAAE,EACtB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,eAAe,CAAC,CAqE1B;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAmE5F"}
@@ -0,0 +1,323 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2026-01-20
5
+ * @tags: [migrate, status, sprint-to-graph, epic-015, sprint-3]
6
+ * @related: [../sync/sprint-syncer.ts, ../graph/api-client.ts, ../task/status.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: [glob, chalk, fs]
10
+ */
11
+ /**
12
+ * Status Migration (EPIC-015 Sprint 3 Task 1)
13
+ *
14
+ * Migrates task status from sprint markdown files to the knowledge graph.
15
+ * This is a one-way migration: markdown -> graph.
16
+ *
17
+ * Checkbox mapping:
18
+ * [x] -> complete
19
+ * [@] -> in_progress
20
+ * [Z] -> not_started (paused)
21
+ * [ ] -> not_started
22
+ */
23
+ import * as fs from 'fs/promises';
24
+ import * as path from 'path';
25
+ import glob from 'glob';
26
+ import { promisify } from 'util';
27
+ import chalk from 'chalk';
28
+ import { GraphApiClient } from '../graph/api-client.js';
29
+ import { getGraphId } from '../graph/config.js';
30
+ const globAsync = promisify(glob);
31
+ // =============================================================================
32
+ // Checkbox Parsing
33
+ // =============================================================================
34
+ /**
35
+ * Map markdown checkbox to graph task status
36
+ */
37
+ function checkboxToStatus(checkbox) {
38
+ switch (checkbox.toLowerCase()) {
39
+ case 'x':
40
+ return 'complete';
41
+ case '@':
42
+ return 'in_progress';
43
+ case 'z':
44
+ // [Z] is "paused" in markdown, maps to not_started in graph
45
+ return 'not_started';
46
+ case ' ':
47
+ default:
48
+ return 'not_started';
49
+ }
50
+ }
51
+ /**
52
+ * Get display name for checkbox character
53
+ */
54
+ function checkboxDisplay(checkbox) {
55
+ switch (checkbox.toLowerCase()) {
56
+ case 'x':
57
+ return '[x] complete';
58
+ case '@':
59
+ return '[@] in_progress';
60
+ case 'z':
61
+ return '[Z] paused';
62
+ case ' ':
63
+ default:
64
+ return '[ ] not_started';
65
+ }
66
+ }
67
+ // =============================================================================
68
+ // Sprint File Parsing
69
+ // =============================================================================
70
+ /**
71
+ * Find all sprint files in the project
72
+ */
73
+ export async function findSprintFiles(projectRoot) {
74
+ const pattern = path.join(projectRoot, 'docs/sprints/SPRINT-*.md');
75
+ const files = await globAsync(pattern);
76
+ // Filter out CURRENT-SPRINT.md as it's a symlink/copy
77
+ return files.filter(f => !f.includes('CURRENT-SPRINT.md'));
78
+ }
79
+ /**
80
+ * Extract sprint ID from file content
81
+ * Looks for patterns like e006_s02 or adhoc_251209_s01 in task IDs or sprint declarations
82
+ */
83
+ function extractSprintIdFromContent(content) {
84
+ // Try to find sprint ID from task IDs in content
85
+ // Pattern: **ID:** e015_s03_t01 -> extract e015_s03
86
+ const taskIdMatch = content.match(/\*\*ID:\*\*\s*`?(e\d{3}_s\d{2}|adhoc_\d{6}_s\d{2})_t\d{2}/);
87
+ if (taskIdMatch) {
88
+ return taskIdMatch[1];
89
+ }
90
+ // Try to find sprint ID directly declared
91
+ // Pattern: **ID:** `adhoc_260117_s01` or **ID:** e015_s03
92
+ const sprintIdMatch = content.match(/\*\*ID:\*\*\s*`?(e\d{3}_s\d{2}|adhoc_\d{6}_s\d{2})`?/);
93
+ if (sprintIdMatch) {
94
+ return sprintIdMatch[1];
95
+ }
96
+ // Fallback: look for standalone sprint reference
97
+ const sprintMatch = content.match(/Sprint[:\s]+`?(e\d{3}_s\d{2}|adhoc_\d{6}_s\d{2})`?/i);
98
+ if (sprintMatch) {
99
+ return sprintMatch[1];
100
+ }
101
+ return null;
102
+ }
103
+ /**
104
+ * Extract sprint ID from filename as fallback
105
+ * e.g., SPRINT-2025-12-epic006-sprint2.md -> e006_s02
106
+ */
107
+ function extractSprintIdFromFilename(filePath) {
108
+ const filename = path.basename(filePath);
109
+ // Pattern: e015-s03 format
110
+ const directMatch = filename.match(/e(\d{3})-s(\d{2})/i);
111
+ if (directMatch) {
112
+ return `e${directMatch[1]}_s${directMatch[2]}`;
113
+ }
114
+ // Pattern: epic006-sprint2 format
115
+ const legacyMatch = filename.match(/epic(\d{1,3})-sprint(\d+)/i);
116
+ if (legacyMatch) {
117
+ const epicNum = legacyMatch[1].padStart(3, '0');
118
+ const sprintNum = legacyMatch[2].padStart(2, '0');
119
+ return `e${epicNum}_s${sprintNum}`;
120
+ }
121
+ return null;
122
+ }
123
+ /**
124
+ * Parse tasks from sprint markdown content
125
+ * Supports two formats:
126
+ * 1. Block format with **ID:** and **Status:** lines
127
+ * 2. Simple list format: - [x] e015_s03_t01 - Description
128
+ */
129
+ export function parseTasksFromMarkdown(content, sprintFile, sprintId) {
130
+ const tasks = [];
131
+ const lines = content.split('\n');
132
+ let currentTaskId = null;
133
+ for (let i = 0; i < lines.length; i++) {
134
+ const line = lines[i];
135
+ // Format 1: Block format with **ID:** line
136
+ const idMatch = line.match(/\*\*ID:\*\*\s*(\w+)/);
137
+ if (idMatch) {
138
+ currentTaskId = idMatch[1];
139
+ continue;
140
+ }
141
+ // Format 1: Block format **Status:** line
142
+ const blockStatusMatch = line.match(/\*\*Status:\*\*\s*\[([ xX@Z])\]/);
143
+ if (blockStatusMatch && currentTaskId) {
144
+ const checkbox = blockStatusMatch[1];
145
+ tasks.push({
146
+ id: currentTaskId,
147
+ currentStatus: checkboxDisplay(checkbox),
148
+ targetStatus: checkboxToStatus(checkbox),
149
+ sprintId,
150
+ sprintFile,
151
+ lineNumber: i + 1,
152
+ });
153
+ currentTaskId = null;
154
+ continue;
155
+ }
156
+ // Format 2: Simple list format - [x] task_id - Description
157
+ // Matches: - [x] e015_s03_t01 - Description
158
+ // Also matches: - [x] TASK-1 - Description
159
+ const listMatch = line.match(/^[-*]\s*\[([ xX@Z])\]\s*(e\d{3}_s\d{2}_t\d{2}|TASK-\d+)/);
160
+ if (listMatch) {
161
+ const checkbox = listMatch[1];
162
+ const taskId = listMatch[2];
163
+ tasks.push({
164
+ id: taskId,
165
+ currentStatus: checkboxDisplay(checkbox),
166
+ targetStatus: checkboxToStatus(checkbox),
167
+ sprintId,
168
+ sprintFile,
169
+ lineNumber: i + 1,
170
+ });
171
+ }
172
+ }
173
+ return tasks;
174
+ }
175
+ // =============================================================================
176
+ // Migration Logic
177
+ // =============================================================================
178
+ /**
179
+ * Scan all sprint files and build migration plan
180
+ */
181
+ export async function buildMigrationPlan(projectRoot) {
182
+ const sprintFiles = await findSprintFiles(projectRoot);
183
+ const allTasks = [];
184
+ for (const filePath of sprintFiles) {
185
+ const content = await fs.readFile(filePath, 'utf-8');
186
+ // Extract sprint ID
187
+ const sprintId = extractSprintIdFromContent(content) || extractSprintIdFromFilename(filePath);
188
+ if (!sprintId) {
189
+ console.warn(chalk.yellow(` Warning: Could not determine sprint ID for ${path.basename(filePath)}`));
190
+ continue;
191
+ }
192
+ const tasks = parseTasksFromMarkdown(content, filePath, sprintId);
193
+ allTasks.push(...tasks);
194
+ }
195
+ return allTasks;
196
+ }
197
+ /**
198
+ * Execute the migration
199
+ */
200
+ export async function executeMigration(tasks, options = {}) {
201
+ const report = {
202
+ totalTasks: tasks.length,
203
+ toUpdate: [],
204
+ noChange: [],
205
+ errors: [],
206
+ updated: [],
207
+ skipped: [],
208
+ };
209
+ // Get graph ID
210
+ const graphId = process.env.GINKO_GRAPH_ID || (await getGraphId());
211
+ if (!graphId) {
212
+ console.error(chalk.red('Error: Graph not initialized. Run `ginko graph init` first.'));
213
+ process.exit(1);
214
+ }
215
+ const client = new GraphApiClient();
216
+ // Check current status for each task and categorize
217
+ console.log(chalk.dim('Checking current graph status...'));
218
+ for (const task of tasks) {
219
+ try {
220
+ const currentGraphStatus = await client.getTaskStatus(graphId, task.id);
221
+ if (currentGraphStatus.status === task.targetStatus) {
222
+ report.noChange.push(task);
223
+ }
224
+ else {
225
+ report.toUpdate.push(task);
226
+ }
227
+ }
228
+ catch (error) {
229
+ // Task might not exist in graph - treat as needing update
230
+ if (error instanceof Error && error.message.includes('not found')) {
231
+ report.toUpdate.push(task);
232
+ }
233
+ else {
234
+ // Other errors - still try to update
235
+ report.toUpdate.push(task);
236
+ }
237
+ }
238
+ }
239
+ // If dry run, just return the plan
240
+ if (options.dryRun) {
241
+ return report;
242
+ }
243
+ // Execute updates
244
+ console.log(chalk.cyan('\nMigrating task statuses...'));
245
+ for (const task of report.toUpdate) {
246
+ try {
247
+ await client.updateTaskStatus(graphId, task.id, task.targetStatus);
248
+ report.updated.push(task);
249
+ if (options.verbose) {
250
+ console.log(chalk.green(` ✓ ${task.id}: ${task.currentStatus} -> ${task.targetStatus}`));
251
+ }
252
+ }
253
+ catch (error) {
254
+ const errorMsg = error instanceof Error ? error.message : String(error);
255
+ report.errors.push({ task, error: errorMsg });
256
+ if (options.verbose) {
257
+ console.log(chalk.red(` ✗ ${task.id}: ${errorMsg}`));
258
+ }
259
+ }
260
+ }
261
+ return report;
262
+ }
263
+ /**
264
+ * Main migration command entry point
265
+ */
266
+ export async function runStatusMigration(options = {}) {
267
+ const projectRoot = process.cwd();
268
+ const { dryRun = false, verbose = false } = options;
269
+ console.log(chalk.bold('\nStatus Migration: Markdown -> Graph\n'));
270
+ // Build migration plan
271
+ console.log(chalk.dim('Scanning sprint files...'));
272
+ const tasks = await buildMigrationPlan(projectRoot);
273
+ if (tasks.length === 0) {
274
+ console.log(chalk.yellow('No tasks found in sprint files.'));
275
+ console.log(chalk.dim(' Expected files in: docs/sprints/SPRINT-*.md'));
276
+ return;
277
+ }
278
+ console.log(chalk.dim(`Found ${tasks.length} tasks in sprint files.\n`));
279
+ // Execute migration
280
+ const report = await executeMigration(tasks, { dryRun, verbose });
281
+ // Display report
282
+ console.log(chalk.bold('\n--- Migration Report ---\n'));
283
+ if (dryRun) {
284
+ console.log(chalk.cyan('DRY RUN - No changes made\n'));
285
+ console.log(chalk.bold('Migration Plan:'));
286
+ console.log(` Tasks to update: ${chalk.cyan(report.toUpdate.length)}`);
287
+ console.log(` Already in sync: ${chalk.dim(report.noChange.length)}`);
288
+ console.log(` Total tasks: ${report.totalTasks}`);
289
+ // Show tasks to update in verbose mode
290
+ if (verbose) {
291
+ if (report.toUpdate.length > 0) {
292
+ console.log(chalk.bold('\nTasks to update:'));
293
+ for (const task of report.toUpdate) {
294
+ console.log(` ${chalk.cyan(task.id)}: ${chalk.yellow(task.currentStatus)} -> ${chalk.green(task.targetStatus)}`);
295
+ }
296
+ }
297
+ else {
298
+ console.log(chalk.dim('\nAll tasks already in sync with graph.'));
299
+ }
300
+ }
301
+ console.log(chalk.dim('\nRun without --dry-run to apply changes.'));
302
+ }
303
+ else {
304
+ console.log(chalk.bold('Results:'));
305
+ console.log(` Updated: ${chalk.green(report.updated.length)}`);
306
+ console.log(` No change: ${chalk.dim(report.noChange.length)}`);
307
+ console.log(` Errors: ${report.errors.length > 0 ? chalk.red(report.errors.length) : chalk.dim('0')}`);
308
+ console.log(` Total: ${report.totalTasks}`);
309
+ if (report.errors.length > 0) {
310
+ console.log(chalk.bold('\nErrors:'));
311
+ for (const { task, error } of report.errors) {
312
+ console.log(chalk.red(` ${task.id}: ${error}`));
313
+ }
314
+ }
315
+ if (report.updated.length > 0) {
316
+ console.log(chalk.green('\n✓ Migration complete'));
317
+ }
318
+ else if (report.errors.length === 0) {
319
+ console.log(chalk.dim('\nNo updates needed - already in sync'));
320
+ }
321
+ }
322
+ }
323
+ //# sourceMappingURL=status-migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-migration.js","sourceRoot":"","sources":["../../../src/commands/migrate/status-migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @fileType: command-index
3
+ * @status: current
4
+ * @updated: 2026-01-26
5
+ * @tags: [cli, nudging, coaching, command, epic-016-s05]
6
+ * @related: [coaching-level.ts, adoption-score.ts]
7
+ * @priority: high
8
+ * @complexity: low
9
+ * @dependencies: [commander, chalk]
10
+ */
11
+ /**
12
+ * ginko nudging - Manual override for coaching intensity (EPIC-016 Sprint 5 Task 2)
13
+ *
14
+ * Usage:
15
+ * ginko nudging # View current level
16
+ * ginko nudging minimal # Set to minimal (expert mode)
17
+ * ginko nudging standard # Set to balanced guidance
18
+ * ginko nudging supportive # Set to extra help
19
+ * ginko nudging auto # Return to auto-adjustment
20
+ */
21
+ import { Command } from 'commander';
22
+ export declare function nudgingCommand(): Command;
23
+ export default nudgingCommand;
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/nudging/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiJpC,wBAAgB,cAAc,IAAI,OAAO,CAoCxC;AAED,eAAe,cAAc,CAAC"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * @fileType: command-index
3
+ * @status: current
4
+ * @updated: 2026-01-26
5
+ * @tags: [cli, nudging, coaching, command, epic-016-s05]
6
+ * @related: [coaching-level.ts, adoption-score.ts]
7
+ * @priority: high
8
+ * @complexity: low
9
+ * @dependencies: [commander, chalk]
10
+ */
11
+ /**
12
+ * ginko nudging - Manual override for coaching intensity (EPIC-016 Sprint 5 Task 2)
13
+ *
14
+ * Usage:
15
+ * ginko nudging # View current level
16
+ * ginko nudging minimal # Set to minimal (expert mode)
17
+ * ginko nudging standard # Set to balanced guidance
18
+ * ginko nudging supportive # Set to extra help
19
+ * ginko nudging auto # Return to auto-adjustment
20
+ */
21
+ import { Command } from 'commander';
22
+ import chalk from 'chalk';
23
+ import { getCoachingContext, setCoachingOverride, } from '../../lib/coaching-level.js';
24
+ import { getGraphId } from '../graph/config.js';
25
+ import { logCoachingLevelChange } from '../../lib/event-logger.js';
26
+ // =============================================================================
27
+ // Level Descriptions
28
+ // =============================================================================
29
+ const LEVEL_INFO = {
30
+ minimal: {
31
+ emoji: '🚀',
32
+ label: 'Minimal',
33
+ description: 'Brief prompts, assume competence',
34
+ },
35
+ standard: {
36
+ emoji: '📋',
37
+ label: 'Standard',
38
+ description: 'Balanced guidance with context',
39
+ },
40
+ supportive: {
41
+ emoji: '🤝',
42
+ label: 'Supportive',
43
+ description: 'Detailed prompts with examples',
44
+ },
45
+ };
46
+ const SOURCE_LABELS = {
47
+ dashboard: 'Live dashboard insights',
48
+ cache: 'Cached insights',
49
+ adoption_fallback: 'Local adoption score (offline)',
50
+ };
51
+ // =============================================================================
52
+ // Display Helpers
53
+ // =============================================================================
54
+ function formatScore(score) {
55
+ if (score >= 75)
56
+ return chalk.green(`${score}`);
57
+ if (score >= 60)
58
+ return chalk.yellow(`${score}`);
59
+ return chalk.red(`${score}`);
60
+ }
61
+ function formatLevel(level) {
62
+ const info = LEVEL_INFO[level];
63
+ return `${info.emoji} ${info.label}`;
64
+ }
65
+ // =============================================================================
66
+ // View Command
67
+ // =============================================================================
68
+ async function viewNudgingStatus() {
69
+ const graphId = await getGraphId();
70
+ const context = await getCoachingContext(graphId || undefined);
71
+ console.log(chalk.cyan('\n🎯 Coaching Settings\n'));
72
+ // Current level
73
+ const levelInfo = LEVEL_INFO[context.level];
74
+ console.log(` Current level: ${formatLevel(context.level)}`);
75
+ console.log(chalk.dim(` ${levelInfo.description}`));
76
+ // Score info
77
+ console.log(`\n 7-day score: ${formatScore(context.overallScore)}/100`);
78
+ // Category breakdown
79
+ console.log(chalk.dim('\n Category Breakdown:'));
80
+ console.log(chalk.dim(` Session Efficiency: ${context.metrics.sessionEfficiency}`));
81
+ console.log(chalk.dim(` Pattern Adoption: ${context.metrics.patternAdoption}`));
82
+ console.log(chalk.dim(` Collaboration Quality: ${context.metrics.collaborationQuality}`));
83
+ console.log(chalk.dim(` Anti-Patterns: ${context.metrics.antiPatterns}`));
84
+ // Source
85
+ console.log(chalk.dim(`\n Data source: ${SOURCE_LABELS[context.source]}`));
86
+ if (context.cacheAge !== undefined) {
87
+ console.log(chalk.dim(` Cache age: ${context.cacheAge} minutes`));
88
+ }
89
+ // Override status
90
+ if (context.override) {
91
+ console.log(chalk.yellow(`\n ⚠️ Manual override active: ${context.override}`));
92
+ console.log(chalk.dim(' Run `ginko nudging auto` to return to auto-adjustment'));
93
+ }
94
+ else {
95
+ console.log(chalk.green('\n ✓ Auto-adjusting based on 7-day insights'));
96
+ }
97
+ console.log('');
98
+ }
99
+ // =============================================================================
100
+ // Set Command
101
+ // =============================================================================
102
+ async function setNudgingLevel(level) {
103
+ // Validate level
104
+ const validLevels = ['minimal', 'standard', 'supportive', 'auto'];
105
+ if (!validLevels.includes(level)) {
106
+ console.error(chalk.red(`\n✗ Invalid level: ${level}`));
107
+ console.error(chalk.dim(` Valid options: ${validLevels.join(', ')}`));
108
+ process.exit(1);
109
+ }
110
+ // Get previous level before changing
111
+ const graphId = await getGraphId();
112
+ const previousContext = await getCoachingContext(graphId || undefined);
113
+ const previousLevel = previousContext.level;
114
+ await setCoachingOverride(level);
115
+ if (level === 'auto') {
116
+ // Fetch current auto level
117
+ const context = await getCoachingContext(graphId || undefined);
118
+ console.log(chalk.green('\n✓ Coaching returned to auto-adjustment'));
119
+ console.log(` Current level: ${formatLevel(context.level)} (score: ${context.overallScore})`);
120
+ // EPIC-016 Sprint 5 t05: Log level change for feedback loop
121
+ logCoachingLevelChange(context.level, false, context.overallScore, previousLevel).catch(() => {
122
+ // Non-critical - don't fail on logging errors
123
+ });
124
+ }
125
+ else {
126
+ const info = LEVEL_INFO[level];
127
+ console.log(chalk.green(`\n✓ Coaching set to: ${info.emoji} ${info.label}`));
128
+ console.log(chalk.dim(` ${info.description}`));
129
+ console.log(chalk.dim('\n Override active until: ginko nudging auto'));
130
+ // EPIC-016 Sprint 5 t05: Log level change for feedback loop
131
+ logCoachingLevelChange(level, true, previousContext.overallScore, previousLevel).catch(() => {
132
+ // Non-critical - don't fail on logging errors
133
+ });
134
+ }
135
+ console.log('');
136
+ }
137
+ // =============================================================================
138
+ // Command Registration
139
+ // =============================================================================
140
+ export function nudgingCommand() {
141
+ const nudging = new Command('nudging')
142
+ .description('Configure coaching intensity (EPIC-016 Sprint 5)')
143
+ .argument('[level]', 'Set coaching level: minimal, standard, supportive, or auto')
144
+ .action(async (level) => {
145
+ try {
146
+ if (level) {
147
+ await setNudgingLevel(level);
148
+ }
149
+ else {
150
+ await viewNudgingStatus();
151
+ }
152
+ }
153
+ catch (error) {
154
+ console.error(chalk.red('Error:'), error instanceof Error ? error.message : String(error));
155
+ process.exit(1);
156
+ }
157
+ });
158
+ // Add help examples
159
+ nudging.addHelpText('after', `
160
+ Examples:
161
+ $ ginko nudging # View current coaching level
162
+ $ ginko nudging minimal # Expert mode - brief prompts
163
+ $ ginko nudging standard # Balanced guidance
164
+ $ ginko nudging supportive # Extra help and examples
165
+ $ ginko nudging auto # Return to auto-adjustment
166
+
167
+ Levels are determined by your 7-day insight score:
168
+ ≥75 → Minimal (assume competence)
169
+ 60-74 → Standard (balanced guidance)
170
+ <60 → Supportive (detailed prompts)
171
+ `);
172
+ return nudging;
173
+ }
174
+ export default nudgingCommand;
175
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/nudging/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @fileType: command
3
+ * @status: current
4
+ * @updated: 2026-01-26
5
+ * @tags: [sprint, create, conversational, ai, epic-016-s04]
6
+ * @related: [index.ts, quick-fix.ts, ../../lib/planning-menu.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: [prompts, chalk, ora, ai-service]
10
+ */
11
+ export interface CreateSprintResult {
12
+ success: boolean;
13
+ sprintId?: string;
14
+ taskCount?: number;
15
+ message?: string;
16
+ }
17
+ interface CreateSprintOptions {
18
+ adhoc?: boolean;
19
+ epic?: string;
20
+ }
21
+ /**
22
+ * Create a new feature sprint (conversational flow)
23
+ */
24
+ export declare function createSprintCommand(options?: CreateSprintOptions): Promise<CreateSprintResult>;
25
+ export default createSprintCommand;
26
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/sprint/create.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAuCH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,mBAAmB;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAuKD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAiH7B;AAGD,eAAe,mBAAmB,CAAC"}