@centr-ai/cli 0.1.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.
Files changed (56) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/LICENSE +21 -0
  3. package/README.md +275 -0
  4. package/dist/commands/benchmark.d.ts +3 -0
  5. package/dist/commands/benchmark.d.ts.map +1 -0
  6. package/dist/commands/benchmark.js +382 -0
  7. package/dist/commands/benchmark.js.map +1 -0
  8. package/dist/commands/brain.d.ts +3 -0
  9. package/dist/commands/brain.d.ts.map +1 -0
  10. package/dist/commands/brain.js +387 -0
  11. package/dist/commands/brain.js.map +1 -0
  12. package/dist/commands/context.d.ts +3 -0
  13. package/dist/commands/context.d.ts.map +1 -0
  14. package/dist/commands/context.js +52 -0
  15. package/dist/commands/context.js.map +1 -0
  16. package/dist/commands/doctor.d.ts +3 -0
  17. package/dist/commands/doctor.d.ts.map +1 -0
  18. package/dist/commands/doctor.js +116 -0
  19. package/dist/commands/doctor.js.map +1 -0
  20. package/dist/commands/init.d.ts +3 -0
  21. package/dist/commands/init.d.ts.map +1 -0
  22. package/dist/commands/init.js +49 -0
  23. package/dist/commands/init.js.map +1 -0
  24. package/dist/commands/learn.d.ts +3 -0
  25. package/dist/commands/learn.d.ts.map +1 -0
  26. package/dist/commands/learn.js +151 -0
  27. package/dist/commands/learn.js.map +1 -0
  28. package/dist/commands/search.d.ts +3 -0
  29. package/dist/commands/search.d.ts.map +1 -0
  30. package/dist/commands/search.js +48 -0
  31. package/dist/commands/search.js.map +1 -0
  32. package/dist/commands/skills.d.ts +3 -0
  33. package/dist/commands/skills.d.ts.map +1 -0
  34. package/dist/commands/skills.js +123 -0
  35. package/dist/commands/skills.js.map +1 -0
  36. package/dist/commands/status.d.ts +3 -0
  37. package/dist/commands/status.d.ts.map +1 -0
  38. package/dist/commands/status.js +59 -0
  39. package/dist/commands/status.js.map +1 -0
  40. package/dist/commands/symbol.d.ts +3 -0
  41. package/dist/commands/symbol.d.ts.map +1 -0
  42. package/dist/commands/symbol.js +48 -0
  43. package/dist/commands/symbol.js.map +1 -0
  44. package/dist/commands/sync.d.ts +3 -0
  45. package/dist/commands/sync.d.ts.map +1 -0
  46. package/dist/commands/sync.js +44 -0
  47. package/dist/commands/sync.js.map +1 -0
  48. package/dist/index.d.ts +3 -0
  49. package/dist/index.d.ts.map +1 -0
  50. package/dist/index.js +39 -0
  51. package/dist/index.js.map +1 -0
  52. package/dist/utils.d.ts +8 -0
  53. package/dist/utils.d.ts.map +1 -0
  54. package/dist/utils.js +50 -0
  55. package/dist/utils.js.map +1 -0
  56. package/package.json +66 -0
