@braingrid/cli 0.0.5 → 0.0.7

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 (60) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/README.md +55 -41
  3. package/dist/.build-info.json +1 -1
  4. package/dist/cli.js +45 -7
  5. package/dist/cli.js.map +1 -1
  6. package/dist/handlers/auth.handlers.d.ts.map +1 -1
  7. package/dist/handlers/auth.handlers.js +4 -1
  8. package/dist/handlers/auth.handlers.js.map +1 -1
  9. package/dist/handlers/index.d.ts +2 -0
  10. package/dist/handlers/index.d.ts.map +1 -1
  11. package/dist/handlers/index.js +2 -0
  12. package/dist/handlers/index.js.map +1 -1
  13. package/dist/handlers/init.handlers.d.ts +11 -0
  14. package/dist/handlers/init.handlers.d.ts.map +1 -0
  15. package/dist/handlers/init.handlers.js +200 -0
  16. package/dist/handlers/init.handlers.js.map +1 -0
  17. package/dist/handlers/project.handlers.d.ts +10 -2
  18. package/dist/handlers/project.handlers.d.ts.map +1 -1
  19. package/dist/handlers/project.handlers.js +93 -2
  20. package/dist/handlers/project.handlers.js.map +1 -1
  21. package/dist/handlers/requirement.handlers.d.ts +2 -2
  22. package/dist/handlers/requirement.handlers.d.ts.map +1 -1
  23. package/dist/handlers/requirement.handlers.js +27 -2
  24. package/dist/handlers/requirement.handlers.js.map +1 -1
  25. package/dist/handlers/task.handlers.d.ts +2 -2
  26. package/dist/handlers/task.handlers.d.ts.map +1 -1
  27. package/dist/handlers/task.handlers.js +38 -3
  28. package/dist/handlers/task.handlers.js.map +1 -1
  29. package/dist/handlers/update.handlers.d.ts +16 -0
  30. package/dist/handlers/update.handlers.d.ts.map +1 -0
  31. package/dist/handlers/update.handlers.js +126 -0
  32. package/dist/handlers/update.handlers.js.map +1 -0
  33. package/dist/services/auth.d.ts +2 -2
  34. package/dist/services/auth.d.ts.map +1 -1
  35. package/dist/services/auth.js +2 -1
  36. package/dist/services/auth.js.map +1 -1
  37. package/dist/services/project-service.d.ts +2 -0
  38. package/dist/services/project-service.d.ts.map +1 -1
  39. package/dist/services/project-service.js +4 -0
  40. package/dist/services/project-service.js.map +1 -1
  41. package/dist/types/auth.d.ts +5 -0
  42. package/dist/types/auth.d.ts.map +1 -1
  43. package/dist/types/local-project.d.ts +30 -0
  44. package/dist/types/local-project.d.ts.map +1 -0
  45. package/dist/types/local-project.js +24 -0
  46. package/dist/types/local-project.js.map +1 -0
  47. package/dist/types/project.d.ts +23 -0
  48. package/dist/types/project.d.ts.map +1 -1
  49. package/dist/utils/cli-tools.d.ts.map +1 -1
  50. package/dist/utils/cli-tools.js +6 -19
  51. package/dist/utils/cli-tools.js.map +1 -1
  52. package/dist/utils/local-store.d.ts +36 -0
  53. package/dist/utils/local-store.d.ts.map +1 -0
  54. package/dist/utils/local-store.js +82 -0
  55. package/dist/utils/local-store.js.map +1 -0
  56. package/dist/utils/package-manager.d.ts +31 -0
  57. package/dist/utils/package-manager.d.ts.map +1 -0
  58. package/dist/utils/package-manager.js +133 -0
  59. package/dist/utils/package-manager.js.map +1 -0
  60. package/package.json +5 -2
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Local Project Store
3
+ * Handles reading/writing .braingrid/project.json
4
+ */
5
+ import fs from 'node:fs';
6
+ import path from 'node:path';
7
+ import { LocalProjectConfigSchema } from '../types/local-project.js';
8
+ const BRAINGRID_DIR = '.braingrid';
9
+ const PROJECT_CONFIG_FILE = 'project.json';
10
+ /**
11
+ * Get the path to the .braingrid directory
12
+ */
13
+ export function getBraingridDir(cwd = process.cwd()) {
14
+ return path.join(cwd, BRAINGRID_DIR);
15
+ }
16
+ /**
17
+ * Get the path to the project.json file
18
+ */
19
+ export function getProjectConfigPath(cwd = process.cwd()) {
20
+ return path.join(getBraingridDir(cwd), PROJECT_CONFIG_FILE);
21
+ }
22
+ /**
23
+ * Check if .braingrid/project.json exists
24
+ */
25
+ export function projectConfigExists(cwd = process.cwd()) {
26
+ return fs.existsSync(getProjectConfigPath(cwd));
27
+ }
28
+ /**
29
+ * Ensure .braingrid directory exists
30
+ */
31
+ function ensureBraingridDir(cwd = process.cwd()) {
32
+ const dir = getBraingridDir(cwd);
33
+ if (!fs.existsSync(dir)) {
34
+ fs.mkdirSync(dir, { recursive: true });
35
+ }
36
+ }
37
+ /**
38
+ * Load project configuration from .braingrid/project.json
39
+ * @throws Error if file doesn't exist or is invalid
40
+ */
41
+ export function loadProjectConfig(cwd = process.cwd()) {
42
+ const configPath = getProjectConfigPath(cwd);
43
+ if (!fs.existsSync(configPath)) {
44
+ throw new Error(`Project not initialized. Run 'braingrid init' to initialize this repository.`);
45
+ }
46
+ const content = fs.readFileSync(configPath, 'utf8');
47
+ const data = JSON.parse(content);
48
+ // Validate with Zod schema
49
+ return LocalProjectConfigSchema.parse(data);
50
+ }
51
+ /**
52
+ * Save project configuration to .braingrid/project.json
53
+ */
54
+ export function saveProjectConfig(config, cwd = process.cwd()) {
55
+ ensureBraingridDir(cwd);
56
+ const configPath = getProjectConfigPath(cwd);
57
+ const content = JSON.stringify(config, null, 2);
58
+ fs.writeFileSync(configPath, content, 'utf8');
59
+ }
60
+ /**
61
+ * Delete .braingrid/project.json
62
+ */
63
+ export function deleteProjectConfig(cwd = process.cwd()) {
64
+ const configPath = getProjectConfigPath(cwd);
65
+ if (fs.existsSync(configPath)) {
66
+ fs.unlinkSync(configPath);
67
+ }
68
+ }
69
+ /**
70
+ * Get the local project ID from .braingrid/project.json
71
+ * Returns the short_id (e.g., PROJ-123) if project.json exists, null otherwise
72
+ */
73
+ export function getLocalProjectId(cwd = process.cwd()) {
74
+ try {
75
+ const config = loadProjectConfig(cwd);
76
+ return config.project_short_id;
77
+ }
78
+ catch {
79
+ return null;
80
+ }
81
+ }
82
+ //# sourceMappingURL=local-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-store.js","sourceRoot":"","sources":["../../src/utils/local-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Package Manager Detection Utility
3
+ *
4
+ * Detects which package manager (npm, pnpm, yarn) was used to install the CLI
5
+ * by checking global installation directories.
6
+ */
7
+ export type PackageManager = 'npm' | 'pnpm' | 'yarn';
8
+ interface PackageManagerInfo {
9
+ name: PackageManager;
10
+ installed: boolean;
11
+ hasPackage: boolean;
12
+ }
13
+ /**
14
+ * Get information about available package managers and whether they have the CLI installed
15
+ */
16
+ export declare function getPackageManagerInfo(packageName: string): Promise<PackageManagerInfo[]>;
17
+ /**
18
+ * Detect which package manager was used to install the CLI
19
+ * Returns the detected package manager or prompts the user if detection fails
20
+ */
21
+ export declare function detectPackageManager(packageName: string): Promise<PackageManager>;
22
+ /**
23
+ * Get the update command for a specific package manager
24
+ */
25
+ export declare function getUpdateCommand(pm: PackageManager, packageName: string): string;
26
+ /**
27
+ * Execute the update command
28
+ */
29
+ export declare function executeUpdate(pm: PackageManager, packageName: string): void;
30
+ export {};
31
+ //# sourceMappingURL=package-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../src/utils/package-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAErD,UAAU,kBAAkB;IAC3B,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACpB;AAyDD;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAW9F;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA+BvF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAYhF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAa3E"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Package Manager Detection Utility
3
+ *
4
+ * Detects which package manager (npm, pnpm, yarn) was used to install the CLI
5
+ * by checking global installation directories.
6
+ */
7
+ import { execSync } from 'child_process';
8
+ import { select } from '@inquirer/prompts';
9
+ /**
10
+ * Check if a package manager is installed on the system
11
+ */
12
+ function isPackageManagerInstalled(pm) {
13
+ try {
14
+ execSync(`which ${pm}`, { stdio: 'ignore', timeout: 2000 });
15
+ return true;
16
+ }
17
+ catch {
18
+ return false;
19
+ }
20
+ }
21
+ /**
22
+ * Check if the CLI package is installed globally with a specific package manager
23
+ */
24
+ function checkGlobalInstallation(pm, packageName) {
25
+ try {
26
+ let command;
27
+ switch (pm) {
28
+ case 'npm': {
29
+ command = `npm list -g ${packageName} 2>&1`;
30
+ break;
31
+ }
32
+ case 'pnpm': {
33
+ command = `pnpm list -g ${packageName} 2>&1`;
34
+ break;
35
+ }
36
+ case 'yarn': {
37
+ command = `yarn global list 2>&1`;
38
+ break;
39
+ }
40
+ }
41
+ const output = execSync(command, {
42
+ encoding: 'utf-8',
43
+ timeout: 5000,
44
+ });
45
+ // For npm and pnpm, check if output contains the package name and not "(empty)"
46
+ if (pm === 'npm' || pm === 'pnpm') {
47
+ return output.includes(packageName) && !output.includes('(empty)');
48
+ }
49
+ // For yarn, check if package is in the list
50
+ if (pm === 'yarn') {
51
+ return output.includes(packageName);
52
+ }
53
+ return false;
54
+ }
55
+ catch {
56
+ return false;
57
+ }
58
+ }
59
+ /**
60
+ * Get information about available package managers and whether they have the CLI installed
61
+ */
62
+ export async function getPackageManagerInfo(packageName) {
63
+ const packageManagers = ['npm', 'pnpm', 'yarn'];
64
+ return packageManagers.map(pm => {
65
+ const installed = isPackageManagerInstalled(pm);
66
+ return {
67
+ name: pm,
68
+ installed,
69
+ hasPackage: installed ? checkGlobalInstallation(pm, packageName) : false,
70
+ };
71
+ });
72
+ }
73
+ /**
74
+ * Detect which package manager was used to install the CLI
75
+ * Returns the detected package manager or prompts the user if detection fails
76
+ */
77
+ export async function detectPackageManager(packageName) {
78
+ const pmInfo = await getPackageManagerInfo(packageName);
79
+ // First, check if any package manager has the package installed
80
+ const installedWith = pmInfo.find(pm => pm.hasPackage);
81
+ if (installedWith) {
82
+ return installedWith.name;
83
+ }
84
+ // If detection failed, check which package managers are available and prompt
85
+ const availablePMs = pmInfo.filter(pm => pm.installed);
86
+ if (availablePMs.length === 0) {
87
+ throw new Error('No package manager found. Please install npm, pnpm, or yarn.');
88
+ }
89
+ if (availablePMs.length === 1) {
90
+ return availablePMs[0].name;
91
+ }
92
+ // Multiple package managers available, prompt user
93
+ const selected = await select({
94
+ message: 'Unable to detect which package manager was used. Please select one:',
95
+ choices: availablePMs.map(pm => ({
96
+ name: pm.name,
97
+ value: pm.name,
98
+ })),
99
+ });
100
+ return selected;
101
+ }
102
+ /**
103
+ * Get the update command for a specific package manager
104
+ */
105
+ export function getUpdateCommand(pm, packageName) {
106
+ switch (pm) {
107
+ case 'npm': {
108
+ return `npm install -g ${packageName}@latest`;
109
+ }
110
+ case 'pnpm': {
111
+ return `pnpm add -g ${packageName}@latest`;
112
+ }
113
+ case 'yarn': {
114
+ return `yarn global add ${packageName}@latest`;
115
+ }
116
+ }
117
+ }
118
+ /**
119
+ * Execute the update command
120
+ */
121
+ export function executeUpdate(pm, packageName) {
122
+ const command = getUpdateCommand(pm, packageName);
123
+ try {
124
+ execSync(command, {
125
+ stdio: 'inherit',
126
+ timeout: 120000, // 2 minutes timeout
127
+ });
128
+ }
129
+ catch (error) {
130
+ throw new Error(`Failed to update package: ${error instanceof Error ? error.message : String(error)}`);
131
+ }
132
+ }
133
+ //# sourceMappingURL=package-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../src/utils/package-manager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@braingrid/cli",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "description": "BrainGrid - Turn thoughts into AI-ready specs. Command-line interface for spec-driven development.",
5
5
  "type": "module",
