@ginkoai/cli 2.4.4 → 2.5.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 (180) hide show
  1. package/LICENSE +661 -21
  2. package/dist/commands/agent/status.d.ts.map +1 -1
  3. package/dist/commands/agent/status.js +2 -0
  4. package/dist/commands/agent/status.js.map +1 -1
  5. package/dist/commands/assign.d.ts.map +1 -1
  6. package/dist/commands/assign.js +2 -0
  7. package/dist/commands/assign.js.map +1 -1
  8. package/dist/commands/charter.js +3 -3
  9. package/dist/commands/charter.js.map +1 -1
  10. package/dist/commands/context/index.d.ts +28 -0
  11. package/dist/commands/context/index.d.ts.map +1 -0
  12. package/dist/commands/context/index.js +165 -0
  13. package/dist/commands/context/index.js.map +1 -0
  14. package/dist/commands/context/score.d.ts +34 -0
  15. package/dist/commands/context/score.d.ts.map +1 -0
  16. package/dist/commands/context/score.js +163 -0
  17. package/dist/commands/context/score.js.map +1 -0
  18. package/dist/commands/create.d.ts.map +1 -1
  19. package/dist/commands/create.js +10 -0
  20. package/dist/commands/create.js.map +1 -1
  21. package/dist/commands/diff/diff-command.d.ts.map +1 -1
  22. package/dist/commands/diff/diff-command.js +2 -0
  23. package/dist/commands/diff/diff-command.js.map +1 -1
  24. package/dist/commands/epic/status.d.ts.map +1 -1
  25. package/dist/commands/epic/status.js +5 -0
  26. package/dist/commands/epic/status.js.map +1 -1
  27. package/dist/commands/graph/api-client.d.ts +131 -0
  28. package/dist/commands/graph/api-client.d.ts.map +1 -1
  29. package/dist/commands/graph/api-client.js +153 -0
  30. package/dist/commands/graph/api-client.js.map +1 -1
  31. package/dist/commands/graph/cleanup.d.ts.map +1 -1
  32. package/dist/commands/graph/cleanup.js +2 -0
  33. package/dist/commands/graph/cleanup.js.map +1 -1
  34. package/dist/commands/graph/explore.d.ts.map +1 -1
  35. package/dist/commands/graph/explore.js +2 -0
  36. package/dist/commands/graph/explore.js.map +1 -1
  37. package/dist/commands/graph/init.d.ts.map +1 -1
  38. package/dist/commands/graph/init.js +4 -10
  39. package/dist/commands/graph/init.js.map +1 -1
  40. package/dist/commands/graph/query.d.ts.map +1 -1
  41. package/dist/commands/graph/query.js +2 -0
  42. package/dist/commands/graph/query.js.map +1 -1
  43. package/dist/commands/graph/status.d.ts.map +1 -1
  44. package/dist/commands/graph/status.js +2 -0
  45. package/dist/commands/graph/status.js.map +1 -1
  46. package/dist/commands/handoff.d.ts.map +1 -1
  47. package/dist/commands/handoff.js +34 -0
  48. package/dist/commands/handoff.js.map +1 -1
  49. package/dist/commands/health.d.ts +15 -0
  50. package/dist/commands/health.d.ts.map +1 -0
  51. package/dist/commands/health.js +212 -0
  52. package/dist/commands/health.js.map +1 -0
  53. package/dist/commands/init-copilot.js +1 -1
  54. package/dist/commands/init-copilot.js.map +1 -1
  55. package/dist/commands/init.d.ts.map +1 -1
  56. package/dist/commands/init.js +74 -2
  57. package/dist/commands/init.js.map +1 -1
  58. package/dist/commands/join/index.js +2 -2
  59. package/dist/commands/knowledge/create.d.ts.map +1 -1
  60. package/dist/commands/knowledge/create.js +2 -0
  61. package/dist/commands/knowledge/create.js.map +1 -1
  62. package/dist/commands/knowledge/graph.d.ts.map +1 -1
  63. package/dist/commands/knowledge/graph.js +2 -0
  64. package/dist/commands/knowledge/graph.js.map +1 -1
  65. package/dist/commands/knowledge/search.d.ts.map +1 -1
  66. package/dist/commands/knowledge/search.js +2 -0
  67. package/dist/commands/knowledge/search.js.map +1 -1
  68. package/dist/commands/log.d.ts.map +1 -1
  69. package/dist/commands/log.js +4 -3
  70. package/dist/commands/log.js.map +1 -1
  71. package/dist/commands/orchestrate.d.ts.map +1 -1
  72. package/dist/commands/orchestrate.js +2 -0
  73. package/dist/commands/orchestrate.js.map +1 -1
  74. package/dist/commands/pull/pull-command.d.ts.map +1 -1
  75. package/dist/commands/pull/pull-command.js +2 -0
  76. package/dist/commands/pull/pull-command.js.map +1 -1
  77. package/dist/commands/push/push-command.d.ts.map +1 -1
  78. package/dist/commands/push/push-command.js +19 -2
  79. package/dist/commands/push/push-command.js.map +1 -1
  80. package/dist/commands/ship.js +1 -1
  81. package/dist/commands/ship.js.map +1 -1
  82. package/dist/commands/sprint/create.d.ts +9 -5
  83. package/dist/commands/sprint/create.d.ts.map +1 -1
  84. package/dist/commands/sprint/create.js +226 -29
  85. package/dist/commands/sprint/create.js.map +1 -1
  86. package/dist/commands/sprint/index.d.ts.map +1 -1
  87. package/dist/commands/sprint/index.js +9 -5
  88. package/dist/commands/sprint/index.js.map +1 -1
  89. package/dist/commands/sprint/status.d.ts +3 -0
  90. package/dist/commands/sprint/status.d.ts.map +1 -1
  91. package/dist/commands/sprint/status.js +88 -2
  92. package/dist/commands/sprint/status.js.map +1 -1
  93. package/dist/commands/start/index.js +3 -3
  94. package/dist/commands/start/index.js.map +1 -1
  95. package/dist/commands/start/start-reflection.d.ts +5 -0
  96. package/dist/commands/start/start-reflection.d.ts.map +1 -1
  97. package/dist/commands/start/start-reflection.js +60 -11
  98. package/dist/commands/start/start-reflection.js.map +1 -1
  99. package/dist/commands/sync/sync-command.js +1 -1
  100. package/dist/commands/sync/sync-command.js.map +1 -1
  101. package/dist/commands/sync/team-sync.js +1 -1
  102. package/dist/commands/task/status.d.ts +1 -1
  103. package/dist/commands/task/status.d.ts.map +1 -1
  104. package/dist/commands/task/status.js +161 -6
  105. package/dist/commands/task/status.js.map +1 -1
  106. package/dist/commands/team/members.d.ts.map +1 -1
  107. package/dist/commands/team/members.js +4 -0
  108. package/dist/commands/team/members.js.map +1 -1
  109. package/dist/commands/team/projects.d.ts.map +1 -1
  110. package/dist/commands/team/projects.js +3 -0
  111. package/dist/commands/team/projects.js.map +1 -1
  112. package/dist/commands/team/status.d.ts.map +1 -1
  113. package/dist/commands/team/status.js +2 -0
  114. package/dist/commands/team/status.js.map +1 -1
  115. package/dist/index.js +12 -8
  116. package/dist/index.js.map +1 -1
  117. package/dist/lib/adoption-score.d.ts +1 -1
  118. package/dist/lib/adoption-score.d.ts.map +1 -1
  119. package/dist/lib/adoption-score.js +1 -0
  120. package/dist/lib/adoption-score.js.map +1 -1
  121. package/dist/lib/context-loader-events.d.ts +4 -4
  122. package/dist/lib/context-loader-events.d.ts.map +1 -1
  123. package/dist/lib/context-loader-events.js +69 -18
  124. package/dist/lib/context-loader-events.js.map +1 -1
  125. package/dist/lib/context-quality.d.ts +224 -0
  126. package/dist/lib/context-quality.d.ts.map +1 -0
  127. package/dist/lib/context-quality.js +363 -0
  128. package/dist/lib/context-quality.js.map +1 -0
  129. package/dist/lib/event-logger.d.ts.map +1 -1
  130. package/dist/lib/event-logger.js +2 -3
  131. package/dist/lib/event-logger.js.map +1 -1
  132. package/dist/lib/health-checker.d.ts +35 -0
  133. package/dist/lib/health-checker.d.ts.map +1 -0
  134. package/dist/lib/health-checker.js +475 -0
  135. package/dist/lib/health-checker.js.map +1 -0
  136. package/dist/lib/output-formatter.d.ts +48 -0
  137. package/dist/lib/output-formatter.d.ts.map +1 -1
  138. package/dist/lib/output-formatter.js +168 -4
  139. package/dist/lib/output-formatter.js.map +1 -1
  140. package/dist/lib/resumption-brief.d.ts +91 -0
  141. package/dist/lib/resumption-brief.d.ts.map +1 -0
  142. package/dist/lib/resumption-brief.js +344 -0
  143. package/dist/lib/resumption-brief.js.map +1 -0
  144. package/dist/lib/staleness-detector.js +1 -1
  145. package/dist/lib/state-cache.d.ts +43 -0
  146. package/dist/lib/state-cache.d.ts.map +1 -1
  147. package/dist/lib/state-cache.js +72 -0
  148. package/dist/lib/state-cache.js.map +1 -1
  149. package/dist/lib/targeted-coaching.js +2 -2
  150. package/dist/lib/task-parser.d.ts +34 -4
  151. package/dist/lib/task-parser.d.ts.map +1 -1
  152. package/dist/lib/task-parser.js +110 -4
  153. package/dist/lib/task-parser.js.map +1 -1
  154. package/dist/services/context-search.d.ts.map +1 -1
  155. package/dist/services/context-search.js +4 -2
  156. package/dist/services/context-search.js.map +1 -1
  157. package/dist/templates/ai-instructions-template.d.ts.map +1 -1
  158. package/dist/templates/ai-instructions-template.js +20 -0
  159. package/dist/templates/ai-instructions-template.js.map +1 -1
  160. package/dist/templates/commands/handoff.md +40 -0
  161. package/dist/templates/commands/quick.md +27 -0
  162. package/dist/templates/commands/ship.md +43 -0
  163. package/dist/templates/commands/start.md +15 -0
  164. package/dist/templates/commands/vibecheck.md +36 -0
  165. package/dist/templates/skills/ginko/SKILL.md +1 -8
  166. package/dist/templates/sprint-template.md +273 -0
  167. package/dist/utils/cloud-guard.d.ts +48 -0
  168. package/dist/utils/cloud-guard.d.ts.map +1 -0
  169. package/dist/utils/cloud-guard.js +107 -0
  170. package/dist/utils/cloud-guard.js.map +1 -0
  171. package/dist/utils/config-loader.d.ts +2 -2
  172. package/dist/utils/config-loader.js +2 -2
  173. package/dist/utils/helpers.d.ts.map +1 -1
  174. package/dist/utils/helpers.js +11 -10
  175. package/dist/utils/helpers.js.map +1 -1
  176. package/dist/utils/perf-logger.d.ts +100 -0
  177. package/dist/utils/perf-logger.d.ts.map +1 -0
  178. package/dist/utils/perf-logger.js +132 -0
  179. package/dist/utils/perf-logger.js.map +1 -0
  180. package/package.json +3 -3
