@ginkoai/cli 2.2.1 → 2.3.0

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 (70) hide show
  1. package/dist/commands/charter.d.ts.map +1 -1
  2. package/dist/commands/charter.js +5 -80
  3. package/dist/commands/charter.js.map +1 -1
  4. package/dist/commands/config.d.ts.map +1 -1
  5. package/dist/commands/config.js +100 -36
  6. package/dist/commands/config.js.map +1 -1
  7. package/dist/commands/create.d.ts.map +1 -1
  8. package/dist/commands/create.js +4 -9
  9. package/dist/commands/create.js.map +1 -1
  10. package/dist/commands/epic/index.js +7 -7
  11. package/dist/commands/epic/index.js.map +1 -1
  12. package/dist/commands/epic.d.ts +2 -2
  13. package/dist/commands/epic.d.ts.map +1 -1
  14. package/dist/commands/epic.js +7 -276
  15. package/dist/commands/epic.js.map +1 -1
  16. package/dist/commands/graph/api-client.d.ts +85 -99
  17. package/dist/commands/graph/api-client.d.ts.map +1 -1
  18. package/dist/commands/graph/api-client.js +27 -56
  19. package/dist/commands/graph/api-client.js.map +1 -1
  20. package/dist/commands/graph/cleanup.d.ts +23 -0
  21. package/dist/commands/graph/cleanup.d.ts.map +1 -0
  22. package/dist/commands/graph/cleanup.js +241 -0
  23. package/dist/commands/graph/cleanup.js.map +1 -0
  24. package/dist/commands/graph/index.d.ts.map +1 -1
  25. package/dist/commands/graph/index.js +13 -0
  26. package/dist/commands/graph/index.js.map +1 -1
  27. package/dist/commands/graph/init.d.ts.map +1 -1
  28. package/dist/commands/graph/init.js +2 -10
  29. package/dist/commands/graph/init.js.map +1 -1
  30. package/dist/commands/graph/load.d.ts +10 -15
  31. package/dist/commands/graph/load.d.ts.map +1 -1
  32. package/dist/commands/graph/load.js +13 -280
  33. package/dist/commands/graph/load.js.map +1 -1
  34. package/dist/commands/init.d.ts.map +1 -1
  35. package/dist/commands/init.js +19 -6
  36. package/dist/commands/init.js.map +1 -1
  37. package/dist/commands/login.d.ts.map +1 -1
  38. package/dist/commands/login.js +16 -0
  39. package/dist/commands/login.js.map +1 -1
  40. package/dist/commands/project/create.d.ts.map +1 -1
  41. package/dist/commands/project/create.js +3 -0
  42. package/dist/commands/project/create.js.map +1 -1
  43. package/dist/commands/push/push-command.d.ts.map +1 -1
  44. package/dist/commands/push/push-command.js +75 -3
  45. package/dist/commands/push/push-command.js.map +1 -1
  46. package/dist/commands/sprint/create.js +1 -1
  47. package/dist/commands/sprint/create.js.map +1 -1
  48. package/dist/commands/start/start-reflection.d.ts +8 -0
  49. package/dist/commands/start/start-reflection.d.ts.map +1 -1
  50. package/dist/commands/start/start-reflection.js +22 -0
  51. package/dist/commands/start/start-reflection.js.map +1 -1
  52. package/dist/commands/sync/sync-command.d.ts.map +1 -1
  53. package/dist/commands/sync/sync-command.js +12 -4
  54. package/dist/commands/sync/sync-command.js.map +1 -1
  55. package/dist/lib/sync-state.d.ts +7 -0
  56. package/dist/lib/sync-state.d.ts.map +1 -1
  57. package/dist/lib/sync-state.js +11 -0
  58. package/dist/lib/sync-state.js.map +1 -1
  59. package/dist/lib/write-dispatcher/adapters/graph-adapter.d.ts +12 -3
  60. package/dist/lib/write-dispatcher/adapters/graph-adapter.d.ts.map +1 -1
  61. package/dist/lib/write-dispatcher/adapters/graph-adapter.js +41 -6
  62. package/dist/lib/write-dispatcher/adapters/graph-adapter.js.map +1 -1
  63. package/dist/utils/config-loader.d.ts.map +1 -1
  64. package/dist/utils/config-loader.js +19 -5
  65. package/dist/utils/config-loader.js.map +1 -1
  66. package/dist/utils/identity.d.ts +40 -0
  67. package/dist/utils/identity.d.ts.map +1 -0
  68. package/dist/utils/identity.js +92 -0
  69. package/dist/utils/identity.js.map +1 -0
  70. package/package.json +1 -1
