@ginkoai/cli 2.1.0 → 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 (84) hide show
  1. package/dist/commands/graph/api-client.d.ts +12 -1
  2. package/dist/commands/graph/api-client.d.ts.map +1 -1
  3. package/dist/commands/graph/api-client.js +16 -2
  4. package/dist/commands/graph/api-client.js.map +1 -1
  5. package/dist/commands/handoff.d.ts +3 -3
  6. package/dist/commands/handoff.d.ts.map +1 -1
  7. package/dist/commands/handoff.js +32 -3
  8. package/dist/commands/handoff.js.map +1 -1
  9. package/dist/commands/nudging/index.d.ts +24 -0
  10. package/dist/commands/nudging/index.d.ts.map +1 -0
  11. package/dist/commands/nudging/index.js +175 -0
  12. package/dist/commands/nudging/index.js.map +1 -0
  13. package/dist/commands/sprint/create.d.ts +26 -0
  14. package/dist/commands/sprint/create.d.ts.map +1 -0
  15. package/dist/commands/sprint/create.js +269 -0
  16. package/dist/commands/sprint/create.js.map +1 -0
  17. package/dist/commands/sprint/index.d.ts.map +1 -1
  18. package/dist/commands/sprint/index.js +24 -0
  19. package/dist/commands/sprint/index.js.map +1 -1
  20. package/dist/commands/sprint/quick-fix.d.ts +25 -0
  21. package/dist/commands/sprint/quick-fix.d.ts.map +1 -0
  22. package/dist/commands/sprint/quick-fix.js +151 -0
  23. package/dist/commands/sprint/quick-fix.js.map +1 -0
  24. package/dist/commands/sprint/sprint-pipeline-enhanced.d.ts.map +1 -1
  25. package/dist/commands/sprint/sprint-pipeline-enhanced.js +37 -0
  26. package/dist/commands/sprint/sprint-pipeline-enhanced.js.map +1 -1
  27. package/dist/commands/sprint/status.d.ts.map +1 -1
  28. package/dist/commands/sprint/status.js +21 -1
  29. package/dist/commands/sprint/status.js.map +1 -1
  30. package/dist/commands/start/start-reflection.d.ts +14 -0
  31. package/dist/commands/start/start-reflection.d.ts.map +1 -1
  32. package/dist/commands/start/start-reflection.js +180 -9
  33. package/dist/commands/start/start-reflection.js.map +1 -1
  34. package/dist/commands/task/status.d.ts +3 -0
  35. package/dist/commands/task/status.d.ts.map +1 -1
  36. package/dist/commands/task/status.js +48 -1
  37. package/dist/commands/task/status.js.map +1 -1
  38. package/dist/commands/team/index.d.ts +5 -0
  39. package/dist/commands/team/index.d.ts.map +1 -1
  40. package/dist/commands/team/index.js +28 -0
  41. package/dist/commands/team/index.js.map +1 -1
  42. package/dist/commands/team/status.d.ts +16 -0
  43. package/dist/commands/team/status.d.ts.map +1 -0
  44. package/dist/commands/team/status.js +180 -0
  45. package/dist/commands/team/status.js.map +1 -0
  46. package/dist/index.js +10 -3
  47. package/dist/index.js.map +1 -1
  48. package/dist/lib/adoption-score.d.ts +69 -0
  49. package/dist/lib/adoption-score.d.ts.map +1 -0
  50. package/dist/lib/adoption-score.js +206 -0
  51. package/dist/lib/adoption-score.js.map +1 -0
  52. package/dist/lib/coaching-level.d.ts +127 -0
  53. package/dist/lib/coaching-level.d.ts.map +1 -0
  54. package/dist/lib/coaching-level.js +406 -0
  55. package/dist/lib/coaching-level.js.map +1 -0
  56. package/dist/lib/event-logger.d.ts +42 -0
  57. package/dist/lib/event-logger.d.ts.map +1 -1
  58. package/dist/lib/event-logger.js +77 -0
  59. package/dist/lib/event-logger.js.map +1 -1
  60. package/dist/lib/planning-menu.d.ts +69 -0
  61. package/dist/lib/planning-menu.d.ts.map +1 -0
  62. package/dist/lib/planning-menu.js +342 -0
  63. package/dist/lib/planning-menu.js.map +1 -0
  64. package/dist/lib/targeted-coaching.d.ts +71 -0
  65. package/dist/lib/targeted-coaching.d.ts.map +1 -0
  66. package/dist/lib/targeted-coaching.js +318 -0
  67. package/dist/lib/targeted-coaching.js.map +1 -0
  68. package/dist/lib/task-parser.d.ts +2 -0
  69. package/dist/lib/task-parser.d.ts.map +1 -1
  70. package/dist/lib/task-parser.js +23 -0
  71. package/dist/lib/task-parser.js.map +1 -1
  72. package/dist/lib/user-sprint.d.ts +53 -0
  73. package/dist/lib/user-sprint.d.ts.map +1 -1
  74. package/dist/lib/user-sprint.js +137 -2
  75. package/dist/lib/user-sprint.js.map +1 -1
  76. package/dist/lib/work-reconciliation.d.ts +59 -0
  77. package/dist/lib/work-reconciliation.d.ts.map +1 -0
  78. package/dist/lib/work-reconciliation.js +267 -0
  79. package/dist/lib/work-reconciliation.js.map +1 -0
  80. package/dist/utils/version-check.d.ts +26 -0
  81. package/dist/utils/version-check.d.ts.map +1 -0
  82. package/dist/utils/version-check.js +186 -0
  83. package/dist/utils/version-check.js.map +1 -0
  84. package/package.json +2 -2
