@claude-flow/cli 3.0.0-alpha.120 → 3.0.0-alpha.121

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 (35) hide show
  1. package/README.md +156 -0
  2. package/dist/src/commands/index.d.ts +2 -0
  3. package/dist/src/commands/index.d.ts.map +1 -1
  4. package/dist/src/commands/index.js +7 -0
  5. package/dist/src/commands/index.js.map +1 -1
  6. package/dist/src/commands/ruvector/backup.d.ts +11 -0
  7. package/dist/src/commands/ruvector/backup.d.ts.map +1 -0
  8. package/dist/src/commands/ruvector/backup.js +746 -0
  9. package/dist/src/commands/ruvector/backup.js.map +1 -0
  10. package/dist/src/commands/ruvector/benchmark.d.ts +11 -0
  11. package/dist/src/commands/ruvector/benchmark.d.ts.map +1 -0
  12. package/dist/src/commands/ruvector/benchmark.js +480 -0
  13. package/dist/src/commands/ruvector/benchmark.js.map +1 -0
  14. package/dist/src/commands/ruvector/index.d.ts +27 -0
  15. package/dist/src/commands/ruvector/index.d.ts.map +1 -0
  16. package/dist/src/commands/ruvector/index.js +119 -0
  17. package/dist/src/commands/ruvector/index.js.map +1 -0
  18. package/dist/src/commands/ruvector/init.d.ts +11 -0
  19. package/dist/src/commands/ruvector/init.d.ts.map +1 -0
  20. package/dist/src/commands/ruvector/init.js +431 -0
  21. package/dist/src/commands/ruvector/init.js.map +1 -0
  22. package/dist/src/commands/ruvector/migrate.d.ts +11 -0
  23. package/dist/src/commands/ruvector/migrate.d.ts.map +1 -0
  24. package/dist/src/commands/ruvector/migrate.js +481 -0
  25. package/dist/src/commands/ruvector/migrate.js.map +1 -0
  26. package/dist/src/commands/ruvector/optimize.d.ts +11 -0
  27. package/dist/src/commands/ruvector/optimize.d.ts.map +1 -0
  28. package/dist/src/commands/ruvector/optimize.js +503 -0
  29. package/dist/src/commands/ruvector/optimize.js.map +1 -0
  30. package/dist/src/commands/ruvector/status.d.ts +11 -0
  31. package/dist/src/commands/ruvector/status.d.ts.map +1 -0
  32. package/dist/src/commands/ruvector/status.js +456 -0
  33. package/dist/src/commands/ruvector/status.js.map +1 -0
  34. package/dist/tsconfig.tsbuildinfo +1 -1
  35. package/package.json +1 -1
