@ginkoai/cli 2.1.0 → 2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/graph/api-client.d.ts +36 -1
- package/dist/commands/graph/api-client.d.ts.map +1 -1
- package/dist/commands/graph/api-client.js +32 -2
- package/dist/commands/graph/api-client.js.map +1 -1
- package/dist/commands/graph/config.d.ts +6 -1
- package/dist/commands/graph/config.d.ts.map +1 -1
- package/dist/commands/graph/config.js +9 -1
- package/dist/commands/graph/config.js.map +1 -1
- package/dist/commands/graph/init.d.ts +1 -1
- package/dist/commands/graph/init.d.ts.map +1 -1
- package/dist/commands/graph/init.js +17 -2
- package/dist/commands/graph/init.js.map +1 -1
- package/dist/commands/handoff.d.ts +3 -3
- package/dist/commands/handoff.d.ts.map +1 -1
- package/dist/commands/handoff.js +32 -3
- package/dist/commands/handoff.js.map +1 -1
- package/dist/commands/nudging/index.d.ts +24 -0
- package/dist/commands/nudging/index.d.ts.map +1 -0
- package/dist/commands/nudging/index.js +175 -0
- package/dist/commands/nudging/index.js.map +1 -0
- package/dist/commands/sprint/create.d.ts +26 -0
- package/dist/commands/sprint/create.d.ts.map +1 -0
- package/dist/commands/sprint/create.js +269 -0
- package/dist/commands/sprint/create.js.map +1 -0
- package/dist/commands/sprint/index.d.ts.map +1 -1
- package/dist/commands/sprint/index.js +24 -0
- package/dist/commands/sprint/index.js.map +1 -1
- package/dist/commands/sprint/quick-fix.d.ts +25 -0
- package/dist/commands/sprint/quick-fix.d.ts.map +1 -0
- package/dist/commands/sprint/quick-fix.js +151 -0
- package/dist/commands/sprint/quick-fix.js.map +1 -0
- package/dist/commands/sprint/sprint-pipeline-enhanced.d.ts.map +1 -1
- package/dist/commands/sprint/sprint-pipeline-enhanced.js +37 -0
- package/dist/commands/sprint/sprint-pipeline-enhanced.js.map +1 -1
- package/dist/commands/sprint/status.d.ts.map +1 -1
- package/dist/commands/sprint/status.js +21 -1
- package/dist/commands/sprint/status.js.map +1 -1
- package/dist/commands/start/start-reflection.d.ts +14 -0
- package/dist/commands/start/start-reflection.d.ts.map +1 -1
- package/dist/commands/start/start-reflection.js +180 -9
- package/dist/commands/start/start-reflection.js.map +1 -1
- package/dist/commands/task/status.d.ts +3 -0
- package/dist/commands/task/status.d.ts.map +1 -1
- package/dist/commands/task/status.js +48 -1
- package/dist/commands/task/status.js.map +1 -1
- package/dist/commands/team/index.d.ts +5 -0
- package/dist/commands/team/index.d.ts.map +1 -1
- package/dist/commands/team/index.js +28 -0
- package/dist/commands/team/index.js.map +1 -1
- package/dist/commands/team/status.d.ts +16 -0
- package/dist/commands/team/status.d.ts.map +1 -0
- package/dist/commands/team/status.js +180 -0
- package/dist/commands/team/status.js.map +1 -0
- package/dist/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/adoption-score.d.ts +69 -0
- package/dist/lib/adoption-score.d.ts.map +1 -0
- package/dist/lib/adoption-score.js +206 -0
- package/dist/lib/adoption-score.js.map +1 -0
- package/dist/lib/coaching-level.d.ts +127 -0
- package/dist/lib/coaching-level.d.ts.map +1 -0
- package/dist/lib/coaching-level.js +406 -0
- package/dist/lib/coaching-level.js.map +1 -0
- package/dist/lib/event-logger.d.ts +42 -0
- package/dist/lib/event-logger.d.ts.map +1 -1
- package/dist/lib/event-logger.js +77 -0
- package/dist/lib/event-logger.js.map +1 -1
- package/dist/lib/planning-menu.d.ts +69 -0
- package/dist/lib/planning-menu.d.ts.map +1 -0
- package/dist/lib/planning-menu.js +342 -0
- package/dist/lib/planning-menu.js.map +1 -0
- package/dist/lib/targeted-coaching.d.ts +71 -0
- package/dist/lib/targeted-coaching.d.ts.map +1 -0
- package/dist/lib/targeted-coaching.js +318 -0
- package/dist/lib/targeted-coaching.js.map +1 -0
- package/dist/lib/task-parser.d.ts +2 -0
- package/dist/lib/task-parser.d.ts.map +1 -1
- package/dist/lib/task-parser.js +23 -0
- package/dist/lib/task-parser.js.map +1 -1
- package/dist/lib/user-sprint.d.ts +53 -0
- package/dist/lib/user-sprint.d.ts.map +1 -1
- package/dist/lib/user-sprint.js +137 -2
- package/dist/lib/user-sprint.js.map +1 -1
- package/dist/lib/work-reconciliation.d.ts +59 -0
- package/dist/lib/work-reconciliation.d.ts.map +1 -0
- package/dist/lib/work-reconciliation.js +267 -0
- package/dist/lib/work-reconciliation.js.map +1 -0
- package/dist/utils/version-check.d.ts +26 -0
- package/dist/utils/version-check.d.ts.map +1 -0
- package/dist/utils/version-check.js +186 -0
- package/dist/utils/version-check.js.map +1 -0
- package/package.json +2 -2
|
@@ -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"}
|
|
@@ -0,0 +1,269 @@
|
|
|
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
|
+
/**
|
|
12
|
+
* Conversational Sprint Creation (EPIC-016 Sprint 4 t03)
|
|
13
|
+
*
|
|
14
|
+
* Lightweight flow for creating feature sprints:
|
|
15
|
+
* 1. User describes what they're building
|
|
16
|
+
* 2. AI breaks down into tasks
|
|
17
|
+
* 3. User confirms or edits
|
|
18
|
+
* 4. Sprint created and assigned
|
|
19
|
+
*/
|
|
20
|
+
import prompts from 'prompts';
|
|
21
|
+
import chalk from 'chalk';
|
|
22
|
+
import ora from 'ora';
|
|
23
|
+
import { getUserEmail } from '../../utils/helpers.js';
|
|
24
|
+
import { GraphApiClient } from '../graph/api-client.js';
|
|
25
|
+
import { getGraphId, isGraphInitialized } from '../graph/config.js';
|
|
26
|
+
import { setUserCurrentSprint, createAssignmentFromSprintId } from '../../lib/user-sprint.js';
|
|
27
|
+
// =============================================================================
|
|
28
|
+
// Sprint ID Generation
|
|
29
|
+
// =============================================================================
|
|
30
|
+
/**
|
|
31
|
+
* Generate the next ad-hoc sprint ID for today
|
|
32
|
+
* Format: adhoc_{YYMMDD}_s{NN}
|
|
33
|
+
*/
|
|
34
|
+
async function generateNextAdhocSprintId(graphId) {
|
|
35
|
+
const today = new Date();
|
|
36
|
+
const dateStr = `${String(today.getFullYear()).slice(2)}${String(today.getMonth() + 1).padStart(2, '0')}${String(today.getDate()).padStart(2, '0')}`;
|
|
37
|
+
const client = new GraphApiClient();
|
|
38
|
+
try {
|
|
39
|
+
// Query existing sprints to find next sequence number
|
|
40
|
+
const response = await client.request('GET', `/api/v1/sprint/list?graphId=${encodeURIComponent(graphId)}&prefix=adhoc_${dateStr}`);
|
|
41
|
+
const todayPrefix = `adhoc_${dateStr}_s`;
|
|
42
|
+
const existingNumbers = (response.sprints || [])
|
|
43
|
+
.map(s => s.id)
|
|
44
|
+
.filter(id => id.startsWith(todayPrefix))
|
|
45
|
+
.map(id => parseInt(id.replace(todayPrefix, ''), 10))
|
|
46
|
+
.filter(n => !isNaN(n));
|
|
47
|
+
const nextNum = existingNumbers.length > 0 ? Math.max(...existingNumbers) + 1 : 1;
|
|
48
|
+
return `adhoc_${dateStr}_s${String(nextNum).padStart(2, '0')}`;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
// Fallback to s01 if query fails
|
|
52
|
+
return `adhoc_${dateStr}_s01`;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// =============================================================================
|
|
56
|
+
// AI Task Breakdown
|
|
57
|
+
// =============================================================================
|
|
58
|
+
/**
|
|
59
|
+
* Use AI to break down a feature description into tasks
|
|
60
|
+
*/
|
|
61
|
+
async function breakdownFeatureWithAI(description) {
|
|
62
|
+
try {
|
|
63
|
+
const { createAIService } = await import('../../services/ai-service.js');
|
|
64
|
+
const aiService = createAIService();
|
|
65
|
+
const prompt = `You are a software project manager. Given a feature description, break it down into 2-6 actionable tasks.
|
|
66
|
+
|
|
67
|
+
Feature: ${description}
|
|
68
|
+
|
|
69
|
+
Return JSON with this structure:
|
|
70
|
+
{
|
|
71
|
+
"name": "Sprint name (3-5 words, no quotes)",
|
|
72
|
+
"goal": "One sentence describing the sprint goal",
|
|
73
|
+
"tasks": [
|
|
74
|
+
{ "title": "Task title (action-oriented)", "estimate": "2h", "priority": "HIGH" }
|
|
75
|
+
]
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
Guidelines:
|
|
79
|
+
- Sprint name should be concise and descriptive
|
|
80
|
+
- Each task should be completable in 1-4 hours
|
|
81
|
+
- Use CRITICAL/HIGH/MEDIUM/LOW for priority
|
|
82
|
+
- First task should enable the core feature
|
|
83
|
+
- Include a testing/validation task
|
|
84
|
+
- Estimates should be realistic (1h, 2h, 3h, 4h)`;
|
|
85
|
+
const plan = await aiService.extractJSON(prompt);
|
|
86
|
+
return plan;
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
console.error(chalk.dim('AI breakdown failed, using simple structure'));
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Create a simple sprint plan without AI
|
|
95
|
+
*/
|
|
96
|
+
function createSimpleSprintPlan(description) {
|
|
97
|
+
return {
|
|
98
|
+
name: description.slice(0, 50),
|
|
99
|
+
goal: description,
|
|
100
|
+
tasks: [
|
|
101
|
+
{ title: 'Implement core functionality', estimate: '2h', priority: 'HIGH' },
|
|
102
|
+
{ title: 'Test and validate', estimate: '1h', priority: 'MEDIUM' },
|
|
103
|
+
]
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
// =============================================================================
|
|
107
|
+
// Sprint Markdown Generation
|
|
108
|
+
// =============================================================================
|
|
109
|
+
/**
|
|
110
|
+
* Generate sprint markdown compatible with sync API
|
|
111
|
+
*/
|
|
112
|
+
function generateSprintMarkdown(sprintId, plan, userEmail) {
|
|
113
|
+
const today = new Date();
|
|
114
|
+
const endDate = new Date(today.getTime() + 14 * 24 * 60 * 60 * 1000);
|
|
115
|
+
const formatDate = (d) => d.toISOString().split('T')[0];
|
|
116
|
+
let markdown = `# SPRINT: ${plan.name}
|
|
117
|
+
|
|
118
|
+
## Sprint Overview
|
|
119
|
+
|
|
120
|
+
**Sprint Goal**: ${plan.goal}
|
|
121
|
+
**Duration**: ${formatDate(today)} to ${formatDate(endDate)}
|
|
122
|
+
**Type**: Feature
|
|
123
|
+
**Progress:** 0% (0/${plan.tasks.length} tasks complete)
|
|
124
|
+
**ID:** \`${sprintId}\`
|
|
125
|
+
|
|
126
|
+
**Success Criteria:**
|
|
127
|
+
- Feature implemented and tested
|
|
128
|
+
- Code reviewed and merged
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Sprint Tasks
|
|
133
|
+
|
|
134
|
+
`;
|
|
135
|
+
plan.tasks.forEach((task, i) => {
|
|
136
|
+
const taskNum = String(i + 1).padStart(2, '0');
|
|
137
|
+
const taskId = `${sprintId}_t${taskNum}`;
|
|
138
|
+
markdown += `### ${taskId}: ${task.title} (${task.estimate})
|
|
139
|
+
**Status:** [ ] Not Started
|
|
140
|
+
**Priority:** ${task.priority}
|
|
141
|
+
**Owner:** ${userEmail}
|
|
142
|
+
|
|
143
|
+
**Goal:** ${task.title}
|
|
144
|
+
|
|
145
|
+
**Acceptance Criteria:**
|
|
146
|
+
- [ ] Implementation complete
|
|
147
|
+
- [ ] Tests passing
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
`;
|
|
152
|
+
});
|
|
153
|
+
markdown += `## Related Documents
|
|
154
|
+
|
|
155
|
+
- **Epic**: Ad-Hoc Work
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
**Sprint Status**: Active
|
|
160
|
+
**Start Date**: ${formatDate(today)}
|
|
161
|
+
**Created By**: ${userEmail}
|
|
162
|
+
`;
|
|
163
|
+
return markdown;
|
|
164
|
+
}
|
|
165
|
+
// =============================================================================
|
|
166
|
+
// Main Command
|
|
167
|
+
// =============================================================================
|
|
168
|
+
/**
|
|
169
|
+
* Create a new feature sprint (conversational flow)
|
|
170
|
+
*/
|
|
171
|
+
export async function createSprintCommand(options = {}) {
|
|
172
|
+
// 1. Check prerequisites
|
|
173
|
+
if (!await isGraphInitialized()) {
|
|
174
|
+
console.log(chalk.yellow('Graph not initialized.'));
|
|
175
|
+
console.log(chalk.dim('Run `ginko graph init` to enable sprint tracking.'));
|
|
176
|
+
return { success: false, message: 'Graph not initialized' };
|
|
177
|
+
}
|
|
178
|
+
const graphId = await getGraphId();
|
|
179
|
+
if (!graphId) {
|
|
180
|
+
return { success: false, message: 'No graph ID found' };
|
|
181
|
+
}
|
|
182
|
+
// 2. Get feature description
|
|
183
|
+
const { description } = await prompts({
|
|
184
|
+
type: 'text',
|
|
185
|
+
name: 'description',
|
|
186
|
+
message: 'What are you building?',
|
|
187
|
+
validate: (value) => value.trim().length >= 10
|
|
188
|
+
? true
|
|
189
|
+
: 'Please describe your feature in more detail (10+ chars)',
|
|
190
|
+
});
|
|
191
|
+
if (!description) {
|
|
192
|
+
return { success: false, message: 'Cancelled' };
|
|
193
|
+
}
|
|
194
|
+
// 3. Break down into tasks
|
|
195
|
+
const spinner = ora('Breaking down into tasks...').start();
|
|
196
|
+
let plan;
|
|
197
|
+
const aiPlan = await breakdownFeatureWithAI(description);
|
|
198
|
+
if (aiPlan) {
|
|
199
|
+
plan = aiPlan;
|
|
200
|
+
spinner.succeed('Tasks generated');
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
plan = createSimpleSprintPlan(description);
|
|
204
|
+
spinner.info('Using simple task structure');
|
|
205
|
+
}
|
|
206
|
+
// 4. Display plan for confirmation
|
|
207
|
+
console.log('');
|
|
208
|
+
console.log(chalk.cyan('Sprint: ') + chalk.bold(plan.name));
|
|
209
|
+
console.log(chalk.dim('Goal: ') + plan.goal);
|
|
210
|
+
console.log('');
|
|
211
|
+
console.log(chalk.dim('Tasks:'));
|
|
212
|
+
plan.tasks.forEach((task, i) => {
|
|
213
|
+
console.log(chalk.dim(` ${i + 1}. ${task.title} (${task.estimate})`));
|
|
214
|
+
});
|
|
215
|
+
console.log('');
|
|
216
|
+
console.log(chalk.dim('This will be tracked under the Ad-Hoc Epic.'));
|
|
217
|
+
// 5. Confirm
|
|
218
|
+
const { action } = await prompts({
|
|
219
|
+
type: 'select',
|
|
220
|
+
name: 'action',
|
|
221
|
+
message: 'Look good?',
|
|
222
|
+
choices: [
|
|
223
|
+
{ title: 'Yes, create it', value: 'yes' },
|
|
224
|
+
{ title: 'Cancel', value: 'cancel' },
|
|
225
|
+
],
|
|
226
|
+
});
|
|
227
|
+
if (action !== 'yes') {
|
|
228
|
+
console.log(chalk.dim('Cancelled.'));
|
|
229
|
+
return { success: false, message: 'Cancelled by user' };
|
|
230
|
+
}
|
|
231
|
+
// 6. Generate sprint ID and markdown
|
|
232
|
+
const createSpinner = ora('Creating sprint...').start();
|
|
233
|
+
const sprintId = await generateNextAdhocSprintId(graphId);
|
|
234
|
+
const userEmail = await getUserEmail();
|
|
235
|
+
const markdown = generateSprintMarkdown(sprintId, plan, userEmail);
|
|
236
|
+
// 7. Sync to graph
|
|
237
|
+
try {
|
|
238
|
+
const client = new GraphApiClient();
|
|
239
|
+
await client.request('POST', '/api/v1/sprint/sync', { graphId, sprintContent: markdown });
|
|
240
|
+
// 8. Auto-assign sprint to user
|
|
241
|
+
await setUserCurrentSprint(createAssignmentFromSprintId(sprintId, plan.name));
|
|
242
|
+
// 9. Start first task
|
|
243
|
+
const firstTaskId = `${sprintId}_t01`;
|
|
244
|
+
try {
|
|
245
|
+
await client.updateTaskStatus(graphId, firstTaskId, 'in_progress');
|
|
246
|
+
}
|
|
247
|
+
catch {
|
|
248
|
+
// Non-critical - task might not have been created yet
|
|
249
|
+
}
|
|
250
|
+
createSpinner.succeed('Sprint created');
|
|
251
|
+
console.log('');
|
|
252
|
+
console.log(chalk.green(`✓ Created sprint ${chalk.bold(sprintId)} with ${plan.tasks.length} tasks`));
|
|
253
|
+
console.log(chalk.cyan(` Starting task 1: ${plan.tasks[0].title}`));
|
|
254
|
+
return {
|
|
255
|
+
success: true,
|
|
256
|
+
sprintId,
|
|
257
|
+
taskCount: plan.tasks.length,
|
|
258
|
+
message: 'Sprint created successfully'
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
catch (error) {
|
|
262
|
+
createSpinner.fail('Failed to create sprint');
|
|
263
|
+
console.error(chalk.red('Error:'), error instanceof Error ? error.message : String(error));
|
|
264
|
+
return { success: false, message: 'Failed to sync sprint to graph' };
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
// Export for CLI registration
|
|
268
|
+
export default createSprintCommand;
|
|
269
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/sprint/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/sprint/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/sprint/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAOtF;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,GAAE,MAAW,EAAE,OAAO,GAAE,GAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB/F;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CA4CvC;AAGD,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,CAAC;AAClD,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B,eAAe,aAAa,CAAC"}
|
|
@@ -13,6 +13,9 @@ import { SprintPipeline } from './sprint-pipeline.js';
|
|
|
13
13
|
import { EnhancedSprintPipeline } from './sprint-pipeline-enhanced.js';
|
|
14
14
|
import { createDepsCommand } from './deps.js';
|
|
15
15
|
import { createSprintStatusCommands, addSprintStatusShortcuts } from './status.js';
|
|
16
|
+
// EPIC-016 Sprint 4: Conversational sprint creation
|
|
17
|
+
import { createSprintCommand as createSprintAction } from './create.js';
|
|
18
|
+
import { createQuickFixTask } from './quick-fix.js';
|
|
16
19
|
/**
|
|
17
20
|
* Sprint command router
|
|
18
21
|
* Routes to enhanced pipeline by default (ADR-014 Safe Defaults)
|
|
@@ -56,6 +59,27 @@ export function sprintCommand() {
|
|
|
56
59
|
// Add status commands (EPIC-015 Sprint 1)
|
|
57
60
|
sprint.addCommand(createSprintStatusCommands());
|
|
58
61
|
addSprintStatusShortcuts(sprint);
|
|
62
|
+
// EPIC-016 Sprint 4: Conversational sprint creation (t03)
|
|
63
|
+
sprint
|
|
64
|
+
.command('create')
|
|
65
|
+
.description('Create a new feature sprint (conversational)')
|
|
66
|
+
.option('--adhoc', 'Link to Ad-Hoc epic (default: true)')
|
|
67
|
+
.option('--epic <epicId>', 'Link to specific epic')
|
|
68
|
+
.action(async (options) => {
|
|
69
|
+
await createSprintAction(options);
|
|
70
|
+
});
|
|
71
|
+
// EPIC-016 Sprint 4: Quick-fix fast path (t04)
|
|
72
|
+
sprint
|
|
73
|
+
.command('quick-fix <description>')
|
|
74
|
+
.alias('qf')
|
|
75
|
+
.description('Create a single-task sprint for a quick fix')
|
|
76
|
+
.action(async (description) => {
|
|
77
|
+
const result = await createQuickFixTask(description);
|
|
78
|
+
if (result.success) {
|
|
79
|
+
console.log(`✓ Created: ${result.taskId} - ${description}`);
|
|
80
|
+
console.log(' Run `ginko task complete` when done.');
|
|
81
|
+
}
|
|
82
|
+
});
|
|
59
83
|
return sprint;
|
|
60
84
|
}
|
|
61
85
|
// Export both for direct usage
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/sprint/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAiB,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/sprint/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: command
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2026-01-26
|
|
5
|
+
* @tags: [sprint, quick-fix, single-task, epic-016-s04]
|
|
6
|
+
* @related: [index.ts, create.ts, ../../lib/planning-menu.ts]
|
|
7
|
+
* @priority: high
|
|
8
|
+
* @complexity: low
|
|
9
|
+
* @dependencies: [chalk, ora]
|
|
10
|
+
*/
|
|
11
|
+
export interface QuickFixResult {
|
|
12
|
+
success: boolean;
|
|
13
|
+
taskId?: string;
|
|
14
|
+
sprintId?: string;
|
|
15
|
+
message?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Create a quick-fix task with minimal ceremony
|
|
19
|
+
*
|
|
20
|
+
* @param description - One-line description of the fix
|
|
21
|
+
* @returns Result with task and sprint IDs
|
|
22
|
+
*/
|
|
23
|
+
export declare function createQuickFixTask(description: string): Promise<QuickFixResult>;
|
|
24
|
+
export default createQuickFixTask;
|
|
25
|
+
//# sourceMappingURL=quick-fix.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quick-fix.d.ts","sourceRoot":"","sources":["../../../src/commands/sprint/quick-fix.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA2BH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAkGD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC,CA2DzB;AAGD,eAAe,kBAAkB,CAAC"}
|