@braingrid/cli 0.1.0 → 0.1.2

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 (118) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +26 -24
  3. package/dist/cli.js +37 -17
  4. package/dist/cli.js.map +1 -1
  5. package/dist/handlers/agent.handlers.d.ts +12 -0
  6. package/dist/handlers/agent.handlers.d.ts.map +1 -0
  7. package/dist/handlers/agent.handlers.js +130 -0
  8. package/dist/handlers/agent.handlers.js.map +1 -0
  9. package/dist/handlers/index.d.ts +1 -0
  10. package/dist/handlers/index.d.ts.map +1 -1
  11. package/dist/handlers/index.js +1 -0
  12. package/dist/handlers/index.js.map +1 -1
  13. package/dist/handlers/init.handlers.d.ts +0 -1
  14. package/dist/handlers/init.handlers.d.ts.map +1 -1
  15. package/dist/handlers/init.handlers.js +481 -43
  16. package/dist/handlers/init.handlers.js.map +1 -1
  17. package/dist/handlers/project.handlers.d.ts +2 -3
  18. package/dist/handlers/project.handlers.d.ts.map +1 -1
  19. package/dist/handlers/project.handlers.js +80 -71
  20. package/dist/handlers/project.handlers.js.map +1 -1
  21. package/dist/handlers/requirement.handlers.d.ts.map +1 -1
  22. package/dist/handlers/requirement.handlers.js +21 -20
  23. package/dist/handlers/requirement.handlers.js.map +1 -1
  24. package/dist/handlers/status.handlers.d.ts.map +1 -1
  25. package/dist/handlers/status.handlers.js +11 -8
  26. package/dist/handlers/status.handlers.js.map +1 -1
  27. package/dist/handlers/task.handlers.d.ts.map +1 -1
  28. package/dist/handlers/task.handlers.js +45 -26
  29. package/dist/handlers/task.handlers.js.map +1 -1
  30. package/dist/rpc/server.d.ts +2 -0
  31. package/dist/rpc/server.d.ts.map +1 -1
  32. package/dist/rpc/server.js +28 -11
  33. package/dist/rpc/server.js.map +1 -1
  34. package/dist/services/agent-service.d.ts +29 -0
  35. package/dist/services/agent-service.d.ts.map +1 -0
  36. package/dist/services/agent-service.js +273 -0
  37. package/dist/services/agent-service.js.map +1 -0
  38. package/dist/services/credential-store.d.ts.map +1 -1
  39. package/dist/services/credential-store.js +1 -0
  40. package/dist/services/credential-store.js.map +1 -1
  41. package/dist/services/internal/github-service.d.ts +67 -0
  42. package/dist/services/internal/github-service.d.ts.map +1 -0
  43. package/dist/services/internal/github-service.js +81 -0
  44. package/dist/services/internal/github-service.js.map +1 -0
  45. package/dist/services/internal/repository-service.d.ts +79 -0
  46. package/dist/services/internal/repository-service.d.ts.map +1 -0
  47. package/dist/services/internal/repository-service.js +88 -0
  48. package/dist/services/internal/repository-service.js.map +1 -0
  49. package/dist/types/github.d.ts +105 -0
  50. package/dist/types/github.d.ts.map +1 -0
  51. package/dist/types/github.js +6 -0
  52. package/dist/types/github.js.map +1 -0
  53. package/dist/types/project.d.ts +1 -0
  54. package/dist/types/project.d.ts.map +1 -1
  55. package/dist/utils/cli-tools.d.ts.map +1 -1
  56. package/dist/utils/cli-tools.js +9 -1
  57. package/dist/utils/cli-tools.js.map +1 -1
  58. package/dist/utils/config.d.ts +1 -0
  59. package/dist/utils/config.d.ts.map +1 -1
  60. package/dist/utils/config.js +18 -0
  61. package/dist/utils/config.js.map +1 -1
  62. package/dist/utils/gh-installer.d.ts +31 -0
  63. package/dist/utils/gh-installer.d.ts.map +1 -0
  64. package/dist/utils/gh-installer.js +296 -0
  65. package/dist/utils/gh-installer.js.map +1 -0
  66. package/dist/utils/git-installer.d.ts +31 -0
  67. package/dist/utils/git-installer.d.ts.map +1 -0
  68. package/dist/utils/git-installer.js +290 -0
  69. package/dist/utils/git-installer.js.map +1 -0
  70. package/dist/utils/git.d.ts +5 -0
  71. package/dist/utils/git.d.ts.map +1 -1
  72. package/dist/utils/git.js +13 -0
  73. package/dist/utils/git.js.map +1 -1
  74. package/dist/utils/github-repo.d.ts +43 -0
  75. package/dist/utils/github-repo.d.ts.map +1 -0
  76. package/dist/utils/github-repo.js +113 -0
  77. package/dist/utils/github-repo.js.map +1 -0
  78. package/dist/utils/id-normalization.d.ts +26 -0
  79. package/dist/utils/id-normalization.d.ts.map +1 -0
  80. package/dist/utils/id-normalization.js +45 -0
  81. package/dist/utils/id-normalization.js.map +1 -0
  82. package/dist/utils/local-store.d.ts +7 -7
  83. package/dist/utils/local-store.d.ts.map +1 -1
  84. package/dist/utils/local-store.js +29 -17
  85. package/dist/utils/local-store.js.map +1 -1
  86. package/dist/utils/package-manager-installer.d.ts +36 -0
  87. package/dist/utils/package-manager-installer.d.ts.map +1 -0
  88. package/dist/utils/package-manager-installer.js +106 -0
  89. package/dist/utils/package-manager-installer.js.map +1 -0
  90. package/dist/utils/projects.d.ts +23 -0
  91. package/dist/utils/projects.d.ts.map +1 -0
  92. package/dist/utils/projects.js +36 -0
  93. package/dist/utils/projects.js.map +1 -0
  94. package/dist/utils/repository-access.d.ts +89 -0
  95. package/dist/utils/repository-access.d.ts.map +1 -0
  96. package/dist/utils/repository-access.js +132 -0
  97. package/dist/utils/repository-access.js.map +1 -0
  98. package/dist/utils/requirements.d.ts +15 -0
  99. package/dist/utils/requirements.d.ts.map +1 -1
  100. package/dist/utils/requirements.js +32 -7
  101. package/dist/utils/requirements.js.map +1 -1
  102. package/dist/utils/spinner.d.ts +47 -0
  103. package/dist/utils/spinner.d.ts.map +1 -0
  104. package/dist/utils/spinner.js +101 -0
  105. package/dist/utils/spinner.js.map +1 -0
  106. package/dist/utils/tasks.d.ts +12 -0
  107. package/dist/utils/tasks.d.ts.map +1 -1
  108. package/dist/utils/tasks.js +31 -6
  109. package/dist/utils/tasks.js.map +1 -1
  110. package/dist/utils/workspace-manager.d.ts +65 -0
  111. package/dist/utils/workspace-manager.d.ts.map +1 -0
  112. package/dist/utils/workspace-manager.js +98 -0
  113. package/dist/utils/workspace-manager.js.map +1 -0
  114. package/package.json +4 -1
  115. package/dist/services/context-manager.d.ts +0 -170
  116. package/dist/services/context-manager.d.ts.map +0 -1
  117. package/dist/services/context-manager.js +0 -261
  118. package/dist/services/context-manager.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-installer.js","sourceRoot":"","sources":["../../src/utils/git-installer.ts"],"names":[],"mappings":"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"}