@@ -276,4 +276,81 @@ export async function clearEvents() {
276
276
  console.error('[EventLogger] Failed to clear events:', error instanceof Error ? error.message : String(error));
277
277
  }
278
278
  }
279
+ /**
280
+ * Log a coaching interaction event (EPIC-016 Sprint 5 Task 5)
281
+ *
282
+ * Tracks coaching interactions for future analysis:
283
+ * - Planning menu selections over time
284
+ * - Time from "no structure" to "structured work"
285
+ * - User override patterns
286
+ * - Correlation between coaching level and adoption
287
+ *
288
+ * @param data - Coaching event data
289
+ */
290
+ export async function logCoachingEvent(data) {
291
+ const description = formatCoachingDescription(data);
292
+ await logEvent({
293
+ category: 'insight',
294
+ description,
295
+ tags: ['coaching-data', `coaching-${data.type}`, `level-${data.coachingLevel || 'unknown'}`],
296
+ impact: 'low',
297
+ });
298
+ }
299
+ /**
300
+ * Format coaching event description for logging
301
+ */
302
+ function formatCoachingDescription(data) {
303
+ switch (data.type) {
304
+ case 'planning_menu_shown':
305
+ return `Planning menu shown (coaching level: ${data.coachingLevel}, score: ${data.overallScore})`;
306
+ case 'planning_menu_selection':
307
+ return `Planning menu selection: ${data.selection} (coaching level: ${data.coachingLevel})`;
308
+ case 'coaching_level_auto':
309
+ return `Coaching level auto-adjusted to ${data.coachingLevel} (score: ${data.overallScore})`;
310
+ case 'coaching_level_override':
311
+ return `Coaching level manually set to ${data.coachingLevel} (previous: ${data.previousLevel})`;
312
+ case 'targeted_tip_shown':
313
+ return `Targeted coaching tip shown: ${data.tipId} (metric: ${data.metric}, level: ${data.coachingLevel})`;
314
+ case 'session_with_structure':
315
+ return `Session started with structured work (coaching level: ${data.coachingLevel})`;
316
+ case 'session_without_structure':
317
+ return `Session started without structure, menu shown (coaching level: ${data.coachingLevel})`;
318
+ default:
319
+ return `Coaching event: ${data.type}`;
320
+ }
321
+ }
322
+ /**
323
+ * Log planning menu interaction
324
+ */
325
+ export async function logPlanningMenuEvent(selection, coachingLevel, overallScore) {
326
+ await logCoachingEvent({
327
+ type: 'planning_menu_selection',
328
+ selection,
329
+ coachingLevel,
330
+ overallScore,
331
+ });
332
+ }
333
+ /**
334
+ * Log coaching level change
335
+ */
336
+ export async function logCoachingLevelChange(newLevel, isOverride, overallScore, previousLevel) {
337
+ await logCoachingEvent({
338
+ type: isOverride ? 'coaching_level_override' : 'coaching_level_auto',
339
+ coachingLevel: newLevel,
340
+ overallScore,
341
+ override: isOverride,
342
+ previousLevel,
343
+ });
344
+ }
345
+ /**
346
+ * Log targeted tip shown
347
+ */
348
+ export async function logTargetedTipShown(tipId, metric, coachingLevel) {
349
+ await logCoachingEvent({
350
+ type: 'targeted_tip_shown',
351
+ tipId,
352
+ metric,
353
+ coachingLevel,
354
+ });
355
+ }
279
356
  //# sourceMappingURL=event-logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"event-logger.js","sourceRoot":"","sources":["../../src/lib/event-logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-logger.js","sourceRoot":"","sources":["../../src/lib/event-logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2026-01-26
