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
@@ -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"}