@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
package/dist/index.js ADDED
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { handleError } from './utils.js';
4
+ import benchmarkCommand from './commands/benchmark.js';
5
+ import brainCommand from './commands/brain.js';
6
+ import contextCommand from './commands/context.js';
7
+ import doctorCommand from './commands/doctor.js';
8
+ import initCommand from './commands/init.js';
9
+ import learnCommand from './commands/learn.js';
10
+ import searchCommand from './commands/search.js';
11
+ import skillsCommand from './commands/skills.js';
12
+ import statusCommand from './commands/status.js';
13
+ import symbolCommand from './commands/symbol.js';
14
+ import syncCommand from './commands/sync.js';
15
+ process.on('uncaughtException', (err) => {
16
+ handleError(err);
17
+ });
18
+ process.on('unhandledRejection', (err) => {
19
+ handleError(err);
20
+ });
21
+ const program = new Command();
22
+ program
23
+ .name('centr')
24
+ .description('Project Intelligence + Learning Middleware for AI Coding Agents')
25
+ .version('0.1.0')
26
+ .option('--json', 'Output in JSON format');
27
+ initCommand(program);
28
+ syncCommand(program);
29
+ statusCommand(program);
30
+ searchCommand(program);
31
+ contextCommand(program);
32
+ symbolCommand(program);
33
+ learnCommand(program);
34
+ skillsCommand(program);
35
+ doctorCommand(program);
36
+ benchmarkCommand(program);
37
+ brainCommand(program);
38
+ program.parse();
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,gBAAgB,MAAM,yBAAyB,CAAC;AACvD,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,cAAc,MAAM,uBAAuB,CAAC;AACnD,OAAO,aAAa,MAAM,sBAAsB,CAAC;AACjD,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAC7C,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,aAAa,MAAM,sBAAsB,CAAC;AACjD,OAAO,aAAa,MAAM,sBAAsB,CAAC;AACjD,OAAO,aAAa,MAAM,sBAAsB,CAAC;AACjD,OAAO,aAAa,MAAM,sBAAsB,CAAC;AACjD,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAE7C,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE;IACtC,WAAW,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC,CAAC,CAAC;AACH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE;IACvC,WAAW,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,iEAAiE,CAAC;KAC9E,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;AAE7C,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1B,YAAY,CAAC,OAAO,CAAC,CAAC;AAEtB,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { CentrDatabase } from '@centr-ai/core';
2
+ export declare function getProjectRoot(): string;
3
+ export declare function getDatabase(root: string): CentrDatabase;
4
+ export declare function getProjectId(db: CentrDatabase, root: string): number;
5
+ export declare function formatNumber(n: number): string;
6
+ export declare function formatDuration(ms: number): string;
7
+ export declare function handleError(error: unknown): never;
8
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAiB,MAAM,gBAAgB,CAAC;AAE9D,wBAAgB,cAAc,IAAI,MAAM,CAcvC;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CASvD;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMpE;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAOjD"}
package/dist/utils.js ADDED
@@ -0,0 +1,50 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import chalk from 'chalk';
4
+ import { CentrDatabase } from '@centr-ai/core';
5
+ export function getProjectRoot() {
6
+ let current = process.cwd();
7
+ const root = path.parse(current).root;
8
+ while (current !== root) {
9
+ if (fs.existsSync(path.join(current, '.centr')) ||
10
+ fs.existsSync(path.join(current, 'package.json')) ||
11
+ fs.existsSync(path.join(current, '.git'))) {
12
+ return current;
13
+ }
14
+ current = path.dirname(current);
15
+ }
16
+ return process.cwd();
17
+ }
18
+ export function getDatabase(root) {
19
+ const centrDir = path.join(root, '.centr');
20
+ if (!fs.existsSync(centrDir)) {
21
+ fs.mkdirSync(centrDir, { recursive: true });
22
+ }
23
+ const dbPath = path.join(centrDir, 'centr.db');
24
+ const db = new CentrDatabase(dbPath);
25
+ db.initialize();
26
+ return db;
27
+ }
28
+ export function getProjectId(db, root) {
29
+ const row = db.getDb().prepare(`SELECT id FROM projects WHERE rootPath = ?`).get(root);
30
+ if (!row) {
31
+ throw new Error('Project not initialized. Run "centr init" first.');
32
+ }
33
+ return row.id;
34
+ }
35
+ export function formatNumber(n) {
36
+ return new Intl.NumberFormat('en-US').format(n);
37
+ }
38
+ export function formatDuration(ms) {
39
+ return (ms / 1000).toFixed(2) + 's';
40
+ }
41
+ export function handleError(error) {
42
+ if (error instanceof Error) {
43
+ console.error(chalk.red('Error: ' + error.message));
44
+ }
45
+ else {
46
+ console.error(chalk.red('An unknown error occurred'));
47
+ }
48
+ process.exit(1);
49
+ }
50
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAiB,MAAM,gBAAgB,CAAC;AAE9D,MAAM,UAAU,cAAc;IAC5B,IAAI,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;IACtC,OAAO,OAAO,KAAK,IAAI,EAAE,CAAC;QACxB,IACE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC3C,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YACjD,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,EACzC,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,EAAE,CAAC,UAAU,EAAE,CAAC;IAChB,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAiB,EAAE,IAAY;IAC1D,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,CAAC,IAAI,CAA+B,CAAC;IACrH,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,GAAG,CAAC,EAAE,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "@centr-ai/cli",
3
+ "version": "0.1.0",
4
+ "description": "Command Line Interface for CentR project intelligence and learning middleware",
5
+ "type": "module",
6
+ "bin": {
7
+ "centr": "./dist/index.js"
8
+ },
9
+ "main": "./dist/index.js",
10
+ "types": "./dist/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js"
15
+ }
16
+ },
17
+ "engines": {
18
+ "node": ">=20"
19
+ },
20
+ "scripts": {
21
+ "build": "tsc -b",
22
+ "clean": "rm -rf dist tsconfig.tsbuildinfo",
23
+ "typecheck": "tsc --noEmit",
24
+ "test": "vitest run"
25
+ },
26
+ "license": "MIT",
27
+ "author": "CentR Contributors",
28
+ "homepage": "https://chiragpgauswami.github.io/CentR/",
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "git+https://github.com/chiragpgauswami/CentR.git",
32
+ "directory": "packages/cli"
33
+ },
34
+ "bugs": {
35
+ "url": "https://github.com/chiragpgauswami/CentR/issues"
36
+ },
37
+ "keywords": [
38
+ "centr",
39
+ "cli",
40
+ "ai",
41
+ "coding-agents",
42
+ "context-engine",
43
+ "mcp",
44
+ "project-intelligence",
45
+ "claude-code",
46
+ "codex",
47
+ "cursor"
48
+ ],
49
+ "publishConfig": {
50
+ "access": "public"
51
+ },
52
+ "files": [
53
+ "dist",
54
+ "README.md",
55
+ "LICENSE",
56
+ "CHANGELOG.md"
57
+ ],
58
+ "dependencies": {
59
+ "@centr-ai/core": "0.1.0",
60
+ "@centr-ai/brain": "0.1.0",
61
+ "@centr-ai/benchmark-ab": "0.1.0",
62
+ "chalk": "^5.3.0",
63
+ "commander": "^12.0.0",
64
+ "ora": "^8.0.0"
65
+ }
66
+ }