@@ -0,0 +1,475 @@
1
+ /**
2
+ * @fileType: utility
3
+ * @status: current
4
+ * @updated: 2026-02-16
5
+ * @tags: [health, adherence, process, supervision, EPIC-022]
6
+ * @related: [sync-state.ts, ../core/session-log-manager.ts, ../commands/health.ts]
7
+ * @priority: high
8
+ * @complexity: medium
9
+ * @dependencies: [fs-extra, simple-git, glob]
10
+ */
11
+ /**
12
+ * Health Checker Module (EPIC-022)
13
+ *
14
+ * Reusable health check runner that aggregates local data sources
15
+ * into structured adherence results. Used by:
16
+ * - `ginko health` command (full report)
17
+ * - `ginko task complete` (one-line nudge)
18
+ * - `ginko handoff` (summary before handoff)
19
+ */
20
+ import fs from 'fs-extra';
21
+ import path from 'path';
22
+ import simpleGit from 'simple-git';
23
+ import glob from 'glob';
24
+ import { promisify } from 'util';
25
+ import { getUserEmail, getGinkoDir, getProjectRoot, formatTimeAgo } from '../utils/helpers.js';
26
+ import { readSyncState } from './sync-state.js';
27
+ import { SessionLogManager } from '../core/session-log-manager.js';
28
+ import { getUnpushedCount } from './git-change-detector.js';
29
+ const globAsync = promisify(glob);
30
+ // ── Main Runner ──────────────────────────────────────────────────
31
+ /**
32
+ * Run all health checks and return structured results.
33
+ * All checks are local-only (no cloud dependency).
34
+ */
35
+ export async function runHealthChecks() {
36
+ const ginkoDir = await getGinkoDir();
37
+ const projectRoot = await getProjectRoot();
38
+ const userEmail = await getUserEmail();
39
+ const userSlug = userEmail.replace('@', '-at-').replace(/\./g, '-');
40
+ const sessionDir = path.join(ginkoDir, 'sessions', userSlug);
41
+ const categories = [];
42
+ categories.push(await checkTracking(ginkoDir, projectRoot, sessionDir));
43
+ categories.push(await checkCompletion(projectRoot, sessionDir));
44
+ categories.push(await checkSync());
45
+ categories.push(await checkSessionLogs(sessionDir));
46
+ categories.push(await checkGit());
47
+ // Calculate score
48
+ let totalChecks = 0;
49
+ let passCount = 0;
50
+ let warnCount = 0;
51
+ let failCount = 0;
52
+ for (const cat of categories) {
53
+ for (const item of cat.items) {
54
+ totalChecks++;
55
+ if (item.status === 'pass')
56
+ passCount++;
57
+ else if (item.status === 'warn')
58
+ warnCount++;
59
+ else
60
+ failCount++;
61
+ }
62
+ }
63
+ const adherence = totalChecks > 0 ? Math.round((passCount / totalChecks) * 100) : 0;
64
+ return { categories, adherence, passCount, warnCount, failCount, totalChecks };
65
+ }
66
+ // ── Tracking Checks ──────────────────────────────────────────────
67
+ async function checkTracking(ginkoDir, projectRoot, sessionDir) {
68
+ const items = [];
69
+ const sprintPath = path.join(sessionDir, 'current-sprint.json');
70
+ let currentSprint = null;
71
+ if (await fs.pathExists(sprintPath)) {
72
+ try {
73
+ currentSprint = await fs.readJSON(sprintPath);
74
+ }
75
+ catch {
76
+ // corrupt file
77
+ }
78
+ }
79
+ if (!currentSprint || !currentSprint.sprintId) {
80
+ items.push({
81
+ label: 'Active sprint',
82
+ status: 'warn',
83
+ detail: 'No active sprint assigned',
84
+ fix: 'Run `ginko sprint create` or `ginko sprint quick-fix "<description>"`',
85
+ });
86
+ return { name: 'Tracking', icon: '📋', items };
87
+ }
88
+ // Check for epic file
89
+ const epicId = currentSprint.epicId;
90
+ if (epicId) {
91
+ const epicFiles = await globAsync(path.join(projectRoot, `docs/epics/EPIC-*${epicId}*.md`));
92
+ const epicNum = epicId.replace(/^e0*/, '').replace(/^EPIC-0*/, '');
93
+ const epicFilesAlt = await globAsync(path.join(projectRoot, `docs/epics/EPIC-${epicNum.padStart(3, '0')}*.md`));
94
+ const allEpicFiles = [...new Set([...epicFiles, ...epicFilesAlt])];
95
+ if (allEpicFiles.length > 0) {
96
+ items.push({
97
+ label: 'Epic file',
98
+ status: 'pass',
99
+ detail: allEpicFiles[0],
100
+ });
101
+ }
102
+ else {
103
+ items.push({
104
+ label: 'Epic file',
105
+ status: 'fail',
106
+ detail: `No file found for epic ${epicId}`,
107
+ fix: 'Create epic file in docs/epics/ or run `ginko epic`',
108
+ });
109
+ }
110
+ }
111
+ // Check for sprint file
112
+ const sprintId = currentSprint.sprintId;
113
+ const sprintFiles = await globAsync(path.join(projectRoot, 'docs/sprints/SPRINT-*.md'));
114
+ const matchingSprint = sprintFiles.find((f) => {
115
+ const basename = path.basename(f).toLowerCase();
116
+ const normalizedId = sprintId.replace(/_/g, '-').toLowerCase();
117
+ return basename.includes(normalizedId) || basename.includes(sprintId.toLowerCase());
118
+ });
119
+ if (matchingSprint) {
120
+ items.push({
121
+ label: 'Sprint file',
122
+ status: 'pass',
123
+ detail: matchingSprint,
124
+ });
125
+ }
126
+ else if (currentSprint.sprintFile && await fs.pathExists(path.join(projectRoot, currentSprint.sprintFile))) {
127
+ items.push({
128
+ label: 'Sprint file',
129
+ status: 'pass',
130
+ detail: currentSprint.sprintFile,
131
+ });
132
+ }
133
+ else {
134
+ items.push({
135
+ label: 'Sprint file',
136
+ status: 'fail',
137
+ detail: `No file found for sprint ${sprintId}`,
138
+ fix: 'Create sprint file in docs/sprints/',
139
+ });
140
+ }
141
+ return { name: 'Tracking', icon: '📋', items };
142
+ }
143
+ // ── Completion Checks ────────────────────────────────────────────
144
+ async function checkCompletion(projectRoot, sessionDir) {
145
+ const items = [];
146
+ // Scope to current sprint context, not all historical sprints
147
+ const sprintPath = path.join(sessionDir, 'current-sprint.json');
148
+ let currentSprintId = null;
149
+ let currentEpicId = null;
150
+ if (await fs.pathExists(sprintPath)) {
151
+ try {
152
+ const sprintData = await fs.readJSON(sprintPath);
153
+ currentSprintId = sprintData.sprintId || null;
154
+ currentEpicId = sprintData.epicId || null;
155
+ }
156
+ catch {
157
+ // ignore
158
+ }
159
+ }
160
+ // Find sprint files for the current epic (scoped, not all history)
161
+ const allSprintFiles = await globAsync(path.join(projectRoot, 'docs/sprints/SPRINT-*.md'));
162
+ const activeSprintFiles = allSprintFiles.filter((f) => {
163
+ if (f.includes('archive'))
164
+ return false;
165
+ // If we have a current epic, scope to its sprints
166
+ if (currentEpicId) {
167
+ const basename = path.basename(f).toLowerCase();
168
+ const normalizedEpic = currentEpicId.replace(/_/g, '-').toLowerCase();
169
+ return basename.includes(normalizedEpic) || basename.includes(currentEpicId.toLowerCase());
170
+ }
171
+ return false; // No active epic — don't scan all history
172
+ });
173
+ let totalTasks = 0;
174
+ let completedTasks = 0;
175
+ let inProgressTasks = 0;
176
+ let notStartedTasks = 0;
177
+ let sprintsNotMarked = 0;
178
+ for (const sprintFile of activeSprintFiles) {
179
+ let content;
180
+ try {
181
+ content = await fs.readFile(sprintFile, 'utf8');
182
+ }
183
+ catch {
184
+ continue;
185
+ }
186
+ const completed = (content.match(/\[x\]/gi) || []).length;
187
+ const inProgress = (content.match(/\[@\]/g) || []).length;
188
+ const notStarted = (content.match(/\[ \]/g) || []).length;
189
+ const sprintTotal = completed + inProgress + notStarted;
190
+ if (sprintTotal === 0)
191
+ continue;
192
+ totalTasks += sprintTotal;
193
+ completedTasks += completed;
194
+ inProgressTasks += inProgress;
195
+ notStartedTasks += notStarted;
196
+ if (completed === sprintTotal && sprintTotal > 0) {
197
+ const progressMatch = content.match(/Progress:?\s*(\d+)%/i);
198
+ if (!progressMatch || parseInt(progressMatch[1]) < 100) {
199
+ sprintsNotMarked++;
200
+ }
201
+ }
202
+ }
203
+ if (totalTasks === 0) {
204
+ items.push({
205
+ label: 'Tasks',
206
+ status: 'warn',
207
+ detail: 'No tasks found in sprint files',
208
+ fix: 'Add tasks to your sprint file or run `ginko sprint create`',
209
+ });
210
+ }
211
+ else {
212
+ if (completedTasks === totalTasks) {
213
+ items.push({
214
+ label: 'Tasks',
215
+ status: 'pass',
216
+ detail: `${completedTasks}/${totalTasks} tasks marked complete`,
217
+ });
218
+ }
219
+ else {
220
+ items.push({
221
+ label: 'Tasks',
222
+ status: inProgressTasks > 0 || completedTasks > 0 ? 'warn' : 'pass',
223
+ detail: `${completedTasks} complete, ${inProgressTasks} in progress, ${notStartedTasks} not started (${totalTasks} total)`,
224
+ });
225
+ }
226
+ if (sprintsNotMarked > 0) {
227
+ items.push({
228
+ label: 'Sprint completion',
229
+ status: 'fail',
230
+ detail: `${sprintsNotMarked} sprint(s) with all tasks done but NOT MARKED COMPLETE`,
231
+ fix: 'Run `ginko sprint complete <sprint_id>` or update sprint progress to 100%',
232
+ });
233
+ }
234
+ }
235
+ return { name: 'Completion', icon: '✅', items };
236
+ }
237
+ // ── Sync Checks ──────────────────────────────────────────────────
238
+ async function checkSync() {
239
+ const items = [];
240
+ try {
241
+ const syncState = await readSyncState();
242
+ const now = Date.now();
243
+ // Push staleness
244
+ if (syncState.lastPushTimestamp) {
245
+ const pushAge = now - new Date(syncState.lastPushTimestamp).getTime();
246
+ const pushDays = Math.floor(pushAge / (1000 * 60 * 60 * 24));
247
+ if (pushDays >= 7) {
248
+ items.push({
249
+ label: 'Last push',
250
+ status: 'fail',
251
+ detail: `${formatTimeAgo(new Date(syncState.lastPushTimestamp))} (critically stale)`,
252
+ fix: 'Run `ginko push` to sync changes to graph',
253
+ });
254
+ }
255
+ else if (pushDays >= 1) {
256
+ items.push({
257
+ label: 'Last push',
258
+ status: 'warn',
259
+ detail: formatTimeAgo(new Date(syncState.lastPushTimestamp)),
260
+ fix: 'Run `ginko push` to sync changes to graph',
261
+ });
262
+ }
263
+ else {
264
+ items.push({
265
+ label: 'Last push',
266
+ status: 'pass',
267
+ detail: formatTimeAgo(new Date(syncState.lastPushTimestamp)),
268
+ });
269
+ }
270
+ }
271
+ else {
272
+ items.push({
273
+ label: 'Last push',
274
+ status: 'fail',
275
+ detail: 'Never pushed',
276
+ fix: 'Run `ginko push` to sync changes to graph',
277
+ });
278
+ }
279
+ // Pull staleness
280
+ if (syncState.lastPullTimestamp) {
281
+ const pullAge = now - new Date(syncState.lastPullTimestamp).getTime();
282
+ const pullDays = Math.floor(pullAge / (1000 * 60 * 60 * 24));
283
+ if (pullDays >= 7) {
284
+ items.push({
285
+ label: 'Last pull',
286
+ status: 'fail',
287
+ detail: `${formatTimeAgo(new Date(syncState.lastPullTimestamp))} (critically stale)`,
288
+ fix: 'Run `ginko pull` to pull team updates',
289
+ });
290
+ }
291
+ else if (pullDays >= 1) {
292
+ items.push({
293
+ label: 'Last pull',
294
+ status: 'warn',
295
+ detail: formatTimeAgo(new Date(syncState.lastPullTimestamp)),
296
+ fix: 'Run `ginko pull` to pull team updates',
297
+ });
298
+ }
299
+ else {
300
+ items.push({
301
+ label: 'Last pull',
302
+ status: 'pass',
303
+ detail: formatTimeAgo(new Date(syncState.lastPullTimestamp)),
304
+ });
305
+ }
306
+ }
307
+ else {
308
+ items.push({
309
+ label: 'Last pull',
310
+ status: 'warn',
311
+ detail: 'Never pulled (OK if working solo)',
312
+ });
313
+ }
314
+ // Unpushed changes
315
+ try {
316
+ const unpushed = await getUnpushedCount(syncState.lastPushCommit);
317
+ if (unpushed > 0) {
318
+ items.push({
319
+ label: 'Pending changes',
320
+ status: 'warn',
321
+ detail: `${unpushed} file(s) not yet pushed to graph`,
322
+ fix: 'Run `ginko push` to sync',
323
+ });
324
+ }
325
+ else {
326
+ items.push({
327
+ label: 'Pending changes',
328
+ status: 'pass',
329
+ detail: '0 (up to date)',
330
+ });
331
+ }
332
+ }
333
+ catch {
334
+ // Skip if git detection fails
335
+ }
336
+ }
337
+ catch {
338
+ items.push({
339
+ label: 'Sync state',
340
+ status: 'warn',
341
+ detail: 'Could not read sync state (local-only mode)',
342
+ });
343
+ }
344
+ return { name: 'Graph Sync', icon: '🔄', items };
345
+ }
346
+ // ── Session Log Checks ───────────────────────────────────────────
347
+ async function checkSessionLogs(sessionDir) {
348
+ const items = [];
349
+ const hasLog = await SessionLogManager.hasSessionLog(sessionDir);
350
+ if (!hasLog) {
351
+ items.push({
352
+ label: 'Session log',
353
+ status: 'warn',
354
+ detail: 'No active session log',
355
+ fix: 'Run `ginko start` to initialize session logging',
356
+ });
357
+ return { name: 'Session Logs', icon: '📝', items };
358
+ }
359
+ const logContent = await SessionLogManager.loadSessionLog(sessionDir);
360
+ const summary = SessionLogManager.getSummary(logContent);
361
+ if (summary.totalEntries === 0) {
362
+ items.push({
363
+ label: 'Log entries',
364
+ status: 'warn',
365
+ detail: 'Session log exists but has 0 entries',
366
+ fix: 'Use `ginko log "<description>" --category=<type>` to capture decisions and insights',
367
+ });
368
+ }
369
+ else {
370
+ const categories = Object.entries(summary.byCategory)
371
+ .map(([cat, count]) => `${count} ${cat}`)
372
+ .join(', ');
373
+ items.push({
374
+ label: 'Log entries',
375
+ status: 'pass',
376
+ detail: `${summary.totalEntries} entries (${categories})`,
377
+ });
378
+ }
379
+ const decisions = summary.byCategory['decision'] || 0;
380
+ if (decisions === 0) {
381
+ items.push({
382
+ label: 'Decisions logged',
383
+ status: 'warn',
384
+ detail: 'No decisions captured this session',
385
+ fix: 'Run `ginko log "your decision" --category=decision` after key choices',
386
+ });
387
+ }
388
+ else {
389
+ items.push({
390
+ label: 'Decisions logged',
391
+ status: 'pass',
392
+ detail: `${decisions} decision(s) captured`,
393
+ });
394
+ }
395
+ // Check for context score
396
+ const eventsPath = path.join(sessionDir, 'current-events.jsonl');
397
+ let hasContextScore = false;
398
+ if (await fs.pathExists(path.join(sessionDir, 'context-scores.json'))) {
399
+ hasContextScore = true;
400
+ }
401
+ else if (await fs.pathExists(eventsPath)) {
402
+ try {
403
+ const events = await fs.readFile(eventsPath, 'utf8');
404
+ hasContextScore = events.includes('context_score') || events.includes('context-score');
405
+ }
406
+ catch {
407
+ // skip
408
+ }
409
+ }
410
+ if (!hasContextScore) {
411
+ items.push({
412
+ label: 'Context score',
413
+ status: 'warn',
414
+ detail: 'Not recorded this session',
415
+ fix: 'Run `ginko context score 8,7,9,6` to rate your context clarity',
416
+ });
417
+ }
418
+ else {
419
+ items.push({
420
+ label: 'Context score',
421
+ status: 'pass',
422
+ detail: 'Recorded',
423
+ });
424
+ }
425
+ return { name: 'Session Logs', icon: '📝', items };
426
+ }
427
+ // ── Git Checks ───────────────────────────────────────────────────
428
+ async function checkGit() {
429
+ const items = [];
430
+ const git = simpleGit();
431
+ try {
432
+ const gitStatus = await git.status();
433
+ const totalUncommitted = gitStatus.modified.length +
434
+ gitStatus.staged.length +
435
+ gitStatus.not_added.length +
436
+ gitStatus.deleted.length;
437
+ if (totalUncommitted === 0) {
438
+ items.push({
439
+ label: 'Working tree',
440
+ status: 'pass',
441
+ detail: 'Clean',
442
+ });
443
+ }
444
+ else if (totalUncommitted > 20) {
445
+ items.push({
446
+ label: 'Working tree',
447
+ status: 'warn',
448
+ detail: `${totalUncommitted} uncommitted files (${gitStatus.staged.length} staged, ${gitStatus.modified.length} modified, ${gitStatus.not_added.length} untracked)`,
449
+ fix: 'Consider committing related changes',
450
+ });
451
+ }
452
+ else {
453
+ items.push({
454
+ label: 'Working tree',
455
+ status: 'pass',
456
+ detail: `${totalUncommitted} uncommitted files`,
457
+ });
458
+ }
459
+ const branch = await git.branchLocal();
460
+ items.push({
461
+ label: 'Branch',
462
+ status: 'pass',
463
+ detail: branch.current,
464
+ });
465
+ }
466
+ catch {
467
+ items.push({
468
+ label: 'Git',
469
+ status: 'warn',
470
+ detail: 'Could not read git status',
471
+ });
472
+ }
473
+ return { name: 'Git', icon: '🌳', items };
474
+ }
475
+ //# sourceMappingURL=health-checker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-checker.js","sourceRoot":"","sources":["../../src/lib/health-checker.ts"],"names":[],"mappings":"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"}
@@ -180,6 +180,25 @@ export interface AISessionContext {
180
180
  nextAction?: string;
181
181
  suggestedCommand?: string;
182
182
  };