@@ -2,8 +2,8 @@
2
2
  * @fileType: command
3
3
  * @status: current
4
4
  * @updated: 2026-01-07
5
- * @tags: [epic, planning, sprint-creation, graph-sync, duplicate-detection]
6
- * @related: [charter.ts, ../templates/epic-template.md, ADR-058]
5
+ * @tags: [epic, planning, sprint-creation]
6
+ * @related: [charter.ts, ../templates/epic-template.md]
7
7
  * @priority: high
8
8
  * @complexity: medium
9
9
  * @dependencies: [chalk, fs, path, prompts]
@@ -12,7 +12,6 @@ import chalk from 'chalk';
12
12
  import * as fs from 'fs/promises';
13
13
  import * as path from 'path';
14
14
  import { existsSync } from 'fs';
15
- import prompts from 'prompts';
16
15
  import { getProjectRoot } from '../utils/helpers.js';
17
16
  // ============================================================================
18
17
  // Main Command
@@ -45,10 +44,11 @@ export async function epicCommand(options = {}) {
45
44
  await viewEpics(projectRoot);
46
45
  return;
47
46
  }
48
- // Handle --sync flag
47
+ // Handle --sync flag (removed — ADR-077)
49
48
  if (options.sync) {
50
- await syncEpicToGraph(projectRoot);
51
- return;
49
+ console.log(chalk.red('\u2717 `ginko epic --sync` has been removed.'));
50
+ console.log(chalk.dim(' Use `ginko push epic` instead (ADR-077).\n'));
51
+ process.exit(1);
52
52
  }
53
53
  // Default: AI-mediated mode (output template) unless --no-ai specified
54
54
  if (!options.noAi) {
@@ -210,278 +210,9 @@ async function viewEpics(projectRoot) {
210
210
  console.error(chalk.red(`\n❌ Error viewing epics: ${error.message}`));
211
211
  }
212
212
  }