@@ -43,6 +43,11 @@ export declare function parseGitHubRepo(url: string): GitHubRepo | null;
43
43
  * Get the current branch name
44
44
  */
45
45
  export declare function getCurrentBranch(): Promise<string | null>;
46
+ /**
47
+ * Get the git repository root directory
48
+ * Returns the absolute path to the repository root, or null if not in a git repository
49
+ */
50
+ export declare function getGitRoot(): Promise<string | null>;
46
51
  /**
47
52
  * Get git user configuration (name and email)
48
53
  */
@@ -1 +1 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,OAAO;IACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAOxD;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAO3D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAsB9D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAO/D;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAmBnD;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAgCxE"}
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,OAAO;IACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAOxD;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAO3D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAsB9D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAO/D;AAED;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOzD;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAmBnD;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAgCxE"}
package/dist/utils/git.js CHANGED
@@ -73,6 +73,19 @@ export async function getCurrentBranch() {
73
73
  return null;
74
74
  }
75
75
  }
76
+ /**
77
+ * Get the git repository root directory
78
+ * Returns the absolute path to the repository root, or null if not in a git repository
79
+ */
80
+ export async function getGitRoot() {
81
+ try {
82
+ const { stdout } = await execAsync('git rev-parse --show-toplevel');
83
+ return stdout.trim() || null;
84
+ }
85
+ catch {
86
+ return null;
87
+ }
88
+ }
76
89
  /**
77
90
  * Get git user configuration (name and email)
78
91
  */
