@braingrid/cli 0.2.0 → 0.2.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 (219) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +55 -39
  3. package/dist/chunk-KNVWIF3L.js +401 -0
  4. package/dist/chunk-KNVWIF3L.js.map +1 -0
  5. package/dist/cli.js +6236 -245
  6. package/dist/cli.js.map +1 -1
  7. package/dist/gh-installer-B65ZOOC4.js +13 -0
  8. package/dist/gh-installer-B65ZOOC4.js.map +1 -0
  9. package/package.json +19 -11
  10. package/dist/build-config.d.ts +0 -26
  11. package/dist/build-config.d.ts.map +0 -1
  12. package/dist/build-config.js +0 -45
  13. package/dist/build-config.js.map +0 -1
  14. package/dist/cli.d.ts +0 -3
  15. package/dist/cli.d.ts.map +0 -1
  16. package/dist/handlers/auth.handlers.d.ts +0 -13
  17. package/dist/handlers/auth.handlers.d.ts.map +0 -1
  18. package/dist/handlers/auth.handlers.js +0 -111
  19. package/dist/handlers/auth.handlers.js.map +0 -1
  20. package/dist/handlers/index.d.ts +0 -13
  21. package/dist/handlers/index.d.ts.map +0 -1
  22. package/dist/handlers/index.js +0 -13
  23. package/dist/handlers/index.js.map +0 -1
  24. package/dist/handlers/init.handlers.d.ts +0 -10
  25. package/dist/handlers/init.handlers.d.ts.map +0 -1
  26. package/dist/handlers/init.handlers.js +0 -638
  27. package/dist/handlers/init.handlers.js.map +0 -1
  28. package/dist/handlers/project.handlers.d.ts +0 -36
  29. package/dist/handlers/project.handlers.d.ts.map +0 -1
  30. package/dist/handlers/project.handlers.js +0 -309
  31. package/dist/handlers/project.handlers.js.map +0 -1
  32. package/dist/handlers/requirement.handlers.d.ts +0 -32
  33. package/dist/handlers/requirement.handlers.d.ts.map +0 -1
  34. package/dist/handlers/requirement.handlers.js +0 -264
  35. package/dist/handlers/requirement.handlers.js.map +0 -1
  36. package/dist/handlers/status.handlers.d.ts +0 -12
  37. package/dist/handlers/status.handlers.d.ts.map +0 -1
  38. package/dist/handlers/status.handlers.js +0 -212
  39. package/dist/handlers/status.handlers.js.map +0 -1
  40. package/dist/handlers/task.handlers.d.ts +0 -29
  41. package/dist/handlers/task.handlers.d.ts.map +0 -1
  42. package/dist/handlers/task.handlers.js +0 -326
  43. package/dist/handlers/task.handlers.js.map +0 -1
  44. package/dist/handlers/types.d.ts +0 -10
  45. package/dist/handlers/types.d.ts.map +0 -1
  46. package/dist/handlers/types.js +0 -5
  47. package/dist/handlers/types.js.map +0 -1
  48. package/dist/handlers/update.handlers.d.ts +0 -16
  49. package/dist/handlers/update.handlers.d.ts.map +0 -1
  50. package/dist/handlers/update.handlers.js +0 -119
  51. package/dist/handlers/update.handlers.js.map +0 -1
  52. package/dist/services/auth.d.ts +0 -59
  53. package/dist/services/auth.d.ts.map +0 -1
  54. package/dist/services/auth.js +0 -549
  55. package/dist/services/auth.js.map +0 -1
  56. package/dist/services/claude.d.ts +0 -18
  57. package/dist/services/claude.d.ts.map +0 -1
  58. package/dist/services/claude.js +0 -164
  59. package/dist/services/claude.js.map +0 -1
  60. package/dist/services/credential-store.d.ts +0 -47
  61. package/dist/services/credential-store.d.ts.map +0 -1
  62. package/dist/services/credential-store.js +0 -89
  63. package/dist/services/credential-store.js.map +0 -1
  64. package/dist/services/internal/github-service.d.ts +0 -67
  65. package/dist/services/internal/github-service.d.ts.map +0 -1
  66. package/dist/services/internal/github-service.js +0 -81
  67. package/dist/services/internal/github-service.js.map +0 -1
  68. package/dist/services/internal/repository-service.d.ts +0 -79
  69. package/dist/services/internal/repository-service.d.ts.map +0 -1
  70. package/dist/services/internal/repository-service.js +0 -88
  71. package/dist/services/internal/repository-service.js.map +0 -1
  72. package/dist/services/oauth2-auth.d.ts +0 -76
  73. package/dist/services/oauth2-auth.d.ts.map +0 -1
  74. package/dist/services/oauth2-auth.js +0 -451
  75. package/dist/services/oauth2-auth.js.map +0 -1
  76. package/dist/services/project-service.d.ts +0 -24
  77. package/dist/services/project-service.d.ts.map +0 -1
  78. package/dist/services/project-service.js +0 -60
  79. package/dist/services/project-service.js.map +0 -1
  80. package/dist/services/requirement-service.d.ts +0 -32
  81. package/dist/services/requirement-service.d.ts.map +0 -1
  82. package/dist/services/requirement-service.js +0 -91
  83. package/dist/services/requirement-service.js.map +0 -1
  84. package/dist/services/task-service.d.ts +0 -22
  85. package/dist/services/task-service.d.ts.map +0 -1
  86. package/dist/services/task-service.js +0 -52
  87. package/dist/services/task-service.js.map +0 -1
  88. package/dist/types/api.d.ts +0 -16
  89. package/dist/types/api.d.ts.map +0 -1
  90. package/dist/types/api.js +0 -5
  91. package/dist/types/api.js.map +0 -1
  92. package/dist/types/auth.d.ts +0 -73
  93. package/dist/types/auth.d.ts.map +0 -1
  94. package/dist/types/auth.js +0 -2
  95. package/dist/types/auth.js.map +0 -1
  96. package/dist/types/claude.d.ts +0 -22
  97. package/dist/types/claude.d.ts.map +0 -1
  98. package/dist/types/claude.js +0 -2
  99. package/dist/types/claude.js.map +0 -1
  100. package/dist/types/github.d.ts +0 -105
  101. package/dist/types/github.d.ts.map +0 -1
  102. package/dist/types/github.js +0 -6
  103. package/dist/types/github.js.map +0 -1
  104. package/dist/types/local-project.d.ts +0 -30
  105. package/dist/types/local-project.d.ts.map +0 -1
  106. package/dist/types/local-project.js +0 -24
  107. package/dist/types/local-project.js.map +0 -1
  108. package/dist/types/project.d.ts +0 -56
  109. package/dist/types/project.d.ts.map +0 -1
  110. package/dist/types/project.js +0 -5
  111. package/dist/types/project.js.map +0 -1
  112. package/dist/types/requirement.d.ts +0 -69
  113. package/dist/types/requirement.d.ts.map +0 -1
  114. package/dist/types/requirement.js +0 -5
  115. package/dist/types/requirement.js.map +0 -1
  116. package/dist/types/task.d.ts +0 -44
  117. package/dist/types/task.d.ts.map +0 -1
  118. package/dist/types/task.js +0 -5
  119. package/dist/types/task.js.map +0 -1
  120. package/dist/utils/axios-retry.d.ts +0 -25
  121. package/dist/utils/axios-retry.d.ts.map +0 -1
  122. package/dist/utils/axios-retry.js +0 -174
  123. package/dist/utils/axios-retry.js.map +0 -1
  124. package/dist/utils/axios-with-auth.d.ts +0 -10
  125. package/dist/utils/axios-with-auth.d.ts.map +0 -1
  126. package/dist/utils/axios-with-auth.js +0 -118
  127. package/dist/utils/axios-with-auth.js.map +0 -1
  128. package/dist/utils/cli-tools.d.ts +0 -30
  129. package/dist/utils/cli-tools.d.ts.map +0 -1
  130. package/dist/utils/cli-tools.js +0 -199
  131. package/dist/utils/cli-tools.js.map +0 -1
  132. package/dist/utils/command-execution.d.ts +0 -30
  133. package/dist/utils/command-execution.d.ts.map +0 -1
  134. package/dist/utils/command-execution.js +0 -264
  135. package/dist/utils/command-execution.js.map +0 -1
  136. package/dist/utils/command-parser.d.ts +0 -85
  137. package/dist/utils/command-parser.d.ts.map +0 -1
  138. package/dist/utils/command-parser.js +0 -287
  139. package/dist/utils/command-parser.js.map +0 -1
  140. package/dist/utils/config.d.ts +0 -10
  141. package/dist/utils/config.d.ts.map +0 -1
  142. package/dist/utils/config.js +0 -77
  143. package/dist/utils/config.js.map +0 -1
  144. package/dist/utils/error-formatter.d.ts +0 -17
  145. package/dist/utils/error-formatter.d.ts.map +0 -1
  146. package/dist/utils/error-formatter.js +0 -115
  147. package/dist/utils/error-formatter.js.map +0 -1
  148. package/dist/utils/formatting.d.ts +0 -10
  149. package/dist/utils/formatting.d.ts.map +0 -1
  150. package/dist/utils/formatting.js +0 -122
  151. package/dist/utils/formatting.js.map +0 -1
  152. package/dist/utils/gh-installer.d.ts +0 -31
  153. package/dist/utils/gh-installer.d.ts.map +0 -1
  154. package/dist/utils/gh-installer.js +0 -296
  155. package/dist/utils/gh-installer.js.map +0 -1
  156. package/dist/utils/git-installer.d.ts +0 -31
  157. package/dist/utils/git-installer.d.ts.map +0 -1
  158. package/dist/utils/git-installer.js +0 -290
  159. package/dist/utils/git-installer.js.map +0 -1
  160. package/dist/utils/git.d.ts +0 -60
  161. package/dist/utils/git.d.ts.map +0 -1
  162. package/dist/utils/git.js +0 -144
  163. package/dist/utils/git.js.map +0 -1
  164. package/dist/utils/github-repo.d.ts +0 -43
  165. package/dist/utils/github-repo.d.ts.map +0 -1
  166. package/dist/utils/github-repo.js +0 -113
  167. package/dist/utils/github-repo.js.map +0 -1
  168. package/dist/utils/id-normalization.d.ts +0 -26
  169. package/dist/utils/id-normalization.d.ts.map +0 -1
  170. package/dist/utils/id-normalization.js +0 -45
  171. package/dist/utils/id-normalization.js.map +0 -1
  172. package/dist/utils/jwt.d.ts +0 -45
  173. package/dist/utils/jwt.d.ts.map +0 -1
  174. package/dist/utils/jwt.js +0 -64
  175. package/dist/utils/jwt.js.map +0 -1
  176. package/dist/utils/local-store.d.ts +0 -36
  177. package/dist/utils/local-store.d.ts.map +0 -1
  178. package/dist/utils/local-store.js +0 -94
  179. package/dist/utils/local-store.js.map +0 -1
  180. package/dist/utils/logger.d.ts +0 -36
  181. package/dist/utils/logger.d.ts.map +0 -1
  182. package/dist/utils/logger.js +0 -176
  183. package/dist/utils/logger.js.map +0 -1
  184. package/dist/utils/package-manager-installer.d.ts +0 -36
  185. package/dist/utils/package-manager-installer.d.ts.map +0 -1
  186. package/dist/utils/package-manager-installer.js +0 -106
  187. package/dist/utils/package-manager-installer.js.map +0 -1
  188. package/dist/utils/package-manager.d.ts +0 -31
  189. package/dist/utils/package-manager.d.ts.map +0 -1
  190. package/dist/utils/package-manager.js +0 -133
  191. package/dist/utils/package-manager.js.map +0 -1
  192. package/dist/utils/projects.d.ts +0 -23
  193. package/dist/utils/projects.d.ts.map +0 -1
  194. package/dist/utils/projects.js +0 -36
  195. package/dist/utils/projects.js.map +0 -1
  196. package/dist/utils/repository-access.d.ts +0 -89
  197. package/dist/utils/repository-access.d.ts.map +0 -1
  198. package/dist/utils/repository-access.js +0 -132
  199. package/dist/utils/repository-access.js.map +0 -1
  200. package/dist/utils/requirements.d.ts +0 -43
  201. package/dist/utils/requirements.d.ts.map +0 -1
  202. package/dist/utils/requirements.js +0 -79
  203. package/dist/utils/requirements.js.map +0 -1
  204. package/dist/utils/spinner.d.ts +0 -47
  205. package/dist/utils/spinner.d.ts.map +0 -1
  206. package/dist/utils/spinner.js +0 -101
  207. package/dist/utils/spinner.js.map +0 -1
  208. package/dist/utils/status-parser.d.ts +0 -95
  209. package/dist/utils/status-parser.d.ts.map +0 -1
  210. package/dist/utils/status-parser.js +0 -205
  211. package/dist/utils/status-parser.js.map +0 -1
  212. package/dist/utils/tasks.d.ts +0 -21
  213. package/dist/utils/tasks.d.ts.map +0 -1
  214. package/dist/utils/tasks.js +0 -63
  215. package/dist/utils/tasks.js.map +0 -1
  216. package/dist/utils/workspace-manager.d.ts +0 -65
  217. package/dist/utils/workspace-manager.d.ts.map +0 -1
  218. package/dist/utils/workspace-manager.js +0 -98
  219. package/dist/utils/workspace-manager.js.map +0 -1
