cortex-engine 0.4.1 → 0.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 (89) hide show
  1. package/README.md +63 -57
  2. package/dist/bin/anomalies-cmd.d.ts +17 -0
  3. package/dist/bin/anomalies-cmd.d.ts.map +1 -0
  4. package/dist/bin/anomalies-cmd.js +417 -0
  5. package/dist/bin/anomalies-cmd.js.map +1 -0
  6. package/dist/bin/cli.d.ts +5 -0
  7. package/dist/bin/cli.d.ts.map +1 -1
  8. package/dist/bin/cli.js +84 -0
  9. package/dist/bin/cli.js.map +1 -1
  10. package/dist/bin/health-cmd.d.ts +15 -0
  11. package/dist/bin/health-cmd.d.ts.map +1 -0
  12. package/dist/bin/health-cmd.js +273 -0
  13. package/dist/bin/health-cmd.js.map +1 -0
  14. package/dist/bin/init.d.ts.map +1 -1
  15. package/dist/bin/init.js +169 -12
  16. package/dist/bin/init.js.map +1 -1
  17. package/dist/bin/maintain-cmd.d.ts +17 -0
  18. package/dist/bin/maintain-cmd.d.ts.map +1 -0
  19. package/dist/bin/maintain-cmd.js +352 -0
  20. package/dist/bin/maintain-cmd.js.map +1 -0
  21. package/dist/bin/report-cmd.d.ts +17 -0
  22. package/dist/bin/report-cmd.d.ts.map +1 -0
  23. package/dist/bin/report-cmd.js +309 -0
  24. package/dist/bin/report-cmd.js.map +1 -0
  25. package/dist/bin/store-factory.d.ts +21 -0
  26. package/dist/bin/store-factory.d.ts.map +1 -0
  27. package/dist/bin/store-factory.js +64 -0
  28. package/dist/bin/store-factory.js.map +1 -0
  29. package/dist/bin/vitals-cmd.d.ts +16 -0
  30. package/dist/bin/vitals-cmd.d.ts.map +1 -0
  31. package/dist/bin/vitals-cmd.js +425 -0
  32. package/dist/bin/vitals-cmd.js.map +1 -0
  33. package/dist/core/types.d.ts +6 -0
  34. package/dist/core/types.d.ts.map +1 -1
  35. package/dist/engines/cognition.d.ts.map +1 -1
  36. package/dist/engines/cognition.js +39 -3
  37. package/dist/engines/cognition.js.map +1 -1
  38. package/dist/index.d.ts +8 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +9 -0
  41. package/dist/index.js.map +1 -1
  42. package/dist/mcp/tools.d.ts +1 -1
  43. package/dist/mcp/tools.d.ts.map +1 -1
  44. package/dist/mcp/tools.js +22 -2
  45. package/dist/mcp/tools.js.map +1 -1
  46. package/dist/tools/evolution-list.d.ts +6 -0
  47. package/dist/tools/evolution-list.d.ts.map +1 -0
  48. package/dist/tools/evolution-list.js +52 -0
  49. package/dist/tools/evolution-list.js.map +1 -0
  50. package/dist/tools/evolve.d.ts +6 -0
  51. package/dist/tools/evolve.d.ts.map +1 -0
  52. package/dist/tools/evolve.js +63 -0
  53. package/dist/tools/evolve.js.map +1 -0
  54. package/dist/tools/journal-read.d.ts +6 -0
  55. package/dist/tools/journal-read.d.ts.map +1 -0
  56. package/dist/tools/journal-read.js +59 -0
  57. package/dist/tools/journal-read.js.map +1 -0
  58. package/dist/tools/journal-write.d.ts +6 -0
  59. package/dist/tools/journal-write.d.ts.map +1 -0
  60. package/dist/tools/journal-write.js +71 -0
  61. package/dist/tools/journal-write.js.map +1 -0
  62. package/dist/tools/thread-create.d.ts +6 -0
  63. package/dist/tools/thread-create.d.ts.map +1 -0
  64. package/dist/tools/thread-create.js +57 -0
  65. package/dist/tools/thread-create.js.map +1 -0
  66. package/dist/tools/thread-resolve.d.ts +6 -0
  67. package/dist/tools/thread-resolve.d.ts.map +1 -0
  68. package/dist/tools/thread-resolve.js +42 -0
  69. package/dist/tools/thread-resolve.js.map +1 -0
  70. package/dist/tools/thread-update.d.ts +6 -0
  71. package/dist/tools/thread-update.d.ts.map +1 -0
  72. package/dist/tools/thread-update.js +91 -0
  73. package/dist/tools/thread-update.js.map +1 -0
  74. package/dist/tools/threads-list.d.ts +6 -0
  75. package/dist/tools/threads-list.d.ts.map +1 -0
  76. package/dist/tools/threads-list.js +70 -0
  77. package/dist/tools/threads-list.js.map +1 -0
  78. package/fozikio.json +14 -0
  79. package/hooks/cognitive-grounding.sh +26 -0
  80. package/hooks/cortex-telemetry.sh +53 -0
  81. package/hooks/observe-first.sh +25 -0
  82. package/hooks/project-board-gate.sh +195 -0
  83. package/hooks/session-lifecycle.sh +21 -0
  84. package/package.json +119 -107
  85. package/reflex-rules/cognitive-grounding.yaml +17 -0
  86. package/reflex-rules/note-about-doing.yaml +17 -0
  87. package/reflex-rules/observe-first.yaml +17 -0
  88. package/skills/cortex-query/SKILL.md +86 -0
  89. package/skills/cortex-review/SKILL.md +67 -0
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG"}
package/dist/bin/cli.js CHANGED
@@ -7,6 +7,11 @@
7
7
  * serve Start the MCP server
