@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.
- package/LICENSE +661 -21
- package/dist/commands/agent/status.d.ts.map +1 -1
- package/dist/commands/agent/status.js +2 -0
- package/dist/commands/agent/status.js.map +1 -1
- package/dist/commands/assign.d.ts.map +1 -1
- package/dist/commands/assign.js +2 -0
- package/dist/commands/assign.js.map +1 -1
- package/dist/commands/charter.js +3 -3
- package/dist/commands/charter.js.map +1 -1
- package/dist/commands/context/index.d.ts +28 -0
- package/dist/commands/context/index.d.ts.map +1 -0
- package/dist/commands/context/index.js +165 -0
- package/dist/commands/context/index.js.map +1 -0
- package/dist/commands/context/score.d.ts +34 -0
- package/dist/commands/context/score.d.ts.map +1 -0
- package/dist/commands/context/score.js +163 -0
- package/dist/commands/context/score.js.map +1 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +10 -0
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/diff/diff-command.d.ts.map +1 -1
- package/dist/commands/diff/diff-command.js +2 -0
- package/dist/commands/diff/diff-command.js.map +1 -1
- package/dist/commands/epic/status.d.ts.map +1 -1
- package/dist/commands/epic/status.js +5 -0
- package/dist/commands/epic/status.js.map +1 -1
- package/dist/commands/graph/api-client.d.ts +131 -0
- package/dist/commands/graph/api-client.d.ts.map +1 -1
- package/dist/commands/graph/api-client.js +153 -0
- package/dist/commands/graph/api-client.js.map +1 -1
- package/dist/commands/graph/cleanup.d.ts.map +1 -1
- package/dist/commands/graph/cleanup.js +2 -0
- package/dist/commands/graph/cleanup.js.map +1 -1
- package/dist/commands/graph/explore.d.ts.map +1 -1
- package/dist/commands/graph/explore.js +2 -0
- package/dist/commands/graph/explore.js.map +1 -1
- package/dist/commands/graph/init.d.ts.map +1 -1
- package/dist/commands/graph/init.js +4 -10
- package/dist/commands/graph/init.js.map +1 -1
- package/dist/commands/graph/query.d.ts.map +1 -1
- package/dist/commands/graph/query.js +2 -0
- package/dist/commands/graph/query.js.map +1 -1
- package/dist/commands/graph/status.d.ts.map +1 -1
- package/dist/commands/graph/status.js +2 -0
- package/dist/commands/graph/status.js.map +1 -1
- package/dist/commands/handoff.d.ts.map +1 -1
- package/dist/commands/handoff.js +34 -0
- package/dist/commands/handoff.js.map +1 -1
- package/dist/commands/health.d.ts +15 -0
- package/dist/commands/health.d.ts.map +1 -0
- package/dist/commands/health.js +212 -0
- package/dist/commands/health.js.map +1 -0
- package/dist/commands/init-copilot.js +1 -1
- package/dist/commands/init-copilot.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +74 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/join/index.js +2 -2
- package/dist/commands/knowledge/create.d.ts.map +1 -1
- package/dist/commands/knowledge/create.js +2 -0
- package/dist/commands/knowledge/create.js.map +1 -1
- package/dist/commands/knowledge/graph.d.ts.map +1 -1
- package/dist/commands/knowledge/graph.js +2 -0
- package/dist/commands/knowledge/graph.js.map +1 -1
- package/dist/commands/knowledge/search.d.ts.map +1 -1
- package/dist/commands/knowledge/search.js +2 -0
- package/dist/commands/knowledge/search.js.map +1 -1
- package/dist/commands/log.d.ts.map +1 -1
- package/dist/commands/log.js +4 -3
- package/dist/commands/log.js.map +1 -1
- package/dist/commands/orchestrate.d.ts.map +1 -1
- package/dist/commands/orchestrate.js +2 -0
- package/dist/commands/orchestrate.js.map +1 -1
- package/dist/commands/pull/pull-command.d.ts.map +1 -1
- package/dist/commands/pull/pull-command.js +2 -0
- package/dist/commands/pull/pull-command.js.map +1 -1
- package/dist/commands/push/push-command.d.ts.map +1 -1
- package/dist/commands/push/push-command.js +19 -2
- package/dist/commands/push/push-command.js.map +1 -1
- package/dist/commands/ship.js +1 -1
- package/dist/commands/ship.js.map +1 -1
- package/dist/commands/sprint/create.d.ts +9 -5
- package/dist/commands/sprint/create.d.ts.map +1 -1
- package/dist/commands/sprint/create.js +226 -29
- package/dist/commands/sprint/create.js.map +1 -1
- package/dist/commands/sprint/index.d.ts.map +1 -1
- package/dist/commands/sprint/index.js +9 -5
- package/dist/commands/sprint/index.js.map +1 -1
- package/dist/commands/sprint/status.d.ts +3 -0
- package/dist/commands/sprint/status.d.ts.map +1 -1
- package/dist/commands/sprint/status.js +88 -2
- package/dist/commands/sprint/status.js.map +1 -1
- package/dist/commands/start/index.js +3 -3
- package/dist/commands/start/index.js.map +1 -1
- package/dist/commands/start/start-reflection.d.ts +5 -0
- package/dist/commands/start/start-reflection.d.ts.map +1 -1
- package/dist/commands/start/start-reflection.js +60 -11
- package/dist/commands/start/start-reflection.js.map +1 -1
- package/dist/commands/sync/sync-command.js +1 -1
- package/dist/commands/sync/sync-command.js.map +1 -1
- package/dist/commands/sync/team-sync.js +1 -1
- package/dist/commands/task/status.d.ts +1 -1
- package/dist/commands/task/status.d.ts.map +1 -1
- package/dist/commands/task/status.js +161 -6
- package/dist/commands/task/status.js.map +1 -1
- package/dist/commands/team/members.d.ts.map +1 -1
- package/dist/commands/team/members.js +4 -0
- package/dist/commands/team/members.js.map +1 -1
- package/dist/commands/team/projects.d.ts.map +1 -1
- package/dist/commands/team/projects.js +3 -0
- package/dist/commands/team/projects.js.map +1 -1
- package/dist/commands/team/status.d.ts.map +1 -1
- package/dist/commands/team/status.js +2 -0
- package/dist/commands/team/status.js.map +1 -1
- package/dist/index.js +12 -8
- package/dist/index.js.map +1 -1
- package/dist/lib/adoption-score.d.ts +1 -1
- package/dist/lib/adoption-score.d.ts.map +1 -1
- package/dist/lib/adoption-score.js +1 -0
- package/dist/lib/adoption-score.js.map +1 -1
- package/dist/lib/context-loader-events.d.ts +4 -4
- package/dist/lib/context-loader-events.d.ts.map +1 -1
- package/dist/lib/context-loader-events.js +69 -18
- package/dist/lib/context-loader-events.js.map +1 -1
- package/dist/lib/context-quality.d.ts +224 -0
- package/dist/lib/context-quality.d.ts.map +1 -0
- package/dist/lib/context-quality.js +363 -0
- package/dist/lib/context-quality.js.map +1 -0
- package/dist/lib/event-logger.d.ts.map +1 -1
- package/dist/lib/event-logger.js +2 -3
- package/dist/lib/event-logger.js.map +1 -1
- package/dist/lib/health-checker.d.ts +35 -0
- package/dist/lib/health-checker.d.ts.map +1 -0
- package/dist/lib/health-checker.js +475 -0
- package/dist/lib/health-checker.js.map +1 -0
- package/dist/lib/output-formatter.d.ts +48 -0
- package/dist/lib/output-formatter.d.ts.map +1 -1
- package/dist/lib/output-formatter.js +168 -4
- package/dist/lib/output-formatter.js.map +1 -1
- package/dist/lib/resumption-brief.d.ts +91 -0
- package/dist/lib/resumption-brief.d.ts.map +1 -0
- package/dist/lib/resumption-brief.js +344 -0
- package/dist/lib/resumption-brief.js.map +1 -0
- package/dist/lib/staleness-detector.js +1 -1
- package/dist/lib/state-cache.d.ts +43 -0
- package/dist/lib/state-cache.d.ts.map +1 -1
- package/dist/lib/state-cache.js +72 -0
- package/dist/lib/state-cache.js.map +1 -1
- package/dist/lib/targeted-coaching.js +2 -2
- package/dist/lib/task-parser.d.ts +34 -4
- package/dist/lib/task-parser.d.ts.map +1 -1
- package/dist/lib/task-parser.js +110 -4
- package/dist/lib/task-parser.js.map +1 -1
- package/dist/services/context-search.d.ts.map +1 -1
- package/dist/services/context-search.js +4 -2
- package/dist/services/context-search.js.map +1 -1
- package/dist/templates/ai-instructions-template.d.ts.map +1 -1
- package/dist/templates/ai-instructions-template.js +20 -0
- package/dist/templates/ai-instructions-template.js.map +1 -1
- package/dist/templates/commands/handoff.md +40 -0
- package/dist/templates/commands/quick.md +27 -0
- package/dist/templates/commands/ship.md +43 -0
- package/dist/templates/commands/start.md +15 -0
- package/dist/templates/commands/vibecheck.md +36 -0
- package/dist/templates/skills/ginko/SKILL.md +1 -8
- package/dist/templates/sprint-template.md +273 -0
- package/dist/utils/cloud-guard.d.ts +48 -0
- package/dist/utils/cloud-guard.d.ts.map +1 -0
- package/dist/utils/cloud-guard.js +107 -0
- package/dist/utils/cloud-guard.js.map +1 -0
- package/dist/utils/config-loader.d.ts +2 -2
- package/dist/utils/config-loader.js +2 -2
- package/dist/utils/helpers.d.ts.map +1 -1
- package/dist/utils/helpers.js +11 -10
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/perf-logger.d.ts +100 -0
- package/dist/utils/perf-logger.d.ts.map +1 -0
- package/dist/utils/perf-logger.js +132 -0
- package/dist/utils/perf-logger.js.map +1 -0
- 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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"}
|