@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,318 @@
|
|
|
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
|
+
/**
|
|
12
|
+
* Targeted Coaching Elaborations (EPIC-016 Sprint 5 Task 3)
|
|
13
|
+
*
|
|
14
|
+
* When a specific metric is low, provides focused coaching in that area.
|
|
15
|
+
*
|
|
16
|
+
* Metric-Specific Coaching:
|
|
17
|
+
* | Low Metric | Coaching Focus |
|
|
18
|
+
* |----------------------|---------------------------------------------------------|
|
|
19
|
+
* | Session Efficiency | "Consider using `ginko handoff` to preserve context" |
|
|
20
|
+
* | Pattern Adoption | Extra guidance on Epic→Sprint→Task structure |
|
|
21
|
+
* | Collaboration Quality| Prompts about logging decisions, handoff quality |
|
|
22
|
+
* | Anti-Patterns | Specific warnings about detected anti-patterns |
|
|
23
|
+
*
|
|
24
|
+
* Features:
|
|
25
|
+
* - Track which tips shown to avoid repetition
|
|
26
|
+
* - Inject tips at relevant moments (start, handoff)
|
|
27
|
+
* - No tip spam (shown once per session max)
|
|
28
|
+
*/
|
|
29
|
+
import fs from 'fs-extra';
|
|
30
|
+
import path from 'path';
|
|
31
|
+
import chalk from 'chalk';
|
|
32
|
+
import { getUserEmail, getGinkoDir } from '../utils/helpers.js';
|
|
33
|
+
import { isMetricLow } from './coaching-level.js';
|
|
34
|
+
import { logTargetedTipShown } from './event-logger.js';
|
|
35
|
+
// =============================================================================
|
|
36
|
+
// Constants
|
|
37
|
+
// =============================================================================
|
|
38
|
+
const TIPS_RECORD_FILE = 'shown-tips.json';
|
|
39
|
+
const LOW_THRESHOLD = 70;
|
|
40
|
+
/**
|
|
41
|
+
* All available coaching tips organized by metric
|
|
42
|
+
*/
|
|
43
|
+
export const COACHING_TIPS = [
|
|
44
|
+
// Session Efficiency Tips
|
|
45
|
+
{
|
|
46
|
+
id: 'efficiency-handoff',
|
|
47
|
+
metric: 'sessionEfficiency',
|
|
48
|
+
context: ['start', 'handoff'],
|
|
49
|
+
message: 'Consider using `ginko handoff` to preserve context between sessions',
|
|
50
|
+
action: 'ginko handoff',
|
|
51
|
+
priority: 10,
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
id: 'efficiency-context-loading',
|
|
55
|
+
metric: 'sessionEfficiency',
|
|
56
|
+
context: ['start'],
|
|
57
|
+
message: 'Sessions with good handoffs start 40% faster on average',
|
|
58
|
+
priority: 5,
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
id: 'efficiency-log-decisions',
|
|
62
|
+
metric: 'sessionEfficiency',
|
|
63
|
+
context: ['handoff'],
|
|
64
|
+
message: 'Log key decisions with `ginko log` before handoff for better context transfer',
|
|
65
|
+
action: 'ginko log',
|
|
66
|
+
priority: 8,
|
|
67
|
+
},
|
|
68
|
+
// Pattern Adoption Tips
|
|
69
|
+
{
|
|
70
|
+
id: 'patterns-structure',
|
|
71
|
+
metric: 'patternAdoption',
|
|
72
|
+
context: ['start', 'planning'],
|
|
73
|
+
message: 'Try organizing work into Epic→Sprint→Task structure for better tracking',
|
|
74
|
+
priority: 10,
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
id: 'patterns-sprint-create',
|
|
78
|
+
metric: 'patternAdoption',
|
|
79
|
+
context: ['planning'],
|
|
80
|
+
message: 'Use `ginko sprint create` to break down work into trackable tasks',
|
|
81
|
+
action: 'ginko sprint create',
|
|
82
|
+
priority: 8,
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
id: 'patterns-quick-fix',
|
|
86
|
+
metric: 'patternAdoption',
|
|
87
|
+
context: ['start'],
|
|
88
|
+
message: 'For small fixes, try `ginko sprint qf "description"` for minimal tracking overhead',
|
|
89
|
+
action: 'ginko sprint qf',
|
|
90
|
+
priority: 6,
|
|
91
|
+
},
|
|
92
|
+
// Collaboration Quality Tips
|
|
93
|
+
{
|
|
94
|
+
id: 'quality-log-decisions',
|
|
95
|
+
metric: 'collaborationQuality',
|
|
96
|
+
context: ['start', 'task_complete'],
|
|
97
|
+
message: 'Log important decisions with `ginko log` to help future collaborators',
|
|
98
|
+
action: 'ginko log',
|
|
99
|
+
priority: 10,
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
id: 'quality-handoff-content',
|
|
103
|
+
metric: 'collaborationQuality',
|
|
104
|
+
context: ['handoff'],
|
|
105
|
+
message: 'Include what you learned, not just what you did, in handoffs',
|
|
106
|
+
priority: 8,
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
id: 'quality-team-sync',
|
|
110
|
+
metric: 'collaborationQuality',
|
|
111
|
+
context: ['start'],
|
|
112
|
+
message: 'Run `ginko sync` periodically to stay aligned with team updates',
|
|
113
|
+
action: 'ginko sync',
|
|
114
|
+
priority: 6,
|
|
115
|
+
},
|
|
116
|
+
// Anti-Patterns Tips
|
|
117
|
+
{
|
|
118
|
+
id: 'antipatterns-review',
|
|
119
|
+
metric: 'antiPatterns',
|
|
120
|
+
context: ['start'],
|
|
121
|
+
message: 'Review recent gotcha warnings - you may be hitting known issues',
|
|
122
|
+
priority: 10,
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
id: 'antipatterns-patterns',
|
|
126
|
+
metric: 'antiPatterns',
|
|
127
|
+
context: ['start', 'task_complete'],
|
|
128
|
+
message: 'Check task patterns with `ginko graph explore <task-id>` for guidance',
|
|
129
|
+
action: 'ginko graph explore',
|
|
130
|
+
priority: 8,
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
id: 'antipatterns-adr',
|
|
134
|
+
metric: 'antiPatterns',
|
|
135
|
+
context: ['start'],
|
|
136
|
+
message: 'ADR constraints on your current task may help avoid common pitfalls',
|
|
137
|
+
priority: 6,
|
|
138
|
+
},
|
|
139
|
+
];
|
|
140
|
+
// =============================================================================
|
|
141
|
+
// Shown Tips Tracking
|
|
142
|
+
// =============================================================================
|
|
143
|
+
async function getShownTipsPath() {
|
|
144
|
+
const ginkoDir = await getGinkoDir();
|
|
145
|
+
const userEmail = await getUserEmail();
|
|
146
|
+
const userSlug = userEmail.replace('@', '-at-').replace(/\./g, '-');
|
|
147
|
+
return path.join(ginkoDir, 'sessions', userSlug, TIPS_RECORD_FILE);
|
|
148
|
+
}
|
|
149
|
+
async function loadShownTips() {
|
|
150
|
+
const filePath = await getShownTipsPath();
|
|
151
|
+
try {
|
|
152
|
+
if (await fs.pathExists(filePath)) {
|
|
153
|
+
const data = await fs.readJSON(filePath);
|
|
154
|
+
// Check if this is the same session (within 8 hours)
|
|
155
|
+
const lastUpdated = new Date(data.lastUpdated).getTime();
|
|
156
|
+
const now = Date.now();
|
|
157
|
+
const eightHours = 8 * 60 * 60 * 1000;
|
|
158
|
+
if (now - lastUpdated < eightHours) {
|
|
159
|
+
return data;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
// File corrupted or invalid
|
|
165
|
+
}
|
|
166
|
+
// Start fresh session
|
|
167
|
+
return {
|
|
168
|
+
sessionId: generateSessionId(),
|
|
169
|
+
shownTipIds: [],
|
|
170
|
+
lastUpdated: new Date().toISOString(),
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
async function saveShownTips(record) {
|
|
174
|
+
const filePath = await getShownTipsPath();
|
|
175
|
+
await fs.ensureDir(path.dirname(filePath));
|
|
176
|
+
record.lastUpdated = new Date().toISOString();
|
|
177
|
+
await fs.writeJSON(filePath, record, { spaces: 2 });
|
|
178
|
+
}
|
|
179
|
+
function generateSessionId() {
|
|
180
|
+
return `session-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
181
|
+
}
|
|
182
|
+
async function markTipAsShown(tipId) {
|
|
183
|
+
const record = await loadShownTips();
|
|
184
|
+
if (!record.shownTipIds.includes(tipId)) {
|
|
185
|
+
record.shownTipIds.push(tipId);
|
|
186
|
+
await saveShownTips(record);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
async function isTipShown(tipId) {
|
|
190
|
+
const record = await loadShownTips();
|
|
191
|
+
return record.shownTipIds.includes(tipId);
|
|
192
|
+
}
|
|
193
|
+
// =============================================================================
|
|
194
|
+
// Tip Selection
|
|
195
|
+
// =============================================================================
|
|
196
|
+
/**
|
|
197
|
+
* Get applicable tips for a given context and coaching context
|
|
198
|
+
*
|
|
199
|
+
* @param coachingCtx - Coaching context with metric scores
|
|
200
|
+
* @param context - Current context (start, handoff, etc.)
|
|
201
|
+
* @param limit - Maximum number of tips to return
|
|
202
|
+
* @returns Array of applicable tips, prioritized
|
|
203
|
+
*/
|
|
204
|
+
export async function getApplicableTips(coachingCtx, context, limit = 1) {
|
|
205
|
+
// Only show tips in supportive or standard mode
|
|
206
|
+
if (coachingCtx.level === 'minimal') {
|
|
207
|
+
return [];
|
|
208
|
+
}
|
|
209
|
+
const applicableTips = [];
|
|
210
|
+
// Find tips for low metrics
|
|
211
|
+
for (const tip of COACHING_TIPS) {
|
|
212
|
+
// Check if tip applies to this context
|
|
213
|
+
if (!tip.context.includes(context)) {
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
// Check if the metric is low
|
|
217
|
+
const metricValue = getMetricValue(coachingCtx, tip.metric);
|
|
218
|
+
if (!isMetricLow(metricValue, LOW_THRESHOLD)) {
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
// Check if already shown this session
|
|
222
|
+
if (await isTipShown(tip.id)) {
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
applicableTips.push(tip);
|
|
226
|
+
}
|
|
227
|
+
// Sort by priority (highest first) and limit
|
|
228
|
+
return applicableTips
|
|
229
|
+
.sort((a, b) => b.priority - a.priority)
|
|
230
|
+
.slice(0, limit);
|
|
231
|
+
}
|
|
232
|
+
function getMetricValue(ctx, metric) {
|
|
233
|
+
switch (metric) {
|
|
234
|
+
case 'sessionEfficiency':
|
|
235
|
+
return ctx.metrics.sessionEfficiency;
|
|
236
|
+
case 'patternAdoption':
|
|
237
|
+
return ctx.metrics.patternAdoption;
|
|
238
|
+
case 'collaborationQuality':
|
|
239
|
+
return ctx.metrics.collaborationQuality;
|
|
240
|
+
case 'antiPatterns':
|
|
241
|
+
return ctx.metrics.antiPatterns;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
// =============================================================================
|
|
245
|
+
// Display Functions
|
|
246
|
+
// =============================================================================
|
|
247
|
+
/**
|
|
248
|
+
* Display a coaching tip to the console
|
|
249
|
+
*/
|
|
250
|
+
export function displayTip(tip) {
|
|
251
|
+
const icon = getTipIcon(tip.metric);
|
|
252
|
+
console.log(chalk.cyan(`${icon} Coaching tip:`));
|
|
253
|
+
console.log(chalk.white(` ${tip.message}`));
|
|
254
|
+
if (tip.action) {
|
|
255
|
+
console.log(chalk.dim(` Try: ${tip.action}`));
|
|
256
|
+
}
|
|
257
|
+
console.log('');
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Show targeted coaching tips for the current context
|
|
261
|
+
*
|
|
262
|
+
* @param coachingCtx - Coaching context with metric scores
|
|
263
|
+
* @param context - Current context
|
|
264
|
+
* @returns Number of tips shown
|
|
265
|
+
*/
|
|
266
|
+
export async function showTargetedCoaching(coachingCtx, context) {
|
|
267
|
+
const tips = await getApplicableTips(coachingCtx, context);
|
|
268
|
+
for (const tip of tips) {
|
|
269
|
+
displayTip(tip);
|
|
270
|
+
await markTipAsShown(tip.id);
|
|
271
|
+
// EPIC-016 Sprint 5 t05: Log tip shown for feedback loop
|
|
272
|
+
logTargetedTipShown(tip.id, tip.metric, coachingCtx.level).catch(() => {
|
|
273
|
+
// Non-critical - don't fail on logging errors
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
return tips.length;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Get coaching tip for a specific metric (for inline use)
|
|
280
|
+
*/
|
|
281
|
+
export async function getTipForMetric(coachingCtx, metric, context) {
|
|
282
|
+
const tips = await getApplicableTips(coachingCtx, context);
|
|
283
|
+
const tip = tips.find(t => t.metric === metric);
|
|
284
|
+
return tip ? tip.message : null;
|
|
285
|
+
}
|
|
286
|
+
function getTipIcon(metric) {
|
|
287
|
+
switch (metric) {
|
|
288
|
+
case 'sessionEfficiency':
|
|
289
|
+
return '⚡';
|
|
290
|
+
case 'patternAdoption':
|
|
291
|
+
return '📋';
|
|
292
|
+
case 'collaborationQuality':
|
|
293
|
+
return '🤝';
|
|
294
|
+
case 'antiPatterns':
|
|
295
|
+
return '⚠️';
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
// =============================================================================
|
|
299
|
+
// Metric Display Names
|
|
300
|
+
// =============================================================================
|
|
301
|
+
export const METRIC_DISPLAY_NAMES = {
|
|
302
|
+
sessionEfficiency: 'Session Efficiency',
|
|
303
|
+
patternAdoption: 'Pattern Adoption',
|
|
304
|
+
collaborationQuality: 'Collaboration Quality',
|
|
305
|
+
antiPatterns: 'Anti-Patterns',
|
|
306
|
+
};
|
|
307
|
+
// =============================================================================
|
|
308
|
+
// Testing Exports
|
|
309
|
+
// =============================================================================
|
|
310
|
+
export const __testing = {
|
|
311
|
+
LOW_THRESHOLD,
|
|
312
|
+
loadShownTips,
|
|
313
|
+
saveShownTips,
|
|
314
|
+
markTipAsShown,
|
|
315
|
+
isTipShown,
|
|
316
|
+
getMetricValue,
|
|
317
|
+
};
|
|
318
|
+
//# sourceMappingURL=targeted-coaching.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"targeted-coaching.js","sourceRoot":"","sources":["../../src/lib/targeted-coaching.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,8 @@ export interface ParsedTask {
|
|
|
34
34
|
initial_status: TaskStatus;
|
|
35
35
|
/** Task goal/description */
|
|
36
36
|
goal: string | null;
|
|
37
|
+
/** Approach/implementation notes (e014_s02_t04) */
|
|
38
|
+
approach: string | null;
|
|
37
39
|
/** Acceptance criteria list */
|
|
38
40
|
acceptance_criteria: string[];
|
|
39
41
|
/** Referenced files */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-parser.d.ts","sourceRoot":"","sources":["../../src/lib/task-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAmBH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE3F;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,kEAAkE;IAClE,EAAE,EAAE,MAAM,CAAC;IACX,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,qBAAqB;IACrB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,yDAAyD;IACzD,cAAc,EAAE,UAAU,CAAC;IAC3B,4BAA4B;IAC5B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,+BAA+B;IAC/B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,uBAAuB;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,6BAA6B;IAC7B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA8BhG;
|
|
1
|
+
{"version":3,"file":"task-parser.d.ts","sourceRoot":"","sources":["../../src/lib/task-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAmBH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE3F;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,kEAAkE;IAClE,EAAE,EAAE,MAAM,CAAC;IACX,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,qBAAqB;IACrB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,yDAAyD;IACzD,cAAc,EAAE,UAAU,CAAC;IAC3B,4BAA4B;IAC5B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,+BAA+B;IAC/B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,uBAAuB;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,6BAA6B;IAC7B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA8BhG;AAqID;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrD,UAAU,GAAG,IAAI,CAoGnB;AAgFD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAwBrF;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAazF;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAyBtF"}
|
package/dist/lib/task-parser.js
CHANGED
|
@@ -91,6 +91,26 @@ function normalizePriority(priority) {
|
|
|
91
91
|
}
|
|
92
92
|
return 'MEDIUM';
|
|
93
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Extract approach/implementation notes from task block (e014_s02_t04)
|
|
96
|
+
*
|
|
97
|
+
* Parses the **Approach:** section which contains 2-3 sentences describing
|
|
98
|
+
* how to implement the task.
|
|
99
|
+
*/
|
|
100
|
+
function extractApproach(blockText) {
|
|
101
|
+
// Match: **Approach:** followed by text until next section
|
|
102
|
+
const approachMatch = blockText.match(/\*\*Approach:\*\*\s+([\s\S]*?)(?=\n\*\*(?!Approach)|\n###|\n---|\n##|$)/i);
|
|
103
|
+
if (!approachMatch)
|
|
104
|
+
return null;
|
|
105
|
+
// Clean up the approach text - join lines and trim
|
|
106
|
+
const approach = approachMatch[1]
|
|
107
|
+
.split('\n')
|
|
108
|
+
.map(line => line.trim())
|
|
109
|
+
.filter(line => line.length > 0)
|
|
110
|
+
.join(' ')
|
|
111
|
+
.trim();
|
|
112
|
+
return approach.length > 0 ? approach : null;
|
|
113
|
+
}
|
|
94
114
|
/**
|
|
95
115
|
* Extract acceptance criteria from task block
|
|
96
116
|
*/
|
|
@@ -216,6 +236,8 @@ export function parseTaskBlock(blockText, sprintContext) {
|
|
|
216
236
|
// Extract goal
|
|
217
237
|
const goalMatch = blockText.match(/\*\*Goal:\*\*\s+([^\n]+)/i);
|
|
218
238
|
const goal = goalMatch ? goalMatch[1].trim() : null;
|
|
239
|
+
// Extract approach (e014_s02_t04)
|
|
240
|
+
const approach = extractApproach(blockText);
|
|
219
241
|
// Extract acceptance criteria
|
|
220
242
|
const acceptanceCriteria = extractAcceptanceCriteria(blockText);
|
|
221
243
|
// Extract files
|
|
@@ -232,6 +254,7 @@ export function parseTaskBlock(blockText, sprintContext) {
|
|
|
232
254
|
assignee,
|
|
233
255
|
initial_status: initialStatus,
|
|
234
256
|
goal,
|
|
257
|
+
approach,
|
|
235
258
|
acceptance_criteria: acceptanceCriteria,
|
|
236
259
|
files,
|
|
237
260
|
related_adrs: relatedADRs,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-parser.js","sourceRoot":"","sources":["../../src/lib/task-parser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"task-parser.js","sourceRoot":"","sources":["../../src/lib/task-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,21 @@ export interface UserSprintAssignment {
|
|
|
18
18
|
sprintName: string;
|
|
19
19
|
assignedAt: string;
|
|
20
20
|
assignedBy: 'auto' | 'manual';
|
|
21
|
+
isAdhoc?: boolean;
|
|
22
|
+
consecutiveAdhocSessions?: number;
|
|
23
|
+
lastAdhocSessionAt?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Result of checking user's work structure status (EPIC-016 Sprint 4 t01)
|
|
27
|
+
* Used by start command to determine if planning menu should be shown
|
|
28
|
+
*/
|
|
29
|
+
export interface WorkStructureStatus {
|
|
30
|
+
hasStructuredWork: boolean;
|
|
31
|
+
sprintId: string | null;
|
|
32
|
+
incompleteTasks: number;
|
|
33
|
+
consecutiveAdhocSessions: number;
|
|
34
|
+
shouldShowPlanningMenu: boolean;
|
|
35
|
+
reason: 'has_sprint' | 'no_sprint' | 'all_tasks_complete' | 'adhoc_pattern';
|
|
21
36
|
}
|
|
22
37
|
/**
|
|
23
38
|
* Get user's current sprint assignment
|
|
@@ -56,4 +71,42 @@ export declare function validateUserSprint(assignment: UserSprintAssignment): Pr
|
|
|
56
71
|
* Get sprint file path from user assignment
|
|
57
72
|
*/
|
|
58
73
|
export declare function getSprintFileFromAssignment(assignment: UserSprintAssignment): Promise<string>;
|
|
74
|
+
/**
|
|
75
|
+
* Check if user has structured work (sprint with incomplete tasks)
|
|
76
|
+
*
|
|
77
|
+
* Decision matrix:
|
|
78
|
+
* | Has Sprint | Has Tasks | Consecutive Adhoc | Result |
|
|
79
|
+
* |------------|-----------|-------------------|--------|
|
|
80
|
+
* | Yes | Yes | Any | Has structured work |
|
|
81
|
+
* | Yes | No (100%) | Any | No structure (complete) |
|
|
82
|
+
* | No | N/A | <= 1 | No structure (new) |
|
|
83
|
+
* | No | N/A | > 1 | No structure (adhoc pattern) |
|
|
84
|
+
*
|
|
85
|
+
* @param userSprint - User's current sprint assignment
|
|
86
|
+
* @param sprintChecklist - Sprint task data from graph/file (with progress info)
|
|
87
|
+
* @returns WorkStructureStatus with decision
|
|
88
|
+
*/
|
|
89
|
+
export declare function checkWorkStructure(userSprint: UserSprintAssignment | null, sprintChecklist: {
|
|
90
|
+
progress?: {
|
|
91
|
+
total: number;
|
|
92
|
+
complete: number;
|
|
93
|
+
};
|
|
94
|
+
tasks?: Array<{
|
|
95
|
+
state: string;
|
|
96
|
+
}>;
|
|
97
|
+
} | null): WorkStructureStatus;
|
|
98
|
+
/**
|
|
99
|
+
* Increment ad-hoc session counter
|
|
100
|
+
* Called when user chooses ad-hoc work in planning menu
|
|
101
|
+
*/
|
|
102
|
+
export declare function incrementAdhocSessionCount(): Promise<number>;
|
|
103
|
+
/**
|
|
104
|
+
* Reset ad-hoc session counter
|
|
105
|
+
* Called when user starts structured work (creates/selects epic/sprint)
|
|
106
|
+
*/
|
|
107
|
+
export declare function resetAdhocSessionCount(): Promise<void>;
|
|
108
|
+
/**
|
|
109
|
+
* Create sprint assignment from sprint ID (for graph-based sprints)
|
|
110
|
+
*/
|
|
111
|
+
export declare function createAssignmentFromSprintId(sprintId: string, sprintName: string, assignedBy?: 'auto' | 'manual'): UserSprintAssignment;
|
|
59
112
|
//# sourceMappingURL=user-sprint.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-sprint.d.ts","sourceRoot":"","sources":["../../src/lib/user-sprint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAiBH;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"user-sprint.d.ts","sourceRoot":"","sources":["../../src/lib/user-sprint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAiBH;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,QAAQ,CAAC;IAG9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,wBAAwB,EAAE,MAAM,CAAC;IACjC,sBAAsB,EAAE,OAAO,CAAC;IAChC,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,oBAAoB,GAAG,eAAe,CAAC;CAC7E;AAaD;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAoBjF;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,oBAAoB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAM5D;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA4BzG;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,MAAM,GAAG,QAAiB,GACrC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAkBtC;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,oBAAoB,GAC/B,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,oBAAoB,GAC/B,OAAO,CAAC,MAAM,CAAC,CAOjB;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,oBAAoB,GAAG,IAAI,EACvC,eAAe,EAAE;IAAE,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,GAAG,IAAI,GAC3G,mBAAmB,CA2DrB;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC,CAqBlE;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,CAa5D;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,MAAM,GAAG,QAAiB,GACrC,oBAAoB,CAatB"}
|
package/dist/lib/user-sprint.js
CHANGED
|
@@ -41,8 +41,8 @@ export async function getUserCurrentSprint() {
|
|
|
41
41
|
return null;
|
|
42
42
|
}
|
|
43
43
|
const data = await fs.readJSON(filePath);
|
|
44
|
-
// Validate required fields
|
|
45
|
-
if (!data.sprintId
|
|
44
|
+
// Validate required fields (sprintFile can be empty for graph-based sprints)
|
|
45
|
+
if (!data.sprintId) {
|
|
46
46
|
return null;
|
|
47
47
|
}
|
|
48
48
|
return data;
|
|
@@ -141,7 +141,142 @@ export async function validateUserSprint(assignment) {
|
|
|
141
141
|
* Get sprint file path from user assignment
|
|
142
142
|
*/
|
|
143
143
|
export async function getSprintFileFromAssignment(assignment) {
|
|
144
|
+
// Graph-based sprints have no local file
|
|
145
|
+
if (!assignment.sprintFile) {
|
|
146
|
+
return '';
|
|
147
|
+
}
|
|
144
148
|
const projectRoot = await requireGinkoRoot();
|
|
145
149
|
return path.join(projectRoot, assignment.sprintFile);
|
|
146
150
|
}
|
|
151
|
+
// =============================================================================
|
|
152
|
+
// EPIC-016 Sprint 4: Work Structure Detection (t01)
|
|
153
|
+
// =============================================================================
|
|
154
|
+
/**
|
|
155
|
+
* Check if user has structured work (sprint with incomplete tasks)
|
|
156
|
+
*
|
|
157
|
+
* Decision matrix:
|
|
158
|
+
* | Has Sprint | Has Tasks | Consecutive Adhoc | Result |
|
|
159
|
+
* |------------|-----------|-------------------|--------|
|
|
160
|
+
* | Yes | Yes | Any | Has structured work |
|
|
161
|
+
* | Yes | No (100%) | Any | No structure (complete) |
|
|
162
|
+
* | No | N/A | <= 1 | No structure (new) |
|
|
163
|
+
* | No | N/A | > 1 | No structure (adhoc pattern) |
|
|
164
|
+
*
|
|
165
|
+
* @param userSprint - User's current sprint assignment
|
|
166
|
+
* @param sprintChecklist - Sprint task data from graph/file (with progress info)
|
|
167
|
+
* @returns WorkStructureStatus with decision
|
|
168
|
+
*/
|
|
169
|
+
export function checkWorkStructure(userSprint, sprintChecklist) {
|
|
170
|
+
// Case 1: No sprint assignment
|
|
171
|
+
if (!userSprint || !userSprint.sprintId) {
|
|
172
|
+
return {
|
|
173
|
+
hasStructuredWork: false,
|
|
174
|
+
sprintId: null,
|
|
175
|
+
incompleteTasks: 0,
|
|
176
|
+
consecutiveAdhocSessions: userSprint?.consecutiveAdhocSessions || 0,
|
|
177
|
+
shouldShowPlanningMenu: true,
|
|
178
|
+
reason: 'no_sprint'
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
// Case 2: Sprint assigned but no checklist data (graph unavailable)
|
|
182
|
+
if (!sprintChecklist) {
|
|
183
|
+
// Trust the sprint assignment, assume structured
|
|
184
|
+
return {
|
|
185
|
+
hasStructuredWork: true,
|
|
186
|
+
sprintId: userSprint.sprintId,
|
|
187
|
+
incompleteTasks: -1, // Unknown
|
|
188
|
+
consecutiveAdhocSessions: 0,
|
|
189
|
+
shouldShowPlanningMenu: false,
|
|
190
|
+
reason: 'has_sprint'
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
// Calculate incomplete tasks
|
|
194
|
+
let incompleteTasks;
|
|
195
|
+
if (sprintChecklist.progress) {
|
|
196
|
+
incompleteTasks = sprintChecklist.progress.total - sprintChecklist.progress.complete;
|
|
197
|
+
}
|
|
198
|
+
else if (sprintChecklist.tasks) {
|
|
199
|
+
incompleteTasks = sprintChecklist.tasks.filter(t => t.state === 'todo' || t.state === 'in_progress').length;
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
incompleteTasks = -1; // Unknown
|
|
203
|
+
}
|
|
204
|
+
// Case 3: Sprint with incomplete tasks
|
|
205
|
+
if (incompleteTasks > 0 || incompleteTasks === -1) {
|
|
206
|
+
return {
|
|
207
|
+
hasStructuredWork: true,
|
|
208
|
+
sprintId: userSprint.sprintId,
|
|
209
|
+
incompleteTasks,
|
|
210
|
+
consecutiveAdhocSessions: 0,
|
|
211
|
+
shouldShowPlanningMenu: false,
|
|
212
|
+
reason: 'has_sprint'
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
// Case 4: Sprint 100% complete
|
|
216
|
+
return {
|
|
217
|
+
hasStructuredWork: false,
|
|
218
|
+
sprintId: userSprint.sprintId,
|
|
219
|
+
incompleteTasks: 0,
|
|
220
|
+
consecutiveAdhocSessions: userSprint.consecutiveAdhocSessions || 0,
|
|
221
|
+
shouldShowPlanningMenu: true,
|
|
222
|
+
reason: 'all_tasks_complete'
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Increment ad-hoc session counter
|
|
227
|
+
* Called when user chooses ad-hoc work in planning menu
|
|
228
|
+
*/
|
|
229
|
+
export async function incrementAdhocSessionCount() {
|
|
230
|
+
const filePath = await getUserSprintFilePath();
|
|
231
|
+
let data = {};
|
|
232
|
+
try {
|
|
233
|
+
if (await fs.pathExists(filePath)) {
|
|
234
|
+
data = await fs.readJSON(filePath);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
catch {
|
|
238
|
+
// Start fresh if file is corrupted
|
|
239
|
+
}
|
|
240
|
+
const newCount = (data.consecutiveAdhocSessions || 0) + 1;
|
|
241
|
+
data.isAdhoc = true;
|
|
242
|
+
data.consecutiveAdhocSessions = newCount;
|
|
243
|
+
data.lastAdhocSessionAt = new Date().toISOString();
|
|
244
|
+
await fs.ensureDir(path.dirname(filePath));
|
|
245
|
+
await fs.writeJSON(filePath, data, { spaces: 2 });
|
|
246
|
+
return newCount;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Reset ad-hoc session counter
|
|
250
|
+
* Called when user starts structured work (creates/selects epic/sprint)
|
|
251
|
+
*/
|
|
252
|
+
export async function resetAdhocSessionCount() {
|
|
253
|
+
const filePath = await getUserSprintFilePath();
|
|
254
|
+
try {
|
|
255
|
+
if (await fs.pathExists(filePath)) {
|
|
256
|
+
const data = await fs.readJSON(filePath);
|
|
257
|
+
data.isAdhoc = false;
|
|
258
|
+
data.consecutiveAdhocSessions = 0;
|
|
259
|
+
await fs.writeJSON(filePath, data, { spaces: 2 });
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
catch {
|
|
263
|
+
// Ignore errors - non-critical
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Create sprint assignment from sprint ID (for graph-based sprints)
|
|
268
|
+
*/
|
|
269
|
+
export function createAssignmentFromSprintId(sprintId, sprintName, assignedBy = 'auto') {
|
|
270
|
+
// Extract epic ID from sprint ID (e.g., e016_s04 -> e016, adhoc_260126_s01 -> adhoc_260126)
|
|
271
|
+
const parts = sprintId.split('_s');
|
|
272
|
+
const epicId = parts[0] || sprintId;
|
|
273
|
+
return {
|
|
274
|
+
sprintId,
|
|
275
|
+
epicId,
|
|
276
|
+
sprintFile: '', // Graph-based, no local file
|
|
277
|
+
sprintName,
|
|
278
|
+
assignedAt: new Date().toISOString(),
|
|
279
|
+
assignedBy
|
|
280
|
+
};
|
|
281
|
+
}
|
|
147
282
|
//# sourceMappingURL=user-sprint.js.map
|