@@ -1 +1 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * GitHub Repository Utilities
3
+ *
4
+ * Provides functions to automate GitHub repository creation and setup using GitHub CLI.
5
+ * Falls back to manual instructions when automation is not available.
6
+ */
7
+ export interface RepoInfo {
8
+ owner: string;
9
+ name: string;
10
+ url: string;
11
+ }
12
+ /**
13
+ * Initialize a git repository in the current directory
14
+ */
15
+ export declare function initGitRepo(): Promise<boolean>;
16
+ /**
17
+ * Check if GitHub CLI is authenticated
18
+ */
19
+ export declare function isGhAuthenticated(): Promise<boolean>;
20
+ /**
21
+ * Get the current directory name (for suggesting repository name)
22
+ */
23
+ export declare function getCurrentDirectoryName(): string;
24
+ /**
25
+ * Create a GitHub repository using GitHub CLI
26
+ *
27
+ * @param name - Repository name
28
+ * @param isPrivate - Whether the repository should be private
29
+ * @returns Repository information or null if failed
30
+ */
31
+ export declare function createGitHubRepoWithGh(name: string, isPrivate: boolean): Promise<RepoInfo | null>;
32
+ /**
33
+ * Get repository information from git remote
34
+ *
35
+ * @returns Repository info or null if not found
36
+ */
37
+ export declare function getRepoInfoFromGit(): Promise<RepoInfo | null>;
38
+ /**
39
+ * Check if we can use GitHub CLI automation
40
+ * (both GitHub CLI installed and authenticated)
41
+ */
42
+ export declare function canUseGhAutomation(): Promise<boolean>;
43
+ //# sourceMappingURL=github-repo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-repo.d.ts","sourceRoot":"","sources":["../../src/utils/github-repo.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,WAAW,QAAQ;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAOpD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAO1D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC3C,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,OAAO,GAChB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAyB1B;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CA4BnE;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAS3D"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * GitHub Repository Utilities
3
+ *
4
+ * Provides functions to automate GitHub repository creation and setup using GitHub CLI.
5
+ * Falls back to manual instructions when automation is not available.
6
+ */
7
+ import { exec } from 'child_process';
8
+ import { promisify } from 'util';
9
+ import path from 'path';
10
+ const execAsync = promisify(exec);
11
+ /**
12
+ * Initialize a git repository in the current directory
13
+ */
14
+ export async function initGitRepo() {
15
+ try {
16
+ await execAsync('git init');
17
+ return true;
18
+ }
19
+ catch {
20
+ return false;
21
+ }
22
+ }
23
+ /**
24
+ * Check if GitHub CLI is authenticated
25
+ */
26
+ export async function isGhAuthenticated() {
27
+ try {
28
+ await execAsync('gh auth status');
29
+ return true;
30
+ }
31
+ catch {
32
+ return false;
33
+ }
34
+ }
35
+ /**
36
+ * Get the current directory name (for suggesting repository name)
37
+ */
38
+ export function getCurrentDirectoryName() {
39
+ return path.basename(process.cwd());
40
+ }
41
+ /**
42
+ * Create a GitHub repository using GitHub CLI
43
+ *
44
+ * @param name - Repository name
45
+ * @param isPrivate - Whether the repository should be private
46
+ * @returns Repository information or null if failed
47
+ */
48
+ export async function createGitHubRepoWithGh(name, isPrivate) {
49
+ try {
50
+ const visibility = isPrivate ? '--private' : '--public';
51
+ // Create repository with gh CLI
52
+ // --source=. creates repo from current directory and adds remote
53
+ const { stdout } = await execAsync(`gh repo create ${name} ${visibility} --source=. --remote=origin`, { timeout: 60000 });
54
+ // Parse the repository URL from output
55
+ const urlMatch = stdout.match(/https:\/\/github\.com\/([^/]+)\/([^/\s]+)/);
56
+ if (!urlMatch) {
57
+ return null;
58
+ }
59
+ return {
60
+ owner: urlMatch[1],
61
+ name: urlMatch[2],
62
+ url: urlMatch[0],
63
+ };
64
+ }
65
+ catch {
66
+ return null;
67
+ }
68
+ }
69
+ /**
70
+ * Get repository information from git remote
71
+ *
72
+ * @returns Repository info or null if not found
73
+ */
74
+ export async function getRepoInfoFromGit() {
75
+ try {
76
+ const { stdout } = await execAsync('git config --get remote.origin.url');
77
+ const url = stdout.trim();
78
+ // Parse GitHub URL
79
+ const httpsMatch = url.match(/https?:\/\/github\.com\/([^/]+)\/([^/]+?)(\.git)?$/);
80
+ if (httpsMatch) {
81
+ return {
82
+ owner: httpsMatch[1],
83
+ name: httpsMatch[2],
84
+ url: `https://github.com/${httpsMatch[1]}/${httpsMatch[2]}`,
85
+ };
86
+ }
87
+ const sshMatch = url.match(/git@github\.com:([^/]+)\/([^/]+?)(\.git)?$/);
88
+ if (sshMatch) {
89
+ return {
90
+ owner: sshMatch[1],
91
+ name: sshMatch[2],
92
+ url: `https://github.com/${sshMatch[1]}/${sshMatch[2]}`,
93
+ };
94
+ }
95
+ return null;
96
+ }
97
+ catch {
98
+ return null;
99
+ }
100
+ }
101
+ /**
102
+ * Check if we can use GitHub CLI automation
103
+ * (both GitHub CLI installed and authenticated)
104
+ */
105
+ export async function canUseGhAutomation() {
106
+ const { isGhInstalled } = await import('./gh-installer.js');
107
+ const ghInstalled = await isGhInstalled();
108
+ if (!ghInstalled) {
109
+ return false;
110
+ }
111
+ return isGhAuthenticated();
112
+ }
113
+ //# sourceMappingURL=github-repo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-repo.js","sourceRoot":"","sources":["../../src/utils/github-repo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Generic ID normalization utility for resource identifiers
3
+ *
4
+ * This module provides a unified approach to normalizing resource IDs
5
+ * (Projects, Requirements, Tasks) from various user input formats.
6
+ */
7
+ /**
8
+ * Normalize a resource ID from various formats to API-compatible format:
9
+ * - "PREFIX-123" -> "PREFIX-123" (already normalized)
10
+ * - "prefix-123" -> "PREFIX-123" (uppercase prefix)
11
+ * - "PREFIX 123" -> "PREFIX-123" (replace space with dash, uppercase)
12
+ * - "prefix 123" -> "PREFIX-123" (replace space with dash, uppercase)
13
+ * - "123" -> "PREFIX-123" (add prefix)
14
+ * - "uuid-string" -> "uuid-string" (UUID, return as-is)
15
+ *
16
+ * @param prefix The resource prefix (e.g., 'PROJ', 'REQ', 'TASK')
17
+ * @param input The user-provided ID string
18
+ * @returns The normalized ID suitable for API calls
19
+ *
20
+ * @example
21
+ * normalizeId('PROJ', 'proj-123') // Returns 'PROJ-123'
22
+ * normalizeId('REQ', 'REQ 456') // Returns 'REQ-456'
23
+ * normalizeId('TASK', '789') // Returns 'TASK-789'
24
+ */
25
+ export declare function normalizeId(prefix: string, input: string): string;
26
+ //# sourceMappingURL=id-normalization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-normalization.d.ts","sourceRoot":"","sources":["../../src/utils/id-normalization.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAuBjE"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Generic ID normalization utility for resource identifiers
3
+ *
4
+ * This module provides a unified approach to normalizing resource IDs
5
+ * (Projects, Requirements, Tasks) from various user input formats.
6
+ */
7
+ /**
8
+ * Normalize a resource ID from various formats to API-compatible format:
9
+ * - "PREFIX-123" -> "PREFIX-123" (already normalized)
10
+ * - "prefix-123" -> "PREFIX-123" (uppercase prefix)
11
+ * - "PREFIX 123" -> "PREFIX-123" (replace space with dash, uppercase)
12
+ * - "prefix 123" -> "PREFIX-123" (replace space with dash, uppercase)
13
+ * - "123" -> "PREFIX-123" (add prefix)
14
+ * - "uuid-string" -> "uuid-string" (UUID, return as-is)
15
+ *
16
+ * @param prefix The resource prefix (e.g., 'PROJ', 'REQ', 'TASK')
17
+ * @param input The user-provided ID string
18
+ * @returns The normalized ID suitable for API calls
19
+ *
20
+ * @example
21
+ * normalizeId('PROJ', 'proj-123') // Returns 'PROJ-123'
22
+ * normalizeId('REQ', 'REQ 456') // Returns 'REQ-456'
23
+ * normalizeId('TASK', '789') // Returns 'TASK-789'
24
+ */
25
+ export function normalizeId(prefix, input) {
26
+ const trimmed = input.trim();
27
+ const upperPrefix = prefix.toUpperCase();
28
+ // Handle "PREFIX-123" or "prefix-123" format (already has dash)
29
+ const dashMatch = trimmed.match(new RegExp(`^${prefix}-(\\d+)$`, 'i'));
30
+ if (dashMatch) {
31
+ return `${upperPrefix}-${dashMatch[1]}`;
32
+ }
33
+ // Handle "PREFIX 123" or "prefix 123" format (space instead of dash)
34
+ const spaceMatch = trimmed.match(new RegExp(`^${prefix}\\s+(\\d+)$`, 'i'));
35
+ if (spaceMatch) {
36
+ return `${upperPrefix}-${spaceMatch[1]}`;
37
+ }
38
+ // Handle plain number format "123"
39
+ if (/^\d+$/.test(trimmed)) {
40
+ return `${upperPrefix}-${trimmed}`;
41
+ }
42
+ // Assume it's a UUID - return as-is
43
+ return trimmed;
44
+ }
45
+ //# sourceMappingURL=id-normalization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-normalization.js","sourceRoot":"","sources":["../../src/utils/id-normalization.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,KAAa;IACxD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAEzC,gEAAgE;IAChE,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,MAAM,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;IACvE,IAAI,SAAS,EAAE,CAAC;QACf,OAAO,GAAG,WAAW,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,CAAC;IAED,qEAAqE;IACrE,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,MAAM,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3E,IAAI,UAAU,EAAE,CAAC;QAChB,OAAO,GAAG,WAAW,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1C,CAAC;IAED,mCAAmC;IACnC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,GAAG,WAAW,IAAI,OAAO,EAAE,CAAC;IACpC,CAAC;IAED,oCAAoC;IACpC,OAAO,OAAO,CAAC;AAChB,CAAC"}
@@ -6,31 +6,31 @@ import { LocalProjectConfig } from '../types/local-project.js';
6
6
  /**
7
7
  * Get the path to the .braingrid directory
8
8
  */