8
8
  * config View or edit configuration
9
9
  * digest Process documents through cortex
10
+ * health Show cortex health report
11
+ * vitals Show behavioral vitals and PE delta
12
+ * anomalies Detect anomalous sessions with Isolation Forest
13
+ * report Generate weekly quality report
14
+ * maintain Data maintenance (fix, re-embed)
10
15
  * help Show help
11
16
  */
12
17
  import { loadConfig } from './config-loader.js';
@@ -14,6 +19,11 @@ import { runInit } from './init.js';
14
19
  import { runDigest } from './digest-cmd.js';
15
20
  import { runConfig } from './config-cmd.js';
16
21
  import { runAgent } from './agent-cmd.js';
22
+ import { runHealth } from './health-cmd.js';
23
+ import { runVitals } from './vitals-cmd.js';
24
+ import { runAnomalies } from './anomalies-cmd.js';
25
+ import { runReport } from './report-cmd.js';
26
+ import { runMaintain } from './maintain-cmd.js';
17
27
  import { startServer } from '../mcp/server.js';
18
28
  // ─── Help ──────────────────────────────────────────────────────────────────
19
29
  function printHelp() {
@@ -28,6 +38,11 @@ Commands:
28
38
  config View or edit configuration
29
39
  agent Manage multi-agent registry
30
40
  digest Process documents through cortex
41
+ health Show cortex health report
42
+ vitals Show behavioral vitals and PE delta
43
+ anomalies Detect anomalous sessions (Isolation Forest)
44
+ report Generate weekly quality report (memory, graph, ops, threads)
45
+ maintain Data maintenance (fix data issues, re-embed)
31
46
  help Show this help message
32
47
 
33
48
  Serve options:
@@ -46,6 +61,32 @@ Init options:
46
61
  --here Scaffold into current directory
47
62
  --obsidian Create .obsidian/ structure
48
63
 
64
+ Health options:
65
+ --prune Soft-delete prune candidates (fades memories meeting 3+ criteria)
66
+ --json Output as JSON instead of formatted table
67
+
68
+ Vitals options:
69
+ --days N Window size in days (default: 30)
70
+ --json Output as JSON instead of formatted table
71
+
72
+ Anomalies options:
73
+ --days N Window size in days (default: 90)
74
+ --json Output as JSON instead of formatted table
75
+
76
+ Report options:
77
+ --days N Report window in days (default: 7)
78
+ --json Output as JSON
79
+
80
+ Maintain subcommands:
81
+ maintain fix Scan and repair data issues in memories
82
+ maintain re-embed Re-embed memories with current embed provider
83
+
84
+ Maintain re-embed flags:
85
+ --dry-run Show what would be re-embedded without writing
86
+ --null-only Only re-embed docs with missing embeddings
87
+ --limit N Max docs to process (default: 500)
88
+ --collection <name> memories | observations (default: memories)
89
+
49
90
  Examples:
50
91
  fozikio init my-agent
51
92
  fozikio init my-agent --store firestore --embed vertex --llm gemini
@@ -55,6 +96,19 @@ Examples:
55
96
  fozikio config --store sqlite --embed ollama
56
97
  fozikio digest path/to/file.md
57
98
  fozikio digest --pending
99
+ fozikio health
100
+ fozikio health --json
101
+ fozikio health --prune
102
+ fozikio vitals
103
+ fozikio vitals --days 14 --json
104
+ fozikio anomalies
105
+ fozikio anomalies --days 60 --json
106
+ fozikio report
107
+ fozikio report --days 14 --json
108
+ fozikio maintain fix
109
+ fozikio maintain fix --dry-run
110
+ fozikio maintain re-embed --null-only
111
+ fozikio maintain re-embed --dry-run
58
112
  `);
59
113
  }
60
114
  // ─── Dispatch ──────────────────────────────────────────────────────────────
@@ -96,6 +150,36 @@ switch (command) {
96
150
  process.exit(1);
97
151
  });
98
152
  break;
153
+ case 'health':
154
+ runHealth(rest).catch(err => {
155
+ console.error('[fozikio] Health error:', err);
156
+ process.exit(1);
157
+ });
158
+ break;
159
+ case 'vitals':
160
+ runVitals(rest).catch(err => {
161
+ console.error('[fozikio] Vitals error:', err);
162
+ process.exit(1);
163
+ });
164
+ break;
165
+ case 'anomalies':
166
+ runAnomalies(rest).catch(err => {
167
+ console.error('[fozikio] Anomalies error:', err);
168
+ process.exit(1);
169
+ });
170
+ break;
171
+ case 'report':
172
+ runReport(rest).catch(err => {
173
+ console.error('[fozikio] Report error:', err);
174
+ process.exit(1);
175
+ });
176
+ break;
177
+ case 'maintain':
178
+ runMaintain(rest).catch(err => {
179
+ console.error('[fozikio] Maintain error:', err);
180
+ process.exit(1);
181
+ });
182
+ break;
99
183
  case 'help':
100
184
  case '--help':
101
185
  case '-h':
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * health-cmd.ts — fozikio health command.
3
+ *
4
+ * Outputs a combined cortex health report covering:
5
+ * - Memory stats (total, salience, FSRS states, stale, low-salience)
6
+ * - Observation stats (total, unprocessed, avg prediction error)
7
+ * - Prune candidates (multi-criteria scoring, dry-run by default)
8
+ *
9
+ * Usage:
10
+ * fozikio health Print formatted health report (dry-run)
11
+ * fozikio health --prune Mark prune candidates as faded (soft-delete)
12
+ * fozikio health --json Output as JSON
13
+ */
14
+ export declare function runHealth(args: string[]): Promise<void>;
15
+ //# sourceMappingURL=health-cmd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-cmd.d.ts","sourceRoot":"","sources":["../../src/bin/health-cmd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA4JH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6L7D"}
@@ -0,0 +1,273 @@
1
+ /**
2
+ * health-cmd.ts — fozikio health command.
3
+ *
4
+ * Outputs a combined cortex health report covering:
5
+ * - Memory stats (total, salience, FSRS states, stale, low-salience)
6
+ * - Observation stats (total, unprocessed, avg prediction error)
7
+ * - Prune candidates (multi-criteria scoring, dry-run by default)
8
+ *
9
+ * Usage:
10
+ * fozikio health Print formatted health report (dry-run)
11
+ * fozikio health --prune Mark prune candidates as faded (soft-delete)
12
+ * fozikio health --json Output as JSON
13
+ */
14
+ import { loadConfig } from './config-loader.js';
15
+ import { createStore } from './store-factory.js';
16
+ // ─── Constants ────────────────────────────────────────────────────────────────
17
+ const STALE_DAYS = 90;
18
+ const LOW_SALIENCE_THRESHOLD = 0.1;
19
+ const PRUNE_SALIENCE_THRESHOLD = 0.15;
20
+ const PRUNE_ACCESS_THRESHOLD = 3;
21
+ const PRUNE_AGE_DAYS = 60;
22
+ const PRUNE_CRITERIA_REQUIRED = 3;
23
+ const WIDTH = 52; // inner width between ║ borders
24
+ // ─── ASCII Box Helpers ────────────────────────────────────────────────────────
25
+ function row(label, value) {
26
+ const content = ` ${label.padEnd(28)}${value}`;
27
+ return `║${content.padEnd(WIDTH)}║`;
28
+ }
29
+ function subrow(label, value) {
30
+ const content = ` ${label.padEnd(26)}${value}`;
31
+ return `║${content.padEnd(WIDTH)}║`;
32
+ }
33
+ function header(title) {
34
+ const padded = ` ${title} `;
35
+ const totalPad = WIDTH - padded.length;
36
+ const left = Math.floor(totalPad / 2);
37
+ const right = totalPad - left;
38
+ return `║${' '.repeat(left)}${padded}${' '.repeat(right)}║`;
39
+ }
40
+ function divider() {
41
+ return `╠${'═'.repeat(WIDTH)}╣`;
42
+ }
43
+ function top() {
44
+ return `╔${'═'.repeat(WIDTH)}╗`;
45
+ }
46
+ function bottom() {
47
+ return `╚${'═'.repeat(WIDTH)}╝`;
48
+ }
49
+ function fmt(n, digits = 2) {
50
+ return n.toFixed(digits);
51
+ }
52
+ function fmtCount(n) {
53
+ return n.toLocaleString('en-US');
54
+ }
55
+ function pct(count, total) {
56
+ if (total === 0)
57
+ return '0.0%';
58
+ return `${((count / total) * 100).toFixed(1)}%`;
59
+ }
60
+ function parseArgs(args) {
61
+ return {
62
+ prune: args.includes('--prune'),
63
+ json: args.includes('--json'),
64
+ };
65
+ }
66
+ function scorePruneCandidate(memory, edgeIds, now) {
67
+ const reasons = [];
68
+ let score = 0;
69
+ // Criterion 1: low salience
70
+ if (typeof memory.salience === 'number' && memory.salience < PRUNE_SALIENCE_THRESHOLD) {
71
+ score++;
72
+ reasons.push(`salience ${fmt(memory.salience, 3)} < ${PRUNE_SALIENCE_THRESHOLD}`);
73
+ }
74
+ // Criterion 2: low access count
75
+ if (typeof memory.access_count === 'number' && memory.access_count < PRUNE_ACCESS_THRESHOLD) {
76
+ score++;
77
+ reasons.push(`access_count ${memory.access_count} < ${PRUNE_ACCESS_THRESHOLD}`);
78
+ }
79
+ // Criterion 3: FSRS in relearning
80
+ if (memory.fsrs?.state === 'relearning') {
81
+ score++;
82
+ reasons.push('fsrs state: relearning');
83
+ }
84
+ // Criterion 4: no edges
85
+ if (!edgeIds.has(memory.id)) {
86
+ score++;
87
+ reasons.push('no edges (orphan)');
88
+ }
89
+ // Criterion 5: high age
90
+ const ageMs = now - (memory.created_at instanceof Date ? memory.created_at.getTime() : new Date(memory.created_at).getTime());
91
+ const ageDays = ageMs / (1000 * 60 * 60 * 24);
92
+ if (ageDays > PRUNE_AGE_DAYS) {
93
+ score++;
94
+ reasons.push(`age ${Math.floor(ageDays)}d > ${PRUNE_AGE_DAYS}d`);
95
+ }
96
+ if (score < PRUNE_CRITERIA_REQUIRED)
97
+ return null;
98
+ return {
99
+ id: memory.id,
100
+ name: (memory.name ?? memory.id).slice(0, 50),
101
+ score,
102
+ reasons,
103
+ };
104
+ }
105
+ // ─── Main ─────────────────────────────────────────────────────────────────────
106
+ export async function runHealth(args) {
107
+ const { prune, json } = parseArgs(args);
108
+ if (!json) {
109
+ console.error('[fozikio health] Loading config...');
110
+ }
111
+ const config = loadConfig();
112
+ const store = await createStore(config);
113
+ if (!json) {
114
+ console.error(`[fozikio health] Backend: ${config.store}. Fetching data...`);
115
+ }
116
+ const now = new Date();
117
+ const staleCutoff = new Date(now);
118
+ staleCutoff.setDate(staleCutoff.getDate() - STALE_DAYS);
119
+ // ── Parallel fetches ──────────────────────────────────────────────────────
120
+ const [memories, unprocessedObs] = await Promise.all([
121
+ store.getAllMemories(),
122
+ store.getUnprocessedObservations(10_000),
123
+ ]);
124
+ // Fetch all observations for PE stats — unprocessed are a subset, but we
125
+ // also want total count. Use getUnprocessedObservations with a high limit
126
+ // and then separately query for total via ops query pattern.
127
+ // Note: CortexStore has no getAllObservations(), so we use the generic
128
+ // query() method which returns raw records.
129
+ const allObsRaw = await store.query('observations', [], { limit: 100_000 });
130
+ const allObs = allObsRaw;
131
+ // Get edges to identify orphan memories
132
+ const allMemoryIds = memories.map(m => m.id);
133
+ const edges = allMemoryIds.length > 0
134
+ ? await store.getEdgesForMemories(allMemoryIds)
135
+ : [];
136
+ const memoryIdsWithEdges = new Set();
137
+ for (const edge of edges) {
138
+ memoryIdsWithEdges.add(edge.source_id);
139
+ memoryIdsWithEdges.add(edge.target_id);
140
+ }
141
+ // ── Memory stats ──────────────────────────────────────────────────────────
142
+ const totalMemories = memories.length;
143
+ const lowSalienceCount = memories.filter(m => (m.salience ?? 0) < LOW_SALIENCE_THRESHOLD).length;
144
+ const staleCount = memories.filter(m => {
145
+ const la = m.last_accessed instanceof Date
146
+ ? m.last_accessed
147
+ : m.last_accessed ? new Date(m.last_accessed) : null;
148
+ return la && la < staleCutoff;
149
+ }).length;
150
+ const avgSalience = totalMemories > 0
151
+ ? memories.reduce((s, m) => s + (m.salience ?? 0), 0) / totalMemories
152
+ : 0;
153
+ const fsrsCounts = { new: 0, learning: 0, review: 0, relearning: 0 };
154
+ for (const m of memories) {
155
+ const state = m.fsrs?.state;
156
+ if (state && state in fsrsCounts) {
157
+ fsrsCounts[state]++;
158
+ }
159
+ }
160
+ // ── Observation stats ─────────────────────────────────────────────────────
161
+ const totalObs = allObs.length;
162
+ const unprocessedCount = unprocessedObs.length;
163
+ const obsWithPE = allObs.filter(o => o.prediction_error != null);
164
+ const avgPE = obsWithPE.length > 0
165
+ ? obsWithPE.reduce((s, o) => s + (o.prediction_error ?? 0), 0) / obsWithPE.length
166
+ : 0;
167
+ // ── Prune candidates ──────────────────────────────────────────────────────
168
+ const nowMs = now.getTime();
169
+ const pruneCandidates = [];
170
+ for (const memory of memories) {
171
+ const candidate = scorePruneCandidate(memory, memoryIdsWithEdges, nowMs);
172
+ if (candidate)
173
+ pruneCandidates.push(candidate);
174
+ }
175
+ // Sort by score descending, then by name
176
+ pruneCandidates.sort((a, b) => b.score - a.score || a.name.localeCompare(b.name));
177
+ // ── Prune action ──────────────────────────────────────────────────────────
178
+ let pruned = 0;
179
+ if (prune && pruneCandidates.length > 0) {
180
+ if (!json) {
181
+ console.error(`[fozikio health] Pruning ${pruneCandidates.length} candidates (soft-delete via faded=true)...`);
182
+ }
183
+ for (const candidate of pruneCandidates) {
184
+ await store.updateMemory(candidate.id, { faded: true });
185
+ pruned++;
186
+ }
187
+ if (!json) {
188
+ console.error(`[fozikio health] Pruned ${pruned} memories.`);
189
+ }
190
+ }
191
+ // ── Build report ──────────────────────────────────────────────────────────
192
+ const report = {
193
+ generatedAt: now.toISOString(),
194
+ memory: {
195
+ total: totalMemories,
196
+ avgSalience,
197
+ lowSalienceCount,
198
+ staleCount,
199
+ fsrs: fsrsCounts,
200
+ },
201
+ observations: {
202
+ total: totalObs,
203
+ unprocessed: unprocessedCount,
204
+ avgPredictionError: avgPE,
205
+ },
206
+ pruneCandidates,
207
+ ...(prune ? { pruned } : {}),
208
+ };
209
+ if (json) {
210
+ console.log(JSON.stringify(report, null, 2));
211
+ return;
212
+ }
213
+ // ── Formatted ASCII output ────────────────────────────────────────────────
214
+ const lines = [];
215
+ const dateStr = now.toISOString().slice(0, 10);
216
+ lines.push(top());
217
+ lines.push(header('CORTEX HEALTH REPORT'));
218
+ lines.push(header(dateStr));
219
+ // Memory Health
220
+ lines.push(divider());
221
+ lines.push(header('Memory Health'));
222
+ lines.push(divider());
223
+ lines.push(row('Total memories:', fmtCount(totalMemories)));
224
+ lines.push(row('Avg salience:', fmt(avgSalience, 3)));
225
+ lines.push(row(`Low salience (<${LOW_SALIENCE_THRESHOLD}):`, fmtCount(lowSalienceCount)));
226
+ lines.push(row(`Stale (>${STALE_DAYS}d no access):`, fmtCount(staleCount)));
227
+ lines.push(row('FSRS states:', ''));
228
+ lines.push(subrow('new:', `${fmtCount(fsrsCounts.new)} (${pct(fsrsCounts.new, totalMemories)})`));
229
+ lines.push(subrow('learning:', `${fmtCount(fsrsCounts.learning)} (${pct(fsrsCounts.learning, totalMemories)})`));
230
+ lines.push(subrow('review:', `${fmtCount(fsrsCounts.review)} (${pct(fsrsCounts.review, totalMemories)})`));
231
+ lines.push(subrow('relearning:', `${fmtCount(fsrsCounts.relearning)} (${pct(fsrsCounts.relearning, totalMemories)})`));
232
+ // Observation Stats
233
+ lines.push(divider());
234
+ lines.push(header('Observation Stats'));
235
+ lines.push(divider());
236
+ lines.push(row('Total observations:', fmtCount(totalObs)));
237
+ lines.push(row('Unprocessed:', fmtCount(unprocessedCount)));
238
+ lines.push(row('Avg prediction error:', fmt(avgPE, 3)));
239
+ // Prune Candidates
240
+ lines.push(divider());
241
+ const pruneHeaderSuffix = prune ? ` — ${pruned} pruned` : ' (dry run)';
242
+ lines.push(header(`Prune Candidates${pruneHeaderSuffix}`));
243
+ lines.push(divider());
244
+ lines.push(row('Criteria required:', `${PRUNE_CRITERIA_REQUIRED} of 5`));
245
+ lines.push(row('Candidates found:', fmtCount(pruneCandidates.length)));
246
+ if (!prune && pruneCandidates.length > 0) {
247
+ lines.push(row('', 'Run with --prune to soft-delete'));
248
+ }
249
+ if (pruneCandidates.length > 0) {
250
+ lines.push(divider());
251
+ lines.push(header('Top Prune Candidates'));
252
+ lines.push(divider());
253
+ const shown = pruneCandidates.slice(0, 10);
254
+ for (const c of shown) {
255
+ const scoreLabel = `[${c.score}/5]`;
256
+ const nameDisplay = c.name.length > 32 ? c.name.slice(0, 32) + '...' : c.name.padEnd(35);
257
+ lines.push(row(`${scoreLabel} ${nameDisplay}`, ''));
258
+ for (const reason of c.reasons) {
259
+ lines.push(subrow('- ' + reason, ''));
260
+ }
261
+ }
262
+ if (pruneCandidates.length > 10) {
263
+ lines.push(row('', `… and ${pruneCandidates.length - 10} more`));
264
+ }
265
+ }
266
+ lines.push(bottom());
267
+ console.log('');
268
+ for (const line of lines) {
269
+ console.log(line);
270
+ }
271
+ console.log('');
272
+ }
273
+ //# sourceMappingURL=health-cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-cmd.js","sourceRoot":"","sources":["../../src/bin/health-cmd.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/bin/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAiBH,KAAK,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAC1C,KAAK,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC/D,KAAK,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE9D,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,GAAG,EAAE,SAAS,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB;AAID,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,GAAG,IAAI,CAiEhE;AAuQD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAuI5C"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/bin/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAkBH,KAAK,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAC1C,KAAK,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC/D,KAAK,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE9D,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,GAAG,EAAE,SAAS,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB;AAID,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,GAAG,IAAI,CAiEhE;AAmaD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAkJ5C"}