@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.
- package/README.md +156 -0
- package/dist/src/commands/index.d.ts +2 -0
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +7 -0
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/ruvector/backup.d.ts +11 -0
- package/dist/src/commands/ruvector/backup.d.ts.map +1 -0
- package/dist/src/commands/ruvector/backup.js +746 -0
- package/dist/src/commands/ruvector/backup.js.map +1 -0
- package/dist/src/commands/ruvector/benchmark.d.ts +11 -0
- package/dist/src/commands/ruvector/benchmark.d.ts.map +1 -0
- package/dist/src/commands/ruvector/benchmark.js +480 -0
- package/dist/src/commands/ruvector/benchmark.js.map +1 -0
- package/dist/src/commands/ruvector/index.d.ts +27 -0
- package/dist/src/commands/ruvector/index.d.ts.map +1 -0
- package/dist/src/commands/ruvector/index.js +119 -0
- package/dist/src/commands/ruvector/index.js.map +1 -0
- package/dist/src/commands/ruvector/init.d.ts +11 -0
- package/dist/src/commands/ruvector/init.d.ts.map +1 -0
- package/dist/src/commands/ruvector/init.js +431 -0
- package/dist/src/commands/ruvector/init.js.map +1 -0
- package/dist/src/commands/ruvector/migrate.d.ts +11 -0
- package/dist/src/commands/ruvector/migrate.d.ts.map +1 -0
- package/dist/src/commands/ruvector/migrate.js +481 -0
- package/dist/src/commands/ruvector/migrate.js.map +1 -0
- package/dist/src/commands/ruvector/optimize.d.ts +11 -0
- package/dist/src/commands/ruvector/optimize.d.ts.map +1 -0
- package/dist/src/commands/ruvector/optimize.js +503 -0
- package/dist/src/commands/ruvector/optimize.js.map +1 -0
- package/dist/src/commands/ruvector/status.d.ts +11 -0
- package/dist/src/commands/ruvector/status.d.ts.map +1 -0
- package/dist/src/commands/ruvector/status.js +456 -0
- package/dist/src/commands/ruvector/status.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- 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"}
|