@ginkoai/cli 2.1.0 → 2.1.1

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 (84) hide show
  1. package/dist/commands/graph/api-client.d.ts +12 -1
  2. package/dist/commands/graph/api-client.d.ts.map +1 -1
  3. package/dist/commands/graph/api-client.js +16 -2
  4. package/dist/commands/graph/api-client.js.map +1 -1
  5. package/dist/commands/handoff.d.ts +3 -3
  6. package/dist/commands/handoff.d.ts.map +1 -1
  7. package/dist/commands/handoff.js +32 -3
  8. package/dist/commands/handoff.js.map +1 -1
  9. package/dist/commands/nudging/index.d.ts +24 -0
  10. package/dist/commands/nudging/index.d.ts.map +1 -0
  11. package/dist/commands/nudging/index.js +175 -0
  12. package/dist/commands/nudging/index.js.map +1 -0
  13. package/dist/commands/sprint/create.d.ts +26 -0
  14. package/dist/commands/sprint/create.d.ts.map +1 -0
  15. package/dist/commands/sprint/create.js +269 -0
  16. package/dist/commands/sprint/create.js.map +1 -0
  17. package/dist/commands/sprint/index.d.ts.map +1 -1
  18. package/dist/commands/sprint/index.js +24 -0
  19. package/dist/commands/sprint/index.js.map +1 -1
  20. package/dist/commands/sprint/quick-fix.d.ts +25 -0
  21. package/dist/commands/sprint/quick-fix.d.ts.map +1 -0
  22. package/dist/commands/sprint/quick-fix.js +151 -0
  23. package/dist/commands/sprint/quick-fix.js.map +1 -0
  24. package/dist/commands/sprint/sprint-pipeline-enhanced.d.ts.map +1 -1
  25. package/dist/commands/sprint/sprint-pipeline-enhanced.js +37 -0
  26. package/dist/commands/sprint/sprint-pipeline-enhanced.js.map +1 -1
  27. package/dist/commands/sprint/status.d.ts.map +1 -1
  28. package/dist/commands/sprint/status.js +21 -1
  29. package/dist/commands/sprint/status.js.map +1 -1
  30. package/dist/commands/start/start-reflection.d.ts +14 -0
  31. package/dist/commands/start/start-reflection.d.ts.map +1 -1
  32. package/dist/commands/start/start-reflection.js +180 -9
  33. package/dist/commands/start/start-reflection.js.map +1 -1
  34. package/dist/commands/task/status.d.ts +3 -0
  35. package/dist/commands/task/status.d.ts.map +1 -1
  36. package/dist/commands/task/status.js +48 -1
  37. package/dist/commands/task/status.js.map +1 -1
  38. package/dist/commands/team/index.d.ts +5 -0
  39. package/dist/commands/team/index.d.ts.map +1 -1
  40. package/dist/commands/team/index.js +28 -0
  41. package/dist/commands/team/index.js.map +1 -1
  42. package/dist/commands/team/status.d.ts +16 -0
  43. package/dist/commands/team/status.d.ts.map +1 -0
  44. package/dist/commands/team/status.js +180 -0
  45. package/dist/commands/team/status.js.map +1 -0
  46. package/dist/index.js +10 -3
  47. package/dist/index.js.map +1 -1
  48. package/dist/lib/adoption-score.d.ts +69 -0
  49. package/dist/lib/adoption-score.d.ts.map +1 -0
  50. package/dist/lib/adoption-score.js +206 -0
  51. package/dist/lib/adoption-score.js.map +1 -0
  52. package/dist/lib/coaching-level.d.ts +127 -0
  53. package/dist/lib/coaching-level.d.ts.map +1 -0
  54. package/dist/lib/coaching-level.js +406 -0
  55. package/dist/lib/coaching-level.js.map +1 -0
  56. package/dist/lib/event-logger.d.ts +42 -0
  57. package/dist/lib/event-logger.d.ts.map +1 -1
  58. package/dist/lib/event-logger.js +77 -0
  59. package/dist/lib/event-logger.js.map +1 -1
  60. package/dist/lib/planning-menu.d.ts +69 -0
  61. package/dist/lib/planning-menu.d.ts.map +1 -0
  62. package/dist/lib/planning-menu.js +342 -0
  63. package/dist/lib/planning-menu.js.map +1 -0
  64. package/dist/lib/targeted-coaching.d.ts +71 -0
  65. package/dist/lib/targeted-coaching.d.ts.map +1 -0
  66. package/dist/lib/targeted-coaching.js +318 -0
  67. package/dist/lib/targeted-coaching.js.map +1 -0
  68. package/dist/lib/task-parser.d.ts +2 -0
  69. package/dist/lib/task-parser.d.ts.map +1 -1
  70. package/dist/lib/task-parser.js +23 -0
  71. package/dist/lib/task-parser.js.map +1 -1
  72. package/dist/lib/user-sprint.d.ts +53 -0
  73. package/dist/lib/user-sprint.d.ts.map +1 -1
  74. package/dist/lib/user-sprint.js +137 -2
  75. package/dist/lib/user-sprint.js.map +1 -1
  76. package/dist/lib/work-reconciliation.d.ts +59 -0
  77. package/dist/lib/work-reconciliation.d.ts.map +1 -0
  78. package/dist/lib/work-reconciliation.js +267 -0
  79. package/dist/lib/work-reconciliation.js.map +1 -0
  80. package/dist/utils/version-check.d.ts +26 -0
  81. package/dist/utils/version-check.d.ts.map +1 -0
  82. package/dist/utils/version-check.js +186 -0
  83. package/dist/utils/version-check.js.map +1 -0
  84. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"user-sprint.js","sourceRoot":"","sources":["../../src/lib/user-sprint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-sprint.js","sourceRoot":"","sources":["../../src/lib/user-sprint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2026-01-26
5
+ * @tags: [reconciliation, handoff, untracked-work, coaching, epic-016-s04]
6
+ * @related: [handoff.ts, planning-menu.ts, user-sprint.ts, event-logger.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: [prompts, chalk, simple-git, event-logger]
10
+ */
11
+ export interface WorkReconciliationResult {
12
+ hasUntrackedWork: boolean;
13
+ untrackedCommits: number;
14
+ untrackedFiles: number;
15
+ userAction: 'tracked' | 'skipped' | 'no-work' | 'cancelled';
16
+ taskCreated?: string;
17
+ }
18
+ interface SessionWorkSummary {
19
+ commits: Array<{
20
+ hash: string;
21
+ message: string;
22
+ date: string;
23
+ }>;
24
+ modifiedFiles: string[];
25
+ hasActiveTask: boolean;
26
+ currentSprintId: string | null;
27
+ }
28
+ /**
29
+ * Get summary of work done in current session
30
+ */
31
+ declare function getSessionWorkSummary(): Promise<SessionWorkSummary>;
32
+ /**
33
+ * Determine if there's significant untracked work
34
+ */
35
+ declare function hasSignificantUntrackedWork(summary: SessionWorkSummary): boolean;
36
+ /**
37
+ * Check for untracked work and prompt user if significant
38
+ *
39
+ * Called during handoff to catch work that should be tracked.
40
+ * Non-blocking - if user declines, handoff continues normally.
41
+ *
42
+ * @returns Reconciliation result with user's action
43
+ */
44
+ export declare function reconcileWork(): Promise<WorkReconciliationResult>;
45
+ /**
46
+ * Quick check if reconciliation might be needed (for verbose output)
47
+ */
48
+ export declare function hasUntrackedWork(): Promise<boolean>;
49
+ export declare const __testing: {
50
+ UNTRACKED_THRESHOLD: {
51
+ commits: number;
52
+ files: number;
53
+ };
54
+ IGNORED_PATTERNS: RegExp[];
55
+ getSessionWorkSummary: typeof getSessionWorkSummary;
56
+ hasSignificantUntrackedWork: typeof hasSignificantUntrackedWork;
57
+ };
58
+ export {};
59
+ //# sourceMappingURL=work-reconciliation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-reconciliation.d.ts","sourceRoot":"","sources":["../../src/lib/work-reconciliation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAyBH,MAAM,WAAW,wBAAwB;IACvC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAyBD;;GAEG;AACH,iBAAe,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CA4ClE;AAED;;GAEG;AACH,iBAAS,2BAA2B,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAWzE;AAkID;;;;;;;GAOG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAyBvE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAOzD;AAMD,eAAO,MAAM,SAAS;;;;;;;;CAKrB,CAAC"}
@@ -0,0 +1,267 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2026-01-26
5
+ * @tags: [reconciliation, handoff, untracked-work, coaching, epic-016-s04]
6
+ * @related: [handoff.ts, planning-menu.ts, user-sprint.ts, event-logger.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: [prompts, chalk, simple-git, event-logger]
10
+ */
11
+ /**
12
+ * Handoff Reconciliation (EPIC-016 Sprint 4 t06)
13
+ *
14
+ * Catches untracked work at session end by:
15
+ * 1. Detecting meaningful changes (commits, modified files)
16
+ * 2. Comparing against tracked sprint/task work
17
+ * 3. Prompting user to create ad-hoc tasks for untracked work
18
+ *
19
+ * Goal: Ensure all significant work is captured for knowledge graph
20
+ * without being annoying or slowing down the workflow.
21
+ */
22
+ import prompts from 'prompts';
23
+ import chalk from 'chalk';
24
+ import simpleGit from 'simple-git';
25
+ import { logEvent } from './event-logger.js';
26
+ import { getUserCurrentSprint } from './user-sprint.js';
27
+ import { createQuickFixTask } from '../commands/sprint/quick-fix.js';
28
+ // =============================================================================
29
+ // Constants
30
+ // =============================================================================
31
+ // Minimum thresholds for prompting about untracked work
32
+ const UNTRACKED_THRESHOLD = {
33
+ commits: 1, // Prompt if 1+ commits without task
34
+ files: 5, // Or 5+ modified files
35
+ };
36
+ // File patterns to ignore when counting modified files
37
+ const IGNORED_PATTERNS = [
38
+ /^\.ginko\//,
39
+ /^node_modules\//,
40
+ /\.log$/,
41
+ /\.tmp$/,
42
+ /\.lock$/,
43
+ ];
44
+ // =============================================================================
45
+ // Work Detection
46
+ // =============================================================================
47
+ /**
48
+ * Get summary of work done in current session
49
+ */
50
+ async function getSessionWorkSummary() {
51
+ const git = simpleGit();
52
+ // Get current sprint info
53
+ const userSprint = await getUserCurrentSprint();
54
+ const hasActiveTask = userSprint !== null;
55
+ const currentSprintId = userSprint?.sprintId || null;
56
+ // Get recent commits (last 24 hours or since last handoff marker)
57
+ let commits = [];
58
+ try {
59
+ const log = await git.log({
60
+ '--since': '24 hours ago',
61
+ maxCount: 20,
62
+ });
63
+ commits = log.all.map(c => ({
64
+ hash: c.hash.slice(0, 7),
65
+ message: c.message.split('\n')[0],
66
+ date: c.date,
67
+ }));
68
+ }
69
+ catch {
70
+ // Git log failed - might not be a git repo
71
+ }
72
+ // Get modified files (staged + unstaged)
73
+ let modifiedFiles = [];
74
+ try {
75
+ const status = await git.status();
76
+ modifiedFiles = [
77
+ ...status.modified,
78
+ ...status.staged,
79
+ ...status.not_added,
80
+ ].filter(f => !IGNORED_PATTERNS.some(p => p.test(f)));
81
+ }
82
+ catch {
83
+ // Git status failed
84
+ }
85
+ return {
86
+ commits,
87
+ modifiedFiles,
88
+ hasActiveTask,
89
+ currentSprintId,
90
+ };
91
+ }
92
+ /**
93
+ * Determine if there's significant untracked work
94
+ */
95
+ function hasSignificantUntrackedWork(summary) {
96
+ // If user has an active task, assume work is tracked
97
+ if (summary.hasActiveTask) {
98
+ return false;
99
+ }
100
+ // Check thresholds
101
+ return (summary.commits.length >= UNTRACKED_THRESHOLD.commits ||
102
+ summary.modifiedFiles.length >= UNTRACKED_THRESHOLD.files);
103
+ }
104
+ // =============================================================================
105
+ // User Prompts
106
+ // =============================================================================
107
+ /**
108
+ * Prompt user about untracked work
109
+ */
110
+ async function promptForUntrackedWork(summary) {
111
+ console.log('');
112
+ console.log(chalk.yellow('📋 You have work that may not be tracked:'));
113
+ if (summary.commits.length > 0) {
114
+ console.log(chalk.dim(` ${summary.commits.length} commit(s) in the last 24h`));
115
+ // Show first commit message as context
116
+ if (summary.commits[0]) {
117
+ console.log(chalk.dim(` Latest: "${summary.commits[0].message.slice(0, 50)}..."`));
118
+ }
119
+ }
120
+ if (summary.modifiedFiles.length > 0) {
121
+ console.log(chalk.dim(` ${summary.modifiedFiles.length} modified file(s)`));
122
+ }
123
+ console.log('');
124
+ const { action } = await prompts({
125
+ type: 'select',
126
+ name: 'action',
127
+ message: 'Would you like to track this work?',
128
+ choices: [
129
+ {
130
+ title: 'Yes, create a quick task',
131
+ description: 'Track this work with a simple description',
132
+ value: 'track',
133
+ },
134
+ {
135
+ title: 'No, skip this time',
136
+ description: 'Continue without tracking',
137
+ value: 'skip',
138
+ },
139
+ ],
140
+ });
141
+ if (action === undefined) {
142
+ return {
143
+ hasUntrackedWork: true,
144
+ untrackedCommits: summary.commits.length,
145
+ untrackedFiles: summary.modifiedFiles.length,
146
+ userAction: 'cancelled',
147
+ };
148
+ }
149
+ if (action === 'skip') {
150
+ // Log that user skipped tracking
151
+ await logEvent({
152
+ category: 'decision',
153
+ description: 'Skipped tracking untracked work at handoff',
154
+ tags: ['handoff', 'untracked-work', 'skipped'],
155
+ impact: 'low',
156
+ }).catch(() => { });
157
+ return {
158
+ hasUntrackedWork: true,
159
+ untrackedCommits: summary.commits.length,
160
+ untrackedFiles: summary.modifiedFiles.length,
161
+ userAction: 'skipped',
162
+ };
163
+ }
164
+ // User wants to track - get description
165
+ const { description } = await prompts({
166
+ type: 'text',
167
+ name: 'description',
168
+ message: 'Brief description of the work:',
169
+ initial: summary.commits[0]?.message.slice(0, 50) || '',
170
+ validate: (v) => v.trim().length >= 5 ? true : 'Please provide a brief description',
171
+ });
172
+ if (!description) {
173
+ return {
174
+ hasUntrackedWork: true,
175
+ untrackedCommits: summary.commits.length,
176
+ untrackedFiles: summary.modifiedFiles.length,
177
+ userAction: 'cancelled',
178
+ };
179
+ }
180
+ // Create quick-fix task
181
+ try {
182
+ const result = await createQuickFixTask(description.trim());
183
+ if (result.success && result.taskId) {
184
+ console.log(chalk.green(`✓ Created: ${result.taskId}`));
185
+ return {
186
+ hasUntrackedWork: true,
187
+ untrackedCommits: summary.commits.length,
188
+ untrackedFiles: summary.modifiedFiles.length,
189
+ userAction: 'tracked',
190
+ taskCreated: result.taskId,
191
+ };
192
+ }
193
+ }
194
+ catch {
195
+ console.log(chalk.dim('Task creation skipped (graph may not be initialized)'));
196
+ }
197
+ // Log the work even if task creation failed
198
+ await logEvent({
199
+ category: 'feature',
200
+ description: `Handoff work: ${description}`,
201
+ tags: ['handoff', 'untracked-work', 'logged'],
202
+ impact: 'medium',
203
+ }).catch(() => { });
204
+ return {
205
+ hasUntrackedWork: true,
206
+ untrackedCommits: summary.commits.length,
207
+ untrackedFiles: summary.modifiedFiles.length,
208
+ userAction: 'tracked',
209
+ };
210
+ }
211
+ // =============================================================================
212
+ // Main Function
213
+ // =============================================================================
214
+ /**
215
+ * Check for untracked work and prompt user if significant
216
+ *
217
+ * Called during handoff to catch work that should be tracked.
218
+ * Non-blocking - if user declines, handoff continues normally.
219
+ *
220
+ * @returns Reconciliation result with user's action
221
+ */
222
+ export async function reconcileWork() {
223
+ try {
224
+ const summary = await getSessionWorkSummary();
225
+ if (!hasSignificantUntrackedWork(summary)) {
226
+ return {
227
+ hasUntrackedWork: false,
228
+ untrackedCommits: 0,
229
+ untrackedFiles: 0,
230
+ userAction: 'no-work',
231
+ };
232
+ }
233
+ return await promptForUntrackedWork(summary);
234
+ }
235
+ catch (error) {
236
+ // Non-critical - don't block handoff on reconciliation errors
237
+ console.warn(chalk.dim('Work reconciliation skipped:'), error instanceof Error ? error.message : String(error));
238
+ return {
239
+ hasUntrackedWork: false,
240
+ untrackedCommits: 0,
241
+ untrackedFiles: 0,
242
+ userAction: 'no-work',
243
+ };
244
+ }
245
+ }
246
+ /**
247
+ * Quick check if reconciliation might be needed (for verbose output)
248
+ */
249
+ export async function hasUntrackedWork() {
250
+ try {
251
+ const summary = await getSessionWorkSummary();
252
+ return hasSignificantUntrackedWork(summary);
253
+ }
254
+ catch {
255
+ return false;
256
+ }
257
+ }
258
+ // =============================================================================
259
+ // Exports for Testing
260
+ // =============================================================================
261
+ export const __testing = {
262
+ UNTRACKED_THRESHOLD,
263
+ IGNORED_PATTERNS,
264
+ getSessionWorkSummary,
265
+ hasSignificantUntrackedWork,
266
+ };
267
+ //# sourceMappingURL=work-reconciliation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-reconciliation.js","sourceRoot":"","sources":["../../src/lib/work-reconciliation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2026-01-21
5
+ * @tags: [version, update, npm, notification]
6
+ * @related: [start-reflection.ts]
7
+ * @priority: low
8
+ * @complexity: low
9
+ * @dependencies: [fs-extra, semver]
10
+ */
11
+ /**
12
+ * Get the current installed version
13
+ * Reads from package.json relative to this module's location
14
+ */
15
+ export declare function getCurrentVersion(): string;
16
+ /**
17
+ * Check for updates and return notification message if available
18
+ * Non-blocking, uses cache to avoid frequent npm requests
19
+ */
20
+ export declare function checkForUpdates(): Promise<string | null>;
21
+ /**
22
+ * Run version check in background (fire and forget)
23
+ * Returns a promise that resolves to the message (or null)
24
+ */
25
+ export declare function checkForUpdatesAsync(): Promise<string | null>;
26
+ //# sourceMappingURL=version-check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../src/utils/version-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA8BH;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAuB1C;AAmFD;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiC9D;AAUD;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE7D"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2026-01-21
5
+ * @tags: [version, update, npm, notification]
6
+ * @related: [start-reflection.ts]
7
+ * @priority: low
8
+ * @complexity: low
9
+ * @dependencies: [fs-extra, semver]
10
+ */
11
+ import fs from 'fs-extra';
12
+ import path from 'path';
13
+ import os from 'os';
14
+ import chalk from 'chalk';
15
+ import { fileURLToPath } from 'url';
16
+ // ES module compatibility: get __dirname equivalent
17
+ const __filename = fileURLToPath(import.meta.url);
18
+ const __dirname = path.dirname(__filename);
19
+ // Package name for npm registry lookup
20
+ const PACKAGE_NAME = '@ginkoai/cli';
21
+ // Cache duration: 24 hours
22
+ const CACHE_DURATION_MS = 24 * 60 * 60 * 1000;
23
+ /**
24
+ * Get the path to the version cache file
25
+ */
26
+ function getCacheFilePath() {
27
+ return path.join(os.homedir(), '.ginko', 'version-cache.json');
28
+ }
29
+ /**
30
+ * Get the current installed version
31
+ * Reads from package.json relative to this module's location
32
+ */
33
+ export function getCurrentVersion() {
34
+ try {
35
+ // When compiled, this file is at dist/utils/version-check.js
36
+ // package.json is at the package root (../../ from here)
37
+ const packageJsonPath = path.resolve(__dirname, '..', '..', 'package.json');
38
+ const packageJson = fs.readJsonSync(packageJsonPath);
39
+ return packageJson.version || '0.0.0';
40
+ }
41
+ catch {
42
+ // Fallback: try to call ginko --version
43
+ try {
44
+ const { execSync } = require('child_process');
45
+ const output = execSync('ginko --version', {
46
+ encoding: 'utf-8',
47
+ timeout: 2000,
48
+ stdio: ['pipe', 'pipe', 'pipe'],
49
+ }).trim();
50
+ const match = output.match(/(\d+\.\d+\.\d+)/);
51
+ if (match)
52
+ return match[1];
53
+ }
54
+ catch {
55
+ // Version check failed - non-critical
56
+ }
57
+ }
58
+ return '0.0.0';
59
+ }
60
+ /**
61
+ * Load cached version info
62
+ */
63
+ async function loadCache() {
64
+ try {
65
+ const cachePath = getCacheFilePath();
66
+ if (await fs.pathExists(cachePath)) {
67
+ const cache = await fs.readJson(cachePath);
68
+ return cache;
69
+ }
70
+ }
71
+ catch {
72
+ // Cache read failed - will fetch fresh
73
+ }
74
+ return null;
75
+ }
76
+ /**
77
+ * Save version info to cache
78
+ */
79
+ async function saveCache(latestVersion) {
80
+ try {
81
+ const cachePath = getCacheFilePath();
82
+ await fs.ensureDir(path.dirname(cachePath));
83
+ await fs.writeJson(cachePath, {
84
+ latestVersion,
85
+ checkedAt: new Date().toISOString(),
86
+ });
87
+ }
88
+ catch {
89
+ // Cache write failed - non-critical
90
+ }
91
+ }
92
+ /**
93
+ * Check if cache is still valid (less than 24 hours old)
94
+ */
95
+ function isCacheValid(cache) {
96
+ const checkedAt = new Date(cache.checkedAt).getTime();
97
+ const now = Date.now();
98
+ return (now - checkedAt) < CACHE_DURATION_MS;
99
+ }
100
+ /**
101
+ * Fetch latest version from npm registry
102
+ */
103
+ async function fetchLatestVersion() {
104
+ try {
105
+ // Use dynamic import for fetch (available in Node 18+)
106
+ const response = await fetch(`https://registry.npmjs.org/${PACKAGE_NAME}/latest`, {
107
+ headers: { 'Accept': 'application/json' },
108
+ signal: AbortSignal.timeout(3000), // 3 second timeout
109
+ });
110
+ if (!response.ok) {
111
+ return null;
112
+ }
113
+ const data = await response.json();
114
+ return data.version;
115
+ }
116
+ catch {
117
+ // Network error or timeout - non-critical
118
+ return null;
119
+ }
120
+ }
121
+ /**
122
+ * Compare semver versions
123
+ * Returns: -1 if a < b, 0 if a == b, 1 if a > b
124
+ */
125
+ function compareVersions(a, b) {
126
+ const partsA = a.split('.').map(Number);
127
+ const partsB = b.split('.').map(Number);
128
+ for (let i = 0; i < 3; i++) {
129
+ const numA = partsA[i] || 0;
130
+ const numB = partsB[i] || 0;
131
+ if (numA < numB)
132
+ return -1;
133
+ if (numA > numB)
134
+ return 1;
135
+ }
136
+ return 0;
137
+ }
138
+ /**
139
+ * Check for updates and return notification message if available
140
+ * Non-blocking, uses cache to avoid frequent npm requests
141
+ */
142
+ export async function checkForUpdates() {
143
+ try {
144
+ const currentVersion = getCurrentVersion();
145
+ // Check cache first
146
+ const cache = await loadCache();
147
+ if (cache && isCacheValid(cache)) {
148
+ // Use cached version
149
+ if (compareVersions(currentVersion, cache.latestVersion) < 0) {
150
+ return formatUpdateMessage(currentVersion, cache.latestVersion);
151
+ }
152
+ return null;
153
+ }
154
+ // Fetch latest version from npm
155
+ const latestVersion = await fetchLatestVersion();
156
+ if (!latestVersion) {
157
+ return null; // Couldn't fetch - fail silently
158
+ }
159
+ // Save to cache
160
+ await saveCache(latestVersion);
161
+ // Compare versions
162
+ if (compareVersions(currentVersion, latestVersion) < 0) {
163
+ return formatUpdateMessage(currentVersion, latestVersion);
164
+ }
165
+ return null;
166
+ }
167
+ catch {
168
+ // Version check failed - non-critical
169
+ return null;
170
+ }
171
+ }
172
+ /**
173
+ * Format the update notification message
174
+ */
175
+ function formatUpdateMessage(currentVersion, latestVersion) {
176
+ return chalk.yellow(`\n Update available: ${chalk.dim(currentVersion)} → ${chalk.green(latestVersion)}\n`) +
177
+ chalk.dim(` Run ${chalk.cyan('npm update -g @ginkoai/cli')} to update\n`);
178
+ }
179
+ /**
180
+ * Run version check in background (fire and forget)
181
+ * Returns a promise that resolves to the message (or null)
182
+ */
183
+ export function checkForUpdatesAsync() {
184
+ return checkForUpdates().catch(() => null);
185
+ }
186
+ //# sourceMappingURL=version-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/utils/version-check.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@ginkoai/cli",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
4
  "description": "Git-native session management and cloud context for AI-mediated development. AI Collaboration for Vibe Tribes.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
7
7
  "ginko": "./dist/index.js"
8
8
  },
9
9
  "scripts": {
10
- "build": "tsc && npm run copy:templates",
10
+ "build": "tsc && chmod +x dist/index.js && npm run copy:templates",
11
11
  "copy:templates": "mkdir -p dist/templates && cp src/templates/*.md dist/templates/ 2>/dev/null || true",
12
12
  "dev": "tsc --watch",
13
13
  "test": "jest",