6
6
  "main": "dist/cli.js",
@@ -33,12 +33,14 @@
33
33
  "CHANGELOG.md"
34
34
  ],
35
35
  "dependencies": {
36
+ "@inquirer/prompts": "^7.8.6",
36
37
  "axios": "^1.10.0",
37
38
  "chalk": "^5.3.0",
38
39
  "commander": "^12.0.0",
39
40
  "conf": "13.0.1",
40
41
  "node-machine-id": "1.1.12",
41
- "open": "^10.1.0"
42
+ "open": "^10.1.0",
43
+ "zod": "^4.1.11"
42
44
  },
43
45
  "devDependencies": {
44
46
  "@types/node": "^20.19.1",
@@ -88,6 +90,7 @@
88
90
  "test:cli:verbose": "bash scripts/test-cli.sh --verbose",
89
91
  "validate:fix": "pnpm lint:fix && pnpm format && pnpm type-check",
90
92
  "docs:fetch-openapi": "gh api repos/BrainGridAI/braingrid-app/contents/src/app/api/v1/openapi.yaml | jq -r '.content' | base64 -D > docs/openapi.yaml",
93
+ "docs:sync": "bash scripts/sync-docs-to-braingrid.sh",
91
94
  "preversion": "pnpm validate:fix && pnpm test:all",
92
95
  "release:patch": "npm version patch && git push && git push --tags",
93
96
  "release:minor": "npm version minor && git push && git push --tags",