@ginkoai/cli 1.7.2 → 2.0.0-beta.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.
Files changed (101) hide show
  1. package/dist/commands/assign.d.ts +19 -0
  2. package/dist/commands/assign.d.ts.map +1 -0
  3. package/dist/commands/assign.js +200 -0
  4. package/dist/commands/assign.js.map +1 -0
  5. package/dist/commands/epic.d.ts.map +1 -1
  6. package/dist/commands/epic.js +48 -23
  7. package/dist/commands/epic.js.map +1 -1
  8. package/dist/commands/graph/api-client.d.ts +1 -0
  9. package/dist/commands/graph/api-client.d.ts.map +1 -1
  10. package/dist/commands/graph/api-client.js.map +1 -1
  11. package/dist/commands/insights/index.d.ts +12 -0
  12. package/dist/commands/insights/index.d.ts.map +1 -0
  13. package/dist/commands/insights/index.js +12 -0
  14. package/dist/commands/insights/index.js.map +1 -0
  15. package/dist/commands/insights/insights-command.d.ts +20 -0
  16. package/dist/commands/insights/insights-command.d.ts.map +1 -0
  17. package/dist/commands/insights/insights-command.js +369 -0
  18. package/dist/commands/insights/insights-command.js.map +1 -0
  19. package/dist/commands/principles/seed.d.ts +26 -0
  20. package/dist/commands/principles/seed.d.ts.map +1 -0
  21. package/dist/commands/principles/seed.js +150 -0
  22. package/dist/commands/principles/seed.js.map +1 -0
  23. package/dist/commands/start/start-reflection.d.ts +11 -0
  24. package/dist/commands/start/start-reflection.d.ts.map +1 -1
  25. package/dist/commands/start/start-reflection.js +149 -16
  26. package/dist/commands/start/start-reflection.js.map +1 -1
  27. package/dist/commands/sync/index.d.ts +21 -0
  28. package/dist/commands/sync/index.d.ts.map +1 -0
  29. package/dist/commands/sync/index.js +38 -0
  30. package/dist/commands/sync/index.js.map +1 -0
  31. package/dist/commands/sync/node-syncer.d.ts +58 -0
  32. package/dist/commands/sync/node-syncer.d.ts.map +1 -0
  33. package/dist/commands/sync/node-syncer.js +192 -0
  34. package/dist/commands/sync/node-syncer.js.map +1 -0
  35. package/dist/commands/sync/sprint-syncer.d.ts +42 -0
  36. package/dist/commands/sync/sprint-syncer.d.ts.map +1 -0
  37. package/dist/commands/sync/sprint-syncer.js +274 -0
  38. package/dist/commands/sync/sprint-syncer.js.map +1 -0
  39. package/dist/commands/sync/sync-command.d.ts +16 -0
  40. package/dist/commands/sync/sync-command.d.ts.map +1 -0
  41. package/dist/commands/sync/sync-command.js +429 -0
  42. package/dist/commands/sync/sync-command.js.map +1 -0
  43. package/dist/commands/sync/types.d.ts +86 -0
  44. package/dist/commands/sync/types.d.ts.map +1 -0
  45. package/dist/commands/sync/types.js +12 -0
  46. package/dist/commands/sync/types.js.map +1 -0
  47. package/dist/core/session-log-manager.d.ts +3 -1
  48. package/dist/core/session-log-manager.d.ts.map +1 -1
  49. package/dist/core/session-log-manager.js +5 -3
  50. package/dist/core/session-log-manager.js.map +1 -1
  51. package/dist/data/standard-principles.d.ts +43 -0
  52. package/dist/data/standard-principles.d.ts.map +1 -0
  53. package/dist/data/standard-principles.js +323 -0
  54. package/dist/data/standard-principles.js.map +1 -0
  55. package/dist/index.js +54 -1
  56. package/dist/index.js.map +1 -1
  57. package/dist/lib/insights/analyzers/anti-patterns.d.ts +32 -0
  58. package/dist/lib/insights/analyzers/anti-patterns.d.ts.map +1 -0
  59. package/dist/lib/insights/analyzers/anti-patterns.js +302 -0
  60. package/dist/lib/insights/analyzers/anti-patterns.js.map +1 -0
  61. package/dist/lib/insights/analyzers/efficiency.d.ts +22 -0
  62. package/dist/lib/insights/analyzers/efficiency.d.ts.map +1 -0
  63. package/dist/lib/insights/analyzers/efficiency.js +311 -0
  64. package/dist/lib/insights/analyzers/efficiency.js.map +1 -0
  65. package/dist/lib/insights/analyzers/index.d.ts +24 -0
  66. package/dist/lib/insights/analyzers/index.d.ts.map +1 -0
  67. package/dist/lib/insights/analyzers/index.js +37 -0
  68. package/dist/lib/insights/analyzers/index.js.map +1 -0
  69. package/dist/lib/insights/analyzers/patterns.d.ts +21 -0
  70. package/dist/lib/insights/analyzers/patterns.d.ts.map +1 -0
  71. package/dist/lib/insights/analyzers/patterns.js +337 -0
  72. package/dist/lib/insights/analyzers/patterns.js.map +1 -0
  73. package/dist/lib/insights/analyzers/quality.d.ts +29 -0
  74. package/dist/lib/insights/analyzers/quality.d.ts.map +1 -0
  75. package/dist/lib/insights/analyzers/quality.js +371 -0
  76. package/dist/lib/insights/analyzers/quality.js.map +1 -0
  77. package/dist/lib/insights/data-collector.d.ts +68 -0
  78. package/dist/lib/insights/data-collector.d.ts.map +1 -0
  79. package/dist/lib/insights/data-collector.js +514 -0
  80. package/dist/lib/insights/data-collector.js.map +1 -0
  81. package/dist/lib/insights/index.d.ts +14 -0
  82. package/dist/lib/insights/index.d.ts.map +1 -0
  83. package/dist/lib/insights/index.js +17 -0
  84. package/dist/lib/insights/index.js.map +1 -0
  85. package/dist/lib/insights/scheduler.d.ts +71 -0
  86. package/dist/lib/insights/scheduler.d.ts.map +1 -0
  87. package/dist/lib/insights/scheduler.js +126 -0
  88. package/dist/lib/insights/scheduler.js.map +1 -0
  89. package/dist/lib/insights/types.d.ts +216 -0
  90. package/dist/lib/insights/types.d.ts.map +1 -0
  91. package/dist/lib/insights/types.js +12 -0
  92. package/dist/lib/insights/types.js.map +1 -0
  93. package/dist/templates/ai-instructions-template.d.ts +1 -0
  94. package/dist/templates/ai-instructions-template.d.ts.map +1 -1
  95. package/dist/templates/ai-instructions-template.js +51 -0
  96. package/dist/templates/ai-instructions-template.js.map +1 -1
  97. package/package.json +1 -1
  98. package/dist/lib/__tests__/task-timeout.test.d.ts +0 -12
  99. package/dist/lib/__tests__/task-timeout.test.d.ts.map +0 -1
  100. package/dist/lib/__tests__/task-timeout.test.js +0 -278
  101. package/dist/lib/__tests__/task-timeout.test.js.map +0 -1