213
- /**
214
- * Detect duplicate epic IDs in local files before sync
215
- * Returns map of duplicate IDs to their files
216
- */
217
- async function detectLocalDuplicates(epicsDir, epicFiles) {
218
- const epicById = new Map();
219
- for (const file of epicFiles) {
220
- const content = await fs.readFile(path.join(epicsDir, file), 'utf-8');
221
- // Extract epic ID from frontmatter or title
222
- const frontmatterMatch = content.match(/^---[\s\S]*?epic_id:\s*(\S+)[\s\S]*?---/m);
223
- const titleMatch = content.match(/^# (EPIC-\d+):/m);
224
- const id = frontmatterMatch?.[1]?.toUpperCase() ||
225
- titleMatch?.[1]?.toUpperCase() ||
226
- file.match(/^(EPIC-\d+)/i)?.[1]?.toUpperCase() ||
227
- 'UNKNOWN';
228
- const epicTitleMatch = content.match(/^# EPIC-\d+:\s*(.+)$/m);
229
- const title = epicTitleMatch?.[1] || 'Untitled';
230
- const existing = epicById.get(id) || [];
231
- existing.push({ file, id, title });
232
- epicById.set(id, existing);
233
- }
234
- // Filter to only duplicates (IDs with more than one file)
235
- const duplicates = new Map();
236
- for (const [id, files] of epicById) {
237
- if (files.length > 1) {
238
- duplicates.set(id, files);
239
- }
240
- }
241
- return duplicates;
242
- }
243
- // ============================================================================
244
- // Sync Epic to Graph
245
- // ============================================================================
246
- /**
247
- * Sync epic and sprints to graph database
248
- * Includes conflict detection per ADR-058
249
- */
250
- async function syncEpicToGraph(projectRoot) {
251
- console.log(chalk.blue('\n📡 Syncing epic to graph...\n'));
252
- // Check for graph configuration (in .ginko/graph/config.json)
253
- const graphConfigPath = path.join(projectRoot, '.ginko', 'graph', 'config.json');
254
- if (!existsSync(graphConfigPath)) {
255
- console.log(chalk.yellow('⚠️ Graph not configured'));
256
- console.log(chalk.dim(' Run `ginko graph init` first\n'));
257
- return;
258
- }
259
- try {
260
- // Read graph config
261
- const graphConfig = JSON.parse(await fs.readFile(graphConfigPath, 'utf-8'));
262
- const graphId = graphConfig.graphId;
263
- if (!graphId) {
264
- console.log(chalk.yellow('⚠️ No graph ID configured'));
265
- console.log(chalk.dim(' Run `ginko graph init` to configure\n'));
266
- return;
267
- }
268
- // Find epic files (from docs/epics/) and sprint files (from docs/sprints/)
269
- const epicsDir = path.join(projectRoot, 'docs', 'epics');
270
- const sprintsDir = path.join(projectRoot, 'docs', 'sprints');
271
- if (!existsSync(epicsDir)) {
272
- console.log(chalk.yellow('📋 No epics directory found'));
273
- return;
274
- }
275
- const epicFilesList = await fs.readdir(epicsDir);
276
- // Filter for EPIC-NNN*.md files (exclude EPIC-INDEX.md and similar)
277
- const epicFiles = epicFilesList.filter(f => f.startsWith('EPIC-') &&
278
- f.endsWith('.md') &&
279
- /^EPIC-\d{3}/.test(f));
280
- if (epicFiles.length === 0) {
281
- console.log(chalk.yellow('📋 No epics to sync'));
282
- return;
283
- }
284
- // ADR-058: Check for local duplicate IDs before sync
285
- const duplicates = await detectLocalDuplicates(epicsDir, epicFiles);
286
- if (duplicates.size > 0) {
287
- console.log(chalk.red('🚨 Duplicate epic IDs detected!\n'));
288
- console.log(chalk.dim(' Per ADR-058, each epic must have a unique ID.\n'));
289
- for (const [id, files] of duplicates) {
290
- console.log(chalk.yellow(` ${id}:`));
291
- for (const info of files) {
292
- console.log(chalk.dim(` - ${info.file}`));
293
- console.log(chalk.dim(` "${info.title}"`));
294
- }
295
- console.log('');
296
- }
297
- console.log(chalk.dim(' To resolve:'));
298
- console.log(chalk.dim(' 1. Rename one of the duplicate epics to a new ID'));
299
- console.log(chalk.dim(' 2. Update the epic_id in frontmatter and the # title'));
300
- console.log(chalk.dim(' 3. Run `ginko epic --sync` again\n'));
301
- const { proceed } = await prompts({
302
- type: 'confirm',
303
- name: 'proceed',
304
- message: 'Continue sync anyway? (duplicates will cause overwrites)',
305
- initial: false,
306
- });
307
- if (!proceed) {
308
- console.log(chalk.dim('\nSync cancelled. Resolve duplicates first.\n'));
309
- return;
310
- }
311
- console.log(chalk.yellow('\n⚠️ Proceeding with duplicates - last file wins\n'));
312
- }
313
- // Get sprint files for association
314
- const sprintFilesList = existsSync(sprintsDir) ? await fs.readdir(sprintsDir) : [];
315
- // Import API client dynamically to avoid circular deps
316
- const { GraphApiClient } = await import('./graph/api-client.js');
317
- const client = new GraphApiClient();
318
- // Get current user for conflict detection
319
- const { getAccessToken } = await import('../utils/auth-storage.js');
320
- const token = await getAccessToken();
321
- let currentUser = 'unknown';
322
- if (token) {
323
- try {
324
- // Decode JWT to get user email (simple base64 decode of payload)
325
- const payload = token.split('.')[1];
326
- const decoded = JSON.parse(Buffer.from(payload, 'base64').toString());
327
- currentUser = decoded.email || decoded.sub || 'unknown';
328
- }
329
- catch {
330
- // Ignore decode errors
331
- }
332
- }
333
- for (const file of epicFiles) {
334
- const content = await fs.readFile(path.join(epicsDir, file), 'utf-8');
335
- let epicData = parseEpicContent(content);
336
- const originalId = epicData.id;
337
- console.log(chalk.dim(` Checking ${epicData.id}...`));
338
- // Check for ID conflict (ADR-058)
339
- const conflict = await client.checkEpicConflict(graphId, epicData.id);
340
- if (conflict && conflict.createdBy !== currentUser) {
341
- // ID conflict detected! Another user owns this ID
342
- console.log(chalk.yellow(`\n⚠️ ID Conflict: ${epicData.id} already exists`));
343
- console.log(chalk.dim(` Created by: ${conflict.createdBy}${conflict.createdAt ? ` on ${conflict.createdAt.split('T')[0]}` : ''}`));
344
- console.log(chalk.dim(` Title: "${conflict.title || 'Untitled'}"`));
345
- console.log(chalk.dim(`\nYour version: "${epicData.title}"\n`));
346
- // Find next available ID
347
- const suggestedId = conflict.suggestedId || await findNextAvailableEpicId(client, graphId, epicData.id);
348
- const { action } = await prompts({
349
- type: 'select',
350
- name: 'action',
351
- message: 'How would you like to resolve this conflict?',
352
- choices: [
353
- { title: `Rename to ${suggestedId} (recommended)`, value: 'rename' },
354
- { title: 'Skip this epic', value: 'skip' },
355
- { title: 'Cancel sync', value: 'cancel' },
356
- ],
357
- });
358
- if (action === 'cancel') {
359
- console.log(chalk.dim('\nSync cancelled.'));
360
- return;
361
- }
362
- if (action === 'skip') {
363
- console.log(chalk.yellow(` ○ Skipped ${epicData.id}`));
364
- continue;
365
- }
366
- if (action === 'rename') {
367
- // Update epic ID
368
- const oldId = epicData.id;
369
- epicData = { ...epicData, id: suggestedId };
370
- console.log(chalk.green(` ✓ Renamed ${oldId} → ${suggestedId}`));
371
- console.log(chalk.dim(` Note: Update your local file docs/epics/${file} with the new ID\n`));
372
- }
373
- }
374
- console.log(chalk.dim(` Syncing ${epicData.id}...`));
375
- // Sync epic node with graphId
376
- await client.syncEpic({ ...epicData, graphId });
377
- console.log(chalk.green(` ✓ ${epicData.id}: ${epicData.title}`));
378
- // Find and sync associated sprints
379
- // Use original ID for finding files (user hasn't renamed local files yet)
380
- // Match both "epic009" and "e009" filename patterns
381
- const epicNum = originalId.toLowerCase().replace('epic-', '');
382
- const epicPrefix1 = `epic${epicNum}`; // e.g., "epic009"
383
- const epicPrefix2 = `e${epicNum}-`; // e.g., "e009-" (for e009-s01 format)
384
- const sprintFiles = sprintFilesList.filter(f => f.startsWith('SPRINT-') &&
385
- (f.toLowerCase().includes(epicPrefix1) || f.toLowerCase().includes(epicPrefix2)));
386
- for (const sprintFile of sprintFiles) {
387
- try {
388
- const sprintContent = await fs.readFile(path.join(sprintsDir, sprintFile), 'utf-8');
389
- // Use existing sprint sync
390
- await client.syncSprint(graphId, sprintContent);
391
- const sprintName = sprintFile.replace('.md', '');
392
- console.log(chalk.dim(` ✓ ${sprintName}`));
393
- }
394
- catch (sprintError) {
395
- const sprintName = sprintFile.replace('.md', '');
396
- console.log(chalk.yellow(` ⚠️ ${sprintName} (sync failed, continuing...)`));
397
- }
398
- }
399
- }
400
- console.log(chalk.green('\n✅ Epic sync complete!\n'));
401
- }
402
- catch (error) {
403
- console.error(chalk.red(`\n❌ Sync failed: ${error.message}`));
404
- console.log(chalk.dim(' Check graph connection and authentication\n'));
405
- }
406
- }
407
- /**
408
- * Find next available Epic ID (ADR-058)
409
- * E.g., if EPIC-010 is taken, suggest EPIC-011
410
- */
411
- async function findNextAvailableEpicId(client, graphId, conflictId) {
412
- try {
413
- // Get all existing epic IDs
414
- const existingIds = await client.getEpicIds(graphId);
415
- // Parse conflict ID to get the number part
416
- const match = conflictId.match(/EPIC-(\d+)/i);
417
- if (!match) {
418
- // Fallback: just append "-new"
419
- return `${conflictId}-new`;
420
- }
421
- // Find max epic number
422
- let maxNum = parseInt(match[1], 10);
423
- for (const id of existingIds) {
424
- const numMatch = id.match(/EPIC-(\d+)/i);
425
- if (numMatch) {
426
- const num = parseInt(numMatch[1], 10);
427
- if (num > maxNum) {
428
- maxNum = num;
429
- }
430
- }
431
- }
432
- // Suggest next number with proper padding
433
- const nextNum = maxNum + 1;
434
- return `EPIC-${nextNum.toString().padStart(3, '0')}`;
435
- }
436
- catch {
437
- // Fallback on error
438
- return `${conflictId}-new`;
439
- }
440
- }
441
213
  // ============================================================================
442
214
  // Helpers
443
215
  // ============================================================================
444
- /**
445
- * Parse epic content from markdown
446
- */
447
- function parseEpicContent(content) {
448
- const titleMatch = content.match(/^# (EPIC-\d+): (.+)$/m);
449
- const goalMatch = content.match(/## Goal\n\n(.+?)(?=\n\n##|\n##|$)/s);
450
- const visionMatch = content.match(/## Vision\n\n(.+?)(?=\n\n##|\n##|$)/s);
451
- const statusMatch = content.match(/status: (\w+)/);
452
- // Parse success criteria
453
- const successSection = content.match(/## Success Criteria\n\n([\s\S]+?)(?=\n\n##|\n##|$)/);
454
- const successCriteria = successSection?.[1]
455
- ?.split('\n')
456
- .filter(l => l.trim().startsWith('-'))
457
- .map(l => l.replace(/^-\s*\[.\]\s*/, '').trim()) || [];
458
- // Calculate progress from checked items
459
- const totalCriteria = successCriteria.length;
460
- const completedCriteria = (successSection?.[1]?.match(/\[x\]/gi) || []).length;
461
- const progress = totalCriteria > 0 ? Math.round((completedCriteria / totalCriteria) * 100) : 0;
462
- // Parse scope
463
- const inScopeMatch = content.match(/### In Scope\n([\s\S]+?)(?=\n###|\n##|$)/);
464
- const outScopeMatch = content.match(/### Out of Scope\n([\s\S]+?)(?=\n###|\n##|$)/);
465
- const inScope = inScopeMatch?.[1]
466
- ?.split('\n')
467
- .filter(l => l.trim().startsWith('-'))
468
- .map(l => l.replace(/^-\s*/, '').trim()) || [];
469
- const outOfScope = outScopeMatch?.[1]
470
- ?.split('\n')
471
- .filter(l => l.trim().startsWith('-'))
472
- .map(l => l.replace(/^-\s*/, '').trim()) || [];
473
- return {
474
- id: titleMatch?.[1] || 'EPIC-000',
475
- title: titleMatch?.[2] || 'Untitled Epic',
476
- goal: goalMatch?.[1]?.trim() || '',
477
- vision: visionMatch?.[1]?.trim() || '',
478
- status: statusMatch?.[1] || 'active',
479
- progress,
480
- successCriteria,
481
- inScope,
482
- outOfScope,
483
- };
484
- }
485
216
  /**
486
217
  * Create a simple progress bar
487
218
  */
@@ -501,6 +232,6 @@ export const epicExamples = [
501
232
  'ginko epic # Create new epic via AI conversation',
502
233
  'ginko epic --list # List existing epics',
503
234
  'ginko epic --view # View epic details with sprints',
504
- 'ginko epic --sync # Sync epic to graph database',
235
+ 'ginko push epic # Push epic to graph (ADR-077)',
505
236
  ];
506
237
  //# sourceMappingURL=epic.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"epic.js","sourceRoot":"","sources":["../../src/commands/epic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"epic.js","sourceRoot":"","sources":["../../src/commands/epic.ts"],"names":[],"mappings":"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"}
@@ -306,29 +306,6 @@ export declare class GraphApiClient {
306
306
  * @returns Gotcha stats and resolution history
307
307
  */
308
308
  getGotchaResolutions(gotchaId: string): Promise<GotchaResolutionsResponse>;
309
- /**
310
- * Check if an Epic ID already exists in the graph (ADR-058)
311
- * Used for first-claim-wins conflict detection
312
- *
313
- * @param graphId - Graph namespace identifier
314
- * @param epicId - Epic ID to check (e.g., "EPIC-010" or "e010")
315
- * @returns Conflict info if ID exists, null if available
316
- */
317
- checkEpicConflict(graphId: string, epicId: string): Promise<EpicConflictCheck | null>;
318
- /**
319
- * Get all Epic IDs in a graph (for finding next available ID)
320
- */
321
- getEpicIds(graphId: string): Promise<string[]>;
322
- /**
323
- * Sync an epic to the graph database
324
- * Creates Epic node with relationships to sprints
325
- */
326
- syncEpic(epicData: EpicSyncData): Promise<EpicSyncResponse>;
327
- /**
328
- * Sync a charter to the graph database
329
- * Creates ProjectCharter node with project relationships
330
- */
331
- syncCharter(charterData: CharterSyncData): Promise<CharterSyncResponse>;
332
309
  /**
333
310
  * Sync a sprint to the graph database
334
311
  * Creates Sprint and Task nodes with relationships
@@ -466,6 +443,23 @@ export declare class GraphApiClient {
466
443
  title: string;
467
444
  status: string;
468
445
  }>>;
446
+ /**
447
+ * Get cleanup analysis for a graph (BUG-007)
448
+ * Analyzes orphan nodes, duplicates, stale namespaces, etc.
449
+ *
450
+ * @param graphId - Graph namespace identifier
451
+ * @returns Analysis with actionable cleanup categories
452
+ */
453
+ getCleanupAnalysis(graphId: string): Promise<CleanupAnalysisResponse>;
454
+ /**
455
+ * Execute a cleanup action on the graph (BUG-007)
456
+ *
457
+ * @param graphId - Graph namespace identifier
458
+ * @param action - Cleanup action to execute
459
+ * @param dryRun - If true, preview only without applying
460
+ * @returns Result with affected node count and details
461
+ */
462
+ executeCleanup(graphId: string, action: string, dryRun: boolean): Promise<CleanupExecuteResponse>;
469
463
  /**
470
464
  * Get all sprints in an epic (for cascade completion checks)
471
465
  *
@@ -615,82 +609,6 @@ export interface TaskGotchasResponse {
615
609
  }>;
616
610
  count: number;
617
611
  }
618
- /**
619
- * Sync an epic to the graph database
620
- */
621
- export interface EpicSyncData {
622
- graphId: string;
623
- id: string;
624
- title: string;
625
- goal: string;
626
- vision: string;
627
- status: string;
628
- progress: number;
629
- successCriteria: string[];
630
- inScope: string[];
631
- outOfScope: string[];
632
- }
633
- /**
634
- * Charter sync data for graph database
635
- */
636
- export interface CharterSyncData {
637
- graphId: string;
638
- id: string;
639
- projectId: string;
640
- status: string;
641
- workMode: string;
642
- version: string;
643
- purpose: string;
644
- users: string[];
645
- successCriteria: string[];
646
- inScope: string[];
647
- outOfScope: string[];
648
- tbd: string[];
649
- constraints?: string;
650
- timeline?: string;
651
- team?: string[];
652
- confidence: number;
653
- }
654
- export interface CharterSyncResponse {
655
- success: boolean;
656
- charter: {
657
- id: string;
658
- projectId: string;
659
- status: string;
660
- };
661
- nodesCreated: number;
662
- relationshipsCreated: number;
663
- }
664
- export interface EpicSyncResponse {
665
- success: boolean;
666
- epic: {
667
- id: string;
668
- title: string;
669
- status: string;
670
- };
671
- nodesCreated: number;
672
- relationshipsCreated: number;
673
- }
674
- /**
675
- * Epic ID conflict check response (ADR-058)
676
- */
677
- export interface EpicConflictCheckResponse {
678
- exists: boolean;
679
- createdBy?: string;
680
- createdAt?: string;
681
- title?: string;
682
- suggestedId?: string;
683
- }
684
- /**
685
- * Epic ID conflict info for client-side handling
686
- */
687
- export interface EpicConflictCheck {
688
- exists: boolean;
689
- createdBy: string;
690
- createdAt?: string;
691
- title?: string;
692
- suggestedId?: string;
693
- }
694
612
  export interface SprintSyncResponse {
695
613
  success: boolean;
696
614
  sprint: {
@@ -844,6 +762,74 @@ export interface EpicStatusResponse {
844
762
  };
845
763
  previous_status: string;
846
764
  }
765
+ /**
766
+ * Cleanup analysis response from GET /api/v1/graph/cleanup
767
+ */
768
+ export interface CleanupAnalysisResponse {
769
+ graphId: string;
770
+ analysis: {
771
+ orphanNodes: {
772
+ total: number;
773
+ byType: Array<{
774
+ nodeType: string;
775
+ count: number;
776
+ sampleIds: string[];
777
+ }>;
778
+ };
779
+ defaultGraphIdNodes: {
780
+ total: number;
781
+ byType: Array<{
782
+ nodeType: string;
783
+ count: number;
784
+ sampleIds: string[];
785
+ }>;
786
+ };
787
+ duplicateEpics: Array<{
788
+ baseId: string;
789
+ duplicateId: string;
790
+ baseTitle: string;
791
+ duplicateTitle: string;
792
+ }>;
793
+ nonCanonicalEpics: Array<{
794
+ legacyId: string;
795
+ canonicalId: string;
796
+ title: string;
797
+ }>;
798
+ duplicateTasks: {
799
+ total: number;
800
+ uniqueIds: number;
801
+ duplicateCount: number;
802
+ samples: Array<{
803
+ taskId: string;
804
+ count: number;
805
+ sprintId: string;
806
+ }>;
807
+ };
808
+ staleGraphIds: Array<{
809
+ graphId: string;
810
+ count: number;
811
+ }>;
812
+ };
813
+ actions: {
814
+ available: Array<{
815
+ action: string;
816
+ description: string;
817
+ estimatedDeletes?: number;
818
+ estimatedAffected?: number;
819
+ estimatedMerges?: number;
820
+ warning?: string;
821
+ }>;
822
+ };
823
+ }
824
+ /**
825
+ * Cleanup execute response from DELETE /api/v1/graph/cleanup
826
+ */
827
+ export interface CleanupExecuteResponse {
828
+ action: string;
829
+ dryRun: boolean;
830
+ affected: number;
831
+ details: string;
832
+ }
847
833
  /**
848
834
  * Helper function to create graph events with default client
849
835
  * Used by event-queue for async syncing