cortex-engine 0.4.2 → 0.5.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.
- package/README.md +16 -6
- package/dist/bin/anomalies-cmd.d.ts +17 -0
- package/dist/bin/anomalies-cmd.d.ts.map +1 -0
- package/dist/bin/anomalies-cmd.js +417 -0
- package/dist/bin/anomalies-cmd.js.map +1 -0
- package/dist/bin/cli.d.ts +5 -0
- package/dist/bin/cli.d.ts.map +1 -1
- package/dist/bin/cli.js +84 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/bin/health-cmd.d.ts +15 -0
- package/dist/bin/health-cmd.d.ts.map +1 -0
- package/dist/bin/health-cmd.js +273 -0
- package/dist/bin/health-cmd.js.map +1 -0
- package/dist/bin/init.d.ts.map +1 -1
- package/dist/bin/init.js +197 -13
- package/dist/bin/init.js.map +1 -1
- package/dist/bin/maintain-cmd.d.ts +17 -0
- package/dist/bin/maintain-cmd.d.ts.map +1 -0
- package/dist/bin/maintain-cmd.js +352 -0
- package/dist/bin/maintain-cmd.js.map +1 -0
- package/dist/bin/report-cmd.d.ts +17 -0
- package/dist/bin/report-cmd.d.ts.map +1 -0
- package/dist/bin/report-cmd.js +309 -0
- package/dist/bin/report-cmd.js.map +1 -0
- package/dist/bin/store-factory.d.ts +21 -0
- package/dist/bin/store-factory.d.ts.map +1 -0
- package/dist/bin/store-factory.js +64 -0
- package/dist/bin/store-factory.js.map +1 -0
- package/dist/bin/vitals-cmd.d.ts +16 -0
- package/dist/bin/vitals-cmd.d.ts.map +1 -0
- package/dist/bin/vitals-cmd.js +425 -0
- package/dist/bin/vitals-cmd.js.map +1 -0
- package/dist/core/types.d.ts +6 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/engines/cognition.d.ts.map +1 -1
- package/dist/engines/cognition.js +39 -3
- package/dist/engines/cognition.js.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/tools.d.ts +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +22 -2
- package/dist/mcp/tools.js.map +1 -1
- package/dist/tools/evolution-list.d.ts +6 -0
- package/dist/tools/evolution-list.d.ts.map +1 -0
- package/dist/tools/evolution-list.js +52 -0
- package/dist/tools/evolution-list.js.map +1 -0
- package/dist/tools/evolve.d.ts +6 -0
- package/dist/tools/evolve.d.ts.map +1 -0
- package/dist/tools/evolve.js +63 -0
- package/dist/tools/evolve.js.map +1 -0
- package/dist/tools/journal-read.d.ts +6 -0
- package/dist/tools/journal-read.d.ts.map +1 -0
- package/dist/tools/journal-read.js +59 -0
- package/dist/tools/journal-read.js.map +1 -0
- package/dist/tools/journal-write.d.ts +6 -0
- package/dist/tools/journal-write.d.ts.map +1 -0
- package/dist/tools/journal-write.js +71 -0
- package/dist/tools/journal-write.js.map +1 -0
- package/dist/tools/thread-create.d.ts +6 -0
- package/dist/tools/thread-create.d.ts.map +1 -0
- package/dist/tools/thread-create.js +57 -0
- package/dist/tools/thread-create.js.map +1 -0
- package/dist/tools/thread-resolve.d.ts +6 -0
- package/dist/tools/thread-resolve.d.ts.map +1 -0
- package/dist/tools/thread-resolve.js +42 -0
- package/dist/tools/thread-resolve.js.map +1 -0
- package/dist/tools/thread-update.d.ts +6 -0
- package/dist/tools/thread-update.d.ts.map +1 -0
- package/dist/tools/thread-update.js +91 -0
- package/dist/tools/thread-update.js.map +1 -0
- package/dist/tools/threads-list.d.ts +6 -0
- package/dist/tools/threads-list.d.ts.map +1 -0
- package/dist/tools/threads-list.js +70 -0
- package/dist/tools/threads-list.js.map +1 -0
- package/package.json +120 -115
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* report-cmd.ts — fozikio report command.
|
|
3
|
+
*
|
|
4
|
+
* Generates a weekly quality report across five layers:
|
|
5
|
+
* 1. Memory health — salience distribution, staleness, FSRS states
|
|
6
|
+
* 2. Observation health — unprocessed count, prediction error coverage
|
|
7
|
+
* 3. Retrieval quality — retry rate, intent distribution (via threads)
|
|
8
|
+
* 4. Cognitive integration — edge density, observation prediction errors
|
|
9
|
+
* 5. Session quality — ops volume, open threads, resolved threads
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* fozikio report
|
|
13
|
+
* fozikio report --days 14
|
|
14
|
+
* fozikio report --json
|
|
15
|
+
*/
|
|
16
|
+
import { loadConfig } from './config-loader.js';
|
|
17
|
+
import { createStore } from './store-factory.js';
|
|
18
|
+
// ─── Constants ────────────────────────────────────────────────────────────────
|
|
19
|
+
const STALE_DAYS = 90;
|
|
20
|
+
const WIDTH = 58;
|
|
21
|
+
function parseArgs(args) {
|
|
22
|
+
let days = 7;
|
|
23
|
+
let jsonOutput = false;
|
|
24
|
+
for (let i = 0; i < args.length; i++) {
|
|
25
|
+
if (args[i] === '--json') {
|
|
26
|
+
jsonOutput = true;
|
|
27
|
+
}
|
|
28
|
+
else if (args[i] === '--days' && args[i + 1]) {
|
|
29
|
+
const parsed = parseInt(args[++i], 10);
|
|
30
|
+
if (!isNaN(parsed) && parsed > 0)
|
|
31
|
+
days = parsed;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return { days, jsonOutput };
|
|
35
|
+
}
|
|
36
|
+
// ─── Formatting ───────────────────────────────────────────────────────────────
|
|
37
|
+
function row(label, value) {
|
|
38
|
+
const content = ` ${label.padEnd(32)}${value}`;
|
|
39
|
+
return `║${content.padEnd(WIDTH)}║`;
|
|
40
|
+
}
|
|
41
|
+
function subrow(label, value) {
|
|
42
|
+
const content = ` ${label.padEnd(30)}${value}`;
|
|
43
|
+
return `║${content.padEnd(WIDTH)}║`;
|
|
44
|
+
}
|
|
45
|
+
function header(title) {
|
|
46
|
+
const padded = ` ${title} `;
|
|
47
|
+
const totalPad = WIDTH - padded.length;
|
|
48
|
+
const left = Math.floor(totalPad / 2);
|
|
49
|
+
const right = totalPad - left;
|
|
50
|
+
return `║${' '.repeat(left)}${padded}${' '.repeat(right)}║`;
|
|
51
|
+
}
|
|
52
|
+
function divider() { return `╠${'═'.repeat(WIDTH)}╣`; }
|
|
53
|
+
function topBorder() { return `╔${'═'.repeat(WIDTH)}╗`; }
|
|
54
|
+
function bottomBorder() { return `╚${'═'.repeat(WIDTH)}╝`; }
|
|
55
|
+
function fmt(n, digits = 3) { return n.toFixed(digits); }
|
|
56
|
+
function pct(count, total) {
|
|
57
|
+
if (total === 0)
|
|
58
|
+
return '0.0%';
|
|
59
|
+
return `${((count / total) * 100).toFixed(1)}%`;
|
|
60
|
+
}
|
|
61
|
+
function statusIcon(value, thresholds) {
|
|
62
|
+
const { good, warn, direction } = thresholds;
|
|
63
|
+
if (direction === 'lower') {
|
|
64
|
+
if (value <= good)
|
|
65
|
+
return '[OK]';
|
|
66
|
+
if (value <= warn)
|
|
67
|
+
return '[!] ';
|
|
68
|
+
return '[!!]';
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
if (value >= good)
|
|
72
|
+
return '[OK]';
|
|
73
|
+
if (value >= warn)
|
|
74
|
+
return '[!] ';
|
|
75
|
+
return '[!!]';
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// ─── Main Export ─────────────────────────────────────────────────────────────
|
|
79
|
+
export async function runReport(args) {
|
|
80
|
+
const { days, jsonOutput } = parseArgs(args);
|
|
81
|
+
const config = loadConfig();
|
|
82
|
+
const store = await createStore(config);
|
|
83
|
+
const now = new Date();
|
|
84
|
+
const windowCutoff = new Date(now);
|
|
85
|
+
windowCutoff.setDate(windowCutoff.getDate() - days);
|
|
86
|
+
const staleCutoff = new Date(now);
|
|
87
|
+
staleCutoff.setDate(staleCutoff.getDate() - STALE_DAYS);
|
|
88
|
+
if (!jsonOutput) {
|
|
89
|
+
process.stderr.write(`[report] Collecting data (last ${days} days)...\n`);
|
|
90
|
+
}
|
|
91
|
+
// ── Parallel data fetch ─────────────────────────────────────────────────
|
|
92
|
+
const [memories, allObs, weekOps, allThreads] = await Promise.all([
|
|
93
|
+
store.getAllMemories(),
|
|
94
|
+
// Fetch all observations (no date filter on store.query since we filter in-memory)
|
|
95
|
+
store.query('observations', [], { limit: 10000 }).then(docs => docs),
|
|
96
|
+
store.queryOps({ days, limit: 5000 }),
|
|
97
|
+
store.query('threads_v2', [], { limit: 2000 }).then(docs => docs),
|
|
98
|
+
]);
|
|
99
|
+
// Fetch edges for all memory IDs
|
|
100
|
+
const memoryIds = memories.map(m => m.id);
|
|
101
|
+
const allEdges = memoryIds.length > 0
|
|
102
|
+
? await store.getEdgesForMemories(memoryIds)
|
|
103
|
+
: [];
|
|
104
|
+
// ── Layer 1: Memory Health ───────────────────────────────────────────────
|
|
105
|
+
const totalMemories = memories.length;
|
|
106
|
+
const lowSalience = memories.filter((m) => (m.salience ?? 0) < 0.1).length;
|
|
107
|
+
const fadedMemories = memories.filter((m) => m.faded === true).length;
|
|
108
|
+
const staleMemories = memories.filter((m) => {
|
|
109
|
+
const la = m.last_accessed;
|
|
110
|
+
return la instanceof Date && la < staleCutoff;
|
|
111
|
+
}).length;
|
|
112
|
+
const avgSalience = totalMemories > 0
|
|
113
|
+
? memories.reduce((s, m) => s + (m.salience ?? 0), 0) / totalMemories
|
|
114
|
+
: 0;
|
|
115
|
+
const fsrsCounts = { new: 0, learning: 0, review: 0, relearning: 0 };
|
|
116
|
+
for (const m of memories) {
|
|
117
|
+
const state = m.fsrs?.state;
|
|
118
|
+
if (state && state in fsrsCounts)
|
|
119
|
+
fsrsCounts[state]++;
|
|
120
|
+
}
|
|
121
|
+
const categoryCounts = {};
|
|
122
|
+
for (const m of memories) {
|
|
123
|
+
const cat = m.category ?? 'unknown';
|
|
124
|
+
categoryCounts[cat] = (categoryCounts[cat] ?? 0) + 1;
|
|
125
|
+
}
|
|
126
|
+
// ── Layer 2: Observation Health ──────────────────────────────────────────
|
|
127
|
+
const totalObs = allObs.length;
|
|
128
|
+
const unprocessedObs = allObs.filter((o) => !o.processed).length;
|
|
129
|
+
const obsWithPE = allObs.filter((o) => o.prediction_error != null);
|
|
130
|
+
const avgPE = obsWithPE.length > 0
|
|
131
|
+
? obsWithPE.reduce((s, o) => s + (o.prediction_error ?? 0), 0) / obsWithPE.length
|
|
132
|
+
: 0;
|
|
133
|
+
const peCoverage = totalObs > 0 ? obsWithPE.length / totalObs : 0;
|
|
134
|
+
// ── Layer 3: Edge / Graph Health ─────────────────────────────────────────
|
|
135
|
+
const totalEdges = allEdges.length;
|
|
136
|
+
const edgeDensity = totalMemories > 1
|
|
137
|
+
? totalEdges / (totalMemories * (totalMemories - 1) / 2)
|
|
138
|
+
: 0;
|
|
139
|
+
const relationCounts = {};
|
|
140
|
+
for (const e of allEdges) {
|
|
141
|
+
const rel = e.relation ?? 'unknown';
|
|
142
|
+
relationCounts[rel] = (relationCounts[rel] ?? 0) + 1;
|
|
143
|
+
}
|
|
144
|
+
// Memories with no outgoing edges (isolated nodes)
|
|
145
|
+
const connectedMemoryIds = new Set();
|
|
146
|
+
for (const e of allEdges) {
|
|
147
|
+
connectedMemoryIds.add(e.source_id);
|
|
148
|
+
connectedMemoryIds.add(e.target_id);
|
|
149
|
+
}
|
|
150
|
+
const isolatedMemories = totalMemories - connectedMemoryIds.size;
|
|
151
|
+
// ── Layer 4: Ops / Session Quality ───────────────────────────────────────
|
|
152
|
+
const weekOpsEntries = weekOps;
|
|
153
|
+
const uniqueSessions = new Set(weekOpsEntries.map((o) => o.session_ref).filter(Boolean)).size;
|
|
154
|
+
// Flag entries: unknown intent signals (ops entries containing 'unknown' or 'error')
|
|
155
|
+
const flaggedOps = weekOpsEntries.filter((o) => o.content.toLowerCase().includes('error') ||
|
|
156
|
+
o.content.toLowerCase().includes('failed')).length;
|
|
157
|
+
const projectCounts = {};
|
|
158
|
+
for (const o of weekOpsEntries) {
|
|
159
|
+
const proj = o.project ?? 'none';
|
|
160
|
+
projectCounts[proj] = (projectCounts[proj] ?? 0) + 1;
|
|
161
|
+
}
|
|
162
|
+
// ── Layer 5: Thread Quality ───────────────────────────────────────────────
|
|
163
|
+
const openThreads = allThreads.filter((t) => t.status !== 'resolved').length;
|
|
164
|
+
const resolvedThisWindow = allThreads.filter((t) => {
|
|
165
|
+
if (t.status !== 'resolved')
|
|
166
|
+
return false;
|
|
167
|
+
const ra = t.resolved_at;
|
|
168
|
+
if (!ra)
|
|
169
|
+
return false;
|
|
170
|
+
const d = ra instanceof Date ? ra : new Date(String(ra));
|
|
171
|
+
return d >= windowCutoff;
|
|
172
|
+
}).length;
|
|
173
|
+
// ── Flags / Issues ───────────────────────────────────────────────────────
|
|
174
|
+
const issues = [];
|
|
175
|
+
if (lowSalience / Math.max(totalMemories, 1) > 0.3) {
|
|
176
|
+
issues.push(`High low-salience rate: ${pct(lowSalience, totalMemories)} of memories below 0.1`);
|
|
177
|
+
}
|
|
178
|
+
if (staleMemories / Math.max(totalMemories, 1) > 0.4) {
|
|
179
|
+
issues.push(`High staleness: ${pct(staleMemories, totalMemories)} of memories unaccessed in ${STALE_DAYS}d`);
|
|
180
|
+
}
|
|
181
|
+
if (unprocessedObs / Math.max(totalObs, 1) > 0.2) {
|
|
182
|
+
issues.push(`Observation backlog: ${unprocessedObs} unprocessed observations (${pct(unprocessedObs, totalObs)})`);
|
|
183
|
+
}
|
|
184
|
+
if (peCoverage < 0.3 && totalObs > 50) {
|
|
185
|
+
issues.push(`Low PE coverage: only ${pct(obsWithPE.length, totalObs)} of observations have prediction_error scored`);
|
|
186
|
+
}
|
|
187
|
+
if (isolatedMemories / Math.max(totalMemories, 1) > 0.5) {
|
|
188
|
+
issues.push(`Graph sparsity: ${pct(isolatedMemories, totalMemories)} of memories have no edges`);
|
|
189
|
+
}
|
|
190
|
+
if (flaggedOps > 0) {
|
|
191
|
+
issues.push(`${flaggedOps} ops entries contain error/failed signals this window`);
|
|
192
|
+
}
|
|
193
|
+
// ── Build Report Object ─────────────────────────────────────────────────
|
|
194
|
+
const report = {
|
|
195
|
+
generated_at: now.toISOString(),
|
|
196
|
+
window_days: days,
|
|
197
|
+
layer1_memory: {
|
|
198
|
+
total: totalMemories,
|
|
199
|
+
avg_salience: avgSalience,
|
|
200
|
+
low_salience: lowSalience,
|
|
201
|
+
stale: staleMemories,
|
|
202
|
+
faded: fadedMemories,
|
|
203
|
+
fsrs: fsrsCounts,
|
|
204
|
+
categories: categoryCounts,
|
|
205
|
+
},
|
|
206
|
+
layer2_observations: {
|
|
207
|
+
total: totalObs,
|
|
208
|
+
unprocessed: unprocessedObs,
|
|
209
|
+
avg_prediction_error: avgPE,
|
|
210
|
+
pe_coverage: peCoverage,
|
|
211
|
+
},
|
|
212
|
+
layer3_graph: {
|
|
213
|
+
total_edges: totalEdges,
|
|
214
|
+
edge_density: edgeDensity,
|
|
215
|
+
isolated_memories: isolatedMemories,
|
|
216
|
+
relations: relationCounts,
|
|
217
|
+
},
|
|
218
|
+
layer4_ops: {
|
|
219
|
+
entries_this_window: weekOpsEntries.length,
|
|
220
|
+
unique_sessions: uniqueSessions,
|
|
221
|
+
flagged_entries: flaggedOps,
|
|
222
|
+
projects: projectCounts,
|
|
223
|
+
},
|
|
224
|
+
layer5_threads: {
|
|
225
|
+
open_threads: openThreads,
|
|
226
|
+
resolved_this_window: resolvedThisWindow,
|
|
227
|
+
},
|
|
228
|
+
issues,
|
|
229
|
+
};
|
|
230
|
+
if (jsonOutput) {
|
|
231
|
+
console.log(JSON.stringify(report, null, 2));
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
// ── Render Dashboard ────────────────────────────────────────────────────
|
|
235
|
+
const lines = [];
|
|
236
|
+
lines.push(topBorder());
|
|
237
|
+
lines.push(header('CORTEX QUALITY REPORT'));
|
|
238
|
+
lines.push(header(`${days}-day window | ${now.toISOString().slice(0, 10)}`));
|
|
239
|
+
// Layer 1
|
|
240
|
+
lines.push(divider());
|
|
241
|
+
lines.push(header('Layer 1: Memory Health'));
|
|
242
|
+
lines.push(divider());
|
|
243
|
+
lines.push(row('Total memories:', totalMemories.toLocaleString()));
|
|
244
|
+
lines.push(row('Avg salience:', fmt(avgSalience)));
|
|
245
|
+
lines.push(row('Low salience (<0.1):', `${lowSalience} (${pct(lowSalience, totalMemories)}) ${statusIcon(lowSalience / Math.max(totalMemories, 1), { good: 0.1, warn: 0.3, direction: 'lower' })}`));
|
|
246
|
+
lines.push(row(`Stale (>${STALE_DAYS}d):`, `${staleMemories} (${pct(staleMemories, totalMemories)}) ${statusIcon(staleMemories / Math.max(totalMemories, 1), { good: 0.2, warn: 0.4, direction: 'lower' })}`));
|
|
247
|
+
lines.push(row('Faded:', fadedMemories.toLocaleString()));
|
|
248
|
+
lines.push(row('FSRS:', `new=${fsrsCounts.new} learn=${fsrsCounts.learning} rev=${fsrsCounts.review} relearn=${fsrsCounts.relearning}`));
|
|
249
|
+
const topCats = Object.entries(categoryCounts).sort((a, b) => b[1] - a[1]).slice(0, 4);
|
|
250
|
+
for (const [cat, count] of topCats) {
|
|
251
|
+
lines.push(subrow(`${cat}:`, `${count} (${pct(count, totalMemories)})`));
|
|
252
|
+
}
|
|
253
|
+
// Layer 2
|
|
254
|
+
lines.push(divider());
|
|
255
|
+
lines.push(header('Layer 2: Observation Health'));
|
|
256
|
+
lines.push(divider());
|
|
257
|
+
lines.push(row('Total observations:', totalObs.toLocaleString()));
|
|
258
|
+
lines.push(row('Unprocessed:', `${unprocessedObs} ${statusIcon(unprocessedObs / Math.max(totalObs, 1), { good: 0.05, warn: 0.2, direction: 'lower' })}`));
|
|
259
|
+
lines.push(row('Avg prediction error:', fmt(avgPE)));
|
|
260
|
+
lines.push(row('PE coverage:', `${pct(obsWithPE.length, totalObs)} ${statusIcon(peCoverage, { good: 0.5, warn: 0.3, direction: 'higher' })}`));
|
|
261
|
+
// Layer 3
|
|
262
|
+
lines.push(divider());
|
|
263
|
+
lines.push(header('Layer 3: Graph / Edge Health'));
|
|
264
|
+
lines.push(divider());
|
|
265
|
+
lines.push(row('Total edges:', totalEdges.toLocaleString()));
|
|
266
|
+
lines.push(row('Edge density:', fmt(edgeDensity, 4)));
|
|
267
|
+
lines.push(row('Isolated memories:', `${isolatedMemories} (${pct(isolatedMemories, totalMemories)}) ${statusIcon(isolatedMemories / Math.max(totalMemories, 1), { good: 0.3, warn: 0.5, direction: 'lower' })}`));
|
|
268
|
+
const topRels = Object.entries(relationCounts).sort((a, b) => b[1] - a[1]).slice(0, 3);
|
|
269
|
+
for (const [rel, count] of topRels) {
|
|
270
|
+
lines.push(subrow(`${rel}:`, count.toLocaleString()));
|
|
271
|
+
}
|
|
272
|
+
// Layer 4
|
|
273
|
+
lines.push(divider());
|
|
274
|
+
lines.push(header(`Layer 4: Ops / Sessions (last ${days}d)`));
|
|
275
|
+
lines.push(divider());
|
|
276
|
+
lines.push(row('Ops entries:', weekOpsEntries.length.toLocaleString()));
|
|
277
|
+
lines.push(row('Unique sessions:', uniqueSessions.toLocaleString()));
|
|
278
|
+
lines.push(row('Flagged (error/failed):', `${flaggedOps} ${statusIcon(flaggedOps, { good: 0, warn: 3, direction: 'lower' })}`));
|
|
279
|
+
const topProjects = Object.entries(projectCounts)
|
|
280
|
+
.filter(([k]) => k !== 'none')
|
|
281
|
+
.sort((a, b) => b[1] - a[1])
|
|
282
|
+
.slice(0, 3);
|
|
283
|
+
for (const [proj, count] of topProjects) {
|
|
284
|
+
lines.push(subrow(`${proj}:`, count.toLocaleString()));
|
|
285
|
+
}
|
|
286
|
+
// Layer 5
|
|
287
|
+
lines.push(divider());
|
|
288
|
+
lines.push(header('Layer 5: Thread Quality'));
|
|
289
|
+
lines.push(divider());
|
|
290
|
+
lines.push(row('Open threads:', openThreads.toLocaleString()));
|
|
291
|
+
lines.push(row('Resolved this window:', resolvedThisWindow.toLocaleString()));
|
|
292
|
+
// Issues
|
|
293
|
+
if (issues.length > 0) {
|
|
294
|
+
lines.push(divider());
|
|
295
|
+
lines.push(header('Issues Flagged'));
|
|
296
|
+
lines.push(divider());
|
|
297
|
+
for (const issue of issues) {
|
|
298
|
+
// Wrap long issue text
|
|
299
|
+
const truncated = issue.length > WIDTH - 4 ? issue.slice(0, WIDTH - 7) + '...' : issue;
|
|
300
|
+
lines.push(row('!', truncated));
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
lines.push(bottomBorder());
|
|
304
|
+
console.log('');
|
|
305
|
+
for (const line of lines)
|
|
306
|
+
console.log(line);
|
|
307
|
+
console.log('');
|
|
308
|
+
}
|
|
309
|
+
//# sourceMappingURL=report-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-cmd.js","sourceRoot":"","sources":["../../src/bin/report-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* store-factory.ts — shared store + embed provider creation for CLI commands.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the logic in mcp/server.ts but returns a CortexStore directly,
|
|
5
|
+
* without wiring up the full MCP server stack.
|
|
6
|
+
*/
|
|
7
|
+
import type { CortexConfig } from '../core/config.js';
|
|
8
|
+
import type { CortexStore } from '../core/store.js';
|
|
9
|
+
import type { EmbedProvider } from '../core/embed.js';
|
|
10
|
+
/**
|
|
11
|
+
* Create and return a CortexStore from config.
|
|
12
|
+
* Uses the default namespace prefix (empty string) — suitable for direct
|
|
13
|
+
* CLI operations that don't need namespace scoping.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createStore(config: CortexConfig): Promise<CortexStore>;
|
|
16
|
+
/**
|
|
17
|
+
* Create an EmbedProvider from config.
|
|
18
|
+
* Mirrors createEmbedProvider() in mcp/server.ts.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createEmbedProvider(config: CortexConfig): Promise<EmbedProvider>;
|
|
21
|
+
//# sourceMappingURL=store-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-factory.d.ts","sourceRoot":"","sources":["../../src/bin/store-factory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGtD;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAoB5E;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAiCtF"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* store-factory.ts — shared store + embed provider creation for CLI commands.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the logic in mcp/server.ts but returns a CortexStore directly,
|
|
5
|
+
* without wiring up the full MCP server stack.
|
|
6
|
+
*/
|
|
7
|
+
import { SqliteCortexStore } from '../stores/sqlite.js';
|
|
8
|
+
/**
|
|
9
|
+
* Create and return a CortexStore from config.
|
|
10
|
+
* Uses the default namespace prefix (empty string) — suitable for direct
|
|
11
|
+
* CLI operations that don't need namespace scoping.
|
|
12
|
+
*/
|
|
13
|
+
export async function createStore(config) {
|
|
14
|
+
if (config.store === 'firestore') {
|
|
15
|
+
const { getApps, initializeApp } = await import('firebase-admin/app');
|
|
16
|
+
if (getApps().length === 0) {
|
|
17
|
+
initializeApp({ projectId: config.store_options?.gcp_project_id });
|
|
18
|
+
}
|
|
19
|
+
const { getFirestore, FieldValue } = await import('firebase-admin/firestore');
|
|
20
|
+
const db = config.store_options?.firestore_database_id
|
|
21
|
+
? getFirestore(config.store_options.firestore_database_id)
|
|
22
|
+
: getFirestore();
|
|
23
|
+
db.settings({ ignoreUndefinedProperties: true });
|
|
24
|
+
const { FirestoreCortexStore } = await import('../stores/firestore.js');
|
|
25
|
+
return new FirestoreCortexStore(db, '', FieldValue);
|
|
26
|
+
}
|
|
27
|
+
// Default: SQLite
|
|
28
|
+
return new SqliteCortexStore(config.store_options?.sqlite_path ?? './cortex.db');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Create an EmbedProvider from config.
|
|
32
|
+
* Mirrors createEmbedProvider() in mcp/server.ts.
|
|
33
|
+
*/
|
|
34
|
+
export async function createEmbedProvider(config) {
|
|
35
|
+
switch (config.embed) {
|
|
36
|
+
case 'built-in': {
|
|
37
|
+
const { BuiltInEmbedProvider } = await import('../providers/builtin-embed.js');
|
|
38
|
+
return new BuiltInEmbedProvider();
|
|
39
|
+
}
|
|
40
|
+
case 'ollama': {
|
|
41
|
+
const { OllamaEmbedProvider } = await import('../providers/ollama.js');
|
|
42
|
+
return new OllamaEmbedProvider({
|
|
43
|
+
model: config.embed_options?.ollama_model,
|
|
44
|
+
baseUrl: config.embed_options?.ollama_url,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
case 'vertex': {
|
|
48
|
+
const { PredictionServiceClient, helpers } = await import('@google-cloud/aiplatform');
|
|
49
|
+
const { VertexEmbedProvider } = await import('../providers/vertex-embed.js');
|
|
50
|
+
const location = config.embed_options?.vertex_location ?? 'us-central1';
|
|
51
|
+
const client = new PredictionServiceClient({
|
|
52
|
+
apiEndpoint: `${location}-aiplatform.googleapis.com`,
|
|
53
|
+
});
|
|
54
|
+
return new VertexEmbedProvider({
|
|
55
|
+
projectId: config.store_options?.gcp_project_id,
|
|
56
|
+
location,
|
|
57
|
+
model: config.embed_options?.vertex_model,
|
|
58
|
+
}, client, helpers);
|
|
59
|
+
}
|
|
60
|
+
default:
|
|
61
|
+
throw new Error(`Embed provider "${config.embed}" not supported for CLI commands`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=store-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store-factory.js","sourceRoot":"","sources":["../../src/bin/store-factory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAoB;IACpD,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;QACjC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACtE,IAAI,OAAO,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,aAAa,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;QAC9E,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,EAAE,qBAAqB;YACpD,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,qBAAqB,CAAC;YAC1D,CAAC,CAAC,YAAY,EAAE,CAAC;QACnB,EAAE,CAAC,QAAQ,CAAC,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAAC,CAAC;QAEjD,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;QACxE,OAAO,IAAI,oBAAoB,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;IACtD,CAAC;IAED,kBAAkB;IAClB,OAAO,IAAI,iBAAiB,CAC1B,MAAM,CAAC,aAAa,EAAE,WAAW,IAAI,aAAa,CACnD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAAoB;IAC5D,QAAQ,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;YAC/E,OAAO,IAAI,oBAAoB,EAAE,CAAC;QACpC,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;YACvE,OAAO,IAAI,mBAAmB,CAAC;gBAC7B,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,YAAY;gBACzC,OAAO,EAAE,MAAM,CAAC,aAAa,EAAE,UAAU;aAC1C,CAAC,CAAC;QACL,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,uBAAuB,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YACtF,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;YAC7E,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,EAAE,eAAe,IAAI,aAAa,CAAC;YACxE,MAAM,MAAM,GAAG,IAAI,uBAAuB,CAAC;gBACzC,WAAW,EAAE,GAAG,QAAQ,4BAA4B;aACrD,CAAC,CAAC;YACH,OAAO,IAAI,mBAAmB,CAC5B;gBACE,SAAS,EAAE,MAAM,CAAC,aAAa,EAAE,cAAc;gBAC/C,QAAQ;gBACR,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,YAAY;aAC1C,EACD,MAAM,EACN,OAAO,CACR,CAAC;QACJ,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,KAAK,kCAAkC,CAAC,CAAC;IACvF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vitals-cmd.ts — fozikio vitals command handler.
|
|
3
|
+
*
|
|
4
|
+
* Computes behavioral vitals (frustration, confidence, curiosity,
|
|
5
|
+
* creative_energy, connection) from CortexStore data, then computes
|
|
6
|
+
* PE delta (prediction error with vs without retrieval).
|
|
7
|
+
*
|
|
8
|
+
* Works with both SQLite and Firestore backends.
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* fozikio vitals
|
|
12
|
+
* fozikio vitals --days 14
|
|
13
|
+
* fozikio vitals --json
|
|
14
|
+
*/
|
|
15
|
+
export declare function runVitals(args: string[]): Promise<void>;
|
|
16
|
+
//# sourceMappingURL=vitals-cmd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vitals-cmd.d.ts","sourceRoot":"","sources":["../../src/bin/vitals-cmd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA0dH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkG7D"}
|