183
+ /** Resumption brief for session context (EPIC-018 Sprint 1) */
184
+ resumptionBrief?: {
185
+ lastSession: {
186
+ summary: string;
187
+ stoppingPoint: string;
188
+ openQuestions: string[];
189
+ filesModified: string[];
190
+ duration: string;
191
+ };
192
+ decisions: Array<{
193
+ description: string;
194
+ timestamp: string;
195
+ }>;
196
+ insights: Array<{
197
+ description: string;
198
+ timestamp: string;
199
+ }>;
200
+ eventCount: number;
201
+ };
183
202
  /** Git status */
184
203
  git: {
185
204
  branch: string;
@@ -262,6 +281,35 @@ export declare function formatError(message: string, details?: string): string;
262
281
  * Format warning message
263
282
  */
264
283
  export declare function formatWarning(message: string): string;
284
+ /**
285
+ * Clean slate output configuration
286
+ */
287
+ export interface CleanSlateOutputConfig {
288
+ /** Terminal width (default: 75) */
289
+ width?: number;
290
+ /** Show full file paths vs short names (default: false) */
291
+ showFullPaths?: boolean;
292
+ }
293
+ /**
294
+ * Format session output in clean slate format (EPIC-018 Sprint 1 t07)
295
+ *
296
+ * Transforms from box-drawing tables to a simpler label:value format
297
+ * that's easier to scan. Target: <15 lines.
298
+ *
299
+ * Layout:
300
+ * ginko | Hot (10/10) | Think & Build | feature/dashboard-settings
301
+ *
302
+ * RESUME: Dashboard settings - Teams to Projects rename
303
+ * Stopped at: Checking if "team" appears in API responses
304
+ * Open: Should member management terminology change?
305
+ * Files: src/dashboard/settings.tsx, src/components/TeamPanel.tsx
306
+ *
307
+ * Sprint: adhoc_260204_s01 | 0% | 6 tasks
308
+ * Next: t01 - Dashboard settings: rename Teams to Projects (continue)
309
+ *
310
+ * Branch: 6 uncommitted | Tests: passing
311
+ */
312
+ export declare function formatCleanSlateOutput(context: AISessionContext, config?: CleanSlateOutputConfig): string;
265
313
  /**
266
314
  * Table output configuration
267
315
  */
@@ -1 +1 @@
1
- {"version":3,"file":"output-formatter.d.ts","sourceRoot":"","sources":["../../src/lib/output-formatter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output-formatter.d.ts","sourceRoot":"","sources":["../../src/lib/output-formatter.ts"],"names":[],"mappings":"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"}