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

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 (43) hide show
  1. package/README.md +163 -3
  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/import.d.ts +18 -0
  15. package/dist/src/commands/ruvector/import.d.ts.map +1 -0
  16. package/dist/src/commands/ruvector/import.js +349 -0
  17. package/dist/src/commands/ruvector/import.js.map +1 -0
  18. package/dist/src/commands/ruvector/index.d.ts +29 -0
  19. package/dist/src/commands/ruvector/index.d.ts.map +1 -0
  20. package/dist/src/commands/ruvector/index.js +129 -0
  21. package/dist/src/commands/ruvector/index.js.map +1 -0
  22. package/dist/src/commands/ruvector/init.d.ts +11 -0
  23. package/dist/src/commands/ruvector/init.d.ts.map +1 -0
  24. package/dist/src/commands/ruvector/init.js +431 -0
  25. package/dist/src/commands/ruvector/init.js.map +1 -0
  26. package/dist/src/commands/ruvector/migrate.d.ts +11 -0
  27. package/dist/src/commands/ruvector/migrate.d.ts.map +1 -0
  28. package/dist/src/commands/ruvector/migrate.js +481 -0
  29. package/dist/src/commands/ruvector/migrate.js.map +1 -0
  30. package/dist/src/commands/ruvector/optimize.d.ts +11 -0
  31. package/dist/src/commands/ruvector/optimize.d.ts.map +1 -0
  32. package/dist/src/commands/ruvector/optimize.js +503 -0
  33. package/dist/src/commands/ruvector/optimize.js.map +1 -0
  34. package/dist/src/commands/ruvector/setup.d.ts +18 -0
  35. package/dist/src/commands/ruvector/setup.d.ts.map +1 -0
  36. package/dist/src/commands/ruvector/setup.js +765 -0
  37. package/dist/src/commands/ruvector/setup.js.map +1 -0
  38. package/dist/src/commands/ruvector/status.d.ts +11 -0
  39. package/dist/src/commands/ruvector/status.d.ts.map +1 -0
  40. package/dist/src/commands/ruvector/status.js +456 -0
  41. package/dist/src/commands/ruvector/status.js.map +1 -0
  42. package/dist/tsconfig.tsbuildinfo +1 -1
  43. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../../src/commands/ruvector/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * V3 CLI RuVector Status Command