@@ -0,0 +1,369 @@
1
+ /**
2
+ * @fileType: command
3
+ * @status: current
4
+ * @updated: 2025-12-15
5
+ * @tags: [cli, insights, coaching, analysis]
6
+ * @related: [../../lib/insights/, ../status.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: [chalk, commander]
10
+ */
11
+ import chalk from 'chalk';
12
+ import { collectInsightData, getAllAnalyzers, getAnalyzer, } from '../../lib/insights/index.js';
13
+ // ============================================================================
14
+ // Constants
15
+ // ============================================================================
16
+ const SEVERITY_ICONS = {
17
+ info: '○',
18
+ suggestion: '◐',
19
+ warning: '⚠️',
20
+ critical: '🚨',
21
+ };
22
+ const CATEGORY_DISPLAY_NAMES = {
23
+ efficiency: 'Session Efficiency',
24
+ patterns: 'Pattern Adoption',
25
+ quality: 'Collaboration Quality',
26
+ 'anti-patterns': 'Anti-Patterns',
27
+ };
28
+ const SCORE_RATINGS = [
29
+ { min: 90, label: 'Excellent', color: chalk.green },
30
+ { min: 75, label: 'Good', color: chalk.cyan },
31
+ { min: 60, label: 'Fair', color: chalk.yellow },
32
+ { min: 40, label: 'Needs Improvement', color: chalk.hex('#FFA500') },
33
+ { min: 0, label: 'Critical', color: chalk.red },
34
+ ];
35
+ // ============================================================================
36
+ // Main Command
37
+ // ============================================================================
38
+ export async function insightsCommand(options = {}) {
39
+ try {
40
+ const days = options.days ?? 30;
41
+ // Collect data
42
+ console.log(chalk.dim(`Analyzing ${days} days of activity...`));
43
+ const data = await collectInsightData({ days });
44
+ // Run analysis
45
+ const report = await generateReport(data, options.category);
46
+ // Output based on format
47
+ if (options.json) {
48
+ outputJson(report);
49
+ }
50
+ else if (options.detailed) {
51
+ outputDetailed(report);
52
+ }
53
+ else {
54
+ outputSummary(report);
55
+ }
56
+ // Sync to Supabase if requested
57
+ if (options.sync) {
58
+ await syncToSupabase(report);
59
+ }
60
+ }
61
+ catch (error) {
62
+ console.error(chalk.red('Error running insights analysis:'), error instanceof Error ? error.message : String(error));
63
+ process.exit(1);
64
+ }
65
+ }
66
+ // ============================================================================
67
+ // Report Generation
68
+ // ============================================================================
69
+ async function generateReport(data, categoryFilter) {
70
+ const analyzers = categoryFilter
71
+ ? [getAnalyzer(categoryFilter)].filter(Boolean)
72
+ : getAllAnalyzers();
73
+ if (analyzers.length === 0) {
74
+ throw new Error(`Unknown category: ${categoryFilter}. Valid categories: efficiency, patterns, quality, anti-patterns`);
75
+ }
76
+ // Run all analyzers
77
+ const allInsights = [];
78
+ for (const analyzer of analyzers) {
79
+ if (analyzer) {
80
+ const insights = await analyzer.analyze(data);
81
+ allInsights.push(...insights);
82
+ }
83
+ }
84
+ // Calculate category scores
85
+ const categoryScores = calculateCategoryScores(allInsights);
86
+ // Calculate overall score
87
+ const overallScore = calculateOverallScore(categoryScores);
88
+ // Generate summary
89
+ const summary = generateSummary(allInsights, overallScore);
90
+ return {
91
+ userId: data.userId,
92
+ projectId: data.projectId,
93
+ runAt: new Date(),
94
+ period: data.period,
95
+ overallScore,
96
+ categoryScores,
97
+ insights: allInsights,
98
+ summary,
99
+ };
100
+ }
101
+ function calculateCategoryScores(insights) {
102
+ const categories = ['efficiency', 'patterns', 'quality', 'anti-patterns'];
103
+ const scores = [];
104
+ for (const category of categories) {
105
+ const categoryInsights = insights.filter(i => i.category === category);
106
+ const baseScore = 75; // Start with a base score
107
+ // Calculate adjustments from insights
108
+ const adjustments = categoryInsights.reduce((sum, insight) => sum + insight.scoreImpact, 0);
109
+ // Clamp score between 0 and 100
110
+ const score = Math.max(0, Math.min(100, baseScore + adjustments));
111
+ scores.push({
112
+ category,
113
+ score: Math.round(score),
114
+ baseScore,
115
+ adjustments,
116
+ insightCount: categoryInsights.length,
117
+ criticalCount: categoryInsights.filter(i => i.severity === 'critical').length,
118
+ warningCount: categoryInsights.filter(i => i.severity === 'warning').length,
119
+ });
120
+ }
121
+ return scores;
122
+ }
123
+ function calculateOverallScore(categoryScores) {
124
+ if (categoryScores.length === 0)
125
+ return 75;
126
+ // Weight categories (efficiency and quality slightly higher)
127
+ const weights = {
128
+ efficiency: 0.3,
129
+ patterns: 0.2,
130
+ quality: 0.3,
131
+ 'anti-patterns': 0.2,
132
+ };
133
+ let weightedSum = 0;
134
+ let totalWeight = 0;
135
+ for (const cs of categoryScores) {
136
+ const weight = weights[cs.category] || 0.25;
137
+ weightedSum += cs.score * weight;
138
+ totalWeight += weight;
139
+ }
140
+ return Math.round(weightedSum / totalWeight);
141
+ }
142
+ function generateSummary(insights, score) {
143
+ const criticalCount = insights.filter(i => i.severity === 'critical').length;
144
+ const warningCount = insights.filter(i => i.severity === 'warning').length;
145
+ const positiveCount = insights.filter(i => i.scoreImpact > 0).length;
146
+ if (criticalCount > 0) {
147
+ return `${criticalCount} critical issues require immediate attention.`;
148
+ }
149
+ else if (warningCount > 0) {
150
+ return `${warningCount} areas could be improved. ${positiveCount} metrics are performing well.`;
151
+ }
152
+ else if (score >= 90) {
153
+ return `Excellent performance across all metrics. Keep up the great work!`;
154
+ }
155
+ else if (score >= 75) {
156
+ return `Good overall performance with ${positiveCount} strong areas.`;
157
+ }
158
+ else {
159
+ return `Several areas need attention to improve your development workflow.`;
160
+ }
161
+ }
162
+ // ============================================================================
163
+ // Output Formatters
164
+ // ============================================================================
165
+ function outputSummary(report) {
166
+ // Header
167
+ console.log('');
168
+ console.log(chalk.bold(`Coaching Insights`) + chalk.dim(` | ${report.userId} | ${report.projectId}`));
169
+ console.log(chalk.dim(`Analysis period: ${report.period.days} days`));
170
+ console.log('');
171
+ // Category summaries
172
+ for (const categoryScore of report.categoryScores) {
173
+ const displayName = CATEGORY_DISPLAY_NAMES[categoryScore.category];
174
+ const categoryInsights = report.insights.filter(i => i.category === categoryScore.category);
175
+ // Skip empty categories
176
+ if (categoryInsights.length === 0)
177
+ continue;
178
+ console.log(chalk.cyan.bold(displayName));
179
+ // Show top 2 insights per category
180
+ const topInsights = categoryInsights.slice(0, 2);
181
+ for (const insight of topInsights) {
182
+ const icon = SEVERITY_ICONS[insight.severity];
183
+ const titleColor = insight.scoreImpact > 0 ? chalk.green : insight.severity === 'warning' ? chalk.yellow : chalk.white;
184
+ console.log(` ${icon} ${titleColor(insight.title)}`);
185
+ if (insight.description && insight.description.length < 80) {
186
+ console.log(chalk.dim(` ${insight.description}`));
187
+ }
188
+ }
189
+ if (categoryInsights.length > 2) {
190
+ console.log(chalk.dim(` +${categoryInsights.length - 2} more insights`));
191
+ }
192
+ console.log('');
193
+ }
194
+ // Overall score
195
+ const rating = getScoreRating(report.overallScore);
196
+ console.log(chalk.bold('Overall Score: ') + rating.color(`${report.overallScore}/100 (${rating.label})`));
197
+ console.log(chalk.dim(report.summary));
198
+ console.log('');
199
+ console.log(chalk.dim(`Run ${chalk.cyan('ginko insights --detailed')} for full analysis`));
200
+ }
201
+ function outputDetailed(report) {
202
+ // Header
203
+ console.log('');
204
+ console.log(chalk.bold.green('Coaching Insights Report'));
205
+ console.log(chalk.dim('═'.repeat(60)));
206
+ console.log(`User: ${report.userId}`);
207
+ console.log(`Project: ${report.projectId}`);
208
+ console.log(`Period: ${report.period.start.toLocaleDateString()} - ${report.period.end.toLocaleDateString()} (${report.period.days} days)`);
209
+ console.log(`Generated: ${report.runAt.toLocaleString()}`);
210
+ console.log(chalk.dim('═'.repeat(60)));
211
+ console.log('');
212
+ // Category details
213
+ for (const categoryScore of report.categoryScores) {
214
+ const displayName = CATEGORY_DISPLAY_NAMES[categoryScore.category];
215
+ const categoryInsights = report.insights.filter(i => i.category === categoryScore.category);
216
+ if (categoryInsights.length === 0)
217
+ continue;
218
+ const scoreRating = getScoreRating(categoryScore.score);
219
+ console.log(chalk.cyan.bold(`${displayName}`) + chalk.dim(` | Score: `) + scoreRating.color(`${categoryScore.score}/100`));
220
+ console.log(chalk.dim('─'.repeat(50)));
221
+ for (const insight of categoryInsights) {
222
+ const icon = SEVERITY_ICONS[insight.severity];
223
+ const severityColor = getSeverityColor(insight.severity);
224
+ console.log(` ${icon} ${severityColor.bold(insight.title)}`);
225
+ console.log(` ${insight.description}`);
226
+ // Show metric if available
227
+ if (insight.metricValue !== undefined) {
228
+ const metricStr = `${insight.metricName}: ${insight.metricValue}${insight.metricUnit || ''}`;
229
+ const targetStr = insight.metricTarget !== undefined ? ` (target: ${insight.metricTarget}${insight.metricUnit || ''})` : '';
230
+ console.log(chalk.dim(` Metric: ${metricStr}${targetStr}`));
231
+ }
232
+ // Show evidence
233
+ if (insight.evidence.length > 0) {
234
+ console.log(chalk.dim(` Evidence:`));
235
+ for (const ev of insight.evidence.slice(0, 3)) {
236
+ console.log(chalk.dim(` - ${ev.description}`));
237
+ }
238
+ if (insight.evidence.length > 3) {
239
+ console.log(chalk.dim(` ... and ${insight.evidence.length - 3} more`));
240
+ }
241
+ }
242
+ // Show recommendations
243
+ if (insight.recommendations.length > 0) {
244
+ console.log(chalk.yellow.dim(` Recommendations:`));
245
+ for (const rec of insight.recommendations) {
246
+ console.log(chalk.yellow.dim(` - ${rec}`));
247
+ }
248
+ }
249
+ console.log('');
250
+ }
251
+ console.log('');
252
+ }
253
+ // Overall summary
254
+ console.log(chalk.dim('═'.repeat(60)));
255
+ const rating = getScoreRating(report.overallScore);
256
+ console.log(chalk.bold('Overall Score: ') + rating.color(`${report.overallScore}/100 (${rating.label})`));
257
+ console.log('');
258
+ console.log(chalk.bold('Summary: ') + report.summary);
259
+ console.log('');
260
+ // Score breakdown
261
+ console.log(chalk.bold('Category Breakdown:'));
262
+ for (const cs of report.categoryScores) {
263
+ const displayName = CATEGORY_DISPLAY_NAMES[cs.category];
264
+ const rating = getScoreRating(cs.score);
265
+ const bar = generateScoreBar(cs.score);
266
+ console.log(` ${displayName.padEnd(22)} ${bar} ${rating.color(String(cs.score).padStart(3))}`);
267
+ }
268
+ console.log('');
269
+ }
270
+ function outputJson(report) {
271
+ const output = {
272
+ ...report,
273
+ runAt: report.runAt.toISOString(),
274
+ period: {
275
+ ...report.period,
276
+ start: report.period.start.toISOString(),
277
+ end: report.period.end.toISOString(),
278
+ },
279
+ };
280
+ console.log(JSON.stringify(output, null, 2));
281
+ }
282
+ // ============================================================================
283
+ // Supabase Sync
284
+ // ============================================================================
285
+ async function syncToSupabase(report) {
286
+ console.log(chalk.dim('\nSyncing to dashboard...'));
287
+ // Load auth token
288
+ const { loadAuthSession } = await import('../../utils/auth-storage.js');
289
+ const { loadGraphConfig } = await import('../graph/config.js');
290
+ const session = await loadAuthSession();
291
+ const token = session?.api_key || null;
292
+ if (!token) {
293
+ console.log(chalk.yellow('⚠ Not authenticated. Run `ginko login` to sync insights.'));
294
+ console.log(chalk.dim('Results saved locally only'));
295
+ return;
296
+ }
297
+ // Get API URL from graph config or environment
298
+ const graphConfig = await loadGraphConfig();
299
+ const apiUrl = graphConfig?.apiEndpoint || process.env.GINKO_API_URL || 'https://app.ginkoai.com';
300
+ // Prepare request payload
301
+ const payload = {
302
+ userId: report.userId,
303
+ projectId: report.projectId,
304
+ graphId: graphConfig?.graphId,
305
+ overallScore: report.overallScore,
306
+ categoryScores: report.categoryScores,
307
+ insights: report.insights,
308
+ summary: report.summary,
309
+ period: {
310
+ start: report.period.start.toISOString(),
311
+ end: report.period.end.toISOString(),
312
+ days: report.period.days,
313
+ },
314
+ };
315
+ try {
316
+ const response = await fetch(`${apiUrl}/api/v1/insights/sync`, {
317
+ method: 'POST',
318
+ headers: {
319
+ 'Content-Type': 'application/json',
320
+ 'Authorization': `Bearer ${token}`,
321
+ },
322
+ body: JSON.stringify(payload),
323
+ });
324
+ if (!response.ok) {
325
+ const errorData = await response.json().catch(() => ({}));
326
+ throw new Error(errorData.error || `HTTP ${response.status}`);
327
+ }
328
+ const result = await response.json();
329
+ console.log(chalk.green('✓ Insights synced to dashboard'));
330
+ console.log(chalk.dim(` Run ID: ${result.runId}`));
331
+ console.log(chalk.dim(` Insights: ${result.insightCount} | Trends: ${result.trendCount}`));
332
+ }
333
+ catch (error) {
334
+ console.log(chalk.yellow(`⚠ Sync failed: ${error instanceof Error ? error.message : String(error)}`));
335
+ console.log(chalk.dim('Results saved locally only'));
336
+ }
337
+ }
338
+ // ============================================================================
339
+ // Helper Functions
340
+ // ============================================================================
341
+ function getScoreRating(score) {
342
+ for (const rating of SCORE_RATINGS) {
343
+ if (score >= rating.min) {
344
+ return rating;
345
+ }
346
+ }
347
+ return SCORE_RATINGS[SCORE_RATINGS.length - 1];
348
+ }
349
+ function getSeverityColor(severity) {
350
+ switch (severity) {
351
+ case 'critical':
352
+ return chalk.red;
353
+ case 'warning':
354
+ return chalk.yellow;
355
+ case 'suggestion':
356
+ return chalk.cyan;
357
+ case 'info':
358
+ default:
359
+ return chalk.white;
360
+ }
361
+ }
362
+ function generateScoreBar(score, width = 20) {
363
+ const filled = Math.round((score / 100) * width);
364
+ const empty = width - filled;
365
+ const rating = getScoreRating(score);
366
+ return rating.color('█'.repeat(filled)) + chalk.dim('░'.repeat(empty));
367
+ }
368
+ export default insightsCommand;
369
+ //# sourceMappingURL=insights-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insights-command.js","sourceRoot":"","sources":["../../../src/commands/insights/insights-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @fileType: command
3
+ * @status: current
4
+ * @updated: 2025-12-16
5
+ * @tags: [cli, principles, seeding, graph-sync]
6
+ * @related: [standard-principles.ts, graph-api-client.ts]
7
+ * @priority: medium
8
+ * @complexity: medium
9
+ * @dependencies: [commander, chalk]
10
+ */
11
+ import { Command } from 'commander';
12
+ interface SeedOptions {
13
+ dryRun?: boolean;
14
+ force?: boolean;
15
+ }
16
+ /**
17
+ * Seed standard principles to the knowledge graph.
18
+ * This command creates Principle nodes for all standard best practices.
19
+ */
20
+ export declare function seedPrinciples(options?: SeedOptions): Promise<void>;
21
+ /**
22
+ * Create the principles seed command for the CLI.
23
+ */
24
+ export declare function createSeedCommand(): Command;
25
+ export default createSeedCommand;
26
+ //# sourceMappingURL=seed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../../src/commands/principles/seed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4H7E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAU3C;AAED,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * @fileType: command
3
+ * @status: current
4
+ * @updated: 2025-12-16
5
+ * @tags: [cli, principles, seeding, graph-sync]
6
+ * @related: [standard-principles.ts, graph-api-client.ts]
7
+ * @priority: medium
8
+ * @complexity: medium
9
+ * @dependencies: [commander, chalk]
10
+ */
11
+ import { Command } from 'commander';
12
+ import chalk from 'chalk';
13
+ import { STANDARD_PRINCIPLES } from '../../data/standard-principles';
14
+ /**
15
+ * Seed standard principles to the knowledge graph.
16
+ * This command creates Principle nodes for all standard best practices.
17
+ */
18
+ export async function seedPrinciples(options = {}) {
19
+ const { dryRun = false, force = false } = options;
20
+ console.log(chalk.cyan('\n📚 Ginko Principles Seeder\n'));
21
+ console.log(chalk.dim(`Found ${STANDARD_PRINCIPLES.length} standard principles to seed\n`));
22
+ if (dryRun) {
23
+ console.log(chalk.yellow('🔍 Dry run mode - no changes will be made\n'));
24
+ }
25
+ // Display principles to be seeded
26
+ for (const principle of STANDARD_PRINCIPLES) {
27
+ const statusIcon = principle.status === 'active' ? '✅' : '⚠️';
28
+ console.log(`${statusIcon} ${chalk.bold(principle.principle_id)}: ${principle.name}`);
29
+ console.log(chalk.dim(` Source: ${principle.source}`));
30
+ if (principle.related_adrs?.length) {
31
+ console.log(chalk.dim(` ADRs: ${principle.related_adrs.join(', ')}`));
32
+ }
33
+ console.log();
34
+ }
35
+ if (dryRun) {
36
+ console.log(chalk.yellow('\n✓ Dry run complete. Use --force to actually seed.\n'));
37
+ return;
38
+ }
39
+ // Check for graph configuration
40
+ const graphId = process.env.GINKO_GRAPH_ID;
41
+ const bearerToken = process.env.GINKO_BEARER_TOKEN;
42
+ if (!graphId || !bearerToken) {
43
+ console.log(chalk.yellow('\n⚠️ Graph credentials not found.'));
44
+ console.log(chalk.dim(' Set GINKO_GRAPH_ID and GINKO_BEARER_TOKEN to seed to graph.'));
45
+ console.log(chalk.dim(' Principles are defined in packages/cli/src/data/standard-principles.ts\n'));
46
+ return;
47
+ }
48
+ // Seed to graph API
49
+ console.log(chalk.cyan('\n🌐 Seeding principles to graph...\n'));
50
+ let successCount = 0;
51
+ let skipCount = 0;
52
+ let errorCount = 0;
53
+ for (const principle of STANDARD_PRINCIPLES) {
54
+ try {
55
+ const response = await fetch('https://app.ginkoai.com/api/v1/graph/nodes', {
56
+ method: 'POST',
57
+ headers: {
58
+ 'Authorization': `Bearer ${bearerToken}`,
59
+ 'Content-Type': 'application/json'
60
+ },
61
+ body: JSON.stringify({
62
+ graphId,
63
+ label: 'Principle',
64
+ properties: {
65
+ principle_id: principle.principle_id,
66
+ name: principle.name,
67
+ theory: principle.theory,
68
+ type: principle.type,
69
+ status: principle.status,
70
+ source: principle.source,
71
+ related_patterns: principle.related_patterns || [],
72
+ related_adrs: principle.related_adrs || [],
73
+ version: principle.version
74
+ }
75
+ })
76
+ });
77
+ if (response.ok) {
78
+ console.log(chalk.green(` ✓ ${principle.principle_id}: ${principle.name}`));
79
+ successCount++;
80
+ }
81
+ else if (response.status === 409) {
82
+ // Already exists
83
+ if (force) {
84
+ // Update existing
85
+ const updateResponse = await fetch(`https://app.ginkoai.com/api/v1/graph/nodes/${principle.principle_id}`, {
86
+ method: 'PATCH',
87
+ headers: {
88
+ 'Authorization': `Bearer ${bearerToken}`,
89
+ 'Content-Type': 'application/json'
90
+ },
91
+ body: JSON.stringify({
92
+ graphId,
93
+ properties: {
94
+ name: principle.name,
95
+ theory: principle.theory,
96
+ type: principle.type,
97
+ status: principle.status,
98
+ source: principle.source,
99
+ related_patterns: principle.related_patterns || [],
100
+ related_adrs: principle.related_adrs || [],
101
+ version: principle.version
102
+ }
103
+ })
104
+ });
105
+ if (updateResponse.ok) {
106
+ console.log(chalk.blue(` ↻ ${principle.principle_id}: Updated`));
107
+ successCount++;
108
+ }
109
+ else {
110
+ console.log(chalk.yellow(` ⚠ ${principle.principle_id}: Update failed`));
111
+ errorCount++;
112
+ }
113
+ }
114
+ else {
115
+ console.log(chalk.dim(` ○ ${principle.principle_id}: Already exists (use --force to update)`));
116
+ skipCount++;
117
+ }
118
+ }
119
+ else {
120
+ const error = await response.text();
121
+ console.log(chalk.red(` ✗ ${principle.principle_id}: Failed - ${error}`));
122
+ errorCount++;
123
+ }
124
+ }
125
+ catch (error) {
126
+ console.log(chalk.red(` ✗ ${principle.principle_id}: ${error instanceof Error ? error.message : 'Unknown error'}`));
127
+ errorCount++;
128
+ }
129
+ }
130
+ // Summary
131
+ console.log(chalk.cyan('\n📊 Seeding Summary'));
132
+ console.log(` Created: ${chalk.green(successCount)}`);
133
+ console.log(` Skipped: ${chalk.dim(skipCount)}`);
134
+ console.log(` Errors: ${errorCount > 0 ? chalk.red(errorCount) : chalk.dim(errorCount)}\n`);
135
+ }
136
+ /**
137
+ * Create the principles seed command for the CLI.
138
+ */
139
+ export function createSeedCommand() {
140
+ const command = new Command('seed')
141
+ .description('Seed standard principles to the knowledge graph')
142
+ .option('--dry-run', 'Show what would be seeded without making changes')
143
+ .option('--force', 'Update existing principles instead of skipping')
144
+ .action(async (options) => {
145
+ await seedPrinciples(options);
146
+ });
147
+ return command;
148
+ }
149
+ export default createSeedCommand;
150
+ //# sourceMappingURL=seed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed.js","sourceRoot":"","sources":["../../../src/commands/principles/seed.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,11 @@ export declare class StartReflectionCommand extends ReflectionCommand {
20
20
  * Parse intent for session initialization