9
- export declare function getBraingridDir(cwd?: string): string;
9
+ export declare function getBraingridDir(cwd?: string): Promise<string>;
10
10
  /**
11
11
  * Get the path to the project.json file
12
12
  */
13
- export declare function getProjectConfigPath(cwd?: string): string;
13
+ export declare function getProjectConfigPath(cwd?: string): Promise<string>;
14
14
  /**
15
15
  * Check if .braingrid/project.json exists
16
16
  */
17
- export declare function projectConfigExists(cwd?: string): boolean;
17
+ export declare function projectConfigExists(cwd?: string): Promise<boolean>;
18
18
  /**
19
19
  * Load project configuration from .braingrid/project.json
20
20
  * @throws Error if file doesn't exist or is invalid
21
21
  */
22
- export declare function loadProjectConfig(cwd?: string): LocalProjectConfig;
22
+ export declare function loadProjectConfig(cwd?: string): Promise<LocalProjectConfig>;
23
23
  /**
24
24
  * Save project configuration to .braingrid/project.json
25
25
  */
26
- export declare function saveProjectConfig(config: LocalProjectConfig, cwd?: string): void;
26
+ export declare function saveProjectConfig(config: LocalProjectConfig, cwd?: string): Promise<void>;
27
27
  /**
28
28
  * Delete .braingrid/project.json
29
29
  */