@@ -0,0 +1,387 @@
1
+ import { BrainManager, createBrainProvider, defaultBrainMetrics, recommendProfile, } from '@centr-ai/brain';
2
+ import { loadConfig, saveConfig } from '@centr-ai/core';
3
+ import chalk from 'chalk';
4
+ import ora from 'ora';
5
+ import { getProjectRoot, handleError } from '../utils.js';
6
+ export default function registerBrainCommands(program) {
7
+ const brainCmd = program
8
+ .command('brain')
9
+ .description('Manage and inspect optional local SLM Brain');
10
+ // 1. centr brain status
11
+ brainCmd
12
+ .command('status')
13
+ .description('Check local Brain provider status and availability')
14
+ .action(async () => {
15
+ const options = program.opts();
16
+ try {
17
+ const root = getProjectRoot();
18
+ const config = loadConfig(root);
19
+ const brainConfig = config.brain || { enabled: false, provider: null };
20
+ const spinner = ora('Checking Brain status...').start();
21
+ if (options['json'])
22
+ spinner.stop();
23
+ const provider = createBrainProvider(brainConfig);
24
+ const manager = new BrainManager(provider);
25
+ const available = await manager.isAvailable();
26
+ const result = {
27
+ enabled: !!brainConfig.enabled,
28
+ provider: brainConfig.provider || 'none',
29
+ model: brainConfig.model || 'none',
30
+ profile: brainConfig.profile || 'minimal',
31
+ endpoint: brainConfig.endpoint || 'http://127.0.0.1:11434',
32
+ status: available
33
+ ? 'available'
34
+ : brainConfig.enabled
35
+ ? 'offline / unreachable'
36
+ : 'disabled',
37
+ available,
38
+ fallback: 'deterministic',
39
+ };
40
+ if (options['json']) {
41
+ console.log(JSON.stringify(result, null, 2));
42
+ return;
43
+ }
44
+ spinner.stop();
45
+ console.log('');
46
+ console.log(chalk.bold('CentR Brain Status'));
47
+ console.log('');
48
+ console.log(`Brain: ${result.enabled ? chalk.green('enabled') : chalk.yellow('disabled')}`);
49
+ console.log(`Provider: ${chalk.cyan(result.provider)}`);
50
+ console.log(`Model: ${chalk.cyan(result.model)}`);
51
+ console.log(`Profile: ${chalk.cyan(result.profile)}`);
52
+ console.log(`Status: ${available ? chalk.green('available') : chalk.red(result.status)}`);
53
+ console.log(`Fallback: ${chalk.gray(result.fallback)}`);
54
+ console.log('');
55
+ }
56
+ catch (error) {
57
+ handleError(error);
58
+ }
59
+ });
60
+ // 2. centr brain recommend
61
+ brainCmd
62
+ .command('recommend')
63
+ .description('Inspect hardware and recommend an optimal Brain profile and model')
64
+ .action(async () => {
65
+ const options = program.opts();
66
+ try {
67
+ const recommendation = recommendProfile();
68
+ if (options['json']) {
69
+ console.log(JSON.stringify(recommendation, null, 2));
70
+ return;
71
+ }
72
+ const hw = recommendation.hardware;
73
+ console.log('');
74
+ console.log(chalk.bold('CentR Hardware & Brain Recommendation'));
75
+ console.log('');
76
+ console.log(chalk.bold('Detected System:'));
77
+ console.log(` OS: ${hw.os} (${hw.arch})`);
78
+ console.log(` RAM: ${hw.totalMemoryGb} GB`);
79
+ if (hw.availableMemoryGb !== undefined) {
80
+ console.log(` Available RAM: ${hw.availableMemoryGb} GB`);
81
+ }
82
+ console.log(` CPU Cores: ${hw.cpuCores}`);
83
+ console.log(` Apple Silicon: ${hw.isAppleSilicon ? 'Yes (Metal GPU)' : 'No'}`);
84
+ console.log('');
85
+ console.log(chalk.bold('Recommendation:'));
86
+ console.log(` Recommended Profile: ${chalk.cyan(recommendation.recommendedProfile)}`);
87
+ console.log(` Suggested Models: ${chalk.green(recommendation.recommendedModels.join(', '))}`);
88
+ console.log(` Rationale: ${chalk.gray(recommendation.rationale)}`);
89
+ console.log('');
90
+ }
91
+ catch (error) {
92
+ handleError(error);
93
+ }
94
+ });
95
+ // 3. centr brain models
96
+ brainCmd
97
+ .command('models')
98
+ .description('List installed models available through the local provider')
99
+ .action(async () => {
100
+ const options = program.opts();
101
+ try {
102
+ const root = getProjectRoot();
103
+ const config = loadConfig(root);
104
+ const provider = createBrainProvider(config.brain);
105
+ let models = [];
106
+ try {
107
+ models = await provider.listModels();
108
+ }
109
+ catch {
110
+ models = [];
111
+ }
112
+ if (options['json']) {
113
+ console.log(JSON.stringify({ models }, null, 2));
114
+ return;
115
+ }
116
+ console.log('');
117
+ console.log(chalk.bold(`Installed Models (${provider.name})`));
118
+ console.log('');
119
+ if (models.length === 0) {
120
+ console.log(chalk.yellow('No local models detected or provider offline.'));
121
+ console.log(chalk.gray('To pull a small model with Ollama, run:'));
122
+ console.log(chalk.cyan(' ollama pull qwen2.5:1.5b'));
123
+ }
124
+ else {
125
+ for (const m of models) {
126
+ const isCurrent = m === config.brain?.model;
127
+ console.log(` ${isCurrent ? chalk.green('●') : '○'} ${m}${isCurrent ? chalk.gray(' (configured)') : ''}`);
128
+ }
129
+ }
130
+ console.log('');
131
+ }
132
+ catch (error) {
133
+ handleError(error);
134
+ }
135
+ });
136
+ // 4. centr brain enable
137
+ brainCmd
138
+ .command('enable')
139
+ .description('Enable local Brain enhancement')
140
+ .action(() => {
141
+ const options = program.opts();
142
+ try {
143
+ const root = getProjectRoot();
144
+ const config = loadConfig(root);
145
+ config.brain = {
146
+ ...config.brain,
147
+ enabled: true,
148
+ provider: config.brain?.provider || 'ollama',
149
+ model: config.brain?.model || 'qwen2.5:1.5b',
150
+ profile: config.brain?.profile || 'minimal',
151
+ };
152
+ saveConfig(root, config);
153
+ if (options['json']) {
154
+ console.log(JSON.stringify({ enabled: true }, null, 2));
155
+ }
156
+ else {
157
+ console.log(chalk.green('✔ CentR Brain enabled.'));
158
+ }
159
+ }
160
+ catch (error) {
161
+ handleError(error);
162
+ }
163
+ });
164
+ // 5. centr brain disable
165
+ brainCmd
166
+ .command('disable')
167
+ .description('Disable local Brain (falls back 100% to deterministic Core)')
168
+ .action(() => {
169
+ const options = program.opts();
170
+ try {
171
+ const root = getProjectRoot();
172
+ const config = loadConfig(root);
173
+ config.brain = {
174
+ ...config.brain,
175
+ enabled: false,
176
+ };
177
+ saveConfig(root, config);
178
+ if (options['json']) {
179
+ console.log(JSON.stringify({ enabled: false }, null, 2));
180
+ }
181
+ else {
182
+ console.log(chalk.yellow('CentR Brain disabled. Using 100% deterministic intelligence.'));
183
+ }
184
+ }
185
+ catch (error) {
186
+ handleError(error);
187
+ }
188
+ });
189
+ // 6. centr brain set-model <model>
190
+ brainCmd
191
+ .command('set-model <model>')
192
+ .description('Set the local model name for the Brain')
193
+ .action((model) => {
194
+ const options = program.opts();
195
+ try {
196
+ const root = getProjectRoot();
197
+ const config = loadConfig(root);
198
+ config.brain = {
199
+ ...config.brain,
200
+ model,
201
+ };
202
+ saveConfig(root, config);
203
+ if (options['json']) {
204
+ console.log(JSON.stringify({ model }, null, 2));
205
+ }
206
+ else {
207
+ console.log(chalk.green(`✔ Configured Brain model: ${chalk.bold(model)}`));
208
+ }
209
+ }
210
+ catch (error) {
211
+ handleError(error);
212
+ }
213
+ });
214
+ // 7. centr brain profile <profile>
215
+ brainCmd
216
+ .command('profile <profile>')
217
+ .description('Set resource profile: minimal, balanced, or quality')
218
+ .action((profileStr) => {
219
+ const options = program.opts();
220
+ try {
221
+ const validProfiles = ['minimal', 'balanced', 'quality'];
222
+ if (!validProfiles.includes(profileStr)) {
223
+ throw new Error(`Invalid profile: "${profileStr}". Choose minimal, balanced, or quality.`);
224
+ }
225
+ const profile = profileStr;
226
+ const root = getProjectRoot();
227
+ const config = loadConfig(root);
228
+ config.brain = {
229
+ ...config.brain,
230
+ profile,
231
+ };
232
+ saveConfig(root, config);
233
+ if (options['json']) {
234
+ console.log(JSON.stringify({ profile }, null, 2));
235
+ }
236
+ else {
237
+ console.log(chalk.green(`✔ Configured Brain profile: ${chalk.bold(profile)}`));
238
+ }
239
+ }
240
+ catch (error) {
241
+ handleError(error);
242
+ }
243
+ });
244
+ // 8. centr brain stats
245
+ brainCmd
246
+ .command('stats')
247
+ .description('Display Brain observability metrics and cache statistics')
248
+ .action(() => {
249
+ const options = program.opts();
250
+ try {
251
+ const snapshot = defaultBrainMetrics.getSnapshot();
252
+ if (options['json']) {
253
+ console.log(JSON.stringify(snapshot, null, 2));
254
+ return;
255
+ }
256
+ console.log('');
257
+ console.log(chalk.bold('CentR Brain Observability Metrics'));
258
+ console.log('');
259
+ console.log(`Total Calls: ${snapshot.totalCalls}`);
260
+ console.log(`Successful Calls: ${chalk.green(snapshot.successfulCalls)}`);
261
+ console.log(`Failed Calls: ${snapshot.failedCalls > 0 ? chalk.red(snapshot.failedCalls) : '0'}`);
262
+ console.log(`Timeouts: ${snapshot.timeoutCount > 0 ? chalk.red(snapshot.timeoutCount) : '0'}`);
263
+ console.log(`Fallbacks: ${snapshot.fallbackCount}`);
264
+ console.log(`Avg Latency: ${snapshot.averageLatencyMs}ms`);
265
+ console.log(`Est. Input Tokens: ${snapshot.estimatedInputTokens}`);
266
+ console.log(`Est. Output Tokens:${snapshot.estimatedOutputTokens}`);
267
+ console.log(`Cache Hits: ${chalk.green(snapshot.cacheHits)}`);
268
+ console.log(`Cache Misses: ${snapshot.cacheMisses}`);
269
+ console.log('');
270
+ }
271
+ catch (error) {
272
+ handleError(error);
273
+ }
274
+ });
275
+ // 9. centr brain benchmark
276
+ brainCmd
277
+ .command('benchmark')
278
+ .description('Benchmark Brain inference speed and structured output accuracy')
279
+ .action(async () => {
280
+ const options = program.opts();
281
+ try {
282
+ const root = getProjectRoot();
283
+ const config = loadConfig(root);
284
+ const spinner = ora('Running Brain benchmark...').start();
285
+ if (options['json'])
286
+ spinner.stop();
287
+ const provider = createBrainProvider(config.brain);
288
+ const manager = new BrainManager(provider);
289
+ const isReady = await manager.isAvailable();
290
+ if (!isReady) {
291
+ if (!options['json']) {
292
+ spinner.fail(chalk.red('Brain provider is offline or disabled. Running mock benchmark.'));
293
+ }
294
+ }
295
+ const t0 = Date.now();
296
+ const taskResult = await manager.classifyTask({
297
+ task: 'Add Google OAuth authentication middleware to Express API',
298
+ });
299
+ const taskLatencyMs = Date.now() - t0;
300
+ const t1 = Date.now();
301
+ const rankResult = await manager.rankContext({
302
+ task: 'Add Google OAuth',
303
+ candidates: [
304
+ {
305
+ id: 'c1',
306
+ type: 'file',
307
+ name: 'src/auth/oauth.ts',
308
+ content: 'export class OAuth {}',
309
+ deterministicScore: 0.8,
310
+ },
311
+ {
312
+ id: 'c2',
313
+ type: 'file',
314
+ name: 'src/payment.ts',
315
+ content: 'export class Payment {}',
316
+ deterministicScore: 0.3,
317
+ },
318
+ ],
319
+ });
320
+ const rankLatencyMs = Date.now() - t1;
321
+ const results = {
322
+ provider: provider.name,
323
+ model: config.brain?.model || 'default',
324
+ classificationLatencyMs: taskLatencyMs,
325
+ rankingLatencyMs: rankLatencyMs,
326
+ totalLatencyMs: taskLatencyMs + rankLatencyMs,
327
+ classification: taskResult,
328
+ ranking: rankResult,
329
+ };
330
+ if (options['json']) {
331
+ console.log(JSON.stringify(results, null, 2));
332
+ return;
333
+ }
334
+ spinner.succeed(chalk.green('Brain benchmark complete!'));
335
+ console.log('');
336
+ console.log(`Classification Latency: ${chalk.cyan(taskLatencyMs + 'ms')}`);
337
+ console.log(`Context Ranking Latency: ${chalk.cyan(rankLatencyMs + 'ms')}`);
338
+ console.log(`Total Latency: ${chalk.cyan(taskLatencyMs + rankLatencyMs + 'ms')}`);
339
+ console.log(`Classified Category: ${chalk.green(taskResult.category)}`);
340
+ console.log(`Ranked Items Count: ${rankResult.items.length}`);
341
+ console.log('');
342
+ }
343
+ catch (error) {
344
+ handleError(error);
345
+ }
346
+ });
347
+ // 10. centr brain analyze-failure
348
+ brainCmd
349
+ .command('analyze-failure')
350
+ .description('Analyze a development failure and suggest root cause and remediation')
351
+ .requiredOption('--error <error>', 'Error message encountered')
352
+ .option('--task <task>', 'Task being performed', 'Developer task')
353
+ .option('--attempt <attempt>', 'Attempted modification', 'Code edit')
354
+ .action(async (cmdOpts) => {
355
+ const options = program.opts();
356
+ try {
357
+ const root = getProjectRoot();
358
+ const config = loadConfig(root);
359
+ const provider = createBrainProvider(config.brain);
360
+ const manager = new BrainManager(provider);
361
+ const analysis = await manager.analyzeFailure({
362
+ task: cmdOpts.task,
363
+ attemptedChange: cmdOpts.attempt,
364
+ error: cmdOpts.error,
365
+ });
366
+ if (options['json']) {
367
+ console.log(JSON.stringify(analysis, null, 2));
368
+ return;
369
+ }
370
+ console.log('');
371
+ console.log(chalk.bold('CentR Brain Failure Analysis'));
372
+ console.log('');
373
+ console.log(`Failure Type: ${chalk.yellow(analysis.failureType)}`);
374
+ console.log(`Root Cause: ${analysis.rootCause}`);
375
+ console.log(`Fix Recommendation: ${chalk.green(analysis.fixRecommendation)}`);
376
+ if (analysis.lessonCandidate) {
377
+ console.log(`Candidate Lesson: ${chalk.cyan(analysis.lessonCandidate)}`);
378
+ }
379
+ console.log(`Confidence: ${(analysis.confidence * 100).toFixed(0)}%`);
380
+ console.log('');
381
+ }
382
+ catch (error) {
383
+ handleError(error);
384
+ }
385
+ });
386
+ }
387
+ //# sourceMappingURL=brain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brain.js","sourceRoot":"","sources":["../../src/commands/brain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export default function (program: Command): void;
3
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,MAAM,CAAC,OAAO,WAAW,OAAO,EAAE,OAAO,QAkDxC"}
@@ -0,0 +1,52 @@
1
+ import { ContextEngine } from '@centr-ai/core';
2
+ import chalk from 'chalk';
3
+ import { getDatabase, getProjectId, getProjectRoot, handleError } from '../utils.js';
4
+ export default function (program) {
5
+ program
6
+ .command('context <task>')
7
+ .description('Generate context for a given task')
8
+ .option('--max-tokens <number>', 'Maximum tokens for context budget')
9
+ .option('--no-memory', 'Disable project memory inclusion')
10
+ .option('--no-learning', 'Disable global learning inclusion')
11
+ .option('--no-skills', 'Disable skills inclusion')
12
+ .action(async (task, cmdOptions) => {
13
+ const options = program.opts();
14
+ let db;
15
+ try {
16
+ const root = getProjectRoot();
17
+ db = getDatabase(root);
18
+ const projectId = getProjectId(db, root);
19
+ const contextEngine = new ContextEngine(db);
20
+ const request = {
21
+ task,
22
+ projectId,
23
+ maxTokens: cmdOptions.maxTokens ? parseInt(cmdOptions.maxTokens, 10) : undefined,
24
+ includeMemory: cmdOptions.memory,
25
+ includeLearning: cmdOptions.learning,
26
+ includeSkills: cmdOptions.skills,
27
+ };
28
+ const result = contextEngine.generate(request);
29
+ if (options.json) {
30
+ console.log(JSON.stringify(result, null, 2));
31
+ }
32
+ else {
33
+ console.log(chalk.green('Context generated\n'));
34
+ console.log(`Budget: ${chalk.cyan(result.budget)} tokens`);
35
+ console.log(`Estimated: ${chalk.cyan(result.estimatedTokens)} tokens`);
36
+ console.log(`Selected: ${chalk.cyan(result.itemsSelected)} items`);
37
+ console.log(`Removed: ${chalk.cyan(result.itemsRemoved)} low-relevance items\n`);
38
+ for (const item of result.items) {
39
+ console.log(`[${chalk.yellow(item.type)}] ${chalk.bold(item.name)} (score: ${item.relevance.toFixed(2)}, tokens: ${item.tokens})`);
40
+ }
41
+ }
42
+ }
43
+ catch (error) {
44
+ handleError(error);
45
+ }
46
+ finally {
47
+ if (db)
48
+ db.close();
49
+ }
50
+ });
51
+ }
52
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export default function (program: Command): void;
3
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,MAAM,CAAC,OAAO,WAAU,OAAO,EAAE,OAAO,QA0GvC"}
@@ -0,0 +1,116 @@
1
+ import chalk from 'chalk';
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+ import { getProjectRoot, getDatabase, getProjectId, handleError } from '../utils.js';
5
+ export default function (program) {
6
+ program
7
+ .command('doctor')
8
+ .description('Check CentR installation and project health')
9
+ .action(async () => {
10
+ const options = program.opts();
11
+ let db;
12
+ const checks = [];
13
+ const addCheck = (name, status, message, fix) => {
14
+ checks.push({ name, status, message, fix });
15
+ };
16
+ try {
17
+ // Node.js version
18
+ const nodeVersion = process.version;
19
+ const major = parseInt(nodeVersion.replace('v', '').split('.')[0], 10);
20
+ if (major >= 20) {
21
+ addCheck('Node.js Version', 'ok', `Found ${nodeVersion} (>= 20)`);
22
+ }
23
+ else {
24
+ addCheck('Node.js Version', 'error', `Found ${nodeVersion}, requires >= 20`, 'Upgrade Node.js');
25
+ }
26
+ const root = getProjectRoot();
27
+ const centrDir = path.join(root, '.centr');
28
+ if (fs.existsSync(centrDir)) {
29
+ addCheck('CentR Directory', 'ok', 'Found .centr directory');
30
+ try {
31
+ db = getDatabase(root);
32
+ addCheck('SQLite Availability', 'ok', 'Database engine ready');
33
+ const integrity = db.getDb().pragma('integrity_check', { simple: true });
34
+ if (integrity === 'ok' || (Array.isArray(integrity) && integrity[0]?.integrity_check === 'ok')) {
35
+ addCheck('Database Integrity', 'ok', 'Passed integrity check');
36
+ }
37
+ else {
38
+ addCheck('Database Integrity', 'error', 'Failed integrity check', 'Re-run initialization or restore database');
39
+ }
40
+ const userVersion = db.getDb().pragma('user_version', { simple: true });
41
+ addCheck('Schema Version', 'ok', `Current version: ${userVersion}`);
42
+ try {
43
+ const projectId = getProjectId(db, root);
44
+ const filesCount = db.getDb().prepare('SELECT COUNT(*) as c FROM files WHERE projectId = ?').get(projectId).c;
45
+ if (filesCount > 0) {
46
+ addCheck('Stale Index', 'ok', `Found ${filesCount} files in index`);
47
+ }
48
+ else {
49
+ addCheck('Stale Index', 'warn', 'Index is empty', 'Run "centr init" or "centr sync"');
50
+ }
51
+ }
52
+ catch (e) {
53
+ addCheck('Project Initialization', 'error', 'Project not found in database', 'Run "centr init"');
54
+ }
55
+ }
56
+ catch (e) {
57
+ addCheck('SQLite Availability', 'error', `Failed to connect to database: ${e}`);
58
+ }
59
+ }
60
+ else {
61
+ addCheck('CentR Directory', 'error', 'Not found', 'Run "centr init" to initialize the project');
62
+ }
63
+ const configPath = path.join(root, 'centr.json');
64
+ if (fs.existsSync(configPath)) {
65
+ try {
66
+ JSON.parse(fs.readFileSync(configPath, 'utf8'));
67
+ addCheck('Config Validity', 'ok', 'centr.json is valid');
68
+ }
69
+ catch (e) {
70
+ addCheck('Config Validity', 'error', 'centr.json has syntax errors', 'Fix JSON syntax in centr.json');
71
+ }
72
+ }
73
+ else {
74
+ addCheck('Config Validity', 'ok', 'Using default config (no centr.json)');
75
+ }
76
+ if (options.json) {
77
+ console.log(JSON.stringify(checks, null, 2));
78
+ }
79
+ else {
80
+ console.log(chalk.bold('CentR Doctor\n'));
81
+ let hasErrors = false;
82
+ for (const check of checks) {
83
+ let icon = ' ';
84
+ if (check.status === 'ok')
85
+ icon = chalk.green('✓');
86
+ else if (check.status === 'warn')
87
+ icon = chalk.yellow('⚠');
88
+ else if (check.status === 'error') {
89
+ icon = chalk.red('✗');
90
+ hasErrors = true;
91
+ }
92
+ console.log(`${icon} ${chalk.bold(check.name)}: ${check.message}`);
93
+ if (check.fix) {
94
+ console.log(` ${chalk.dim('Fix: ' + check.fix)}`);
95
+ }
96
+ }
97
+ console.log('');
98
+ if (hasErrors) {
99
+ console.log(chalk.red('Doctor found issues that need to be resolved.'));
100
+ process.exitCode = 1;
101
+ }
102
+ else {
103
+ console.log(chalk.green('Everything looks good!'));
104
+ }
105
+ }
106
+ }
107
+ catch (error) {
108
+ handleError(error);
109
+ }
110
+ finally {
111
+ if (db)
112
+ db.close();
113
+ }
114
+ });
115
+ }
116
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAErF,MAAM,CAAC,OAAO,WAAU,OAAgB;IACtC,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,EAAE,CAAC;QACP,MAAM,MAAM,GAAU,EAAE,CAAC;QAEzB,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,MAA+B,EAAE,OAAe,EAAE,GAAY,EAAE,EAAE;YAChG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC;QAEF,IAAI,CAAC;YACH,kBAAkB;YAClB,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;YACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvE,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;gBAChB,QAAQ,CAAC,iBAAiB,EAAE,IAAI,EAAE,SAAS,WAAW,UAAU,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,iBAAiB,EAAE,OAAO,EAAE,SAAS,WAAW,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;YAClG,CAAC;YAED,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAE3C,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,QAAQ,CAAC,iBAAiB,EAAE,IAAI,EAAE,wBAAwB,CAAC,CAAC;gBAE5D,IAAI,CAAC;oBACH,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;oBACvB,QAAQ,CAAC,qBAAqB,EAAE,IAAI,EAAE,uBAAuB,CAAC,CAAC;oBAE/D,MAAM,SAAS,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;oBACzE,IAAI,SAAS,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC,EAAE,CAAC;wBAC/F,QAAQ,CAAC,oBAAoB,EAAE,IAAI,EAAE,wBAAwB,CAAC,CAAC;oBACjE,CAAC;yBAAM,CAAC;wBACN,QAAQ,CAAC,oBAAoB,EAAE,OAAO,EAAE,wBAAwB,EAAE,2CAA2C,CAAC,CAAC;oBACjH,CAAC;oBAED,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;oBACxE,QAAQ,CAAC,gBAAgB,EAAE,IAAI,EAAE,oBAAoB,WAAW,EAAE,CAAC,CAAC;oBAEpE,IAAI,CAAC;wBACH,MAAM,SAAS,GAAG,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;wBAEzC,MAAM,UAAU,GAAI,EAAE,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,qDAAqD,CAAC,CAAC,GAAG,CAAC,SAAS,CAAS,CAAC,CAAC,CAAC;wBACvH,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;4BACnB,QAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,SAAS,UAAU,iBAAiB,CAAC,CAAC;wBACtE,CAAC;6BAAM,CAAC;4BACN,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,gBAAgB,EAAE,kCAAkC,CAAC,CAAC;wBACxF,CAAC;oBACH,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,QAAQ,CAAC,wBAAwB,EAAE,OAAO,EAAE,+BAA+B,EAAE,kBAAkB,CAAC,CAAC;oBACnG,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,QAAQ,CAAC,qBAAqB,EAAE,OAAO,EAAE,kCAAkC,CAAC,EAAE,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,iBAAiB,EAAE,OAAO,EAAE,WAAW,EAAE,4CAA4C,CAAC,CAAC;YAClG,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YACjD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC;oBACH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;oBAChD,QAAQ,CAAC,iBAAiB,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;gBAC3D,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,QAAQ,CAAC,iBAAiB,EAAE,OAAO,EAAE,8BAA8B,EAAE,+BAA+B,CAAC,CAAC;gBACxG,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,iBAAiB,EAAE,IAAI,EAAE,sCAAsC,CAAC,CAAC;YAC5E,CAAC;YAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAE1C,IAAI,SAAS,GAAG,KAAK,CAAC;gBACtB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,IAAI,IAAI,GAAG,GAAG,CAAC;oBACf,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI;wBAAE,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;yBAC9C,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;wBAAE,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;yBACtD,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;wBAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAAC,SAAS,GAAG,IAAI,CAAC;oBAAC,CAAC;oBAE/E,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBACnE,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;wBACd,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,IAAI,SAAS,EAAE,CAAC;oBACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC,CAAC;oBACxE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;gBAAS,CAAC;YACT,IAAI,EAAE;gBAAE,EAAE,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export default function (program: Command): void;
3
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,MAAM,CAAC,OAAO,WAAU,OAAO,EAAE,OAAO,QAyCvC"}