3
+ * Check connection and schema status
4
+ */
5
+ import type { Command } from '../../types.js';
6
+ /**
7
+ * RuVector status command
8
+ */
9
+ export declare const statusCommand: Command;
10
+ export default statusCommand;
11
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../../src/commands/ruvector/status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,gBAAgB,CAAC;AA6B7E;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,OAqb3B,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,456 @@
1
+ /**
2
+ * V3 CLI RuVector Status Command
3
+ * Check connection and schema status
4
+ */
5
+ import { output } from '../../output.js';
6
+ /**
7
+ * Get PostgreSQL connection config from context
8
+ */
9
+ function getConnectionConfig(ctx) {
10
+ return {
11
+ host: ctx.flags.host || process.env.PGHOST || 'localhost',
12
+ port: parseInt(ctx.flags.port || process.env.PGPORT || '5432', 10),
13
+ database: ctx.flags.database || process.env.PGDATABASE || '',
14
+ user: ctx.flags.user || process.env.PGUSER || 'postgres',
15
+ password: ctx.flags.password || process.env.PGPASSWORD || '',
16
+ ssl: ctx.flags.ssl || process.env.PGSSLMODE === 'require',
17
+ schema: ctx.flags.schema || 'claude_flow',
18
+ };
19
+ }
20
+ /**
21
+ * Format bytes to human readable
22
+ */
23
+ function formatBytes(bytes) {
24
+ if (bytes === 0)
25
+ return '0 B';
26
+ const k = 1024;
27
+ const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
28
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
29
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
30
+ }
31
+ /**
32
+ * RuVector status command
33
+ */
34
+ export const statusCommand = {
35
+ name: 'status',
36
+ description: 'Check connection and schema status',
37
+ options: [
38
+ {
39
+ name: 'verbose',
40
+ short: 'v',
41
+ description: 'Show detailed information',
42
+ type: 'boolean',
43
+ default: false,
44
+ },
45
+ {
46
+ name: 'json',
47
+ description: 'Output as JSON',
48
+ type: 'boolean',
49
+ default: false,
50
+ },
51
+ {
52
+ name: 'host',
53
+ short: 'h',
54
+ description: 'PostgreSQL host',
55
+ type: 'string',
56
+ default: 'localhost',
57
+ },
58
+ {
59
+ name: 'port',
60
+ short: 'p',
61
+ description: 'PostgreSQL port',
62
+ type: 'number',
63
+ default: 5432,
64
+ },
65
+ {
66
+ name: 'database',
67
+ short: 'd',
68
+ description: 'Database name',
69
+ type: 'string',
70
+ },
71
+ {
72
+ name: 'user',
73
+ short: 'u',
74
+ description: 'Database user',
75
+ type: 'string',
76
+ },
77
+ {
78
+ name: 'password',
79
+ description: 'Database password',
80
+ type: 'string',
81
+ },
82
+ {
83
+ name: 'ssl',
84
+ description: 'Enable SSL',
85
+ type: 'boolean',
86
+ default: false,
87
+ },
88
+ {
89
+ name: 'schema',
90
+ short: 's',
91
+ description: 'Schema name',
92
+ type: 'string',
93
+ default: 'claude_flow',
94
+ },
95
+ ],
96
+ examples: [
97
+ { command: 'claude-flow ruvector status', description: 'Check basic status' },
98
+ { command: 'claude-flow ruvector status --verbose', description: 'Show detailed info' },
99
+ { command: 'claude-flow ruvector status --json', description: 'Output as JSON' },
100
+ ],
101
+ action: async (ctx) => {
102
+ const config = getConnectionConfig(ctx);
103
+ const verbose = ctx.flags.verbose;
104
+ const jsonOutput = ctx.flags.json;
105
+ if (!jsonOutput) {
106
+ output.writeln();
107
+ output.writeln(output.bold('RuVector PostgreSQL Status'));
108
+ output.writeln(output.dim('='.repeat(60)));
109
+ output.writeln();
110
+ }
111
+ if (!config.database) {
112
+ if (jsonOutput) {
113
+ output.printJson({ error: 'Database name required' });
114
+ }
115
+ else {
116
+ output.printError('Database name is required. Use --database or -d flag, or set PGDATABASE env.');
117
+ }
118
+ return { success: false, exitCode: 1 };
119
+ }
120
+ const statusData = {
121
+ connection: {},
122
+ pgvector: {},
123
+ ruvector: {},
124
+ tables: [],
125
+ indexes: [],
126
+ migrations: [],
127
+ };
128
+ const spinner = output.createSpinner({ text: 'Connecting to PostgreSQL...', spinner: 'dots' });
129
+ if (!jsonOutput)
130
+ spinner.start();
131
+ try {
132
+ // Import pg
133
+ let pg = null;
134
+ try {
135
+ pg = await import('pg');
136
+ }
137
+ catch {
138
+ if (!jsonOutput)
139
+ spinner.fail('PostgreSQL driver not found');
140
+ if (jsonOutput) {
141
+ output.printJson({ error: 'pg package not installed' });
142
+ }
143
+ else {
144
+ output.printError('Install pg package: npm install pg');
145
+ }
146
+ return { success: false, exitCode: 1 };
147
+ }
148
+ const startTime = Date.now();
149
+ const client = new pg.Client({
150
+ host: config.host,
151
+ port: config.port,
152
+ database: config.database,
153
+ user: config.user,
154
+ password: config.password,
155
+ ssl: config.ssl ? { rejectUnauthorized: false } : false,
156
+ });
157
+ await client.connect();
158
+ const connectionTime = Date.now() - startTime;
159
+ if (!jsonOutput)
160
+ spinner.succeed(`Connected in ${connectionTime}ms`);
161
+ statusData.connection = {
162
+ host: config.host,
163
+ port: config.port,
164
+ database: config.database,
165
+ user: config.user,
166
+ ssl: config.ssl,
167
+ latency: connectionTime,
168
+ status: 'connected',
169
+ };
170
+ // Get PostgreSQL version
171
+ const versionResult = await client.query('SELECT version()');
172
+ const pgVersion = versionResult.rows[0].version;
173
+ statusData.connection.pgVersion = pgVersion;
174
+ // Check pgvector extension
175
+ if (!jsonOutput)
176
+ spinner.setText('Checking pgvector extension...');
177
+ spinner.start();
178
+ const extensionResult = await client.query(`
179
+ SELECT extversion FROM pg_extension WHERE extname = 'vector'
180
+ `);
181
+ if (extensionResult.rows.length === 0) {
182
+ statusData.pgvector = { installed: false };
183
+ if (!jsonOutput) {
184
+ spinner.succeed(output.warning('pgvector extension not installed'));
185
+ }
186
+ }
187
+ else {
188
+ statusData.pgvector = {
189
+ installed: true,
190
+ version: extensionResult.rows[0].extversion,
191
+ };
192
+ if (!jsonOutput) {
193
+ spinner.succeed(`pgvector v${extensionResult.rows[0].extversion} installed`);
194
+ }
195
+ }
196
+ // Check schema exists
197
+ if (!jsonOutput)
198
+ spinner.setText(`Checking schema "${config.schema}"...`);
199
+ spinner.start();
200
+ const schemaResult = await client.query(`
201
+ SELECT schema_name FROM information_schema.schemata WHERE schema_name = $1
202
+ `, [config.schema]);
203
+ if (schemaResult.rows.length === 0) {
204
+ statusData.ruvector = { initialized: false };
205
+ if (!jsonOutput) {
206
+ spinner.succeed(output.warning(`Schema "${config.schema}" not found`));
207
+ output.printInfo('Run `claude-flow ruvector init` to initialize');
208
+ }
209
+ if (jsonOutput) {
210
+ output.printJson(statusData);
211
+ }
212
+ await client.end();
213
+ return { success: true, data: statusData };
214
+ }
215
+ if (!jsonOutput)
216
+ spinner.succeed(`Schema "${config.schema}" found`);
217
+ // Get RuVector metadata
218
+ if (!jsonOutput)
219
+ spinner.setText('Loading RuVector metadata...');
220
+ spinner.start();
221
+ try {
222
+ const metadataResult = await client.query(`
223
+ SELECT key, value FROM ${config.schema}.metadata
224
+ `);
225
+ const metadata = {};
226
+ for (const row of metadataResult.rows) {
227
+ metadata[row.key] = JSON.parse(row.value);
228
+ }
229
+ statusData.ruvector = {
230
+ initialized: true,
231
+ version: metadata.ruvector_version || 'unknown',
232
+ dimensions: metadata.dimensions || 1536,
233
+ initializedAt: metadata.initialized_at,
234
+ };
235
+ if (!jsonOutput)
236
+ spinner.succeed('RuVector metadata loaded');
237
+ }
238
+ catch {
239
+ statusData.ruvector = { initialized: true, version: 'unknown' };
240
+ if (!jsonOutput)
241
+ spinner.succeed(output.warning('Could not load RuVector metadata'));
242
+ }
243
+ // Get table statistics
244
+ if (!jsonOutput)
245
+ spinner.setText('Gathering table statistics...');
246
+ spinner.start();
247
+ const tablesResult = await client.query(`
248
+ SELECT
249
+ t.table_name,
250
+ pg_relation_size(quote_ident(t.table_schema) || '.' || quote_ident(t.table_name)) as table_size,
251
+ pg_total_relation_size(quote_ident(t.table_schema) || '.' || quote_ident(t.table_name)) as total_size,
252
+ (SELECT count(*) FROM ${config.schema}.embeddings) as row_count
253
+ FROM information_schema.tables t
254
+ WHERE t.table_schema = $1
255
+ ORDER BY t.table_name
256
+ `, [config.schema]);
257
+ const tableStats = [];
258
+ for (const row of tablesResult.rows) {
259
+ // Get row count for each table
260
+ let rowCount = 0;
261
+ try {
262
+ const countResult = await client.query(`
263
+ SELECT count(*) as cnt FROM ${config.schema}.${row.table_name}
264
+ `);
265
+ rowCount = parseInt(countResult.rows[0].cnt, 10);
266
+ }
267
+ catch {
268
+ // Skip if can't count
269
+ }
270
+ tableStats.push({
271
+ name: row.table_name,
272
+ rows: rowCount,
273
+ size: formatBytes(parseInt(row.table_size, 10)),
274
+ totalSize: formatBytes(parseInt(row.total_size, 10)),
275
+ });
276
+ }
277
+ statusData.tables = tableStats;
278
+ if (!jsonOutput)
279
+ spinner.succeed(`Found ${tableStats.length} tables`);
280
+ // Get index information
281
+ if (verbose) {
282
+ if (!jsonOutput)
283
+ spinner.setText('Gathering index information...');
284
+ spinner.start();
285
+ const indexResult = await client.query(`
286
+ SELECT
287
+ i.relname as index_name,
288
+ t.relname as table_name,
289
+ am.amname as index_type,
290
+ pg_relation_size(i.oid) as index_size,
291
+ idx.indisvalid as is_valid,
292
+ idx.indisunique as is_unique
293
+ FROM pg_index idx
294
+ JOIN pg_class i ON i.oid = idx.indexrelid
295
+ JOIN pg_class t ON t.oid = idx.indrelid
296
+ JOIN pg_namespace n ON n.oid = t.relnamespace
297
+ JOIN pg_am am ON am.oid = i.relam
298
+ WHERE n.nspname = $1
299
+ ORDER BY t.relname, i.relname
300
+ `, [config.schema]);
301
+ statusData.indexes = indexResult.rows.map(row => ({
302
+ name: row.index_name,
303
+ table: row.table_name,
304
+ type: row.index_type,
305
+ size: formatBytes(parseInt(row.index_size, 10)),
306
+ valid: row.is_valid,
307
+ unique: row.is_unique,
308
+ }));
309
+ if (!jsonOutput)
310
+ spinner.succeed(`Found ${indexResult.rows.length} indexes`);
311
+ }
312
+ // Get migration status
313
+ if (!jsonOutput)
314
+ spinner.setText('Checking migration status...');
315
+ spinner.start();
316
+ try {
317
+ const migrationsResult = await client.query(`
318
+ SELECT version, name, applied_at
319
+ FROM ${config.schema}.migrations
320
+ ORDER BY version ASC
321
+ `);
322
+ statusData.migrations = migrationsResult.rows.map(row => ({
323
+ version: row.version,
324
+ name: row.name,
325
+ appliedAt: row.applied_at,
326
+ }));
327
+ if (!jsonOutput)
328
+ spinner.succeed(`${migrationsResult.rows.length} migrations applied`);
329
+ }
330
+ catch {
331
+ statusData.migrations = [];
332
+ if (!jsonOutput)
333
+ spinner.succeed(output.warning('Could not read migrations table'));
334
+ }
335
+ await client.end();
336
+ // Output results
337
+ if (jsonOutput) {
338
+ output.printJson(statusData);
339
+ }
340
+ else {
341
+ output.writeln();
342
+ // Connection info
343
+ output.writeln(output.highlight('Connection:'));
344
+ output.printTable({
345
+ columns: [
346
+ { key: 'property', header: 'Property', width: 20 },
347
+ { key: 'value', header: 'Value', width: 40 },
348
+ ],
349
+ data: [
350
+ { property: 'Host', value: config.host },
351
+ { property: 'Port', value: String(config.port) },
352
+ { property: 'Database', value: config.database },
353
+ { property: 'User', value: config.user },
354
+ { property: 'SSL', value: config.ssl ? 'Enabled' : 'Disabled' },
355
+ { property: 'Latency', value: `${connectionTime}ms` },
356
+ ],
357
+ });
358
+ output.writeln();
359
+ // pgvector info
360
+ output.writeln(output.highlight('pgvector Extension:'));
361
+ const pgvectorData = statusData.pgvector;
362
+ output.writeln(` Status: ${pgvectorData.installed ? output.success('Installed') : output.error('Not Installed')}`);
363
+ if (pgvectorData.version) {
364
+ output.writeln(` Version: ${pgvectorData.version}`);
365
+ }
366
+ output.writeln();
367
+ // RuVector info
368
+ output.writeln(output.highlight('RuVector:'));
369
+ const ruvectorData = statusData.ruvector;
370
+ output.writeln(` Initialized: ${ruvectorData.initialized ? output.success('Yes') : output.error('No')}`);
371
+ if (ruvectorData.version) {
372
+ output.writeln(` Version: ${ruvectorData.version}`);
373
+ }
374
+ if (ruvectorData.dimensions) {
375
+ output.writeln(` Dimensions: ${ruvectorData.dimensions}`);
376
+ }
377
+ output.writeln();
378
+ // Table statistics
379
+ output.writeln(output.highlight('Table Statistics:'));
380
+ output.printTable({
381
+ columns: [
382
+ { key: 'name', header: 'Table', width: 30 },
383
+ { key: 'rows', header: 'Rows', width: 12 },
384
+ { key: 'size', header: 'Size', width: 12 },
385
+ { key: 'totalSize', header: 'Total Size', width: 12 },
386
+ ],
387
+ data: tableStats,
388
+ });
389
+ output.writeln();
390
+ // Index information (verbose only)
391
+ if (verbose && statusData.indexes.length > 0) {
392
+ output.writeln(output.highlight('Index Health:'));
393
+ output.printTable({
394
+ columns: [
395
+ { key: 'name', header: 'Index', width: 35 },
396
+ { key: 'table', header: 'Table', width: 20 },
397
+ { key: 'type', header: 'Type', width: 10 },
398
+ { key: 'size', header: 'Size', width: 10 },
399
+ { key: 'status', header: 'Status', width: 10 },
400
+ ],
401
+ data: statusData.indexes.map(idx => ({
402
+ ...idx,
403
+ status: idx.valid ? output.success('Valid') : output.error('Invalid'),
404
+ })),
405
+ });
406
+ output.writeln();
407
+ }
408
+ // Migration status
409
+ output.writeln(output.highlight('Migrations:'));
410
+ const migrations = statusData.migrations;
411
+ if (migrations.length === 0) {
412
+ output.writeln(' No migrations applied');
413
+ }
414
+ else {
415
+ output.printTable({
416
+ columns: [
417
+ { key: 'version', header: 'Version', width: 12 },
418
+ { key: 'name', header: 'Name', width: 35 },
419
+ { key: 'appliedAt', header: 'Applied At', width: 22 },
420
+ ],
421
+ data: migrations.map(m => ({
422
+ ...m,
423
+ appliedAt: new Date(m.appliedAt).toISOString().replace('T', ' ').substring(0, 19),
424
+ })),
425
+ });
426
+ }
427
+ output.writeln();
428
+ // Summary
429
+ const embeddingsTable = tableStats.find(t => t.name === 'embeddings');
430
+ if (embeddingsTable) {
431
+ output.printBox([
432
+ `Total Vectors: ${embeddingsTable.rows.toLocaleString()}`,
433
+ `Storage Used: ${embeddingsTable.totalSize}`,
434
+ `Schema: ${config.schema}`,
435
+ `Migrations: ${migrations.length} applied`,
436
+ ].join('\n'), 'Summary');
437
+ }
438
+ }
439
+ return { success: true, data: statusData };
440
+ }
441
+ catch (error) {
442
+ if (!jsonOutput)
443
+ spinner.fail('Status check failed');
444
+ const errorMessage = error instanceof Error ? error.message : String(error);
445
+ if (jsonOutput) {
446
+ output.printJson({ error: errorMessage });
447
+ }
448
+ else {
449
+ output.printError(errorMessage);
450
+ }
451
+ return { success: false, exitCode: 1 };
452
+ }
453
+ },
454
+ };
455
+ export default statusCommand;
456
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../src/commands/ruvector/status.ts"],"names":[],"mappings":"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"}