30
- export declare function deleteProjectConfig(cwd?: string): void;
30
+ export declare function deleteProjectConfig(cwd?: string): Promise<void>;
31
31
  /**
32
32
  * Get the local project ID from .braingrid/project.json
33
33
  * Returns the short_id (e.g., PROJ-123) if project.json exists, null otherwise
34
34
  */
35
- export declare function getLocalProjectId(cwd?: string): string | null;
35
+ export declare function getLocalProjectId(cwd?: string): Promise<string | null>;
36
36
  //# sourceMappingURL=local-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-store.d.ts","sourceRoot":"","sources":["../../src/utils/local-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,kBAAkB,EAA4B,MAAM,2BAA2B,CAAC;AAKzF;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,SAAgB,GAAG,MAAM,CAE3D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,SAAgB,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,SAAgB,GAAG,OAAO,CAEhE;AAYD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,SAAgB,GAAG,kBAAkB,CAYzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,SAAgB,GAAG,IAAI,CAOvF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,SAAgB,GAAG,IAAI,CAK7D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,SAAgB,GAAG,MAAM,GAAG,IAAI,CAOpE"}
1
+ {"version":3,"file":"local-store.d.ts","sourceRoot":"","sources":["../../src/utils/local-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,kBAAkB,EAA4B,MAAM,2BAA2B,CAAC;AAezF;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGnE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGxE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGxE;AAYD;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAYjF;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO/F;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKrE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAO5E"}
@@ -5,31 +5,43 @@
5
5
  import fs from 'node:fs';
6
6
  import path from 'node:path';
7
7
  import { LocalProjectConfigSchema } from '../types/local-project.js';
8
+ import { getGitRoot } from './git.js';
8
9
  const BRAINGRID_DIR = '.braingrid';
9
10
  const PROJECT_CONFIG_FILE = 'project.json';
11
+ /**
12
+ * Get the default directory for .braingrid folder
13
+ * Prefers git repository root, falls back to current working directory
14
+ */
15
+ async function getDefaultCwd() {
16
+ const gitRoot = await getGitRoot();
17
+ return gitRoot || process.cwd();
18
+ }
10
19
  /**
11
20
  * Get the path to the .braingrid directory
12
21
  */
13
- export function getBraingridDir(cwd = process.cwd()) {
14
- return path.join(cwd, BRAINGRID_DIR);
22
+ export async function getBraingridDir(cwd) {
23
+ const dir = cwd ?? (await getDefaultCwd());
24
+ return path.join(dir, BRAINGRID_DIR);
15
25
  }
16
26
  /**
17
27
  * Get the path to the project.json file
18
28
  */
19
- export function getProjectConfigPath(cwd = process.cwd()) {
20
- return path.join(getBraingridDir(cwd), PROJECT_CONFIG_FILE);
29
+ export async function getProjectConfigPath(cwd) {
30
+ const braingridDir = await getBraingridDir(cwd);
31
+ return path.join(braingridDir, PROJECT_CONFIG_FILE);
21
32
  }
22
33
  /**
23
34
  * Check if .braingrid/project.json exists
24
35
  */
25
- export function projectConfigExists(cwd = process.cwd()) {
26
- return fs.existsSync(getProjectConfigPath(cwd));
36
+ export async function projectConfigExists(cwd) {
37
+ const configPath = await getProjectConfigPath(cwd);
38
+ return fs.existsSync(configPath);
27
39
  }
28
40
  /**
29
41
  * Ensure .braingrid directory exists
30
42
  */
31
- function ensureBraingridDir(cwd = process.cwd()) {
32
- const dir = getBraingridDir(cwd);
43
+ async function ensureBraingridDir(cwd) {
44
+ const dir = await getBraingridDir(cwd);
33
45
  if (!fs.existsSync(dir)) {
34
46
  fs.mkdirSync(dir, { recursive: true });
35
47
  }
@@ -38,8 +50,8 @@ function ensureBraingridDir(cwd = process.cwd()) {
38
50
  * Load project configuration from .braingrid/project.json
39
51
  * @throws Error if file doesn't exist or is invalid
40
52
  */
41
- export function loadProjectConfig(cwd = process.cwd()) {
42
- const configPath = getProjectConfigPath(cwd);
53
+ export async function loadProjectConfig(cwd) {
54
+ const configPath = await getProjectConfigPath(cwd);
43
55
  if (!fs.existsSync(configPath)) {
44
56
  throw new Error(`Project not initialized. Run 'braingrid init' to initialize this repository.`);
45
57
  }
@@ -51,17 +63,17 @@ export function loadProjectConfig(cwd = process.cwd()) {
51
63
  /**
52
64
  * Save project configuration to .braingrid/project.json
53
65
  */
54
- export function saveProjectConfig(config, cwd = process.cwd()) {
55
- ensureBraingridDir(cwd);
56
- const configPath = getProjectConfigPath(cwd);
66
+ export async function saveProjectConfig(config, cwd) {
67
+ await ensureBraingridDir(cwd);
68
+ const configPath = await getProjectConfigPath(cwd);
57
69
  const content = JSON.stringify(config, null, 2);
58
70
  fs.writeFileSync(configPath, content, 'utf8');
59
71
  }
60
72
  /**
61
73
  * Delete .braingrid/project.json
62
74
  */
63
- export function deleteProjectConfig(cwd = process.cwd()) {
64
- const configPath = getProjectConfigPath(cwd);
75
+ export async function deleteProjectConfig(cwd) {
76
+ const configPath = await getProjectConfigPath(cwd);
65
77
  if (fs.existsSync(configPath)) {
66
78
  fs.unlinkSync(configPath);
67
79
  }
@@ -70,9 +82,9 @@ export function deleteProjectConfig(cwd = process.cwd()) {
70
82
  * Get the local project ID from .braingrid/project.json
71
83
  * Returns the short_id (e.g., PROJ-123) if project.json exists, null otherwise
72
84
  */
73
- export function getLocalProjectId(cwd = process.cwd()) {
85
+ export async function getLocalProjectId(cwd) {
74
86
  try {
75
- const config = loadProjectConfig(cwd);
87
+ const config = await loadProjectConfig(cwd);
76
88
  return config.project_short_id;
77
89
  }
78
90
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"local-store.js","sourceRoot":"","sources":["../../src/utils/local-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-store.js","sourceRoot":"","sources":["../../src/utils/local-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Package Manager Detection Utilities
3
+ *
4
+ * Detects package managers on different platforms:
5
+ * - Homebrew on macOS
6
+ * - winget on Windows (typically pre-installed on Windows 10+)
7
+ * - apt/dnf/pacman on Linux
8
+ */
9
+ export interface PackageManagerInfo {
10
+ name: string;
11
+ command: string;
12
+ available: boolean;
13
+ }
14
+ /**
15
+ * Check if Homebrew is installed (macOS)
16
+ */
17
+ export declare function isHomebrewInstalled(): Promise<boolean>;
18
+ /**
19
+ * Check if winget is available (Windows)
20
+ * winget is pre-installed on Windows 10 (version 1809+) and Windows 11
21
+ */
22
+ export declare function isWingetAvailable(): Promise<boolean>;
23
+ /**
24
+ * Detect available package manager on Linux
25
+ * Returns the first available package manager found
26
+ */
27
+ export declare function detectLinuxPackageManager(): Promise<PackageManagerInfo | null>;
28
+ /**
29
+ * Get the appropriate package manager for the current platform
30
+ */
31
+ export declare function detectPackageManager(): Promise<{
32
+ platform: string;
33
+ packageManager: string | null;
34
+ available: boolean;
35
+ }>;
36
+ //# sourceMappingURL=package-manager-installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-manager-installer.d.ts","sourceRoot":"","sources":["../../src/utils/package-manager-installer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAW5D;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAW1D;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAsBpF;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC;IACrD,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;CACnB,CAAC,CAsCD"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Package Manager Detection Utilities
3
+ *
4
+ * Detects package managers on different platforms:
5
+ * - Homebrew on macOS
6
+ * - winget on Windows (typically pre-installed on Windows 10+)
7
+ * - apt/dnf/pacman on Linux
8
+ */
9
+ import { exec } from 'child_process';
10
+ import { promisify } from 'util';
11
+ const execAsync = promisify(exec);
12
+ /**
13
+ * Check if Homebrew is installed (macOS)
14
+ */
15
+ export async function isHomebrewInstalled() {
16
+ if (process.platform !== 'darwin') {
17
+ return false;
18
+ }
19
+ try {
20
+ await execAsync('which brew', { timeout: 2000 });
21
+ return true;
22
+ }
23
+ catch {
24
+ return false;
25
+ }
26
+ }
27
+ /**
28
+ * Check if winget is available (Windows)
29
+ * winget is pre-installed on Windows 10 (version 1809+) and Windows 11
30
+ */
31
+ export async function isWingetAvailable() {
32
+ if (process.platform !== 'win32') {
33
+ return false;
34
+ }
35
+ try {
36
+ await execAsync('winget --version', { timeout: 2000 });
37
+ return true;
38
+ }
39
+ catch {
40
+ return false;
41
+ }
42
+ }
43
+ /**
44
+ * Detect available package manager on Linux
45
+ * Returns the first available package manager found
46
+ */
47
+ export async function detectLinuxPackageManager() {
48
+ if (process.platform !== 'linux') {
49
+ return null;
50
+ }
51
+ const packageManagers = [
52
+ { name: 'apt', command: 'apt-get', available: false },
53
+ { name: 'dnf', command: 'dnf', available: false },
54
+ { name: 'yum', command: 'yum', available: false },
55
+ { name: 'pacman', command: 'pacman', available: false },
56
+ ];
57
+ for (const pm of packageManagers) {
58
+ try {
59
+ await execAsync(`which ${pm.command}`, { timeout: 2000 });
60
+ return { ...pm, available: true };
61
+ }
62
+ catch {
63
+ // Package manager not found, continue checking
64
+ }
65
+ }
66
+ return null;
67
+ }
68
+ /**
69
+ * Get the appropriate package manager for the current platform
70
+ */
71
+ export async function detectPackageManager() {
72
+ const platform = process.platform;
73
+ switch (platform) {
74
+ case 'darwin': {
75
+ const hasHomebrew = await isHomebrewInstalled();
76
+ return {
77
+ platform: 'macOS',
78
+ packageManager: 'brew',
79
+ available: hasHomebrew,
80
+ };
81
+ }
82
+ case 'win32': {
83
+ const hasWinget = await isWingetAvailable();
84
+ return {
85
+ platform: 'Windows',
86
+ packageManager: 'winget',
87
+ available: hasWinget,
88
+ };
89
+ }
90
+ case 'linux': {
91
+ const linuxPM = await detectLinuxPackageManager();
92
+ return {
93
+ platform: 'Linux',
94
+ packageManager: linuxPM?.name || null,
95
+ available: linuxPM !== null,
96
+ };
97
+ }
98
+ default:
99
+ return {
100
+ platform: platform,
101
+ packageManager: null,
102
+ available: false,
103
+ };
104
+ }
105
+ }
106
+ //# sourceMappingURL=package-manager-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-manager-installer.js","sourceRoot":"","sources":["../../src/utils/package-manager-installer.ts"],"names":[],"mappings":"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"}