@@ -0,0 +1,481 @@
1
+ /**
2
+ * V3 CLI RuVector Migrate Command
3
+ * Database migration management for RuVector
4
+ */
5
+ import { output } from '../../output.js';
6
+ import { confirm } from '../../prompt.js';
7
+ /**
8
+ * Available migrations
9
+ */
10
+ const MIGRATIONS = [
11
+ {
12
+ version: '1.0.0',
13
+ name: 'Initial RuVector setup',
14
+ up: '-- Initial setup handled by init command',
15
+ down: '-- Drop all tables in schema',
16
+ },
17
+ {
18
+ version: '1.1.0',
19
+ name: 'Add full-text search',
20
+ up: `
21
+ CREATE INDEX IF NOT EXISTS idx_embeddings_content_fts
22
+ ON {{schema}}.embeddings
23
+ USING gin (to_tsvector('english', COALESCE(content, '')));
24
+
25
+ ALTER TABLE {{schema}}.embeddings
26
+ ADD COLUMN IF NOT EXISTS search_vector tsvector
27
+ GENERATED ALWAYS AS (to_tsvector('english', COALESCE(content, ''))) STORED;
28
+ `,
29
+ down: `
30
+ DROP INDEX IF EXISTS {{schema}}.idx_embeddings_content_fts;
31
+ ALTER TABLE {{schema}}.embeddings DROP COLUMN IF EXISTS search_vector;
32
+ `,
33
+ },
34
+ {
35
+ version: '1.2.0',
36
+ name: 'Add embedding statistics',
37
+ up: `
38
+ CREATE TABLE IF NOT EXISTS {{schema}}.embedding_stats (
39
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
40
+ namespace VARCHAR(128) NOT NULL,
41
+ total_vectors INTEGER DEFAULT 0,
42
+ avg_magnitude FLOAT,
43
+ dimension_stats JSONB,
44
+ computed_at TIMESTAMPTZ DEFAULT NOW()
45
+ );
46
+
47
+ CREATE INDEX IF NOT EXISTS idx_embedding_stats_namespace
48
+ ON {{schema}}.embedding_stats (namespace);
49
+ `,
50
+ down: `
51
+ DROP TABLE IF EXISTS {{schema}}.embedding_stats;
52
+ `,
53
+ },
54
+ {
55
+ version: '1.3.0',
56
+ name: 'Add query cache',
57
+ up: `
58
+ CREATE TABLE IF NOT EXISTS {{schema}}.query_cache (
59
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
60
+ query_hash VARCHAR(64) NOT NULL UNIQUE,
61
+ query_embedding vector(1536),
62
+ result_ids UUID[],
63
+ result_scores FLOAT[],
64
+ hit_count INTEGER DEFAULT 1,
65
+ created_at TIMESTAMPTZ DEFAULT NOW(),
66
+ last_accessed TIMESTAMPTZ DEFAULT NOW()
67
+ );
68
+
69
+ CREATE INDEX IF NOT EXISTS idx_query_cache_hash
70
+ ON {{schema}}.query_cache (query_hash);
71
+
72
+ CREATE INDEX IF NOT EXISTS idx_query_cache_last_accessed
73
+ ON {{schema}}.query_cache (last_accessed);
74
+ `,
75
+ down: `
76
+ DROP TABLE IF EXISTS {{schema}}.query_cache;
77
+ `,
78
+ },
79
+ {
80
+ version: '1.4.0',
81
+ name: 'Add batch operations support',
82
+ up: `
83
+ CREATE TABLE IF NOT EXISTS {{schema}}.batch_jobs (
84
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
85
+ job_type VARCHAR(64) NOT NULL,
86
+ status VARCHAR(32) DEFAULT 'pending',
87
+ total_items INTEGER DEFAULT 0,
88
+ processed_items INTEGER DEFAULT 0,
89
+ error_count INTEGER DEFAULT 0,
90
+ metadata JSONB DEFAULT '{}',
91
+ started_at TIMESTAMPTZ,
92
+ completed_at TIMESTAMPTZ,
93
+ created_at TIMESTAMPTZ DEFAULT NOW()
94
+ );
95
+
96
+ CREATE INDEX IF NOT EXISTS idx_batch_jobs_status
97
+ ON {{schema}}.batch_jobs (status);
98
+ `,
99
+ down: `
100
+ DROP TABLE IF EXISTS {{schema}}.batch_jobs;
101
+ `,
102
+ },
103
+ {
104
+ version: '1.5.0',
105
+ name: 'Add neural pattern learning',
106
+ up: `
107
+ CREATE TABLE IF NOT EXISTS {{schema}}.neural_patterns (
108
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
109
+ pattern_type VARCHAR(64) NOT NULL,
110
+ input_embedding vector(1536),
111
+ output_embedding vector(1536),
112
+ weight_matrix JSONB,
113
+ activation VARCHAR(32) DEFAULT 'relu',
114
+ accuracy FLOAT,
115
+ training_steps INTEGER DEFAULT 0,
116
+ created_at TIMESTAMPTZ DEFAULT NOW(),
117
+ updated_at TIMESTAMPTZ DEFAULT NOW()
118
+ );
119
+
120
+ CREATE INDEX IF NOT EXISTS idx_neural_patterns_type
121
+ ON {{schema}}.neural_patterns (pattern_type);
122
+
123
+ CREATE INDEX IF NOT EXISTS idx_neural_patterns_input_hnsw
124
+ ON {{schema}}.neural_patterns
125
+ USING hnsw (input_embedding vector_cosine_ops)
126
+ WITH (m = 16, ef_construction = 64);
127
+ `,
128
+ down: `
129
+ DROP TABLE IF EXISTS {{schema}}.neural_patterns;
130
+ `,
131
+ },
132
+ ];
133
+ /**
134
+ * Get PostgreSQL connection config from context
135
+ */
136
+ function getConnectionConfig(ctx) {
137
+ return {
138
+ host: ctx.flags.host || process.env.PGHOST || 'localhost',
139
+ port: parseInt(ctx.flags.port || process.env.PGPORT || '5432', 10),
140
+ database: ctx.flags.database || process.env.PGDATABASE || '',
141
+ user: ctx.flags.user || process.env.PGUSER || 'postgres',
142
+ password: ctx.flags.password || process.env.PGPASSWORD || '',
143
+ ssl: ctx.flags.ssl || process.env.PGSSLMODE === 'require',
144
+ schema: ctx.flags.schema || 'claude_flow',
145
+ };
146
+ }
147
+ /**
148
+ * Calculate simple checksum for migration SQL
149
+ */
150
+ function calculateChecksum(sql) {
151
+ let hash = 0;
152
+ for (let i = 0; i < sql.length; i++) {
153
+ const char = sql.charCodeAt(i);
154
+ hash = ((hash << 5) - hash) + char;
155
+ hash = hash & hash;
156
+ }
157
+ return Math.abs(hash).toString(16).padStart(8, '0');
158
+ }
159
+ /**
160
+ * RuVector migrate command
161
+ */
162
+ export const migrateCommand = {
163
+ name: 'migrate',
164
+ description: 'Run database migrations',
165
+ options: [
166
+ {
167
+ name: 'up',
168
+ description: 'Run pending migrations (default)',
169
+ type: 'boolean',
170
+ default: true,
171
+ },
172
+ {
173
+ name: 'down',
174
+ description: 'Rollback last migration',
175
+ type: 'boolean',
176
+ default: false,
177
+ },
178
+ {
179
+ name: 'to',
180
+ description: 'Migrate to specific version',
181
+ type: 'string',
182
+ },
183
+ {
184
+ name: 'dry-run',
185
+ description: 'Show SQL without executing',
186
+ type: 'boolean',
187
+ default: false,
188
+ },
189
+ {
190
+ name: 'force',
191
+ description: 'Force migration even if dirty',
192
+ type: 'boolean',
193
+ default: false,
194
+ },
195
+ {
196
+ name: 'host',
197
+ short: 'h',
198
+ description: 'PostgreSQL host',
199
+ type: 'string',
200
+ default: 'localhost',
201
+ },
202
+ {
203
+ name: 'port',
204
+ short: 'p',
205
+ description: 'PostgreSQL port',
206
+ type: 'number',
207
+ default: 5432,
208
+ },
209
+ {
210
+ name: 'database',
211
+ short: 'd',
212
+ description: 'Database name',
213
+ type: 'string',
214
+ },
215
+ {
216
+ name: 'user',
217
+ short: 'u',
218
+ description: 'Database user',
219
+ type: 'string',
220
+ },
221
+ {
222
+ name: 'password',
223
+ description: 'Database password',
224
+ type: 'string',
225
+ },
226
+ {
227
+ name: 'ssl',
228
+ description: 'Enable SSL',
229
+ type: 'boolean',
230
+ default: false,
231
+ },
232
+ {
233
+ name: 'schema',
234
+ short: 's',
235
+ description: 'Schema name',
236
+ type: 'string',
237
+ default: 'claude_flow',
238
+ },
239
+ ],
240
+ examples: [
241
+ { command: 'claude-flow ruvector migrate --up', description: 'Run pending migrations' },
242
+ { command: 'claude-flow ruvector migrate --down', description: 'Rollback last migration' },
243
+ { command: 'claude-flow ruvector migrate --to 1.2.0', description: 'Migrate to version 1.2.0' },
244
+ { command: 'claude-flow ruvector migrate --dry-run', description: 'Preview migration SQL' },
245
+ ],
246
+ action: async (ctx) => {
247
+ const config = getConnectionConfig(ctx);
248
+ const dryRun = ctx.flags['dry-run'];
249
+ const force = ctx.flags.force;
250
+ const targetVersion = ctx.flags.to;
251
+ const rollback = ctx.flags.down;
252
+ output.writeln();
253
+ output.writeln(output.bold('RuVector Migration'));
254
+ output.writeln(output.dim('='.repeat(60)));
255
+ output.writeln();
256
+ if (!config.database) {
257
+ output.printError('Database name is required. Use --database or -d flag, or set PGDATABASE env.');
258
+ return { success: false, exitCode: 1 };
259
+ }
260
+ if (dryRun) {
261
+ output.printInfo('Dry run mode: SQL will be shown but not executed');
262
+ output.writeln();
263
+ }
264
+ const spinner = output.createSpinner({ text: 'Connecting to PostgreSQL...', spinner: 'dots' });
265
+ spinner.start();
266
+ try {
267
+ // Import pg
268
+ let pg = null;
269
+ try {
270
+ pg = await import('pg');
271
+ }
272
+ catch {
273
+ spinner.fail('PostgreSQL driver not found');
274
+ output.printError('Install pg package: npm install pg');
275
+ return { success: false, exitCode: 1 };
276
+ }
277
+ const client = new pg.Client({
278
+ host: config.host,
279
+ port: config.port,
280
+ database: config.database,
281
+ user: config.user,
282
+ password: config.password,
283
+ ssl: config.ssl ? { rejectUnauthorized: false } : false,
284
+ });
285
+ await client.connect();
286
+ spinner.succeed('Connected to PostgreSQL');
287
+ // Check if schema and migrations table exist
288
+ spinner.setText('Checking migration status...');
289
+ spinner.start();
290
+ const schemaExists = await client.query(`
291
+ SELECT schema_name FROM information_schema.schemata WHERE schema_name = $1
292
+ `, [config.schema]);
293
+ if (schemaExists.rows.length === 0) {
294
+ spinner.fail(`Schema "${config.schema}" not found`);
295
+ output.printError('Run `claude-flow ruvector init` first');
296
+ await client.end();
297
+ return { success: false, exitCode: 1 };
298
+ }
299
+ // Get applied migrations
300
+ const appliedResult = await client.query(`
301
+ SELECT version, name, applied_at, checksum
302
+ FROM ${config.schema}.migrations
303
+ ORDER BY version ASC
304
+ `);
305
+ const appliedVersions = new Set(appliedResult.rows.map(r => r.version));
306
+ spinner.succeed(`Found ${appliedVersions.size} applied migrations`);
307
+ // Determine migrations to run
308
+ let migrationsToRun = [];
309
+ let direction = 'up';
310
+ if (rollback) {
311
+ direction = 'down';
312
+ // Get the last applied migration
313
+ const lastApplied = appliedResult.rows[appliedResult.rows.length - 1];
314
+ if (!lastApplied) {
315
+ output.printWarning('No migrations to rollback');
316
+ await client.end();
317
+ return { success: true };
318
+ }
319
+ const migration = MIGRATIONS.find(m => m.version === lastApplied.version);
320
+ if (migration) {
321
+ migrationsToRun = [migration];
322
+ }
323
+ }
324
+ else if (targetVersion) {
325
+ // Migrate to specific version
326
+ const targetIdx = MIGRATIONS.findIndex(m => m.version === targetVersion);
327
+ if (targetIdx === -1) {
328
+ output.printError(`Version ${targetVersion} not found`);
329
+ await client.end();
330
+ return { success: false, exitCode: 1 };
331
+ }
332
+ const currentVersions = Array.from(appliedVersions);
333
+ const currentIdx = currentVersions.length > 0
334
+ ? MIGRATIONS.findIndex(m => m.version === currentVersions[currentVersions.length - 1])
335
+ : -1;
336
+ if (targetIdx > currentIdx) {
337
+ // Migrate up
338
+ migrationsToRun = MIGRATIONS.slice(currentIdx + 1, targetIdx + 1)
339
+ .filter(m => !appliedVersions.has(m.version));
340
+ }
341
+ else if (targetIdx < currentIdx) {
342
+ // Migrate down
343
+ direction = 'down';
344
+ migrationsToRun = MIGRATIONS.slice(targetIdx + 1, currentIdx + 1)
345
+ .filter(m => appliedVersions.has(m.version))
346
+ .reverse();
347
+ }
348
+ }
349
+ else {
350
+ // Run all pending migrations
351
+ migrationsToRun = MIGRATIONS.filter(m => !appliedVersions.has(m.version));
352
+ }
353
+ if (migrationsToRun.length === 0) {
354
+ output.printSuccess('Database is up to date');
355
+ // Show current migration status
356
+ output.writeln();
357
+ output.writeln(output.highlight('Applied Migrations:'));
358
+ output.printTable({
359
+ columns: [
360
+ { key: 'version', header: 'Version', width: 12 },
361
+ { key: 'name', header: 'Name', width: 35 },
362
+ { key: 'applied', header: 'Applied At', width: 22 },
363
+ ],
364
+ data: appliedResult.rows.map(r => ({
365
+ version: r.version,
366
+ name: r.name,
367
+ applied: new Date(r.applied_at).toISOString().replace('T', ' ').substring(0, 19),
368
+ })),
369
+ });
370
+ await client.end();
371
+ return { success: true };
372
+ }
373
+ // Show migrations to run
374
+ output.writeln();
375
+ output.writeln(output.highlight(`Migrations to ${direction === 'up' ? 'apply' : 'rollback'}:`));
376
+ output.printTable({
377
+ columns: [
378
+ { key: 'version', header: 'Version', width: 12 },
379
+ { key: 'name', header: 'Name', width: 40 },
380
+ { key: 'direction', header: 'Direction', width: 10 },
381
+ ],
382
+ data: migrationsToRun.map(m => ({
383
+ version: m.version,
384
+ name: m.name,
385
+ direction: direction === 'up' ? output.success('UP') : output.warning('DOWN'),
386
+ })),
387
+ });
388
+ output.writeln();
389
+ // Dry run: show SQL
390
+ if (dryRun) {
391
+ for (const migration of migrationsToRun) {
392
+ const sql = direction === 'up' ? migration.up : migration.down;
393
+ const resolvedSql = sql.replace(/\{\{schema\}\}/g, config.schema);
394
+ output.writeln(output.bold(`-- Migration ${migration.version}: ${migration.name}`));
395
+ output.writeln(output.dim('-- Direction: ' + direction.toUpperCase()));
396
+ output.writeln();
397
+ output.writeln(resolvedSql);
398
+ output.writeln();
399
+ }
400
+ await client.end();
401
+ return { success: true, data: { dryRun: true, migrations: migrationsToRun.map(m => m.version) } };
402
+ }
403
+ // Confirm before running
404
+ if (ctx.interactive && !force) {
405
+ const confirmRun = await confirm({
406
+ message: `Run ${migrationsToRun.length} migration(s)?`,
407
+ default: true,
408
+ });
409
+ if (!confirmRun) {
410
+ output.printInfo('Migration cancelled');
411
+ await client.end();
412
+ return { success: false, exitCode: 0 };
413
+ }
414
+ }
415
+ // Run migrations
416
+ const results = [];
417
+ for (const migration of migrationsToRun) {
418
+ spinner.setText(`Running migration ${migration.version}: ${migration.name}...`);
419
+ spinner.start();
420
+ try {
421
+ const sql = direction === 'up' ? migration.up : migration.down;
422
+ const resolvedSql = sql.replace(/\{\{schema\}\}/g, config.schema);
423
+ await client.query('BEGIN');
424
+ // Execute migration SQL
425
+ await client.query(resolvedSql);
426
+ // Update migrations table
427
+ if (direction === 'up') {
428
+ const checksum = calculateChecksum(resolvedSql);
429
+ await client.query(`
430
+ INSERT INTO ${config.schema}.migrations (version, name, checksum)
431
+ VALUES ($1, $2, $3)
432
+ ON CONFLICT (version) DO UPDATE SET applied_at = NOW()
433
+ `, [migration.version, migration.name, checksum]);
434
+ }
435
+ else {
436
+ await client.query(`
437
+ DELETE FROM ${config.schema}.migrations WHERE version = $1
438
+ `, [migration.version]);
439
+ }
440
+ await client.query('COMMIT');
441
+ spinner.succeed(`Migration ${migration.version} ${direction === 'up' ? 'applied' : 'rolled back'}`);
442
+ results.push({ version: migration.version, success: true });
443
+ }
444
+ catch (error) {
445
+ await client.query('ROLLBACK');
446
+ spinner.fail(`Migration ${migration.version} failed`);
447
+ const errorMessage = error instanceof Error ? error.message : String(error);
448
+ output.printError(errorMessage);
449
+ results.push({ version: migration.version, success: false, error: errorMessage });
450
+ if (!force) {
451
+ output.printWarning('Stopping migration due to error. Use --force to continue.');
452
+ break;
453
+ }
454
+ }
455
+ }
456
+ await client.end();
457
+ // Summary
458
+ output.writeln();
459
+ const successful = results.filter(r => r.success).length;
460
+ const failed = results.filter(r => !r.success).length;
461
+ if (failed === 0) {
462
+ output.printSuccess(`All ${successful} migration(s) completed successfully`);
463
+ }
464
+ else {
465
+ output.printWarning(`${successful} succeeded, ${failed} failed`);
466
+ }
467
+ return {
468
+ success: failed === 0,
469
+ data: { results },
470
+ exitCode: failed > 0 ? 1 : 0,
471
+ };
472
+ }
473
+ catch (error) {
474
+ spinner.fail('Migration failed');
475
+ output.printError(error instanceof Error ? error.message : String(error));
476
+ return { success: false, exitCode: 1 };
477
+ }
478
+ },
479
+ };
480
+ export default migrateCommand;
481
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../../src/commands/ruvector/migrate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * V3 CLI RuVector Optimize Command
3
+ * Optimization analysis and recommendations
4
+ */
5
+ import type { Command } from '../../types.js';
6
+ /**
7
+ * RuVector optimize command
8
+ */
9
+ export declare const optimizeCommand: Command;
10
+ export default optimizeCommand;
11
+ //# sourceMappingURL=optimize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimize.d.ts","sourceRoot":"","sources":["../../../../src/commands/ruvector/optimize.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,gBAAgB,CAAC;AA+B7E;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,OAohB7B,CAAC;AAEF,eAAe,eAAe,CAAC"}