5
+ * @tags: [planning, menu, coaching, structure-detection, epic-016-s04]
6
+ * @related: [start-reflection.ts, user-sprint.ts, event-logger.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: [prompts, chalk, event-logger]
10
+ */
11
+ import { WorkStructureStatus } from './user-sprint.js';
12
+ import { CoachingLevel } from './coaching-level.js';
13
+ export type PlanningChoice = 'epic' | 'sprint' | 'quick-fix' | 'adhoc';
14
+ export interface PlanningMenuResult {
15
+ choice: PlanningChoice | null;
16
+ cancelled: boolean;
17
+ }
18
+ export interface PlanningRouteResult {
19
+ success: boolean;
20
+ sprintId?: string;
21
+ taskId?: string;
22
+ message?: string;
23
+ shouldContinueStart?: boolean;
24
+ }
25
+ /**
26
+ * Display the guided planning menu and get user selection
27
+ *
28
+ * Called when ginko start detects no structured work.
29
+ * Logs selection for coaching insights analysis (t05).
30
+ * Uses adoption-based quieting to adjust verbosity.
31
+ *
32
+ * @param status - Work structure status from checkWorkStructure()
33
+ * @returns Menu selection result
34
+ */
35
+ export declare function showPlanningMenu(status?: WorkStructureStatus): Promise<PlanningMenuResult>;
36
+ /**
37
+ * Log the planning menu selection for coaching analysis (t05)
38
+ *
39
+ * Enables the insights system to:
40
+ * - Track pattern adoption over time
41
+ * - Identify users who frequently choose ad-hoc
42
+ * - Measure effectiveness of planning prompts
43
+ *
44
+ * Also records adoption signals for quieting behavior.
45
+ */
46
+ declare function logPlanningChoice(choice: PlanningChoice, coachingLevel?: CoachingLevel, overallScore?: number): Promise<void>;
47
+ /**
48
+ * Route the planning menu choice to appropriate handler
49
+ *
50
+ * Routes:
51
+ * - epic → launches ginko epic command
52
+ * - sprint → launches sprint creation flow (t03)
53
+ * - quick-fix → launches quick-fix flow (t04)
54
+ * - adhoc → marks session as ad-hoc, continues to normal start
55
+ *
56
+ * @param choice - User's menu selection
57
+ * @returns Route result with success status and metadata
58
+ */
59
+ export declare function routePlanningChoice(choice: PlanningChoice): Promise<PlanningRouteResult>;
60
+ export declare const __testing: {
61
+ PLANNING_MENU_CHOICES: {
62
+ title: string;
63
+ description: string;
64
+ value: PlanningChoice;
65
+ }[];
66
+ logPlanningChoice: typeof logPlanningChoice;
67
+ };
68
+ export {};
69
+ //# sourceMappingURL=planning-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning-menu.d.ts","sourceRoot":"","sources":["../../src/lib/planning-menu.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAkBH,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAWvD,OAAO,EAEL,aAAa,EAId,MAAM,qBAAqB,CAAC;AAO7B,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;AAEvE,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAiCD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CA0E7B;AAED;;;;;;;;;GASG;AACH,iBAAe,iBAAiB,CAC9B,MAAM,EAAE,cAAc,EACtB,aAAa,CAAC,EAAE,aAAa,EAC7B,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAsCf;AAMD;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,mBAAmB,CAAC,CAiB9B;AAkJD,eAAO,MAAM,SAAS;;;;eA1VD,cAAc;;;CA6VlC,CAAC"}
@@ -0,0 +1,342 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2026-01-26
5
+ * @tags: [planning, menu, coaching, structure-detection, epic-016-s04]
6
+ * @related: [start-reflection.ts, user-sprint.ts, event-logger.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: [prompts, chalk, event-logger]
10
+ */
11
+ /**
12
+ * Guided Planning Menu (EPIC-016 Sprint 4 t02)
13
+ *
14
+ * Shows a menu when `ginko start` detects no structured work.
15
+ * Guides users toward Epic→Sprint→Task structure while allowing
16
+ * ad-hoc work when appropriate.
17
+ *
18
+ * Menu Options:
19
+ * [a] New Epic - Large initiative with multiple sprints
20
+ * [b] New Feature Sprint - Focused work with clear goals
21
+ * [c] Quick fix / Bug fix - Single task, minimal overhead
22
+ * [d] Something else - Explore, research, or work ad-hoc
23
+ */
24
+ import prompts from 'prompts';
25
+ import chalk from 'chalk';
26
+ import { logEvent, logPlanningMenuEvent } from './event-logger.js';
27
+ // EPIC-016 Sprint 4: Adoption-based quieting (t05)
28
+ import { getAdoptionScore, recordAdoptionSignal, getPlanningMenuConfig, checkAdhocStreak } from './adoption-score.js';
29
+ // EPIC-016 Sprint 5: Adaptive coaching based on insight scores (t01)
30
+ import { getCoachingContext, PROMPT_VARIANTS, selectPrompt, getTargetedCoachingSuggestions, } from './coaching-level.js';
31
+ import { getGraphId } from '../commands/graph/config.js';
32
+ // =============================================================================
33
+ // Constants
34
+ // =============================================================================
35
+ const PLANNING_MENU_CHOICES = [
36
+ {
37
+ title: 'New Epic',
38
+ description: 'Large initiative with multiple sprints (launches ginko epic)',
39
+ value: 'epic',
40
+ },
41
+ {
42
+ title: 'New Feature Sprint',
43
+ description: 'Focused work with clear goals (guides through sprint creation)',
44
+ value: 'sprint',
45
+ },
46
+ {
47
+ title: 'Quick fix / Bug fix',
48
+ description: 'Single task, minimal overhead (creates 1-task sprint)',
49
+ value: 'quick-fix',
50
+ },
51
+ {
52
+ title: 'Something else',
53
+ description: 'Explore, research, or work ad-hoc (tracked for coaching)',
54
+ value: 'adhoc',
55
+ },
56
+ ];
57
+ // =============================================================================
58
+ // Menu Display
59
+ // =============================================================================
60
+ /**
61
+ * Display the guided planning menu and get user selection
62
+ *
63
+ * Called when ginko start detects no structured work.
64
+ * Logs selection for coaching insights analysis (t05).
65
+ * Uses adoption-based quieting to adjust verbosity.
66
+ *
67
+ * @param status - Work structure status from checkWorkStructure()
68
+ * @returns Menu selection result
69
+ */
70
+ export async function showPlanningMenu(status) {
71
+ // EPIC-016 Sprint 4 t05: Get quieting configuration based on adoption level
72
+ const menuConfig = await getPlanningMenuConfig();
73
+ const adoptionScore = await getAdoptionScore();
74
+ // EPIC-016 Sprint 5 t01: Get coaching context based on insight scores
75
+ const graphId = await getGraphId().catch(() => null);
76
+ const coachingContext = await getCoachingContext(graphId || undefined);
77
+ const coachingLevel = coachingContext.level;
78
+ console.log('');
79
+ // Check for ad-hoc streak (3+ consecutive sessions resets score)
80
+ if (status?.consecutiveAdhocSessions) {
81
+ await checkAdhocStreak(status.consecutiveAdhocSessions);
82
+ }
83
+ // EPIC-016 Sprint 5 t03: Show targeted coaching for low metrics
84
+ if (coachingLevel === 'supportive') {
85
+ const suggestions = getTargetedCoachingSuggestions(coachingContext);
86
+ if (suggestions.length > 0) {
87
+ console.log(chalk.cyan('💡 Coaching tip:'));
88
+ console.log(chalk.dim(` ${suggestions[0]}`));
89
+ console.log('');
90
+ }
91
+ }
92
+ // Show context-appropriate header based on coaching level
93
+ if (menuConfig.showCelebration && adoptionScore.score >= 20) {
94
+ console.log(chalk.green('🌳 Great job staying organized!'));
95
+ }
96
+ if (status?.reason === 'all_tasks_complete') {
97
+ // Use coaching-level variant for sprint complete message
98
+ const message = selectPrompt(PROMPT_VARIANTS.sprintComplete, coachingLevel);
99
+ console.log(message);
100
+ }
101
+ else if (menuConfig.showCoachingTip && status?.consecutiveAdhocSessions && status.consecutiveAdhocSessions > 1) {
102
+ console.log(chalk.yellow(`💡 You've had ${status.consecutiveAdhocSessions} sessions without planned work.`));
103
+ console.log(chalk.white('Would you like to plan your work?'));
104
+ }
105
+ else {
106
+ // Use coaching-level variant for no structure message
107
+ const message = selectPrompt(PROMPT_VARIANTS.noStructure, coachingLevel);
108
+ console.log(message);
109
+ }
110
+ console.log('');
111
+ // Build menu choices based on quieting level
112
+ const choices = PLANNING_MENU_CHOICES.map((c, i) => ({
113
+ title: `${chalk.cyan(`[${String.fromCharCode(97 + i)}]`)} ${c.title}`,
114
+ description: menuConfig.showFullDescription ? chalk.dim(c.description) : undefined,
115
+ value: c.value,
116
+ }));
117
+ const response = await prompts({
118
+ type: 'select',
119
+ name: 'choice',
120
+ message: 'Select an option',
121
+ choices,
122
+ initial: 0,
123
+ });
124
+ // Handle cancellation (Ctrl+C or ESC)
125
+ if (response.choice === undefined) {
126
+ return { choice: null, cancelled: true };
127
+ }
128
+ // Log selection and record adoption signal (non-blocking)
129
+ // EPIC-016 Sprint 5 t05: Pass coaching context for feedback loop
130
+ logPlanningChoice(response.choice, coachingLevel, coachingContext.overallScore).catch(() => {
131
+ // Ignore logging errors
132
+ });
133
+ return { choice: response.choice, cancelled: false };
134
+ }
135
+ /**
136
+ * Log the planning menu selection for coaching analysis (t05)
137
+ *
138
+ * Enables the insights system to:
139
+ * - Track pattern adoption over time
140
+ * - Identify users who frequently choose ad-hoc
141
+ * - Measure effectiveness of planning prompts
142
+ *
143
+ * Also records adoption signals for quieting behavior.
144
+ */
145
+ async function logPlanningChoice(choice, coachingLevel, overallScore) {
146
+ const descriptions = {
147
+ 'epic': 'Started new epic creation from planning menu',
148
+ 'sprint': 'Started new sprint creation from planning menu',
149
+ 'quick-fix': 'Started quick-fix flow from planning menu',
150
+ 'adhoc': 'Chose ad-hoc work from planning menu',
151
+ };
152
+ // Map menu choices to adoption signals
153
+ const adoptionSignals = {
154
+ 'epic': 'created_epic',
155
+ 'sprint': 'created_sprint',
156
+ 'quick-fix': 'used_quick_fix',
157
+ 'adhoc': 'chose_adhoc',
158
+ };
159
+ try {
160
+ // Log event for insights
161
+ await logEvent({
162
+ category: 'decision',
163
+ description: descriptions[choice],
164
+ tags: ['planning-menu', `choice-${choice}`, 'coaching-data'],
165
+ impact: choice === 'adhoc' ? 'low' : 'medium',
166
+ });
167
+ // EPIC-016 Sprint 5 t05: Log coaching interaction for feedback loop
168
+ if (coachingLevel) {
169
+ await logPlanningMenuEvent(choice, coachingLevel, overallScore);
170
+ }
171
+ // Record adoption signal for quieting behavior (t05)
172
+ const signal = adoptionSignals[choice];
173
+ if (signal) {
174
+ await recordAdoptionSignal(signal);
175
+ }
176
+ }
177
+ catch {
178
+ // Non-critical - don't fail startup if logging fails
179
+ }
180
+ }
181
+ // =============================================================================
182
+ // Route Handlers
183
+ // =============================================================================
184
+ /**
185
+ * Route the planning menu choice to appropriate handler
186
+ *
187
+ * Routes:
188
+ * - epic → launches ginko epic command
189
+ * - sprint → launches sprint creation flow (t03)
190
+ * - quick-fix → launches quick-fix flow (t04)
191
+ * - adhoc → marks session as ad-hoc, continues to normal start
192
+ *
193
+ * @param choice - User's menu selection
194
+ * @returns Route result with success status and metadata
195
+ */
196
+ export async function routePlanningChoice(choice) {
197
+ switch (choice) {
198
+ case 'epic':
199
+ return routeToEpicCreation();
200
+ case 'sprint':
201
+ return routeToSprintCreation();
202
+ case 'quick-fix':
203
+ return routeToQuickFix();
204
+ case 'adhoc':
205
+ return routeToAdhocWork();
206
+ default:
207
+ return { success: false, message: 'Unknown choice', shouldContinueStart: true };
208
+ }
209
+ }
210
+ /**
211
+ * Route to epic creation (ginko epic)
212
+ */
213
+ async function routeToEpicCreation() {
214
+ console.log('');
215
+ console.log(chalk.cyan('🚀 Launching epic creation...'));
216
+ console.log('');
217
+ try {
218
+ // Import and execute epic command
219
+ const { epicCommand } = await import('../commands/epic.js');
220
+ await epicCommand({});
221
+ return {
222
+ success: true,
223
+ message: 'Epic creation flow completed',
224
+ shouldContinueStart: false // Epic command handles its own output
225
+ };
226
+ }
227
+ catch (error) {
228
+ console.error(chalk.red('Failed to launch epic creation:'), error);
229
+ return {
230
+ success: false,
231
+ message: 'Epic creation failed',
232
+ shouldContinueStart: true
233
+ };
234
+ }
235
+ }
236
+ /**
237
+ * Route to sprint creation flow (t03)
238
+ * Full implementation in packages/cli/src/commands/sprint/create.ts
239
+ */
240
+ async function routeToSprintCreation() {
241
+ console.log('');
242
+ console.log(chalk.cyan('📋 Starting sprint creation...'));
243
+ console.log('');
244
+ try {
245
+ // Import and execute sprint create command
246
+ const { createSprintCommand } = await import('../commands/sprint/create.js');
247
+ const result = await createSprintCommand({ adhoc: true });
248
+ return {
249
+ success: result.success,
250
+ sprintId: result.sprintId,
251
+ message: result.message || 'Sprint creation completed',
252
+ shouldContinueStart: !result.success // Continue if creation failed
253
+ };
254
+ }
255
+ catch (error) {
256
+ // Fallback: Sprint creation not yet implemented (t03)
257
+ console.log(chalk.dim('Sprint creation flow launching...'));
258
+ console.log('');
259
+ console.log(chalk.white('To create a sprint, describe what you want to build:'));
260
+ console.log(chalk.dim(' The AI will break this down into tasks and create a sprint.'));
261
+ console.log('');
262
+ return {
263
+ success: true,
264
+ message: 'Sprint creation guidance displayed',
265
+ shouldContinueStart: true
266
+ };
267
+ }
268
+ }
269
+ /**
270
+ * Route to quick-fix flow (t04)
271
+ * Creates a single-task sprint with minimal ceremony
272
+ */
273
+ async function routeToQuickFix() {
274
+ console.log('');
275
+ console.log(chalk.cyan('⚡ Quick fix mode'));
276
+ console.log('');
277
+ // Get quick description
278
+ const response = await prompts({
279
+ type: 'text',
280
+ name: 'description',
281
+ message: 'Describe the fix in one line:',
282
+ validate: (value) => value.trim().length > 5 ? true : 'Please provide a brief description',
283
+ });
284
+ if (!response.description) {
285
+ return { success: false, message: 'Quick fix cancelled', shouldContinueStart: false };
286
+ }
287
+ const description = response.description.trim();
288
+ try {
289
+ // Try to use the quick-fix implementation (t04)
290
+ const { createQuickFixTask } = await import('../commands/sprint/quick-fix.js');
291
+ const result = await createQuickFixTask(description);
292
+ console.log('');
293
+ console.log(chalk.green(`✓ Created: ${result.taskId} - ${description}`));
294
+ console.log(chalk.dim(' Ready to work. Run `ginko task complete` when done.'));
295
+ return {
296
+ success: true,
297
+ taskId: result.taskId,
298
+ sprintId: result.sprintId,
299
+ message: 'Quick fix task created',
300
+ shouldContinueStart: true
301
+ };
302
+ }
303
+ catch {
304
+ // Fallback: Log as an event for now
305
+ console.log('');
306
+ console.log(chalk.green(`✓ Ready to work on: ${description}`));
307
+ console.log(chalk.dim(' Tip: Run `ginko log "completed: ${description}"` when done.'));
308
+ // Log the quick fix start as an event
309
+ await logEvent({
310
+ category: 'feature',
311
+ description: `Quick fix started: ${description}`,
312
+ tags: ['quick-fix', 'unstructured'],
313
+ impact: 'medium',
314
+ }).catch(() => { });
315
+ return {
316
+ success: true,
317
+ message: 'Quick fix tracked (full sprint creation in t04)',
318
+ shouldContinueStart: true
319
+ };
320
+ }
321
+ }
322
+ /**
323
+ * Route to ad-hoc work mode
324
+ * User explicitly chooses unstructured work - track for coaching
325
+ */
326
+ async function routeToAdhocWork() {
327
+ console.log('');
328
+ console.log(chalk.dim('Working ad-hoc. Use `ginko log` to track your progress.'));
329
+ return {
330
+ success: true,
331
+ message: 'Ad-hoc work mode - session will continue normally',
332
+ shouldContinueStart: true
333
+ };
334
+ }
335
+ // =============================================================================
336
+ // Exports for Testing
337
+ // =============================================================================
338
+ export const __testing = {
339
+ PLANNING_MENU_CHOICES,
340
+ logPlanningChoice,
341
+ };
342
+ //# sourceMappingURL=planning-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning-menu.js","sourceRoot":"","sources":["../../src/lib/planning-menu.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2026-01-26
5
+ * @tags: [coaching, insights, targeted, adaptive, epic-016-s05]
6
+ * @related: [coaching-level.ts, start-reflection.ts, handoff.ts]
7
+ * @priority: medium
8
+ * @complexity: medium
9
+ * @dependencies: [fs-extra, path]
10
+ */
11
+ import { CoachingContext } from './coaching-level.js';
12
+ export type MetricType = 'sessionEfficiency' | 'patternAdoption' | 'collaborationQuality' | 'antiPatterns';
13
+ export type CoachingContext_Type = 'start' | 'handoff' | 'task_complete' | 'planning';
14
+ export interface CoachingTip {
15
+ id: string;
16
+ metric: MetricType;
17
+ context: CoachingContext_Type[];
18
+ message: string;
19
+ action?: string;
20
+ priority: number;
21
+ }
22
+ export interface ShownTipsRecord {
23
+ sessionId: string;
24
+ shownTipIds: string[];
25
+ lastUpdated: string;
26
+ }
27
+ /**
28
+ * All available coaching tips organized by metric
29
+ */
30
+ export declare const COACHING_TIPS: CoachingTip[];
31
+ declare function loadShownTips(): Promise<ShownTipsRecord>;
32
+ declare function saveShownTips(record: ShownTipsRecord): Promise<void>;
33
+ declare function markTipAsShown(tipId: string): Promise<void>;
34
+ declare function isTipShown(tipId: string): Promise<boolean>;
35
+ /**
36
+ * Get applicable tips for a given context and coaching context
37
+ *
38
+ * @param coachingCtx - Coaching context with metric scores
39
+ * @param context - Current context (start, handoff, etc.)
40
+ * @param limit - Maximum number of tips to return
41
+ * @returns Array of applicable tips, prioritized
42
+ */
43
+ export declare function getApplicableTips(coachingCtx: CoachingContext, context: CoachingContext_Type, limit?: number): Promise<CoachingTip[]>;
44
+ declare function getMetricValue(ctx: CoachingContext, metric: MetricType): number;
45
+ /**
46
+ * Display a coaching tip to the console
47
+ */
48
+ export declare function displayTip(tip: CoachingTip): void;
49
+ /**
50
+ * Show targeted coaching tips for the current context
51
+ *
52
+ * @param coachingCtx - Coaching context with metric scores
53
+ * @param context - Current context
54
+ * @returns Number of tips shown
55
+ */
56
+ export declare function showTargetedCoaching(coachingCtx: CoachingContext, context: CoachingContext_Type): Promise<number>;
57
+ /**
58
+ * Get coaching tip for a specific metric (for inline use)
59
+ */
60
+ export declare function getTipForMetric(coachingCtx: CoachingContext, metric: MetricType, context: CoachingContext_Type): Promise<string | null>;
61
+ export declare const METRIC_DISPLAY_NAMES: Record<MetricType, string>;
62
+ export declare const __testing: {
63
+ LOW_THRESHOLD: number;
64
+ loadShownTips: typeof loadShownTips;
65
+ saveShownTips: typeof saveShownTips;
66
+ markTipAsShown: typeof markTipAsShown;
67
+ isTipShown: typeof isTipShown;
68
+ getMetricValue: typeof getMetricValue;
69
+ };
70
+ export {};
71
+ //# sourceMappingURL=targeted-coaching.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"targeted-coaching.d.ts","sourceRoot":"","sources":["../../src/lib/targeted-coaching.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAyBH,OAAO,EAAE,eAAe,EAAe,MAAM,qBAAqB,CAAC;AAOnE,MAAM,MAAM,UAAU,GAAG,mBAAmB,GAAG,iBAAiB,GAAG,sBAAsB,GAAG,cAAc,CAAC;AAC3G,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,SAAS,GAAG,eAAe,GAAG,UAAU,CAAC;AAEtF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AASD;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,WAAW,EAmGtC,CAAC;AAaF,iBAAe,aAAa,IAAI,OAAO,CAAC,eAAe,CAAC,CA0BvD;AAED,iBAAe,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAKnE;AAMD,iBAAe,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM1D;AAED,iBAAe,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGzD;AAMD;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,eAAe,EAC5B,OAAO,EAAE,oBAAoB,EAC7B,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,WAAW,EAAE,CAAC,CAiCxB;AAED,iBAAS,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAWxE;AAMD;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAQjD;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,eAAe,EAC5B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAcjB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,eAAe,EAC5B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAIxB;AAmBD,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAK3D,CAAC;AAMF,eAAO,MAAM,SAAS;;;;;;;CAOrB,CAAC"}