@ginkoai/cli 2.0.0-beta.4 → 2.0.0-beta.5
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/start/start-reflection.d.ts +7 -0
- package/dist/commands/start/start-reflection.d.ts.map +1 -1
- package/dist/commands/start/start-reflection.js +32 -0
- package/dist/commands/start/start-reflection.js.map +1 -1
- package/dist/commands/sync/index.d.ts +7 -4
- package/dist/commands/sync/index.d.ts.map +1 -1
- package/dist/commands/sync/index.js +10 -6
- package/dist/commands/sync/index.js.map +1 -1
- package/dist/commands/sync/sync-command.d.ts +3 -3
- package/dist/commands/sync/sync-command.d.ts.map +1 -1
- package/dist/commands/sync/sync-command.js +27 -4
- package/dist/commands/sync/sync-command.js.map +1 -1
- package/dist/commands/sync/types.d.ts +5 -3
- package/dist/commands/sync/types.d.ts.map +1 -1
- package/dist/commands/sync/types.js +3 -3
- package/dist/lib/staleness-detector.d.ts +88 -0
- package/dist/lib/staleness-detector.d.ts.map +1 -0
- package/dist/lib/staleness-detector.js +290 -0
- package/dist/lib/staleness-detector.js.map +1 -0
- package/dist/lib/team-sync-reporter.d.ts +110 -0
- package/dist/lib/team-sync-reporter.d.ts.map +1 -0
- package/dist/lib/team-sync-reporter.js +316 -0
- package/dist/lib/team-sync-reporter.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileType: utility
|
|
3
|
+
* @status: current
|
|
4
|
+
* @updated: 2026-01-03
|
|
5
|
+
* @tags: [sync, team, reporting, changes, EPIC-008]
|
|
6
|
+
* @related: [../commands/sync/sync-command.ts, ../commands/sync/team-sync.ts, staleness-detector.ts]
|
|
7
|
+
* @priority: high
|
|
8
|
+
* @complexity: medium
|
|
9
|
+
* @dependencies: [chalk]
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Team Sync Reporter (EPIC-008 Sprint 2)
|
|
13
|
+
*
|
|
14
|
+
* Provides team-aware change reporting for the sync command.
|
|
15
|
+
* Shows who changed what since last sync with colored output.
|
|
16
|
+
*
|
|
17
|
+
* Key features:
|
|
18
|
+
* - Groups changes by team member
|
|
19
|
+
* - Counts changes by type (ADR, Pattern, Sprint, Gotcha)
|
|
20
|
+
* - Formats output with chalk colors
|
|
21
|
+
* - Supports preview/dry-run mode
|
|
22
|
+
*/
|
|
23
|
+
import chalk from 'chalk';
|
|
24
|
+
// =============================================================================
|
|
25
|
+
// Constants
|
|
26
|
+
// =============================================================================
|
|
27
|
+
const API_BASE = process.env.GINKO_API_URL || 'https://app.ginkoai.com';
|
|
28
|
+
// =============================================================================
|
|
29
|
+
// Main API
|
|
30
|
+
// =============================================================================
|
|
31
|
+
/**
|
|
32
|
+
* Fetch team changes since last sync
|
|
33
|
+
*
|
|
34
|
+
* @param graphId - The graph ID to query
|
|
35
|
+
* @param token - Bearer token for authentication
|
|
36
|
+
* @param lastSyncAt - ISO timestamp of last sync (null if never synced)
|
|
37
|
+
* @returns TeamChangeSummary with changes grouped by member
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* const summary = await getTeamChangesSinceLast(graphId, token, '2026-01-01T00:00:00Z');
|
|
42
|
+
* if (summary.totalChanges > 0) {
|
|
43
|
+
* displayTeamChangeReport(summary);
|
|
44
|
+
* }
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export async function getTeamChangesSinceLast(graphId, token, lastSyncAt) {
|
|
48
|
+
try {
|
|
49
|
+
// Build query URL
|
|
50
|
+
const url = new URL(`${API_BASE}/api/v1/team/activity`);
|
|
51
|
+
url.searchParams.set('graphId', graphId);
|
|
52
|
+
if (lastSyncAt) {
|
|
53
|
+
url.searchParams.set('since', lastSyncAt);
|
|
54
|
+
}
|
|
55
|
+
url.searchParams.set('limit', '100');
|
|
56
|
+
const response = await fetch(url.toString(), {
|
|
57
|
+
headers: {
|
|
58
|
+
Authorization: `Bearer ${token}`,
|
|
59
|
+
'Content-Type': 'application/json',
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
// Handle API not available (fallback to unsynced nodes endpoint)
|
|
63
|
+
if (response.status === 404 || response.status === 501) {
|
|
64
|
+
return await getTeamChangesFromUnsyncedNodes(graphId, token, lastSyncAt);
|
|
65
|
+
}
|
|
66
|
+
if (!response.ok) {
|
|
67
|
+
// Return empty summary on error (non-blocking)
|
|
68
|
+
return createEmptySummary(lastSyncAt);
|
|
69
|
+
}
|
|
70
|
+
const data = await response.json();
|
|
71
|
+
return aggregateChanges(data.changes || [], lastSyncAt);
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
// Network error - return empty summary (non-blocking)
|
|
75
|
+
return createEmptySummary(lastSyncAt);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Fallback: Get changes from unsynced nodes endpoint
|
|
80
|
+
* Used when /api/v1/team/activity is not available
|
|
81
|
+
*/
|
|
82
|
+
async function getTeamChangesFromUnsyncedNodes(graphId, token, lastSyncAt) {
|
|
83
|
+
try {
|
|
84
|
+
const url = new URL(`${API_BASE}/api/v1/graph/nodes/unsynced`);
|
|
85
|
+
url.searchParams.set('graphId', graphId);
|
|
86
|
+
const response = await fetch(url.toString(), {
|
|
87
|
+
headers: {
|
|
88
|
+
Authorization: `Bearer ${token}`,
|
|
89
|
+
'Content-Type': 'application/json',
|
|
90
|
+
},
|
|
91
|
+
});
|
|
92
|
+
if (!response.ok) {
|
|
93
|
+
return createEmptySummary(lastSyncAt);
|
|
94
|
+
}
|
|
95
|
+
const data = await response.json();
|
|
96
|
+
// Transform unsynced nodes to change records
|
|
97
|
+
const changes = (data.nodes || []).map(n => ({
|
|
98
|
+
id: n.node.id || n.node.properties.id || '',
|
|
99
|
+
type: (n.node.label || n.node.properties.type || 'ADR'),
|
|
100
|
+
title: n.node.properties.title || n.node.properties.name || 'Untitled',
|
|
101
|
+
action: 'updated',
|
|
102
|
+
editedBy: n.syncStatus?.editedBy || 'unknown',
|
|
103
|
+
editedAt: n.syncStatus?.editedAt || new Date().toISOString(),
|
|
104
|
+
}));
|
|
105
|
+
return aggregateChanges(changes, lastSyncAt);
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return createEmptySummary(lastSyncAt);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Aggregate raw changes into team summary
|
|
113
|
+
*/
|
|
114
|
+
function aggregateChanges(changes, lastSyncAt) {
|
|
115
|
+
const byMember = new Map();
|
|
116
|
+
for (const change of changes) {
|
|
117
|
+
const email = change.editedBy;
|
|
118
|
+
// Get or create member summary
|
|
119
|
+
let member = byMember.get(email);
|
|
120
|
+
if (!member) {
|
|
121
|
+
member = {
|
|
122
|
+
email,
|
|
123
|
+
displayName: change.editedByName || null,
|
|
124
|
+
changes: [],
|
|
125
|
+
totalChanges: 0,
|
|
126
|
+
};
|
|
127
|
+
byMember.set(email, member);
|
|
128
|
+
}
|
|
129
|
+
// Find or create type/action bucket
|
|
130
|
+
let typeChange = member.changes.find(c => c.type === change.type && c.action === change.action);
|
|
131
|
+
if (!typeChange) {
|
|
132
|
+
typeChange = {
|
|
133
|
+
type: change.type,
|
|
134
|
+
action: change.action,
|
|
135
|
+
count: 0,
|
|
136
|
+
titles: [],
|
|
137
|
+
};
|
|
138
|
+
member.changes.push(typeChange);
|
|
139
|
+
}
|
|
140
|
+
typeChange.count++;
|
|
141
|
+
if (typeChange.titles.length < 3) {
|
|
142
|
+
typeChange.titles.push(change.title);
|
|
143
|
+
}
|
|
144
|
+
member.totalChanges++;
|
|
145
|
+
}
|
|
146
|
+
// Calculate period string
|
|
147
|
+
const period = calculatePeriod(lastSyncAt);
|
|
148
|
+
return {
|
|
149
|
+
byMember,
|
|
150
|
+
totalChanges: changes.length,
|
|
151
|
+
sinceSyncAt: lastSyncAt,
|
|
152
|
+
period,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Create empty summary (used for error cases)
|
|
157
|
+
*/
|
|
158
|
+
function createEmptySummary(lastSyncAt) {
|
|
159
|
+
return {
|
|
160
|
+
byMember: new Map(),
|
|
161
|
+
totalChanges: 0,
|
|
162
|
+
sinceSyncAt: lastSyncAt,
|
|
163
|
+
period: calculatePeriod(lastSyncAt),
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Calculate human-readable period string
|
|
168
|
+
*/
|
|
169
|
+
function calculatePeriod(lastSyncAt) {
|
|
170
|
+
if (!lastSyncAt) {
|
|
171
|
+
return 'all time';
|
|
172
|
+
}
|
|
173
|
+
const lastSync = new Date(lastSyncAt);
|
|
174
|
+
const now = new Date();
|
|
175
|
+
const diffMs = now.getTime() - lastSync.getTime();
|
|
176
|
+
const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));
|
|
177
|
+
if (diffDays === 0)
|
|
178
|
+
return 'today';
|
|
179
|
+
if (diffDays === 1)
|
|
180
|
+
return '1 day';
|
|
181
|
+
if (diffDays < 7)
|
|
182
|
+
return `${diffDays} days`;
|
|
183
|
+
if (diffDays < 14)
|
|
184
|
+
return '1 week';
|
|
185
|
+
if (diffDays < 30)
|
|
186
|
+
return `${Math.floor(diffDays / 7)} weeks`;
|
|
187
|
+
if (diffDays < 60)
|
|
188
|
+
return '1 month';
|
|
189
|
+
return `${Math.floor(diffDays / 30)} months`;
|
|
190
|
+
}
|
|
191
|
+
// =============================================================================
|
|
192
|
+
// Display Functions
|
|
193
|
+
// =============================================================================
|
|
194
|
+
/**
|
|
195
|
+
* Format team change report as string (for logging or testing)
|
|
196
|
+
*
|
|
197
|
+
* @param summary - The team change summary to format
|
|
198
|
+
* @returns Formatted string with colors stripped for logging
|
|
199
|
+
*/
|
|
200
|
+
export function formatTeamChangeReport(summary) {
|
|
201
|
+
const lines = [];
|
|
202
|
+
if (summary.totalChanges === 0) {
|
|
203
|
+
lines.push('No changes since last sync.');
|
|
204
|
+
return lines.join('\n');
|
|
205
|
+
}
|
|
206
|
+
lines.push(`Team changes since last sync (${summary.period} ago):`);
|
|
207
|
+
lines.push('');
|
|
208
|
+
// Sort members by total changes (most active first)
|
|
209
|
+
const sortedMembers = Array.from(summary.byMember.values())
|
|
210
|
+
.sort((a, b) => b.totalChanges - a.totalChanges);
|
|
211
|
+
for (const member of sortedMembers) {
|
|
212
|
+
const displayName = member.displayName || formatEmail(member.email);
|
|
213
|
+
lines.push(` ${displayName}:`);
|
|
214
|
+
// Sort changes: created first, then updated, then deleted
|
|
215
|
+
const sortedChanges = member.changes.sort((a, b) => {
|
|
216
|
+
const order = { created: 0, updated: 1, deleted: 2 };
|
|
217
|
+
return (order[a.action] || 1) - (order[b.action] || 1);
|
|
218
|
+
});
|
|
219
|
+
for (const change of sortedChanges) {
|
|
220
|
+
const icon = change.action === 'created' ? '+' : change.action === 'updated' ? '~' : '-';
|
|
221
|
+
const plural = change.count === 1 ? '' : 's';
|
|
222
|
+
lines.push(` ${icon} ${change.count} ${change.type}${plural} ${change.action}`);
|
|
223
|
+
}
|
|
224
|
+
lines.push('');
|
|
225
|
+
}
|
|
226
|
+
// Summary line
|
|
227
|
+
const memberCount = summary.byMember.size;
|
|
228
|
+
lines.push(` Total: ${summary.totalChanges} change${summary.totalChanges === 1 ? '' : 's'} from ${memberCount} team member${memberCount === 1 ? '' : 's'}`);
|
|
229
|
+
return lines.join('\n');
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Display team change report to console with chalk colors
|
|
233
|
+
*
|
|
234
|
+
* @param summary - The team change summary to display
|
|
235
|
+
*/
|
|
236
|
+
export function displayTeamChangeReport(summary) {
|
|
237
|
+
if (summary.totalChanges === 0) {
|
|
238
|
+
console.log(chalk.dim('No changes since last sync.'));
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
console.log('');
|
|
242
|
+
console.log(chalk.cyan.bold(`Team changes since last sync (${summary.period} ago):`));
|
|
243
|
+
console.log('');
|
|
244
|
+
// Sort members by total changes (most active first)
|
|
245
|
+
const sortedMembers = Array.from(summary.byMember.values())
|
|
246
|
+
.sort((a, b) => b.totalChanges - a.totalChanges);
|
|
247
|
+
for (const member of sortedMembers) {
|
|
248
|
+
const displayName = member.displayName || formatEmail(member.email);
|
|
249
|
+
console.log(chalk.white(` ${displayName}:`));
|
|
250
|
+
// Sort changes: created first, then updated, then deleted
|
|
251
|
+
const sortedChanges = member.changes.sort((a, b) => {
|
|
252
|
+
const order = { created: 0, updated: 1, deleted: 2 };
|
|
253
|
+
return (order[a.action] || 1) - (order[b.action] || 1);
|
|
254
|
+
});
|
|
255
|
+
for (const change of sortedChanges) {
|
|
256
|
+
const plural = change.count === 1 ? '' : 's';
|
|
257
|
+
let line;
|
|
258
|
+
if (change.action === 'created') {
|
|
259
|
+
line = chalk.green(` + ${change.count} ${change.type}${plural} created`);
|
|
260
|
+
}
|
|
261
|
+
else if (change.action === 'updated') {
|
|
262
|
+
line = chalk.yellow(` ~ ${change.count} ${change.type}${plural} updated`);
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
line = chalk.red(` - ${change.count} ${change.type}${plural} deleted`);
|
|
266
|
+
}
|
|
267
|
+
console.log(line);
|
|
268
|
+
}
|
|
269
|
+
console.log('');
|
|
270
|
+
}
|
|
271
|
+
// Summary line
|
|
272
|
+
const memberCount = summary.byMember.size;
|
|
273
|
+
console.log(chalk.dim(` Total: ${summary.totalChanges} change${summary.totalChanges === 1 ? '' : 's'} from ${memberCount} team member${memberCount === 1 ? '' : 's'}`));
|
|
274
|
+
console.log('');
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Display compact change summary (single line)
|
|
278
|
+
*
|
|
279
|
+
* @param summary - The team change summary
|
|
280
|
+
* @returns Single line summary string
|
|
281
|
+
*/
|
|
282
|
+
export function formatCompactSummary(summary) {
|
|
283
|
+
if (summary.totalChanges === 0) {
|
|
284
|
+
return 'No pending changes';
|
|
285
|
+
}
|
|
286
|
+
const memberCount = summary.byMember.size;
|
|
287
|
+
return `${summary.totalChanges} change${summary.totalChanges === 1 ? '' : 's'} from ${memberCount} member${memberCount === 1 ? '' : 's'} (${summary.period})`;
|
|
288
|
+
}
|
|
289
|
+
// =============================================================================
|
|
290
|
+
// Helper Functions
|
|
291
|
+
// =============================================================================
|
|
292
|
+
/**
|
|
293
|
+
* Format email for display (truncate domain)
|
|
294
|
+
*/
|
|
295
|
+
function formatEmail(email) {
|
|
296
|
+
const atIndex = email.indexOf('@');
|
|
297
|
+
if (atIndex === -1)
|
|
298
|
+
return email;
|
|
299
|
+
const local = email.substring(0, atIndex);
|
|
300
|
+
const domain = email.substring(atIndex + 1);
|
|
301
|
+
// Shorten common domains
|
|
302
|
+
if (domain === 'gmail.com' || domain === 'outlook.com' || domain === 'yahoo.com') {
|
|
303
|
+
return `${local}@${domain.split('.')[0]}`;
|
|
304
|
+
}
|
|
305
|
+
return `${local}@`;
|
|
306
|
+
}
|
|
307
|
+
// =============================================================================
|
|
308
|
+
// Exports for Testing
|
|
309
|
+
// =============================================================================
|
|
310
|
+
export const _internal = {
|
|
311
|
+
aggregateChanges,
|
|
312
|
+
calculatePeriod,
|
|
313
|
+
formatEmail,
|
|
314
|
+
createEmptySummary,
|
|
315
|
+
};
|
|
316
|
+
//# sourceMappingURL=team-sync-reporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team-sync-reporter.js","sourceRoot":"","sources":["../../src/lib/team-sync-reporter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED