@soulcraft/brainy 0.57.0 ā 0.57.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 +429 -187
- package/dist/augmentations/memoryAugmentations.d.ts.map +1 -1
- package/dist/brainyData.d.ts.map +1 -1
- package/dist/browserFramework.d.ts.map +1 -0
- package/dist/coreTypes.d.ts.map +1 -1
- package/dist/cortex/cli.d.ts +8 -0
- package/dist/cortex/cli.js +207 -0
- package/dist/cortex/cli.js.map +1 -0
- package/dist/cortex/commands/index.d.ts +79 -0
- package/dist/cortex/commands/index.js +614 -0
- package/dist/cortex/commands/index.js.map +1 -0
- package/dist/cortex/config.d.ts +112 -0
- package/dist/cortex/config.js +312 -0
- package/dist/cortex/config.js.map +1 -0
- package/dist/demo.d.ts.map +1 -0
- package/dist/distributed/configManager.d.ts.map +1 -0
- package/dist/distributed/domainDetector.d.ts.map +1 -0
- package/dist/distributed/hashPartitioner.d.ts.map +1 -0
- package/dist/distributed/healthMonitor.d.ts.map +1 -0
- package/dist/distributed/index.d.ts.map +1 -0
- package/dist/distributed/operationalModes.d.ts.map +1 -0
- package/dist/hnsw/distributedSearch.d.ts.map +1 -0
- package/dist/hnsw/hnswIndex.d.ts.map +1 -1
- package/dist/hnsw/hnswIndexOptimized.d.ts.map +1 -1
- package/dist/hnsw/optimizedHNSWIndex.d.ts.map +1 -0
- package/dist/hnsw/partitionedHNSWIndex.d.ts.map +1 -0
- package/dist/hnsw/scaledHNSWSystem.d.ts.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/storage/adapters/baseStorageAdapter.d.ts.map +1 -1
- package/dist/storage/adapters/batchS3Operations.d.ts.map +1 -0
- package/dist/storage/adapters/fileSystemStorage.d.ts.map +1 -1
- package/dist/storage/adapters/memoryStorage.d.ts.map +1 -1
- package/dist/storage/adapters/opfsStorage.d.ts.map +1 -1
- package/dist/storage/adapters/optimizedS3Search.d.ts.map +1 -0
- package/dist/storage/adapters/s3CompatibleStorage.d.ts.map +1 -1
- package/dist/storage/baseStorage.d.ts.map +1 -1
- package/dist/storage/cacheManager.d.ts.map +1 -0
- package/dist/storage/enhancedCacheManager.d.ts.map +1 -0
- package/dist/storage/readOnlyOptimizations.d.ts.map +1 -0
- package/dist/storage/storageFactory.d.ts.map +1 -1
- package/dist/types/distributedTypes.d.ts.map +1 -0
- package/dist/types/paginationTypes.d.ts.map +1 -0
- package/dist/types/tensorflowTypes.js +6 -0
- package/dist/types/tensorflowTypes.js.map +1 -0
- package/dist/utils/autoConfiguration.d.ts.map +1 -0
- package/dist/utils/cacheAutoConfig.d.ts.map +1 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/embedding.d.ts.map +1 -1
- package/dist/utils/fieldNameTracking.d.ts.map +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/jsonProcessing.d.ts.map +1 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/robustModelLoader.d.ts +112 -0
- package/dist/utils/robustModelLoader.d.ts.map +1 -0
- package/dist/utils/robustModelLoader.js +624 -0
- package/dist/utils/robustModelLoader.js.map +1 -0
- package/dist/utils/searchCache.d.ts.map +1 -0
- package/dist/utils/statisticsCollector.d.ts.map +1 -0
- package/dist/utils/typeUtils.d.ts.map +1 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/package.json +1 -1
- package/dist/augmentations/neuralImportSense.d.ts +0 -196
- package/dist/augmentations/neuralImportSense.js +0 -747
- package/dist/augmentations/neuralImportSense.js.map +0 -1
- package/dist/patched-platform-node.d.ts +0 -17
- package/dist/patched-platform-node.d.ts.map +0 -1
- package/dist/testing/prettyReporter.d.ts +0 -23
- package/dist/testing/prettyReporter.d.ts.map +0 -1
- package/dist/testing/prettySummaryReporter.d.ts +0 -22
- package/dist/testing/prettySummaryReporter.d.ts.map +0 -1
- package/dist/unified.min.js +0 -12511
- package/dist/unified.min.js.map +0 -1
- package/dist/utils/tensorflowUtils.d.ts +0 -17
- package/dist/utils/tensorflowUtils.d.ts.map +0 -1
|
@@ -0,0 +1,614 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cortex Commands Implementation
|
|
3
|
+
*
|
|
4
|
+
* All CLI commands for managing Brainy through Cortex
|
|
5
|
+
*/
|
|
6
|
+
import { CortexConfig } from '../config.js';
|
|
7
|
+
import * as fs from 'fs/promises';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
import * as readline from 'readline/promises';
|
|
10
|
+
import { stdin as input, stdout as output } from 'process';
|
|
11
|
+
// CLI utilities - to be added later
|
|
12
|
+
const chalk = { cyan: (s) => s, green: (s) => s, red: (s) => s, yellow: (s) => s, gray: (s) => s };
|
|
13
|
+
class Table {
|
|
14
|
+
constructor(opts) {
|
|
15
|
+
this.rows = [];
|
|
16
|
+
this.head = opts.head || [];
|
|
17
|
+
}
|
|
18
|
+
push(row) { this.rows.push(row); }
|
|
19
|
+
toString() { return [this.head.join(' | '), ...this.rows.map(r => r.join(' | '))].join('\n'); }
|
|
20
|
+
}
|
|
21
|
+
export class CortexCommands {
|
|
22
|
+
/**
|
|
23
|
+
* Initialize Cortex in a project
|
|
24
|
+
*/
|
|
25
|
+
static async init(options) {
|
|
26
|
+
const config = CortexConfig.getInstance();
|
|
27
|
+
if (options.interactive) {
|
|
28
|
+
const rl = readline.createInterface({ input, output });
|
|
29
|
+
console.log(chalk.cyan('\nš§ Welcome to Cortex - Brainy Command Center\n'));
|
|
30
|
+
// Storage type
|
|
31
|
+
const storageType = await rl.question('Storage type (s3/filesystem/memory/opfs) [s3]: ') || 's3';
|
|
32
|
+
let storageConfig = { type: storageType };
|
|
33
|
+
// Storage-specific configuration
|
|
34
|
+
if (storageType === 's3') {
|
|
35
|
+
storageConfig.bucket = await rl.question('S3 bucket name: ');
|
|
36
|
+
storageConfig.region = await rl.question('AWS region [us-east-1]: ') || 'us-east-1';
|
|
37
|
+
const useEnvCreds = await rl.question('Use AWS credentials from environment? (y/n) [y]: ') || 'y';
|
|
38
|
+
if (useEnvCreds !== 'y') {
|
|
39
|
+
storageConfig.accessKeyId = await rl.question('AWS Access Key ID: ');
|
|
40
|
+
storageConfig.secretAccessKey = await rl.question('AWS Secret Access Key: ');
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
else if (storageType === 'filesystem') {
|
|
44
|
+
storageConfig.path = await rl.question(`Storage path [${path.join(process.cwd(), '.brainy-data')}]: `) || path.join(process.cwd(), '.brainy-data');
|
|
45
|
+
}
|
|
46
|
+
// Encryption
|
|
47
|
+
const enableEncryption = await rl.question('Enable encrypted configuration? (y/n) [y]: ') || 'y';
|
|
48
|
+
// Coordination
|
|
49
|
+
const enableCoordination = await rl.question('Enable distributed coordination? (y/n) [y]: ') || 'y';
|
|
50
|
+
rl.close();
|
|
51
|
+
await config.init({
|
|
52
|
+
storage: storageConfig,
|
|
53
|
+
encryption: {
|
|
54
|
+
enabled: enableEncryption === 'y',
|
|
55
|
+
keyDerivation: 'pbkdf2'
|
|
56
|
+
},
|
|
57
|
+
coordination: {
|
|
58
|
+
enabled: enableCoordination === 'y',
|
|
59
|
+
realtime: false,
|
|
60
|
+
pollInterval: 30000
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
console.log(chalk.green('\nā
Cortex initialized successfully!'));
|
|
64
|
+
console.log(chalk.gray('Configuration saved to .brainy/cortex.json'));
|
|
65
|
+
console.log(chalk.gray('Master key saved to .brainy/cortex.key'));
|
|
66
|
+
console.log(chalk.yellow('\nā ļø Keep your master key safe!'));
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
// Non-interactive mode
|
|
70
|
+
await config.init({
|
|
71
|
+
storage: options.storage ? { type: options.storage } : undefined
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Set a configuration value
|
|
77
|
+
*/
|
|
78
|
+
static async configSet(key, value, options) {
|
|
79
|
+
const config = CortexConfig.getInstance();
|
|
80
|
+
await config.load();
|
|
81
|
+
// If no value provided, prompt for it
|
|
82
|
+
if (!value) {
|
|
83
|
+
const rl = readline.createInterface({ input, output });
|
|
84
|
+
value = await rl.question(`Enter value for ${key}: `);
|
|
85
|
+
rl.close();
|
|
86
|
+
}
|
|
87
|
+
await config.set(key, value, { encrypt: options.encrypt });
|
|
88
|
+
console.log(chalk.green(`ā
Set ${key}`));
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Get a configuration value
|
|
92
|
+
*/
|
|
93
|
+
static async configGet(key) {
|
|
94
|
+
const config = CortexConfig.getInstance();
|
|
95
|
+
await config.load();
|
|
96
|
+
const value = await config.get(key);
|
|
97
|
+
if (value === undefined) {
|
|
98
|
+
console.log(chalk.yellow(`Configuration key '${key}' not found`));
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
console.log(value);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* List all configuration keys
|
|
106
|
+
*/
|
|
107
|
+
static async configList(options) {
|
|
108
|
+
const config = CortexConfig.getInstance();
|
|
109
|
+
await config.load();
|
|
110
|
+
const configs = await config.list();
|
|
111
|
+
if (configs.length === 0) {
|
|
112
|
+
console.log(chalk.yellow('No configurations found'));
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const table = new Table({
|
|
116
|
+
head: ['Key', 'Encrypted', 'Environment'],
|
|
117
|
+
style: { head: ['cyan'] }
|
|
118
|
+
});
|
|
119
|
+
for (const cfg of configs) {
|
|
120
|
+
const row = [
|
|
121
|
+
cfg.key,
|
|
122
|
+
cfg.encrypted ? chalk.green('ā') : chalk.gray('-'),
|
|
123
|
+
cfg.environment
|
|
124
|
+
];
|
|
125
|
+
if (options.showValues) {
|
|
126
|
+
const value = await config.get(cfg.key);
|
|
127
|
+
row.push(value ? String(value).substring(0, 50) : '');
|
|
128
|
+
}
|
|
129
|
+
table.push(row);
|
|
130
|
+
}
|
|
131
|
+
console.log(table.toString());
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Import configuration from .env file
|
|
135
|
+
*/
|
|
136
|
+
static async configImport(file) {
|
|
137
|
+
const config = CortexConfig.getInstance();
|
|
138
|
+
await config.load();
|
|
139
|
+
await config.importEnv(file);
|
|
140
|
+
console.log(chalk.green(`ā
Imported configuration from ${file}`));
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Load environment variables
|
|
144
|
+
*/
|
|
145
|
+
static async envLoad(options) {
|
|
146
|
+
const config = CortexConfig.getInstance();
|
|
147
|
+
await config.load();
|
|
148
|
+
const env = await config.loadEnvironment();
|
|
149
|
+
if (options.export) {
|
|
150
|
+
// Output as shell export commands
|
|
151
|
+
for (const [key, value] of Object.entries(env)) {
|
|
152
|
+
console.log(`export ${key}="${value}"`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
// Set in current process
|
|
157
|
+
Object.assign(process.env, env);
|
|
158
|
+
console.log(chalk.green(`ā
Loaded ${Object.keys(env).length} environment variables`));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Migrate to new storage
|
|
163
|
+
*/
|
|
164
|
+
static async migrate(options) {
|
|
165
|
+
const config = CortexConfig.getInstance();
|
|
166
|
+
await config.load();
|
|
167
|
+
const brainy = config.getBrainy();
|
|
168
|
+
// Parse target storage URL
|
|
169
|
+
const targetUrl = new URL(options.to);
|
|
170
|
+
let targetConfig = {};
|
|
171
|
+
if (targetUrl.protocol === 's3:') {
|
|
172
|
+
targetConfig = {
|
|
173
|
+
type: 's3',
|
|
174
|
+
bucket: targetUrl.hostname,
|
|
175
|
+
region: targetUrl.searchParams.get('region') || 'us-east-1'
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
else if (targetUrl.protocol === 'file:') {
|
|
179
|
+
targetConfig = {
|
|
180
|
+
type: 'filesystem',
|
|
181
|
+
path: targetUrl.pathname
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
// Create coordination plan
|
|
185
|
+
const coordinationPlan = {
|
|
186
|
+
version: 1,
|
|
187
|
+
timestamp: new Date().toISOString(),
|
|
188
|
+
migration: {
|
|
189
|
+
enabled: true,
|
|
190
|
+
target: targetConfig,
|
|
191
|
+
strategy: options.strategy,
|
|
192
|
+
dryRun: options.dryRun || false
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
// Store coordination plan in current storage
|
|
196
|
+
await brainy.addNoun({
|
|
197
|
+
id: '_system/coordination',
|
|
198
|
+
type: 'cortex_coordination',
|
|
199
|
+
metadata: coordinationPlan
|
|
200
|
+
});
|
|
201
|
+
console.log(chalk.cyan('š Migration plan created:'));
|
|
202
|
+
console.log(JSON.stringify(coordinationPlan, null, 2));
|
|
203
|
+
if (!options.dryRun) {
|
|
204
|
+
console.log(chalk.yellow('\nā³ Migration will begin shortly...'));
|
|
205
|
+
console.log(chalk.gray('All services will automatically detect and execute the migration'));
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Synchronize services
|
|
210
|
+
*/
|
|
211
|
+
static async sync(options) {
|
|
212
|
+
const config = CortexConfig.getInstance();
|
|
213
|
+
await config.load();
|
|
214
|
+
const brainy = config.getBrainy();
|
|
215
|
+
// Trigger sync by updating coordination timestamp
|
|
216
|
+
await brainy.addNoun({
|
|
217
|
+
id: '_system/sync',
|
|
218
|
+
type: 'cortex_sync',
|
|
219
|
+
metadata: {
|
|
220
|
+
timestamp: new Date().toISOString(),
|
|
221
|
+
force: options.force || false
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
console.log(chalk.green('ā
Sync signal sent to all services'));
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Query data with advanced filtering
|
|
228
|
+
*/
|
|
229
|
+
static async query(pattern, options) {
|
|
230
|
+
const config = CortexConfig.getInstance();
|
|
231
|
+
await config.load();
|
|
232
|
+
const brainy = config.getBrainy();
|
|
233
|
+
// Parse metadata filter if provided
|
|
234
|
+
let metadataFilter = null;
|
|
235
|
+
if (options.filter || options.metadata) {
|
|
236
|
+
try {
|
|
237
|
+
metadataFilter = JSON.parse(options.filter || options.metadata);
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
console.log(chalk.red(`Invalid filter JSON: ${error instanceof Error ? error.message : String(error)}`));
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
// Show query plan if requested
|
|
245
|
+
if (options.explain) {
|
|
246
|
+
console.log(chalk.cyan('\nš Query Plan:'));
|
|
247
|
+
console.log(`Pattern: "${pattern}"`);
|
|
248
|
+
if (metadataFilter) {
|
|
249
|
+
console.log(`Filter: ${JSON.stringify(metadataFilter, null, 2)}`);
|
|
250
|
+
}
|
|
251
|
+
console.log(`Limit: ${options.limit || 10}\n`);
|
|
252
|
+
}
|
|
253
|
+
// Perform search with metadata filtering
|
|
254
|
+
const results = await brainy.searchNouns(pattern, {
|
|
255
|
+
limit: parseInt(options.limit) || 10,
|
|
256
|
+
metadata: metadataFilter
|
|
257
|
+
});
|
|
258
|
+
if (options.json) {
|
|
259
|
+
console.log(JSON.stringify(results, null, 2));
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
if (results.length === 0) {
|
|
263
|
+
console.log(chalk.yellow('No results found'));
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
const table = new Table({
|
|
267
|
+
head: ['ID', 'Type', 'Score', 'Sample Metadata'],
|
|
268
|
+
style: { head: ['cyan'] },
|
|
269
|
+
colWidths: [30, 15, 10, 40]
|
|
270
|
+
});
|
|
271
|
+
for (const result of results) {
|
|
272
|
+
// Show a sample of metadata
|
|
273
|
+
let metaSample = '';
|
|
274
|
+
if (result.metadata) {
|
|
275
|
+
const keys = Object.keys(result.metadata).slice(0, 3);
|
|
276
|
+
metaSample = keys.map(k => `${k}: ${JSON.stringify(result.metadata[k])}`).join(', ');
|
|
277
|
+
if (Object.keys(result.metadata).length > 3) {
|
|
278
|
+
metaSample += ', ...';
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
table.push([
|
|
282
|
+
result.id.substring(0, 28),
|
|
283
|
+
result.type || '-',
|
|
284
|
+
result.score?.toFixed(3) || '-',
|
|
285
|
+
metaSample.substring(0, 38)
|
|
286
|
+
]);
|
|
287
|
+
}
|
|
288
|
+
console.log(table.toString());
|
|
289
|
+
console.log(chalk.gray(`\nFound ${results.length} results`));
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Show statistics
|
|
294
|
+
*/
|
|
295
|
+
static async stats(options) {
|
|
296
|
+
const config = CortexConfig.getInstance();
|
|
297
|
+
await config.load();
|
|
298
|
+
const brainy = config.getBrainy();
|
|
299
|
+
const stats = await brainy.getStatistics();
|
|
300
|
+
if (options.json) {
|
|
301
|
+
console.log(JSON.stringify(stats, null, 2));
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
console.log(chalk.cyan('\nš Brainy Statistics\n'));
|
|
305
|
+
console.log(`Nouns: ${chalk.green(stats.totalNouns)}`);
|
|
306
|
+
console.log(`Verbs: ${chalk.green(stats.totalVerbs)}`);
|
|
307
|
+
console.log(`Storage Used: ${chalk.green(this.formatBytes(stats.storageUsed || 0))}`);
|
|
308
|
+
console.log(`Index Size: ${chalk.green(this.formatBytes(stats.indexSize || 0))}`);
|
|
309
|
+
if (stats.metadata) {
|
|
310
|
+
console.log(`\nMetadata:`);
|
|
311
|
+
for (const [key, value] of Object.entries(stats.metadata)) {
|
|
312
|
+
console.log(` ${key}: ${chalk.gray(JSON.stringify(value))}`);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Create backup
|
|
319
|
+
*/
|
|
320
|
+
static async backup(destination, options) {
|
|
321
|
+
const config = CortexConfig.getInstance();
|
|
322
|
+
await config.load();
|
|
323
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
324
|
+
const backupName = `brainy-backup-${timestamp}`;
|
|
325
|
+
const backupPath = destination || path.join(process.cwd(), `${backupName}.json`);
|
|
326
|
+
const brainy = config.getBrainy();
|
|
327
|
+
// Export all data
|
|
328
|
+
const backup = {
|
|
329
|
+
version: 1,
|
|
330
|
+
timestamp: new Date().toISOString(),
|
|
331
|
+
data: {
|
|
332
|
+
nouns: [],
|
|
333
|
+
verbs: []
|
|
334
|
+
}
|
|
335
|
+
};
|
|
336
|
+
// Export nouns with pagination
|
|
337
|
+
let offset = 0;
|
|
338
|
+
let hasMore = true;
|
|
339
|
+
while (hasMore) {
|
|
340
|
+
const result = await brainy.getNouns({
|
|
341
|
+
pagination: { offset, limit: 100 }
|
|
342
|
+
});
|
|
343
|
+
backup.data.nouns.push(...result.items);
|
|
344
|
+
hasMore = result.hasMore;
|
|
345
|
+
offset += 100;
|
|
346
|
+
}
|
|
347
|
+
// Export verbs with pagination
|
|
348
|
+
offset = 0;
|
|
349
|
+
hasMore = true;
|
|
350
|
+
while (hasMore) {
|
|
351
|
+
const result = await brainy.getVerbs({
|
|
352
|
+
pagination: { offset, limit: 100 }
|
|
353
|
+
});
|
|
354
|
+
backup.data.verbs.push(...result.items);
|
|
355
|
+
hasMore = result.hasMore;
|
|
356
|
+
offset += 100;
|
|
357
|
+
}
|
|
358
|
+
// Include configuration if requested
|
|
359
|
+
if (options.includeConfig) {
|
|
360
|
+
backup.config = await config.list();
|
|
361
|
+
}
|
|
362
|
+
// Save backup
|
|
363
|
+
const backupContent = JSON.stringify(backup, null, 2);
|
|
364
|
+
if (options.compress) {
|
|
365
|
+
const zlib = await import('zlib');
|
|
366
|
+
const compressed = await new Promise((resolve, reject) => {
|
|
367
|
+
zlib.gzip(Buffer.from(backupContent), (err, result) => {
|
|
368
|
+
if (err)
|
|
369
|
+
reject(err);
|
|
370
|
+
else
|
|
371
|
+
resolve(result);
|
|
372
|
+
});
|
|
373
|
+
});
|
|
374
|
+
await fs.writeFile(`${backupPath}.gz`, compressed);
|
|
375
|
+
return `${backupPath}.gz`;
|
|
376
|
+
}
|
|
377
|
+
else {
|
|
378
|
+
await fs.writeFile(backupPath, backupContent);
|
|
379
|
+
return backupPath;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Restore from backup
|
|
384
|
+
*/
|
|
385
|
+
static async restore(source, options) {
|
|
386
|
+
const config = CortexConfig.getInstance();
|
|
387
|
+
await config.load();
|
|
388
|
+
let backupContent;
|
|
389
|
+
if (source.endsWith('.gz')) {
|
|
390
|
+
const zlib = await import('zlib');
|
|
391
|
+
const compressed = await fs.readFile(source);
|
|
392
|
+
backupContent = await new Promise((resolve, reject) => {
|
|
393
|
+
zlib.gunzip(compressed, (err, result) => {
|
|
394
|
+
if (err)
|
|
395
|
+
reject(err);
|
|
396
|
+
else
|
|
397
|
+
resolve(result.toString());
|
|
398
|
+
});
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
else {
|
|
402
|
+
backupContent = await fs.readFile(source, 'utf-8');
|
|
403
|
+
}
|
|
404
|
+
const backup = JSON.parse(backupContent);
|
|
405
|
+
const brainy = config.getBrainy();
|
|
406
|
+
if (!options.force) {
|
|
407
|
+
const rl = readline.createInterface({ input, output });
|
|
408
|
+
const confirm = await rl.question(chalk.yellow('ā ļø This will overwrite existing data. Continue? (y/n): '));
|
|
409
|
+
rl.close();
|
|
410
|
+
if (confirm !== 'y') {
|
|
411
|
+
console.log('Restore cancelled');
|
|
412
|
+
return;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
// Restore nouns
|
|
416
|
+
for (const noun of backup.data.nouns) {
|
|
417
|
+
await brainy.addNoun(noun);
|
|
418
|
+
}
|
|
419
|
+
// Restore verbs
|
|
420
|
+
for (const verb of backup.data.verbs) {
|
|
421
|
+
await brainy.addVerb(verb);
|
|
422
|
+
}
|
|
423
|
+
console.log(chalk.green(`ā
Restored ${backup.data.nouns.length} nouns and ${backup.data.verbs.length} verbs`));
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Inspect an item
|
|
427
|
+
*/
|
|
428
|
+
static async inspect(id, options) {
|
|
429
|
+
const config = CortexConfig.getInstance();
|
|
430
|
+
await config.load();
|
|
431
|
+
const brainy = config.getBrainy();
|
|
432
|
+
try {
|
|
433
|
+
// Try as noun first
|
|
434
|
+
const noun = await brainy.getNoun(id);
|
|
435
|
+
if (noun) {
|
|
436
|
+
if (options.raw) {
|
|
437
|
+
console.log(JSON.stringify(noun, null, 2));
|
|
438
|
+
}
|
|
439
|
+
else {
|
|
440
|
+
console.log(chalk.cyan(`\nš¦ Noun: ${id}\n`));
|
|
441
|
+
console.log(`Type: ${chalk.green(noun.type || 'unknown')}`);
|
|
442
|
+
if (noun.metadata) {
|
|
443
|
+
console.log(`Metadata:`);
|
|
444
|
+
console.log(JSON.stringify(noun.metadata, null, 2));
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
return;
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
catch (e) {
|
|
451
|
+
// Not a noun, try verb
|
|
452
|
+
}
|
|
453
|
+
try {
|
|
454
|
+
// Try as verb
|
|
455
|
+
const verb = await brainy.getVerb(id);
|
|
456
|
+
if (verb) {
|
|
457
|
+
if (options.raw) {
|
|
458
|
+
console.log(JSON.stringify(verb, null, 2));
|
|
459
|
+
}
|
|
460
|
+
else {
|
|
461
|
+
console.log(chalk.cyan(`\nš Verb: ${id}\n`));
|
|
462
|
+
console.log(`Type: ${chalk.green(verb.type)}`);
|
|
463
|
+
console.log(`Source: ${chalk.blue(verb.source)}`);
|
|
464
|
+
console.log(`Target: ${chalk.blue(verb.target)}`);
|
|
465
|
+
if (verb.metadata) {
|
|
466
|
+
console.log(`Metadata:`);
|
|
467
|
+
console.log(JSON.stringify(verb.metadata, null, 2));
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
return;
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
catch (e) {
|
|
474
|
+
// Not found
|
|
475
|
+
}
|
|
476
|
+
console.log(chalk.red(`Item '${id}' not found`));
|
|
477
|
+
}
|
|
478
|
+
/**
|
|
479
|
+
* Reindex database
|
|
480
|
+
*/
|
|
481
|
+
static async reindex(options) {
|
|
482
|
+
const config = CortexConfig.getInstance();
|
|
483
|
+
await config.load();
|
|
484
|
+
const brainy = config.getBrainy();
|
|
485
|
+
if (options.type === 'metadata' || options.type === 'all') {
|
|
486
|
+
await brainy.rebuildMetadataIndex();
|
|
487
|
+
}
|
|
488
|
+
if (options.type === 'hnsw' || options.type === 'all') {
|
|
489
|
+
// HNSW reindex would go here
|
|
490
|
+
console.log(chalk.yellow('HNSW reindexing not yet implemented'));
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
/**
|
|
494
|
+
* Health check
|
|
495
|
+
*/
|
|
496
|
+
static async health(options) {
|
|
497
|
+
const config = CortexConfig.getInstance();
|
|
498
|
+
try {
|
|
499
|
+
await config.load();
|
|
500
|
+
const brainy = config.getBrainy();
|
|
501
|
+
const stats = await brainy.getStatistics();
|
|
502
|
+
console.log(chalk.green('ā
Cortex: Healthy'));
|
|
503
|
+
console.log(chalk.green('ā
Brainy: Connected'));
|
|
504
|
+
console.log(chalk.green(`ā
Storage: Active (${stats.totalNouns} nouns, ${stats.totalVerbs} verbs)`));
|
|
505
|
+
if (options.verbose) {
|
|
506
|
+
console.log('\nDetailed Health:');
|
|
507
|
+
console.log(`- Config Path: ${path.join(process.cwd(), '.brainy/cortex.json')}`);
|
|
508
|
+
console.log(`- Storage Type: ${config.getStorageConfig()?.type}`);
|
|
509
|
+
console.log(`- Environment: ${config.getCurrentEnvironment()}`);
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
catch (error) {
|
|
513
|
+
console.log(chalk.red('ā Cortex: Error'));
|
|
514
|
+
console.log(chalk.red(` ${error.message}`));
|
|
515
|
+
process.exit(1);
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
/**
|
|
519
|
+
* Interactive shell
|
|
520
|
+
*/
|
|
521
|
+
static async shell() {
|
|
522
|
+
const config = CortexConfig.getInstance();
|
|
523
|
+
await config.load();
|
|
524
|
+
console.log(chalk.cyan('\nš§ Cortex Interactive Shell\n'));
|
|
525
|
+
console.log(chalk.gray('Type "help" for commands, "exit" to quit\n'));
|
|
526
|
+
const rl = readline.createInterface({ input, output });
|
|
527
|
+
while (true) {
|
|
528
|
+
const command = await rl.question(chalk.cyan('cortex> '));
|
|
529
|
+
if (command === 'exit' || command === 'quit') {
|
|
530
|
+
break;
|
|
531
|
+
}
|
|
532
|
+
if (command === 'help') {
|
|
533
|
+
console.log(`
|
|
534
|
+
Available commands:
|
|
535
|
+
query <pattern> - Search for data
|
|
536
|
+
get <key> - Get config value
|
|
537
|
+
set <key> <value> - Set config value
|
|
538
|
+
stats - Show statistics
|
|
539
|
+
health - Check health
|
|
540
|
+
exit - Exit shell
|
|
541
|
+
`);
|
|
542
|
+
continue;
|
|
543
|
+
}
|
|
544
|
+
// Parse and execute command
|
|
545
|
+
const [cmd, ...args] = command.split(' ');
|
|
546
|
+
try {
|
|
547
|
+
switch (cmd) {
|
|
548
|
+
case 'query':
|
|
549
|
+
await this.query(args.join(' '), { limit: 5 });
|
|
550
|
+
break;
|
|
551
|
+
case 'get':
|
|
552
|
+
await this.configGet(args[0]);
|
|
553
|
+
break;
|
|
554
|
+
case 'set':
|
|
555
|
+
await this.configSet(args[0], args.slice(1).join(' '), { encrypt: true });
|
|
556
|
+
break;
|
|
557
|
+
case 'stats':
|
|
558
|
+
await this.stats({});
|
|
559
|
+
break;
|
|
560
|
+
case 'health':
|
|
561
|
+
await this.health({});
|
|
562
|
+
break;
|
|
563
|
+
default:
|
|
564
|
+
console.log(chalk.yellow(`Unknown command: ${cmd}`));
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
catch (error) {
|
|
568
|
+
console.log(chalk.red(`Error: ${error.message}`));
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
rl.close();
|
|
572
|
+
console.log(chalk.gray('\nGoodbye!\n'));
|
|
573
|
+
}
|
|
574
|
+
/**
|
|
575
|
+
* Show status
|
|
576
|
+
*/
|
|
577
|
+
static async status() {
|
|
578
|
+
const config = CortexConfig.getInstance();
|
|
579
|
+
try {
|
|
580
|
+
await config.load();
|
|
581
|
+
const brainy = config.getBrainy();
|
|
582
|
+
const stats = await brainy.getStatistics();
|
|
583
|
+
console.log(chalk.cyan('\nš§ Cortex Status\n'));
|
|
584
|
+
const table = new Table({
|
|
585
|
+
style: { head: ['cyan'] }
|
|
586
|
+
});
|
|
587
|
+
table.push({ 'Configuration': chalk.green('ā Loaded') }, { 'Storage': `${config.getStorageConfig()?.type}` }, { 'Environment': config.getCurrentEnvironment() }, { 'Encryption': chalk.green('ā Enabled') }, { 'Total Nouns': stats.totalNouns.toString() }, { 'Total Verbs': stats.totalVerbs.toString() }, { 'Storage Used': this.formatBytes(stats.storageUsed || 0) });
|
|
588
|
+
console.log(table.toString());
|
|
589
|
+
// Check for active migrations
|
|
590
|
+
const coordinationNoun = await brainy.getNoun('_system/coordination');
|
|
591
|
+
if (coordinationNoun?.metadata?.migration?.enabled) {
|
|
592
|
+
console.log(chalk.yellow('\nā ļø Active Migration:'));
|
|
593
|
+
console.log(` Target: ${coordinationNoun.metadata.migration.target.type}`);
|
|
594
|
+
console.log(` Strategy: ${coordinationNoun.metadata.migration.strategy}`);
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
catch (error) {
|
|
598
|
+
console.log(chalk.red('ā Cortex not initialized'));
|
|
599
|
+
console.log(chalk.gray('Run "cortex init" to get started'));
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
/**
|
|
603
|
+
* Format bytes to human readable
|
|
604
|
+
*/
|
|
605
|
+
static formatBytes(bytes) {
|
|
606
|
+
if (bytes === 0)
|
|
607
|
+
return '0 B';
|
|
608
|
+
const k = 1024;
|
|
609
|
+
const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
|
|
610
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
611
|
+
return `${(bytes / Math.pow(k, i)).toFixed(2)} ${sizes[i]}`;
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cortex/commands/index.ts"],"names":[],"mappings":"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"}
|