crbro-memory 1.0.1 → 1.2.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.
@@ -0,0 +1,60 @@
1
+ import type { MineResult } from './types.js';
2
+ export interface MinerConfig {
3
+ /** Directories to scan for artifacts */
4
+ scanDirs: string[];
5
+ /** Minimum file size in bytes to consider */
6
+ minFileSize: number;
7
+ /** File extensions to include */
8
+ extensions: string[];
9
+ /** Patterns to exclude from scanning */
10
+ excludePatterns: string[];
11
+ }
12
+ interface MinerState {
13
+ mined_files: Record<string, string>;
14
+ last_run: string | null;
15
+ total_mined: number;
16
+ }
17
+ export type { MineResult };
18
+ /**
19
+ * Auto-detect IDE conversation directories on the system.
20
+ */
21
+ export declare function detectScanDirs(): string[];
22
+ /**
23
+ * Main miner class — scans directories and feeds CRBRO.
24
+ */
25
+ export declare class Miner {
26
+ private brain;
27
+ private cortex;
28
+ private config;
29
+ private statePath;
30
+ constructor(config?: Partial<MinerConfig>);
31
+ /**
32
+ * Run the miner on all configured directories.
33
+ */
34
+ mine(targetDir?: string): Promise<MineResult>;
35
+ /**
36
+ * Recursively collect files matching the config criteria.
37
+ */
38
+ private collectFiles;
39
+ /**
40
+ * Feed extracted content into CRBRO's cortex.
41
+ */
42
+ private feedCortex;
43
+ /**
44
+ * Load miner state from disk.
45
+ */
46
+ private loadState;
47
+ /**
48
+ * Save miner state to disk.
49
+ */
50
+ private saveState;
51
+ /**
52
+ * Get miner status info.
53
+ */
54
+ getStatus(): Promise<{
55
+ configured_dirs: string[];
56
+ detected_dirs: string[];
57
+ state: MinerState;
58
+ }>;
59
+ }
60
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/miner/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,WAAW;IAC1B,wCAAwC;IACxC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,wCAAwC;IACxC,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,UAAU,UAAU;IAClB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,YAAY,EAAE,UAAU,EAAE,CAAC;AAgB3B;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,EAAE,CA0BzC;AAED;;GAEG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAYzC;;OAEG;IACG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAmFnD;;OAEG;YACW,YAAY;IAkC1B;;OAEG;YACW,UAAU;IAsExB;;OAEG;YACW,SAAS;IAevB;;OAEG;YACW,SAAS;IAQvB;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC;QACzB,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,KAAK,EAAE,UAAU,CAAC;KACnB,CAAC;CAOH"}
@@ -0,0 +1,285 @@
1
+ "use strict";
2
+ // ─── CRBRO Miner: Main Engine ─────────────────────────────────
3
+ // Scans directories for conversation artifacts and feeds
4
+ // extracted knowledge into CRBRO's cortex.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Miner = void 0;
7
+ exports.detectScanDirs = detectScanDirs;
8
+ const promises_1 = require("fs/promises");
9
+ const path_1 = require("path");
10
+ const os_1 = require("os");
11
+ const fs_1 = require("fs");
12
+ const extractor_js_1 = require("./extractor.js");
13
+ const brain_js_1 = require("../engine/brain.js");
14
+ const cortex_js_1 = require("../engine/cortex.js");
15
+ const DEFAULT_CONFIG = {
16
+ scanDirs: [],
17
+ minFileSize: 200,
18
+ extensions: ['.md', '.txt'],
19
+ excludePatterns: [
20
+ '.metadata.',
21
+ '.resolved',
22
+ '.tmp',
23
+ 'node_modules',
24
+ '.git',
25
+ 'tempmediaStorage',
26
+ ],
27
+ };
28
+ /**
29
+ * Auto-detect IDE conversation directories on the system.
30
+ */
31
+ function detectScanDirs() {
32
+ const home = (0, os_1.homedir)();
33
+ const dirs = [];
34
+ const candidates = [
35
+ // Antigravity (Google Gemini)
36
+ (0, path_1.join)(home, '.gemini', 'antigravity', 'brain'),
37
+ // Cursor
38
+ (0, path_1.join)(home, '.cursor', 'conversations'),
39
+ // Windsurf
40
+ (0, path_1.join)(home, '.windsurf', 'conversations'),
41
+ // Claude Desktop (Windows)
42
+ (0, path_1.join)(process.env.APPDATA || '', 'Claude', 'conversations'),
43
+ // Claude Desktop (macOS)
44
+ (0, path_1.join)(home, 'Library', 'Application Support', 'Claude', 'conversations'),
45
+ // VS Code + Continue
46
+ (0, path_1.join)(home, '.continue', 'sessions'),
47
+ ];
48
+ for (const dir of candidates) {
49
+ if (dir && (0, fs_1.existsSync)(dir)) {
50
+ dirs.push(dir);
51
+ }
52
+ }
53
+ return dirs;
54
+ }
55
+ /**
56
+ * Main miner class — scans directories and feeds CRBRO.
57
+ */
58
+ class Miner {
59
+ brain;
60
+ cortex;
61
+ config;
62
+ statePath;
63
+ constructor(config) {
64
+ this.brain = new brain_js_1.Brain();
65
+ this.cortex = new cortex_js_1.Cortex(this.brain);
66
+ this.config = { ...DEFAULT_CONFIG, ...config };
67
+ this.statePath = (0, path_1.join)(this.brain.paths.root, 'miner_state.json');
68
+ // Auto-detect scan dirs if none provided
69
+ if (this.config.scanDirs.length === 0) {
70
+ this.config.scanDirs = detectScanDirs();
71
+ }
72
+ }
73
+ /**
74
+ * Run the miner on all configured directories.
75
+ */
76
+ async mine(targetDir) {
77
+ const result = {
78
+ scanned: 0,
79
+ new_files: 0,
80
+ neurons_created: 0,
81
+ neurons_updated: 0,
82
+ facts_added: 0,
83
+ decisions_added: 0,
84
+ technologies_found: [],
85
+ errors: [],
86
+ };
87
+ // Load state
88
+ const state = await this.loadState();
89
+ // Determine which directories to scan
90
+ const dirs = targetDir ? [targetDir] : this.config.scanDirs;
91
+ if (dirs.length === 0) {
92
+ result.errors.push('No scan directories found. Run `npx crbro-memory setup-miner` to configure.');
93
+ return result;
94
+ }
95
+ const allTechs = new Set();
96
+ for (const dir of dirs) {
97
+ if (!(0, fs_1.existsSync)(dir)) {
98
+ result.errors.push(`Directory not found: ${dir}`);
99
+ continue;
100
+ }
101
+ try {
102
+ const files = await this.collectFiles(dir);
103
+ for (const filePath of files) {
104
+ result.scanned++;
105
+ // Check if already mined (unchanged)
106
+ const fileStat = await (0, promises_1.stat)(filePath);
107
+ const hash = `${fileStat.mtime.toISOString()}_${fileStat.size}`;
108
+ if (state.mined_files[filePath] === hash) {
109
+ continue; // Already mined, skip
110
+ }
111
+ try {
112
+ const content = await (0, promises_1.readFile)(filePath, 'utf-8');
113
+ const extracted = (0, extractor_js_1.extractContent)(content, (0, path_1.basename)(filePath));
114
+ // Feed into CRBRO
115
+ const feedResult = await this.feedCortex(extracted, filePath);
116
+ result.new_files++;
117
+ result.neurons_created += feedResult.created;
118
+ result.neurons_updated += feedResult.updated;
119
+ result.facts_added += feedResult.facts;
120
+ result.decisions_added += feedResult.decisions;
121
+ for (const tech of extracted.technologies) {
122
+ allTechs.add(tech);
123
+ }
124
+ // Mark as mined
125
+ state.mined_files[filePath] = hash;
126
+ }
127
+ catch (err) {
128
+ result.errors.push(`Error processing ${filePath}: ${err instanceof Error ? err.message : String(err)}`);
129
+ }
130
+ }
131
+ }
132
+ catch (err) {
133
+ result.errors.push(`Error scanning ${dir}: ${err instanceof Error ? err.message : String(err)}`);
134
+ }
135
+ }
136
+ result.technologies_found = [...allTechs];
137
+ // Save state
138
+ state.last_run = new Date().toISOString();
139
+ state.total_mined += result.new_files;
140
+ await this.saveState(state);
141
+ return result;
142
+ }
143
+ /**
144
+ * Recursively collect files matching the config criteria.
145
+ */
146
+ async collectFiles(dir) {
147
+ const results = [];
148
+ try {
149
+ const entries = await (0, promises_1.readdir)(dir, { withFileTypes: true });
150
+ for (const entry of entries) {
151
+ const fullPath = (0, path_1.join)(dir, entry.name);
152
+ // Check exclusion patterns
153
+ if (this.config.excludePatterns.some(p => entry.name.includes(p))) {
154
+ continue;
155
+ }
156
+ if (entry.isDirectory()) {
157
+ const subFiles = await this.collectFiles(fullPath);
158
+ results.push(...subFiles);
159
+ }
160
+ else if (entry.isFile()) {
161
+ const ext = (0, path_1.extname)(entry.name).toLowerCase();
162
+ if (!this.config.extensions.includes(ext))
163
+ continue;
164
+ const fileStat = await (0, promises_1.stat)(fullPath);
165
+ if (fileStat.size < this.config.minFileSize)
166
+ continue;
167
+ results.push(fullPath);
168
+ }
169
+ }
170
+ }
171
+ catch {
172
+ // Permission errors, etc. — skip silently
173
+ }
174
+ return results;
175
+ }
176
+ /**
177
+ * Feed extracted content into CRBRO's cortex.
178
+ */
179
+ async feedCortex(extracted, sourcePath) {
180
+ let created = 0;
181
+ let updated = 0;
182
+ let factsAdded = 0;
183
+ let decisionsAdded = 0;
184
+ // Create/update neurons for each detected technology
185
+ for (const tech of extracted.technologies) {
186
+ const neuronId = `tech_${tech.replace(/[^a-z0-9]/gi, '_').toLowerCase()}`;
187
+ try {
188
+ const existing = await this.cortex.get(neuronId);
189
+ if (!existing) {
190
+ await this.cortex.learn(tech, 'fact', `Referenced in: ${(0, path_1.basename)(sourcePath)}`, {
191
+ domain: 'conocimiento',
192
+ });
193
+ created++;
194
+ }
195
+ }
196
+ catch {
197
+ // Neuron might not exist yet
198
+ try {
199
+ await this.cortex.learn(tech, 'fact', `Referenced in: ${(0, path_1.basename)(sourcePath)}`, {
200
+ domain: 'conocimiento',
201
+ });
202
+ created++;
203
+ }
204
+ catch { /* skip */ }
205
+ }
206
+ }
207
+ // Create neurons from extracted topics (if substantial)
208
+ for (const topic of extracted.topics.slice(0, 3)) {
209
+ if (topic.length < 5)
210
+ continue;
211
+ try {
212
+ const result = await this.cortex.learn(topic, 'fact', extracted.summary || `Mined from ${(0, path_1.basename)(sourcePath)}`, {
213
+ domain: 'general',
214
+ });
215
+ if (result.action === 'created')
216
+ created++;
217
+ else
218
+ updated++;
219
+ }
220
+ catch { /* skip duplicates */ }
221
+ }
222
+ // Add facts to first topic neuron
223
+ if (extracted.topics.length > 0) {
224
+ const primaryTopic = extracted.topics[0];
225
+ for (const fact of extracted.facts.slice(0, 5)) {
226
+ try {
227
+ await this.cortex.learn(primaryTopic, 'fact', fact, {
228
+ confidence: 0.7, // Lower confidence for auto-mined data
229
+ });
230
+ factsAdded++;
231
+ }
232
+ catch { /* skip */ }
233
+ }
234
+ for (const decision of extracted.decisions.slice(0, 3)) {
235
+ try {
236
+ await this.cortex.learn(primaryTopic, 'decision', decision, {
237
+ rationale: `Auto-mined from ${(0, path_1.basename)(sourcePath)}`,
238
+ });
239
+ decisionsAdded++;
240
+ }
241
+ catch { /* skip */ }
242
+ }
243
+ }
244
+ return { created, updated, facts: factsAdded, decisions: decisionsAdded };
245
+ }
246
+ /**
247
+ * Load miner state from disk.
248
+ */
249
+ async loadState() {
250
+ try {
251
+ if ((0, fs_1.existsSync)(this.statePath)) {
252
+ const raw = await (0, promises_1.readFile)(this.statePath, 'utf-8');
253
+ return JSON.parse(raw);
254
+ }
255
+ }
256
+ catch { /* corrupt state — start fresh */ }
257
+ return {
258
+ mined_files: {},
259
+ last_run: null,
260
+ total_mined: 0,
261
+ };
262
+ }
263
+ /**
264
+ * Save miner state to disk.
265
+ */
266
+ async saveState(state) {
267
+ const dir = this.brain.paths.root;
268
+ if (!(0, fs_1.existsSync)(dir)) {
269
+ await (0, promises_1.mkdir)(dir, { recursive: true });
270
+ }
271
+ await (0, promises_1.writeFile)(this.statePath, JSON.stringify(state, null, 2), 'utf-8');
272
+ }
273
+ /**
274
+ * Get miner status info.
275
+ */
276
+ async getStatus() {
277
+ return {
278
+ configured_dirs: this.config.scanDirs,
279
+ detected_dirs: detectScanDirs(),
280
+ state: await this.loadState(),
281
+ };
282
+ }
283
+ }
284
+ exports.Miner = Miner;
285
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/miner/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ export interface SchedulerResult {
2
+ success: boolean;
3
+ platform: string;
4
+ method: string;
5
+ frequency: string;
6
+ message: string;
7
+ uninstall_command?: string;
8
+ }
9
+ /**
10
+ * Detect the platform and set up the appropriate scheduler.
11
+ */
12
+ export declare function setupScheduler(): Promise<SchedulerResult>;
13
+ /**
14
+ * Check if the scheduler is already installed.
15
+ */
16
+ export declare function getSchedulerStatus(): Promise<{
17
+ installed: boolean;
18
+ platform: string;
19
+ last_run: string | null;
20
+ next_run: string | null;
21
+ details: string;
22
+ }>;
23
+ /**
24
+ * Remove the scheduled task.
25
+ */
26
+ export declare function removeScheduler(): Promise<{
27
+ success: boolean;
28
+ message: string;
29
+ }>;
30
+ //# sourceMappingURL=scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/miner/scheduler.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAKD;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC,CAmB/D;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC;IAClD,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAmBD;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA0BtF"}