@@ -1,36 +0,0 @@
1
- /**
2
- * Project Resource Handlers
3
- *
4
- * Handles all project-related commands:
5
- * - list: List all projects
6
- * - show: Show current project, specific project by ID, or projects for a repository
7
- * - create: Create a new project
8
- * - update: Update project information
9
- * - delete: Delete a project
10
- */
11
- import type { HandlerResult } from './types.js';
12
- export declare function handleProjectList(opts: {
13
- format?: string;
14
- page?: string;
15
- limit?: string;
16
- }): Promise<HandlerResult>;
17
- export declare function handleProjectShow(opts: {
18
- id?: string;
19
- repo?: string;
20
- repository?: string;
21
- format?: string;
22
- page?: string;
23
- limit?: string;
24
- }): Promise<HandlerResult>;
25
- export declare function handleProjectCreate(opts: {
26
- name: string;
27
- description?: string;
28
- }): Promise<HandlerResult>;
29
- export declare function handleProjectUpdate(id: string, opts: {
30
- name?: string;
31
- description?: string;
32
- }): Promise<HandlerResult>;
33
- export declare function handleProjectDelete(id: string, opts: {
34
- force?: boolean;
35
- }): Promise<HandlerResult>;
36
- //# sourceMappingURL=project.handlers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.handlers.d.ts","sourceRoot":"","sources":["../../src/handlers/project.handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAuBhD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,aAAa,CAAC,CA8DzB;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC7C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,aAAa,CAAC,CAiJzB;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,aAAa,CAAC,CA4BzB;AAED,wBAAsB,mBAAmB,CACxC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IACL,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB,GACC,OAAO,CAAC,aAAa,CAAC,CAuCxB;AAED,wBAAsB,mBAAmB,CACxC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACvB,OAAO,CAAC,aAAa,CAAC,CAmCxB"}
@@ -1,309 +0,0 @@
1
- /**
2
- * Project Resource Handlers
3
- *
4
- * Handles all project-related commands:
5
- * - list: List all projects
6
- * - show: Show current project, specific project by ID, or projects for a repository
7
- * - create: Create a new project
8
- * - update: Update project information
9
- * - delete: Delete a project
10
- */
11
- import chalk from 'chalk';
12
- import { ProjectService } from '../services/project-service.js';
13
- import { BraingridAuth } from '../services/auth.js';
14
- import { getConfig } from '../utils/config.js';
15
- import { formatError, getResourceContext } from '../utils/error-formatter.js';
16
- import { parseProjectId } from '../utils/projects.js';
17
- import { workspaceManager } from '../utils/workspace-manager.js';
18
- /**
19
- * Format pagination or total count display for project list responses
20
- */
21
- function formatProjectListPagination(response) {
22
- if ('pagination' in response) {
23
- const totalPages = Math.ceil(response.pagination.total / response.pagination.limit);
24
- return `Page ${response.pagination.page} of ${totalPages} (${response.pagination.total} total)`;
25
- }
26
- return `Total: ${response.total_count || response.projects.length}`;
27
- }
28
- function getServices() {
29
- const config = getConfig();
30
- const auth = new BraingridAuth(config.apiUrl);
31
- const projectService = new ProjectService(config.apiUrl, auth);
32
- return { projectService, auth };
33
- }
34
- export async function handleProjectList(opts) {
35
- try {
36
- const { projectService, auth } = getServices();
37
- // Check authentication
38
- const isAuthenticated = await auth.isAuthenticated();
39
- if (!isAuthenticated) {
40
- return {
41
- success: false,
42
- message: chalk.red('❌ Not authenticated. Please run `braingrid login` first.'),
43
- };
44
- }
45
- const response = await projectService.listProjects({
46
- page: opts.page ? parseInt(opts.page, 10) : 1,
47
- limit: opts.limit ? parseInt(opts.limit, 10) : 20,
48
- });
49
- if (opts.format === 'json') {
50
- return {
51
- success: true,
52
- message: JSON.stringify(response, null, 2),
53
- data: response,
54
- };
55
- }
56
- // Table format
57
- if (response.projects.length === 0) {
58
- return {
59
- success: true,
60
- message: chalk.yellow('No projects found.'),
61
- data: response,
62
- };
63
- }
64
- let output = chalk.bold('📋 Projects\n\n');
65
- output +=
66
- 'ID Short ID Name Created\n';
67
- output += '─'.repeat(100) + '\n';
68
- for (const project of response.projects) {
69
- const id = project.id.padEnd(36);
70
- const shortId = project.short_id.padEnd(11);
71
- const name = project.name.substring(0, 28).padEnd(28);
72
- const created = new Date(project.created_at).toLocaleDateString();
73
- output += `${id} ${shortId} ${name} ${created}\n`;
74
- }
75
- output += '\n';
76
- output += formatProjectListPagination(response);
77
- return {
78
- success: true,
79
- message: output,
80
- data: response,
81
- };
82
- }
83
- catch (error) {
84
- return {
85
- success: false,
86
- message: chalk.red(`❌ ${formatError(error, 'listing projects')}`),
87
- };
88
- }
89
- }
90
- export async function handleProjectShow(opts) {
91
- try {
92
- const { projectService, auth } = getServices();
93
- // Check authentication
94
- const isAuthenticated = await auth.isAuthenticated();
95
- if (!isAuthenticated) {
96
- return {
97
- success: false,
98
- message: chalk.red('❌ Not authenticated. Please run `braingrid login` first.'),
99
- };
100
- }
101
- // Case 1: Specific project ID provided - show that project
102
- if (opts.id) {
103
- const normalizedId = parseProjectId(opts.id);
104
- const project = await projectService.getProject(normalizedId);
105
- if (opts.format === 'json') {
106
- return {
107
- success: true,
108
- message: JSON.stringify(project, null, 2),
109
- data: project,
110
- };
111
- }
112
- let output = chalk.bold(`\n📁 Project: ${project.name}\n\n`);
113
- output += `${chalk.bold('ID:')} ${project.id}\n`;
114
- output += `${chalk.bold('Short ID:')} ${project.short_id}\n`;
115
- output += `${chalk.bold('Name:')} ${project.name}\n`;
116
- if (project.description) {
117
- output += `${chalk.bold('Description:')} ${project.description}\n`;
118
- }
119
- output += `${chalk.bold('Created:')} ${new Date(project.created_at).toLocaleString()}\n`;
120
- output += `${chalk.bold('Updated:')} ${new Date(project.updated_at).toLocaleString()}\n`;
121
- return {
122
- success: true,
123
- message: output,
124
- data: project,
125
- };
126
- }
127
- // Case 2: Repository flag provided - list all projects for that repository
128
- const repoInput = opts.repository || opts.repo;
129
- if (repoInput) {
130
- const parts = repoInput.split('/');
131
- if (parts.length !== 2) {
132
- return {
133
- success: false,
134
- message: chalk.red('❌ Invalid repository format. Use: --repository owner/name (e.g., --repository microsoft/vscode)'),
135
- };
136
- }
137
- const [repositoryOwner, repositoryName] = parts;
138
- const response = await projectService.listProjects({
139
- repository_owner: repositoryOwner,
140
- repository_name: repositoryName,
141
- page: opts.page ? parseInt(opts.page, 10) : 1,
142
- limit: opts.limit ? parseInt(opts.limit, 10) : 20,
143
- });
144
- if (opts.format === 'json') {
145
- return {
146
- success: true,
147
- message: JSON.stringify(response, null, 2),
148
- data: response,
149
- };
150
- }
151
- // Table format
152
- const repoDisplay = chalk.cyan(`${repositoryOwner}/${repositoryName}`);
153
- if (response.projects.length === 0) {
154
- return {
155
- success: true,
156
- message: chalk.yellow(`No projects found for repository ${repoDisplay}`),
157
- };
158
- }
159
- let output = chalk.bold(`📋 Projects for ${repoDisplay}\n\n`);
160
- output +=
161
- 'ID Short ID Name Created\n';
162
- output += '─'.repeat(100) + '\n';
163
- for (const project of response.projects) {
164
- const id = project.id.padEnd(36);
165
- const shortId = project.short_id.padEnd(11);
166
- const name = project.name.substring(0, 28).padEnd(28);
167
- const created = new Date(project.created_at).toLocaleDateString();
168
- output += `${id} ${shortId} ${name} ${created}\n`;
169
- }
170
- output += '\n';
171
- output += formatProjectListPagination(response);
172
- return {
173
- success: true,
174
- message: output,
175
- data: response,
176
- };
177
- }
178
- // Case 3: No arguments - show initialized project from workspace
179
- const workspace = await workspaceManager.getProject();
180
- if (!workspace.success) {
181
- return {
182
- success: false,
183
- message: workspace.error,
184
- };
185
- }
186
- const project = await projectService.getProject(workspace.projectId);
187
- if (opts.format === 'json') {
188
- return {
189
- success: true,
190
- message: JSON.stringify(project, null, 2),
191
- data: project,
192
- };
193
- }
194
- let output = chalk.bold(`\n📁 Project: ${project.name}\n\n`);
195
- output += `${chalk.bold('ID:')} ${project.id}\n`;
196
- output += `${chalk.bold('Short ID:')} ${project.short_id}\n`;
197
- output += `${chalk.bold('Name:')} ${project.name}\n`;
198
- if (project.description) {
199
- output += `${chalk.bold('Description:')} ${project.description}\n`;
200
- }
201
- output += `${chalk.bold('Created:')} ${new Date(project.created_at).toLocaleString()}\n`;
202
- output += `${chalk.bold('Updated:')} ${new Date(project.updated_at).toLocaleString()}\n`;
203
- return {
204
- success: true,
205
- message: output,
206
- data: project,
207
- };
208
- }
209
- catch (error) {
210
- return {
211
- success: false,
212
- message: chalk.red(`❌ ${formatError(error, 'showing project')}`),
213
- };
214
- }
215
- }
216
- export async function handleProjectCreate(opts) {
217
- try {
218
- const { projectService, auth } = getServices();
219
- const isAuthenticated = await auth.isAuthenticated();
220
- if (!isAuthenticated) {
221
- return {
222
- success: false,
223
- message: chalk.red('❌ Not authenticated. Please run `braingrid login` first.'),
224
- };
225
- }
226
- const project = await projectService.createProject({
227
- name: opts.name,
228
- description: opts.description,
229
- });
230
- return {
231
- success: true,
232
- message: chalk.green(`✅ Created project ${project.short_id}: ${project.name}`),
233
- data: project,
234
- };
235
- }
236
- catch (error) {
237
- return {
238
- success: false,
239
- message: chalk.red(`❌ ${formatError(error, 'creating project')}`),
240
- };
241
- }
242
- }
243
- export async function handleProjectUpdate(id, opts) {
244
- try {
245
- const { projectService, auth } = getServices();
246
- const isAuthenticated = await auth.isAuthenticated();
247
- if (!isAuthenticated) {
248
- return {
249
- success: false,
250
- message: chalk.red('❌ Not authenticated. Please run `braingrid login` first.'),
251
- };
252
- }
253
- if (!opts.name && !opts.description) {
254
- return {
255
- success: false,
256
- message: chalk.red('❌ Please provide at least one field to update (--name or --description)'),
257
- };
258
- }
259
- // Normalize the project ID
260
- const normalizedId = parseProjectId(id);
261
- const project = await projectService.updateProject(normalizedId, {
262
- name: opts.name,
263
- description: opts.description,
264
- });
265
- return {
266
- success: true,
267
- message: chalk.green(`✅ Updated project ${project.short_id}: ${project.name}`),
268
- data: project,
269
- };
270
- }
271
- catch (error) {
272
- return {
273
- success: false,
274
- message: chalk.red(`❌ ${formatError(error, getResourceContext('project', id))}`),
275
- };
276
- }
277
- }
278
- export async function handleProjectDelete(id, opts) {
279
- try {
280
- const { projectService, auth } = getServices();
281
- const isAuthenticated = await auth.isAuthenticated();
282
- if (!isAuthenticated) {
283
- return {
284
- success: false,
285
- message: chalk.red('❌ Not authenticated. Please run `braingrid login` first.'),
286
- };
287
- }
288
- if (!opts.force) {
289
- return {
290
- success: false,
291
- message: chalk.yellow('⚠️ Deleting a project is permanent. Use --force to confirm deletion.'),
292
- };
293
- }
294
- // Normalize the project ID
295
- const normalizedId = parseProjectId(id);
296
- await projectService.deleteProject(normalizedId);
297
- return {
298
- success: true,
299
- message: chalk.green(`✅ Deleted project ${id}`),
300
- };
301
- }
302
- catch (error) {
303
- return {
304
- success: false,
305
- message: chalk.red(`❌ ${formatError(error, getResourceContext('project', id))}`),
306
- };
307
- }
308
- }
309
- //# sourceMappingURL=project.handlers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.handlers.js","sourceRoot":"","sources":["../../src/handlers/project.handlers.ts"],"names":[],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- /**
2
- * Requirement Resource Handlers
3
- *
4
- * Handles all requirement-related commands:
5
- * - list: List all requirements
6
- * - show: Show requirement details
7
- * - create: Create a new requirement
8
- * - update: Update requirement information
9
- * - delete: Delete a requirement
10
- */
11
- import type { HandlerResult } from './types.js';
12
- export declare function handleRequirementList(opts: {
13
- project?: string;
14
- status?: string;
15
- format?: string;
16
- page?: string;
17
- limit?: string;
18
- }): Promise<HandlerResult>;
19
- export declare function handleRequirementShow(id: string): Promise<HandlerResult>;
20
- export declare function handleRequirementCreate(opts: {
21
- project?: string;
22
- prompt: string;
23
- repositories?: string;
24
- }): Promise<HandlerResult>;
25
- export declare function handleRequirementUpdate(id: string, opts: {
26
- status?: string;
27
- name?: string;
28
- }): Promise<HandlerResult>;
29
- export declare function handleRequirementDelete(id: string, opts: {
30
- force?: boolean;
31
- }): Promise<HandlerResult>;
32
- //# sourceMappingURL=requirement.handlers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"requirement.handlers.d.ts","sourceRoot":"","sources":["../../src/handlers/requirement.handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAgChD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,aAAa,CAAC,CAyEzB;AAED,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAuD9E;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,aAAa,CAAC,CAyCzB;AAED,wBAAsB,uBAAuB,CAC5C,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IACL,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,GACC,OAAO,CAAC,aAAa,CAAC,CAqCxB;AAED,wBAAsB,uBAAuB,CAC5C,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACvB,OAAO,CAAC,aAAa,CAAC,CAmCxB"}
@@ -1,264 +0,0 @@
1
- /**
2
- * Requirement Resource Handlers
3
- *
4
- * Handles all requirement-related commands:
5
- * - list: List all requirements
6
- * - show: Show requirement details
7
- * - create: Create a new requirement
8
- * - update: Update requirement information
9
- * - delete: Delete a requirement
10
- */
11
- import chalk from 'chalk';
12
- import { RequirementService } from '../services/requirement-service.js';
13
- import { BraingridAuth } from '../services/auth.js';
14
- import { getConfig } from '../utils/config.js';
15
- import { formatError, getResourceContext } from '../utils/error-formatter.js';
16
- import { workspaceManager } from '../utils/workspace-manager.js';
17
- import { normalizeRequirementId } from '../utils/requirements.js';
18
- function getServices() {
19
- const config = getConfig();
20
- const auth = new BraingridAuth(config.apiUrl);
21
- const requirementService = new RequirementService(config.apiUrl, auth);
22
- return { requirementService, auth };
23
- }
24
- function getStatusEmoji(status) {
25
- switch (status) {
26
- case 'IDEA':
27
- return '💡';
28
- case 'PLANNED':
29
- return '📝';
30
- case 'IN_PROGRESS':
31
- return '🚧';
32
- case 'REVIEW':
33
- return '👀';
34
- case 'COMPLETED':
35
- return '✅';
36
- case 'CANCELLED':
37
- return '❌';
38
- default:
39
- return '📋';
40
- }
41
- }
42
- export async function handleRequirementList(opts) {
43
- try {
44
- const { requirementService, auth } = getServices();
45
- const isAuthenticated = await auth.isAuthenticated();
46
- if (!isAuthenticated) {
47
- return {
48
- success: false,
49
- message: chalk.red('❌ Not authenticated. Please run `braingrid login` first.'),
50
- };
51
- }
52
- // Get project ID from workspace
53
- const workspace = await workspaceManager.getProject(opts.project);
54
- if (!workspace.success) {
55
- return {
56
- success: false,
57
- message: workspace.error,
58
- };
59
- }
60
- const projectId = workspace.projectId;
61
- const response = await requirementService.listProjectRequirements(projectId, {
62
- status: opts.status,
63
- page: opts.page ? parseInt(opts.page, 10) : 1,
64
- limit: opts.limit ? parseInt(opts.limit, 10) : 20,
65
- });
66
- if (opts.format === 'json') {
67
- return {
68
- success: true,
69
- message: JSON.stringify(response, null, 2),
70
- data: response,
71
- };
72
- }
73
- // Table format
74
- if (response.requirements.length === 0) {
75
- return {
76
- success: true,
77
- message: chalk.yellow('No requirements found.'),
78
- };
79
- }
80
- let output = chalk.bold('📋 Requirements\n\n');
81
- output += 'Short ID Status Name Complexity Progress\n';
82
- output += '─'.repeat(90) + '\n';
83
- for (const req of response.requirements) {
84
- const shortId = (req.short_id || req.id.slice(0, 11)).padEnd(11);
85
- const statusEmoji = getStatusEmoji(req.status);
86
- const statusText = req.status.padEnd(12);
87
- const name = req.name.substring(0, 28).padEnd(28);
88
- const complexity = `${req.complexity}/5`.padEnd(10);
89
- const progress = req.task_progress ? `${req.task_progress.progress_percentage}%` : 'N/A';
90
- output += `${shortId} ${statusEmoji} ${statusText} ${name} ${complexity} ${progress}\n`;
91
- }
92
- output += '\n';
93
- output += `Page ${response.pagination.page} of ${Math.ceil(response.pagination.total / response.pagination.limit)}`;
94
- output += ` (${response.pagination.total} total)`;
95
- return {
96
- success: true,
97
- message: output,
98
- data: response,
99
- };
100
- }
101
- catch (error) {
102
- return {
103
- success: false,
104
- message: chalk.red(`❌ ${formatError(error, 'listing requirements')}`),
105
- };
106
- }
107
- }
108
- export async function handleRequirementShow(id) {
109
- try {
110
- const { requirementService, auth } = getServices();
111
- const isAuthenticated = await auth.isAuthenticated();
112
- if (!isAuthenticated) {
113
- return {
114
- success: false,
115
- message: chalk.red('❌ Not authenticated. Please run `braingrid login` first.'),
116
- };
117
- }
118
- // Normalize the requirement ID
119
- const normalizedId = normalizeRequirementId(id);
120
- const requirement = await requirementService.getRequirement(normalizedId);
121
- const statusEmoji = getStatusEmoji(requirement.status);
122
- let output = chalk.bold(`\n${statusEmoji} Requirement: ${requirement.name}\n\n`);
123
- output += `${chalk.bold('ID:')} ${requirement.id}\n`;
124
- output += `${chalk.bold('Short ID:')} ${requirement.short_id}\n`;
125
- output += `${chalk.bold('Name:')} ${requirement.name}\n`;
126
- output += `${chalk.bold('Status:')} ${requirement.status}\n`;
127
- output += `${chalk.bold('Complexity:')} ${requirement.complexity}/5\n`;
128
- output += `${chalk.bold('Readiness:')} ${requirement.readiness}/5\n`;
129
- if (requirement.description) {
130
- output += `${chalk.bold('Description:')}\n${requirement.description}\n\n`;
131
- }
132
- if (requirement.task_progress) {
133
- output += `${chalk.bold('Progress:')} ${requirement.task_progress.completed}/${requirement.task_progress.total} tasks (${requirement.task_progress.progress_percentage}%)\n`;
134
- }
135
- if (requirement.assignee) {
136
- output += `${chalk.bold('Assigned to:')} ${requirement.assignee.first_name} ${requirement.assignee.last_name} (${requirement.assignee.email})\n`;
137
- }
138
- output += `${chalk.bold('Created:')} ${new Date(requirement.created_at).toLocaleString()}\n`;
139
- output += `${chalk.bold('Updated:')} ${new Date(requirement.updated_at).toLocaleString()}\n`;
140
- if (requirement.tasks && requirement.tasks.length > 0) {
141
- output += `\n${chalk.bold('Tasks:')}\n`;
142
- for (const task of requirement.tasks) {
143
- const taskEmoji = getStatusEmoji(task.status);
144
- output += ` ${taskEmoji} ${task.number}. ${task.title} (${task.status})\n`;
145
- }
146
- }
147
- return {
148
- success: true,
149
- message: output,
150
- data: requirement,
151
- };
152
- }
153
- catch (error) {
154
- return {
155
- success: false,
156
- message: chalk.red(`❌ ${formatError(error, getResourceContext('requirement', id))}`),
157
- };
158
- }
159
- }
160
- export async function handleRequirementCreate(opts) {
161
- try {
162
- const { requirementService, auth } = getServices();
163
- const isAuthenticated = await auth.isAuthenticated();
164
- if (!isAuthenticated) {
165
- return {
166
- success: false,
167
- message: chalk.red('❌ Not authenticated. Please run `braingrid login` first.'),
168
- };
169
- }
170
- // Get project ID from workspace
171
- const workspace = await workspaceManager.getProject(opts.project);
172
- if (!workspace.success) {
173
- return {
174
- success: false,
175
- message: workspace.error,
176
- };
177
- }
178
- const projectId = workspace.projectId;
179
- const repositories = opts.repositories ? opts.repositories.split(',').map(r => r.trim()) : [];
180
- const requirement = await requirementService.createProjectRequirement(projectId, {
181
- prompt: opts.prompt,
182
- repositories,
183
- return_content: 0,
184
- });
185
- return {
186
- success: true,
187
- message: chalk.green(`✅ Created requirement ${requirement.short_id}: ${requirement.name}`),
188
- data: requirement,
189
- };
190
- }
191
- catch (error) {
192
- return {
193
- success: false,
194
- message: chalk.red(`❌ ${formatError(error, 'creating requirement')}`),
195
- };
196
- }
197
- }
198
- export async function handleRequirementUpdate(id, opts) {
199
- try {
200
- const { requirementService, auth } = getServices();
201
- const isAuthenticated = await auth.isAuthenticated();
202
- if (!isAuthenticated) {
203
- return {
204
- success: false,
205
- message: chalk.red('❌ Not authenticated. Please run `braingrid login` first.'),
206
- };
207
- }
208
- if (!opts.status && !opts.name) {
209
- return {
210
- success: false,
211
- message: chalk.red('❌ Please provide at least one field to update (--status or --name)'),
212
- };
213
- }
214
- // Normalize the requirement ID
215
- const normalizedId = normalizeRequirementId(id);
216
- const requirement = await requirementService.updateRequirement(normalizedId, {
217
- status: opts.status,
218
- name: opts.name,
219
- });
220
- return {
221
- success: true,
222
- message: chalk.green(`✅ Updated requirement ${requirement.short_id}: ${requirement.name}`),
223
- data: requirement,
224
- };
225
- }
226
- catch (error) {
227
- return {
228
- success: false,
229
- message: chalk.red(`❌ ${formatError(error, getResourceContext('requirement', id))}`),
230
- };
231
- }
232
- }
233
- export async function handleRequirementDelete(id, opts) {
234
- try {
235
- const { requirementService, auth } = getServices();
236
- const isAuthenticated = await auth.isAuthenticated();
237
- if (!isAuthenticated) {
238
- return {
239
- success: false,
240
- message: chalk.red('❌ Not authenticated. Please run `braingrid login` first.'),
241
- };
242
- }
243
- if (!opts.force) {
244
- return {
245
- success: false,
246
- message: chalk.yellow('⚠️ Deleting a requirement is permanent. Use --force to confirm deletion.'),
247
- };
248
- }
249
- // Normalize the requirement ID
250
- const normalizedId = normalizeRequirementId(id);
251
- await requirementService.deleteRequirement(normalizedId);
252
- return {
253
- success: true,
254
- message: chalk.green(`✅ Deleted requirement ${id}`),
255
- };
256
- }
257
- catch (error) {
258
- return {
259
- success: false,
260
- message: chalk.red(`❌ ${formatError(error, getResourceContext('requirement', id))}`),
261
- };
262
- }
263
- }
264
- //# sourceMappingURL=requirement.handlers.js.map