21
21
  */
22
22
  private parseIntent;
23
+ /**
24
+ * Check for unsynced knowledge nodes (TASK-5)
25
+ * Returns count of nodes edited in dashboard but not synced to git
26
+ */
27
+ private checkUnsyncedNodes;
23
28
  /**
24
29
  * Convert graph API sprint response to local SprintChecklist format
25
30
  * Enables graph-first loading with seamless fallback to local files
@@ -124,6 +129,12 @@ export declare class StartReflectionCommand extends ReflectionCommand {
124
129
  * Initialize session logging (ADR-033)
125
130
  */
126
131
  private initializeSessionLog;
132
+ /**
133
+ * Run scheduled insights updates in the background.
134
+ * Checks which periods (1-day, 7-day, 30-day) need updates and runs them.
135
+ * Non-blocking - runs asynchronously without awaiting completion.
136
+ */
137
+ private runScheduledInsights;
127
138
  }
128
139
  export default StartReflectionCommand;
129
140
  //# sourceMappingURL=start-reflection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"start-reflection.d.ts","sourceRoot":"","sources":["../../../src/commands/start/start-reflection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AA8BrE;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,iBAAiB;IAC3D,OAAO,CAAC,cAAc,CAAuB;;IAQ7C;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;;;OAIG;IACH,OAAO,CAAC,6BAA6B;IA8ErC;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAyO/D;;;;;OAKG;YACW,kBAAkB;IA6VhC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC;IA+BlC;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAsDlF;;OAEG;YACW,WAAW;IAuBzB;;OAEG;YACW,0BAA0B;IA2DxC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;OAEG;YACW,aAAa;IAM3B;;OAEG;YACW,iBAAiB;IAU/B;;OAEG;YACW,WAAW;IAKzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IA6BpC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA4CzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA2B9B;;OAEG;IACG,aAAa,CAAC,YAAY,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAmCpD;;OAEG;IACH,OAAO,CAAC,mBAAmB,CAAC,CAI1B;IAEF;;;;;OAKG;YACW,iBAAiB;IAwI/B;;;;;OAKG;YACW,cAAc;IAuI5B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAM5B;;;;OAIG;YACW,cAAc;IAa5B;;OAEG;YACW,oBAAoB;CAqBnC;AAGD,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"start-reflection.d.ts","sourceRoot":"","sources":["../../../src/commands/start/start-reflection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAmCrE;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,iBAAiB;IAC3D,OAAO,CAAC,cAAc,CAAuB;;IAQ7C;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;;OAGG;YACW,kBAAkB;IAmChC;;;;OAIG;IACH,OAAO,CAAC,6BAA6B;IA8ErC;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,GAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAkR/D;;;;;OAKG;YACW,kBAAkB;IA6VhC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC;IA+BlC;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAsDlF;;OAEG;YACW,WAAW;IAuBzB;;OAEG;YACW,0BAA0B;IA2DxC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;OAEG;YACW,aAAa;IAM3B;;OAEG;YACW,iBAAiB;IAU/B;;OAEG;YACW,WAAW;IAKzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IA6BpC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA4CzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA2B9B;;OAEG;IACG,aAAa,CAAC,YAAY,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAmCpD;;OAEG;IACH,OAAO,CAAC,mBAAmB,CAAC,CAI1B;IAEF;;;;;OAKG;YACW,iBAAiB;IAwI/B;;;;;OAKG;YACW,cAAc;IA6I5B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAM5B;;;;OAIG;YACW,cAAc;IAa5B;;OAEG;YACW,oBAAoB;IAuBlC;;;;OAIG;YACW,oBAAoB;CAsDnC;AAGD,eAAe,sBAAsB,CAAC"}