@braingrid/cli 0.1.3 → 0.2.1

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 (243) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +54 -39
  3. package/dist/chunk-KNVWIF3L.js +401 -0
  4. package/dist/chunk-KNVWIF3L.js.map +1 -0
  5. package/dist/cli.js +6229 -290
  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 +40 -13
  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/agent.handlers.d.ts +0 -12
  17. package/dist/handlers/agent.handlers.d.ts.map +0 -1
  18. package/dist/handlers/agent.handlers.js +0 -130
  19. package/dist/handlers/agent.handlers.js.map +0 -1
  20. package/dist/handlers/auth.handlers.d.ts +0 -19
  21. package/dist/handlers/auth.handlers.d.ts.map +0 -1
  22. package/dist/handlers/auth.handlers.js +0 -177
  23. package/dist/handlers/auth.handlers.js.map +0 -1
  24. package/dist/handlers/index.d.ts +0 -14
  25. package/dist/handlers/index.d.ts.map +0 -1
  26. package/dist/handlers/index.js +0 -14
  27. package/dist/handlers/index.js.map +0 -1
  28. package/dist/handlers/init.handlers.d.ts +0 -10
  29. package/dist/handlers/init.handlers.d.ts.map +0 -1
  30. package/dist/handlers/init.handlers.js +0 -638
  31. package/dist/handlers/init.handlers.js.map +0 -1
  32. package/dist/handlers/project.handlers.d.ts +0 -36
  33. package/dist/handlers/project.handlers.d.ts.map +0 -1
  34. package/dist/handlers/project.handlers.js +0 -309
  35. package/dist/handlers/project.handlers.js.map +0 -1
  36. package/dist/handlers/requirement.handlers.d.ts +0 -32
  37. package/dist/handlers/requirement.handlers.d.ts.map +0 -1
  38. package/dist/handlers/requirement.handlers.js +0 -264
  39. package/dist/handlers/requirement.handlers.js.map +0 -1
  40. package/dist/handlers/status.handlers.d.ts +0 -12
  41. package/dist/handlers/status.handlers.d.ts.map +0 -1
  42. package/dist/handlers/status.handlers.js +0 -212
  43. package/dist/handlers/status.handlers.js.map +0 -1
  44. package/dist/handlers/task.handlers.d.ts +0 -29
  45. package/dist/handlers/task.handlers.d.ts.map +0 -1
  46. package/dist/handlers/task.handlers.js +0 -326
  47. package/dist/handlers/task.handlers.js.map +0 -1
  48. package/dist/handlers/types.d.ts +0 -10
  49. package/dist/handlers/types.d.ts.map +0 -1
  50. package/dist/handlers/types.js +0 -5
  51. package/dist/handlers/types.js.map +0 -1
  52. package/dist/handlers/update.handlers.d.ts +0 -16
  53. package/dist/handlers/update.handlers.d.ts.map +0 -1
  54. package/dist/handlers/update.handlers.js +0 -119
  55. package/dist/handlers/update.handlers.js.map +0 -1
  56. package/dist/rpc/registry.d.ts +0 -97
  57. package/dist/rpc/registry.d.ts.map +0 -1
  58. package/dist/rpc/registry.js +0 -119
  59. package/dist/rpc/registry.js.map +0 -1
  60. package/dist/rpc/server.d.ts +0 -78
  61. package/dist/rpc/server.d.ts.map +0 -1
  62. package/dist/rpc/server.js +0 -437
  63. package/dist/rpc/server.js.map +0 -1
  64. package/dist/rpc/transport.d.ts +0 -84
  65. package/dist/rpc/transport.d.ts.map +0 -1
  66. package/dist/rpc/transport.js +0 -296
  67. package/dist/rpc/transport.js.map +0 -1
  68. package/dist/services/__mocks__/utils.d.ts +0 -16
  69. package/dist/services/__mocks__/utils.d.ts.map +0 -1
  70. package/dist/services/__mocks__/utils.js +0 -21
  71. package/dist/services/__mocks__/utils.js.map +0 -1
  72. package/dist/services/agent-service.d.ts +0 -29
  73. package/dist/services/agent-service.d.ts.map +0 -1
  74. package/dist/services/agent-service.js +0 -273
  75. package/dist/services/agent-service.js.map +0 -1
  76. package/dist/services/auth.d.ts +0 -59
  77. package/dist/services/auth.d.ts.map +0 -1
  78. package/dist/services/auth.js +0 -549
  79. package/dist/services/auth.js.map +0 -1
  80. package/dist/services/claude.d.ts +0 -18
  81. package/dist/services/claude.d.ts.map +0 -1
  82. package/dist/services/claude.js +0 -164
  83. package/dist/services/claude.js.map +0 -1
  84. package/dist/services/credential-store.d.ts +0 -47
  85. package/dist/services/credential-store.d.ts.map +0 -1
  86. package/dist/services/credential-store.js +0 -89
  87. package/dist/services/credential-store.js.map +0 -1
  88. package/dist/services/internal/github-service.d.ts +0 -67
  89. package/dist/services/internal/github-service.d.ts.map +0 -1
  90. package/dist/services/internal/github-service.js +0 -81
  91. package/dist/services/internal/github-service.js.map +0 -1
  92. package/dist/services/internal/repository-service.d.ts +0 -79
  93. package/dist/services/internal/repository-service.d.ts.map +0 -1
  94. package/dist/services/internal/repository-service.js +0 -88
  95. package/dist/services/internal/repository-service.js.map +0 -1
  96. package/dist/services/oauth2-auth.d.ts +0 -76
  97. package/dist/services/oauth2-auth.d.ts.map +0 -1
  98. package/dist/services/oauth2-auth.js +0 -451
  99. package/dist/services/oauth2-auth.js.map +0 -1
  100. package/dist/services/project-service.d.ts +0 -24
  101. package/dist/services/project-service.d.ts.map +0 -1
  102. package/dist/services/project-service.js +0 -60
  103. package/dist/services/project-service.js.map +0 -1
  104. package/dist/services/requirement-service.d.ts +0 -32
  105. package/dist/services/requirement-service.d.ts.map +0 -1
  106. package/dist/services/requirement-service.js +0 -91
  107. package/dist/services/requirement-service.js.map +0 -1
  108. package/dist/services/task-service.d.ts +0 -22
  109. package/dist/services/task-service.d.ts.map +0 -1
  110. package/dist/services/task-service.js +0 -52
  111. package/dist/services/task-service.js.map +0 -1
  112. package/dist/types/api.d.ts +0 -16
  113. package/dist/types/api.d.ts.map +0 -1
  114. package/dist/types/api.js +0 -5
  115. package/dist/types/api.js.map +0 -1
  116. package/dist/types/auth.d.ts +0 -73
  117. package/dist/types/auth.d.ts.map +0 -1
  118. package/dist/types/auth.js +0 -2
  119. package/dist/types/auth.js.map +0 -1
  120. package/dist/types/claude.d.ts +0 -22
  121. package/dist/types/claude.d.ts.map +0 -1
  122. package/dist/types/claude.js +0 -2
  123. package/dist/types/claude.js.map +0 -1
  124. package/dist/types/github.d.ts +0 -105
  125. package/dist/types/github.d.ts.map +0 -1
  126. package/dist/types/github.js +0 -6
  127. package/dist/types/github.js.map +0 -1
  128. package/dist/types/local-project.d.ts +0 -30
  129. package/dist/types/local-project.d.ts.map +0 -1
  130. package/dist/types/local-project.js +0 -24
  131. package/dist/types/local-project.js.map +0 -1
  132. package/dist/types/project.d.ts +0 -56
  133. package/dist/types/project.d.ts.map +0 -1
  134. package/dist/types/project.js +0 -5
  135. package/dist/types/project.js.map +0 -1
  136. package/dist/types/requirement.d.ts +0 -69
  137. package/dist/types/requirement.d.ts.map +0 -1
  138. package/dist/types/requirement.js +0 -5
  139. package/dist/types/requirement.js.map +0 -1
  140. package/dist/types/task.d.ts +0 -44
  141. package/dist/types/task.d.ts.map +0 -1
  142. package/dist/types/task.js +0 -5
  143. package/dist/types/task.js.map +0 -1
  144. package/dist/utils/axios-retry.d.ts +0 -25
  145. package/dist/utils/axios-retry.d.ts.map +0 -1
  146. package/dist/utils/axios-retry.js +0 -174
  147. package/dist/utils/axios-retry.js.map +0 -1
  148. package/dist/utils/axios-with-auth.d.ts +0 -10
  149. package/dist/utils/axios-with-auth.d.ts.map +0 -1
  150. package/dist/utils/axios-with-auth.js +0 -118
  151. package/dist/utils/axios-with-auth.js.map +0 -1
  152. package/dist/utils/cli-tools.d.ts +0 -30
  153. package/dist/utils/cli-tools.d.ts.map +0 -1
  154. package/dist/utils/cli-tools.js +0 -199
  155. package/dist/utils/cli-tools.js.map +0 -1
  156. package/dist/utils/command-execution.d.ts +0 -30
  157. package/dist/utils/command-execution.d.ts.map +0 -1
  158. package/dist/utils/command-execution.js +0 -264
  159. package/dist/utils/command-execution.js.map +0 -1
  160. package/dist/utils/command-parser.d.ts +0 -85
  161. package/dist/utils/command-parser.d.ts.map +0 -1
  162. package/dist/utils/command-parser.js +0 -287
  163. package/dist/utils/command-parser.js.map +0 -1
  164. package/dist/utils/config.d.ts +0 -10
  165. package/dist/utils/config.d.ts.map +0 -1
  166. package/dist/utils/config.js +0 -77
  167. package/dist/utils/config.js.map +0 -1
  168. package/dist/utils/error-formatter.d.ts +0 -17
  169. package/dist/utils/error-formatter.d.ts.map +0 -1
  170. package/dist/utils/error-formatter.js +0 -115
  171. package/dist/utils/error-formatter.js.map +0 -1
  172. package/dist/utils/formatting.d.ts +0 -10
  173. package/dist/utils/formatting.d.ts.map +0 -1
  174. package/dist/utils/formatting.js +0 -122
  175. package/dist/utils/formatting.js.map +0 -1
  176. package/dist/utils/gh-installer.d.ts +0 -31
  177. package/dist/utils/gh-installer.d.ts.map +0 -1
  178. package/dist/utils/gh-installer.js +0 -296
  179. package/dist/utils/gh-installer.js.map +0 -1
  180. package/dist/utils/git-installer.d.ts +0 -31
  181. package/dist/utils/git-installer.d.ts.map +0 -1
  182. package/dist/utils/git-installer.js +0 -290
  183. package/dist/utils/git-installer.js.map +0 -1
  184. package/dist/utils/git.d.ts +0 -60
  185. package/dist/utils/git.d.ts.map +0 -1
  186. package/dist/utils/git.js +0 -144
  187. package/dist/utils/git.js.map +0 -1
  188. package/dist/utils/github-repo.d.ts +0 -43
  189. package/dist/utils/github-repo.d.ts.map +0 -1
  190. package/dist/utils/github-repo.js +0 -113
  191. package/dist/utils/github-repo.js.map +0 -1
  192. package/dist/utils/id-normalization.d.ts +0 -26
  193. package/dist/utils/id-normalization.d.ts.map +0 -1
  194. package/dist/utils/id-normalization.js +0 -45
  195. package/dist/utils/id-normalization.js.map +0 -1
  196. package/dist/utils/jwt.d.ts +0 -45
  197. package/dist/utils/jwt.d.ts.map +0 -1
  198. package/dist/utils/jwt.js +0 -64
  199. package/dist/utils/jwt.js.map +0 -1
  200. package/dist/utils/local-store.d.ts +0 -36
  201. package/dist/utils/local-store.d.ts.map +0 -1
  202. package/dist/utils/local-store.js +0 -94
  203. package/dist/utils/local-store.js.map +0 -1
  204. package/dist/utils/logger.d.ts +0 -36
  205. package/dist/utils/logger.d.ts.map +0 -1
  206. package/dist/utils/logger.js +0 -176
  207. package/dist/utils/logger.js.map +0 -1
  208. package/dist/utils/package-manager-installer.d.ts +0 -36
  209. package/dist/utils/package-manager-installer.d.ts.map +0 -1
  210. package/dist/utils/package-manager-installer.js +0 -106
  211. package/dist/utils/package-manager-installer.js.map +0 -1
  212. package/dist/utils/package-manager.d.ts +0 -31
  213. package/dist/utils/package-manager.d.ts.map +0 -1
  214. package/dist/utils/package-manager.js +0 -133
  215. package/dist/utils/package-manager.js.map +0 -1
  216. package/dist/utils/projects.d.ts +0 -23
  217. package/dist/utils/projects.d.ts.map +0 -1
  218. package/dist/utils/projects.js +0 -36
  219. package/dist/utils/projects.js.map +0 -1
  220. package/dist/utils/repository-access.d.ts +0 -89
  221. package/dist/utils/repository-access.d.ts.map +0 -1
  222. package/dist/utils/repository-access.js +0 -132
  223. package/dist/utils/repository-access.js.map +0 -1
  224. package/dist/utils/requirements.d.ts +0 -43
  225. package/dist/utils/requirements.d.ts.map +0 -1
  226. package/dist/utils/requirements.js +0 -79
  227. package/dist/utils/requirements.js.map +0 -1
  228. package/dist/utils/spinner.d.ts +0 -47
  229. package/dist/utils/spinner.d.ts.map +0 -1
  230. package/dist/utils/spinner.js +0 -101
  231. package/dist/utils/spinner.js.map +0 -1
  232. package/dist/utils/status-parser.d.ts +0 -95
  233. package/dist/utils/status-parser.d.ts.map +0 -1
  234. package/dist/utils/status-parser.js +0 -205
  235. package/dist/utils/status-parser.js.map +0 -1
  236. package/dist/utils/tasks.d.ts +0 -21
  237. package/dist/utils/tasks.d.ts.map +0 -1
  238. package/dist/utils/tasks.js +0 -63
  239. package/dist/utils/tasks.js.map +0 -1
  240. package/dist/utils/workspace-manager.d.ts +0 -65
  241. package/dist/utils/workspace-manager.d.ts.map +0 -1
  242. package/dist/utils/workspace-manager.js +0 -98
  243. package/dist/utils/workspace-manager.js.map +0 -1
@@ -1,69 +0,0 @@
1
- /**
2
- * Requirement Types from OpenAPI Specification
3
- */
4
- export type RequirementStatus = 'IDEA' | 'PLANNED' | 'IN_PROGRESS' | 'REVIEW' | 'COMPLETED' | 'CANCELLED';
5
- export interface Requirement {
6
- id: string;
7
- short_id?: string;
8
- name: string;
9
- description?: string | null;
10
- status: RequirementStatus;
11
- assigned_to?: string | null;
12
- assignee?: {
13
- id: string;
14
- first_name: string;
15
- last_name: string;
16
- email: string;
17
- } | null;
18
- task_progress?: {
19
- total: number;
20
- completed: number;
21
- progress_percentage: number;
22
- } | null;
23
- complexity?: number;
24
- readiness?: number;
25
- req_id?: number;
26
- created_at: string;
27
- updated_at: string;
28
- }
29
- export interface RequirementDetail extends Requirement {
30
- content?: string | null;
31
- tasks?: RequirementTask[];
32
- }
33
- export interface RequirementTask {
34
- id: string;
35
- number: number;
36
- title: string;
37
- status: RequirementStatus;
38
- complexity?: number;
39
- readiness?: number;
40
- req_id?: number;
41
- assigned_to?: string | null;
42
- blocked_by: string[];
43
- created_at: string;
44
- updated_at: string;
45
- started_at?: string | null;
46
- finished_at?: string | null;
47
- content?: string;
48
- requirement_id?: string;
49
- }
50
- export interface CreateRequirementRequest {
51
- prompt: string;
52
- repositories?: string[];
53
- return_content?: 0 | 1;
54
- }
55
- export interface UpdateRequirementRequest {
56
- status?: RequirementStatus;
57
- name?: string;
58
- description?: string;
59
- }
60
- export interface ListRequirementsResponse {
61
- requirements: Requirement[];
62
- pagination: {
63
- page: number;
64
- limit: number;
65
- total: number;
66
- has_more: boolean;
67
- };
68
- }
69
- //# sourceMappingURL=requirement.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"requirement.d.ts","sourceRoot":"","sources":["../../src/types/requirement.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,iBAAiB,GAC1B,MAAM,GACN,SAAS,GACT,aAAa,GACb,QAAQ,GACR,WAAW,GACX,WAAW,CAAC;AAEf,MAAM,WAAW,WAAW;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE;QACV,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACd,GAAG,IAAI,CAAC;IACT,aAAa,CAAC,EAAE;QACf,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,mBAAmB,EAAE,MAAM,CAAC;KAC5B,GAAG,IAAI,CAAC;IACT,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACrD,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,iBAAiB,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACxC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACxC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,UAAU,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,OAAO,CAAC;KAClB,CAAC;CACF"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Requirement Types from OpenAPI Specification
3
- */
4
- export {};
5
- //# sourceMappingURL=requirement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"requirement.js","sourceRoot":"","sources":["../../src/types/requirement.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Task Types from OpenAPI Specification
3
- */
4
- export type TaskStatus = 'PLANNED' | 'IN_PROGRESS' | 'COMPLETED' | 'CANCELLED';
5
- export interface Task {
6
- id: string;
7
- number: string;
8
- title: string;
9
- content?: string;
10
- status: TaskStatus;
11
- complexity: number;
12
- readiness: number;
13
- blocked_by: string[];
14
- started_at?: string;
15
- finished_at?: string;
16
- requirement?: {
17
- id: string;
18
- title: string;
19
- status: TaskStatus;
20
- };
21
- }
22
- export interface CreateTaskRequest {
23
- title: string;
24
- content?: string;
25
- complexity?: number;
26
- readiness?: number;
27
- }
28
- export interface UpdateTaskRequest {
29
- status?: TaskStatus;
30
- title?: string;
31
- content?: string;
32
- complexity?: number;
33
- readiness?: number;
34
- }
35
- export interface ListTasksResponse {
36
- tasks: Task[];
37
- pagination: {
38
- page: number;
39
- limit: number;
40
- total: number;
41
- has_more: boolean;
42
- };
43
- }
44
- //# sourceMappingURL=task.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/types/task.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC;AAE/E,MAAM,WAAW,IAAI;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,UAAU,CAAC;KACnB,CAAC;CACF;AAED,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IACjC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,UAAU,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,OAAO,CAAC;KAClB,CAAC;CACF"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Task Types from OpenAPI Specification
3
- */
4
- export {};
5
- //# sourceMappingURL=task.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/types/task.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,25 +0,0 @@
1
- import { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';
2
- export interface RetryOptions {
3
- maxRetries?: number;
4
- initialDelay?: number;
5
- maxDelay?: number;
6
- backoffMultiplier?: number;
7
- retryableStatuses?: number[];
8
- onRetry?: (attempt: number, delay: number, error: unknown) => void;
9
- }
10
- export declare function sleep(ms: number): Promise<void>;
11
- export declare function calculateDelay(attempt: number, initialDelay: number, maxDelay: number, backoffMultiplier: number): number;
12
- export declare function isRetryableError(error: unknown, retryableStatuses: number[]): boolean;
13
- export declare const axiosInstance: AxiosInstance;
14
- export declare function axiosWithRetry<T = unknown>(config: AxiosRequestConfig, options?: RetryOptions): Promise<AxiosResponse<T>>;
15
- export declare class RetryableHttpClient {
16
- private defaultOptions;
17
- constructor(defaultOptions?: RetryOptions);
18
- get<T = unknown>(url: string, config?: AxiosRequestConfig, options?: RetryOptions): Promise<AxiosResponse<T>>;
19
- post<T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig, options?: RetryOptions): Promise<AxiosResponse<T>>;
20
- patch<T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig, options?: RetryOptions): Promise<AxiosResponse<T>>;
21
- delete<T = unknown>(url: string, config?: AxiosRequestConfig, options?: RetryOptions): Promise<AxiosResponse<T>>;
22
- }
23
- export declare const retryableHttpClient: RetryableHttpClient;
24
- export declare function createAxiosConfig(init?: RequestInit): AxiosRequestConfig;
25
- //# sourceMappingURL=axios-retry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"axios-retry.d.ts","sourceRoot":"","sources":["../../src/utils/axios-retry.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEhF,MAAM,WAAW,YAAY;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACnE;AAWD,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErD;AAED,wBAAgB,cAAc,CAC7B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,GACvB,MAAM,CAIR;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,OAAO,CAmCrF;AAGD,eAAO,MAAM,aAAa,EAAE,aAO1B,CAAC;AAEH,wBAAsB,cAAc,CAAC,CAAC,GAAG,OAAO,EAC/C,MAAM,EAAE,kBAAkB,EAC1B,OAAO,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CA8C3B;AAGD,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,cAAc,CAAe;gBAEzB,cAAc,CAAC,EAAE,YAAY;IAInC,GAAG,CAAC,CAAC,GAAG,OAAO,EACpB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,kBAAkB,EAC3B,OAAO,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAOtB,IAAI,CAAC,CAAC,GAAG,OAAO,EACrB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,EAC3B,OAAO,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAgBtB,KAAK,CAAC,CAAC,GAAG,OAAO,EACtB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,EAC3B,OAAO,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAgBtB,MAAM,CAAC,CAAC,GAAG,OAAO,EACvB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,kBAAkB,EAC3B,OAAO,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;CAM5B;AAGD,eAAO,MAAM,mBAAmB,qBAK9B,CAAC;AAGH,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,kBAAkB,CAwCxE"}
@@ -1,174 +0,0 @@
1
- import axios from 'axios';
2
- const DEFAULT_OPTIONS = {
3
- maxRetries: 3,
4
- initialDelay: 1000, // 1 second
5
- maxDelay: 30000, // 30 seconds
6
- backoffMultiplier: 2,
7
- retryableStatuses: [408, 429, 500, 502, 503, 504], // Timeout, Too Many Requests, Server Errors
8
- onRetry: () => { }, // No-op by default
9
- };
10
- export async function sleep(ms) {
11
- return new Promise(resolve => setTimeout(resolve, ms));
12
- }
13
- export function calculateDelay(attempt, initialDelay, maxDelay, backoffMultiplier) {
14
- const exponentialDelay = initialDelay * Math.pow(backoffMultiplier, attempt - 1);
15
- const jitteredDelay = exponentialDelay * (0.5 + Math.random() * 0.5); // Add jitter
16
- return Math.min(jitteredDelay, maxDelay);
17
- }
18
- export function isRetryableError(error, retryableStatuses) {
19
- // Type guard to check if error has expected properties
20
- const hasErrorCode = (err) => typeof err === 'object' && err !== null && 'code' in err;
21
- const hasErrorMessage = (err) => typeof err === 'object' && err !== null;
22
- const hasResponseStatus = (err) => typeof err === 'object' && err !== null && 'response' in err;
23
- // Network errors are always retryable
24
- if (hasErrorCode(error)) {
25
- if (error.code === 'ECONNRESET' ||
26
- error.code === 'ETIMEDOUT' ||
27
- error.code === 'ENOTFOUND' ||
28
- error.code === 'ECONNREFUSED' ||
29
- error.code === 'ECONNABORTED') {
30
- return true;
31
- }
32
- }
33
- if (hasErrorMessage(error) && error.message) {
34
- if (error.message.includes('network') || error.message.includes('Network')) {
35
- return true;
36
- }
37
- }
38
- // Check if it's an HTTP error with a retryable status
39
- if (hasResponseStatus(error) && error.response?.status) {
40
- if (retryableStatuses.includes(error.response.status)) {
41
- return true;
42
- }
43
- }
44
- return false;
45
- }
46
- // Create axios instance with default config
47
- export const axiosInstance = axios.create({
48
- timeout: 120000, // 2 minutes default timeout
49
- headers: {
50
- 'User-Agent': 'Braingrid-CLI',
51
- },
52
- // Don't throw on any status to handle errors ourselves
53
- validateStatus: () => true,
54
- });
55
- export async function axiosWithRetry(config, options) {
56
- const opts = { ...DEFAULT_OPTIONS, ...options };
57
- let lastError;
58
- for (let attempt = 1; attempt <= opts.maxRetries + 1; attempt++) {
59
- try {
60
- const response = await axiosInstance.request(config);
61
- // Check if the response status is retryable
62
- if (response.status >= 400 &&
63
- opts.retryableStatuses.includes(response.status) &&
64
- attempt <= opts.maxRetries) {
65
- const error = new Error(`HTTP ${response.status}: ${response.statusText}`);
66
- error.response = response;
67
- error.status = response.status;
68
- throw error;
69
- }
70
- return response;
71
- }
72
- catch (error) {
73
- lastError = error;
74
- // Check if we should retry
75
- if (attempt <= opts.maxRetries && isRetryableError(error, opts.retryableStatuses)) {
76
- const delay = calculateDelay(attempt, opts.initialDelay, opts.maxDelay, opts.backoffMultiplier);
77
- opts.onRetry(attempt, delay, error);
78
- await sleep(delay);
79
- continue;
80
- }
81
- // If not retryable or max retries exceeded, throw the error
82
- throw error;
83
- }
84
- }
85
- // This should never be reached, but just in case
86
- throw lastError || new Error('Unexpected error in axiosWithRetry');
87
- }
88
- // Enhanced wrapper for common use cases
89
- export class RetryableHttpClient {
90
- constructor(defaultOptions) {
91
- this.defaultOptions = defaultOptions || {};
92
- }
93
- async get(url, config, options) {
94
- return axiosWithRetry({ ...config, method: 'GET', url }, { ...this.defaultOptions, ...options });
95
- }
96
- async post(url, data, config, options) {
97
- return axiosWithRetry({
98
- ...config,
99
- method: 'POST',
100
- url,
101
- data,
102
- headers: {
103
- 'Content-Type': 'application/json',
104
- ...config?.headers,
105
- },
106
- }, { ...this.defaultOptions, ...options });
107
- }
108
- async patch(url, data, config, options) {
109
- return axiosWithRetry({
110
- ...config,
111
- method: 'PATCH',
112
- url,
113
- data,
114
- headers: {
115
- 'Content-Type': 'application/json',
116
- ...config?.headers,
117
- },
118
- }, { ...this.defaultOptions, ...options });
119
- }
120
- async delete(url, config, options) {
121
- return axiosWithRetry({ ...config, method: 'DELETE', url }, { ...this.defaultOptions, ...options });
122
- }
123
- }
124
- // Export a default instance for convenience
125
- export const retryableHttpClient = new RetryableHttpClient({
126
- onRetry: (attempt, delay, error) => {
127
- const errorMessage = error instanceof Error ? error.message : String(error);
128
- console.warn(`Retry attempt ${attempt} after ${delay}ms due to:`, errorMessage);
129
- },
130
- });
131
- // Helper function to convert headers for cookie support
132
- export function createAxiosConfig(init) {
133
- const config = {};
134
- if (init) {
135
- // Convert method
136
- if (init.method)
137
- config.method = init.method;
138
- // Convert headers
139
- if (init.headers) {
140
- const headers = {};
141
- if (init.headers instanceof Headers) {
142
- init.headers.forEach((value, key) => {
143
- headers[key] = value;
144
- });
145
- config.headers = headers;
146
- }
147
- else if (Array.isArray(init.headers)) {
148
- init.headers.forEach(([key, value]) => {
149
- headers[key] = value;
150
- });
151
- config.headers = headers;
152
- }
153
- else {
154
- config.headers = init.headers;
155
- }
156
- }
157
- // Convert body to data
158
- if (init.body) {
159
- if (typeof init.body === 'string') {
160
- try {
161
- config.data = JSON.parse(init.body);
162
- }
163
- catch {
164
- config.data = init.body;
165
- }
166
- }
167
- else {
168
- config.data = init.body;
169
- }
170
- }
171
- }
172
- return config;
173
- }
174
- //# sourceMappingURL=axios-retry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"axios-retry.js","sourceRoot":"","sources":["../../src/utils/axios-retry.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Axios instance with authentication and automatic token refresh
3
- */
4
- import { AxiosInstance } from 'axios';
5
- import { BraingridAuth } from '../services/auth.js';
6
- /**
7
- * Create an axios instance with automatic token refresh on 401 errors and auth redirects
8
- */
9
- export declare function createAuthenticatedAxios(auth: BraingridAuth): AxiosInstance;
10
- //# sourceMappingURL=axios-with-auth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"axios-with-auth.d.ts","sourceRoot":"","sources":["../../src/utils/axios-with-auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAc,EAAE,aAAa,EAA0C,MAAM,OAAO,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AA+BpD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,aAAa,GAAG,aAAa,CA2G3E"}
@@ -1,118 +0,0 @@
1
- /**
2
- * Axios instance with authentication and automatic token refresh
3
- */
4
- import axios from 'axios';
5
- import { getLogger } from './logger.js';
6
- const logger = getLogger();
7
- /**
8
- * Check if a response is a redirect to an auth endpoint
9
- */
10
- function isAuthRedirect(error) {
11
- const status = error.response?.status;
12
- if (!status || (status !== 302 && status !== 307 && status !== 303)) {
13
- return false;
14
- }
15
- const location = error.response?.headers?.location;
16
- if (!location) {
17
- return false;
18
- }
19
- // Check if redirecting to auth endpoints (WorkOS, AuthKit, etc.)
20
- const authPatterns = [
21
- '/auth/',
22
- '/oauth2/',
23
- 'workos.com',
24
- 'authkit.app',
25
- '/user_management/authorize',
26
- ];
27
- return authPatterns.some(pattern => location.toLowerCase().includes(pattern));
28
- }
29
- /**
30
- * Create an axios instance with automatic token refresh on 401 errors and auth redirects
31
- */
32
- export function createAuthenticatedAxios(auth) {
33
- const instance = axios.create({
34
- maxRedirects: 0, // Don't follow redirects - treat them as errors
35
- validateStatus: status => status >= 200 && status < 300, // Only accept 2xx as success
36
- });
37
- // Request interceptor to add auth headers
38
- instance.interceptors.request.use(async (config) => {
39
- const session = await auth.getStoredSession();
40
- if (session) {
41
- config.headers.Authorization = `Bearer ${session.sealed_session}`;
42
- }
43
- return config;
44
- }, error => Promise.reject(error));
45
- // Response interceptor to handle 401 errors, auth redirects, and refresh token
46
- instance.interceptors.response.use(response => {
47
- // Log successful API calls for debugging/testing
48
- const method = response.config.method?.toUpperCase() || 'UNKNOWN';
49
- const url = response.config.url || 'unknown';
50
- const status = response.status;
51
- logger.debug(`[API] ${method} ${url} -> ${status}`);
52
- return response;
53
- }, async (error) => {
54
- const originalRequest = error.config;
55
- // Log API error details for debugging/testing
56
- const method = error.config?.method?.toUpperCase() || 'UNKNOWN';
57
- const url = error.config?.url || 'unknown';
58
- const status = error.response?.status || 'NO_RESPONSE';
59
- // Extract request params (query params or request body)
60
- let params = '';
61
- if (error.config?.params) {
62
- params = JSON.stringify(error.config.params);
63
- }
64
- else if (error.config?.data) {
65
- try {
66
- const data = typeof error.config.data === 'string'
67
- ? JSON.parse(error.config.data)
68
- : error.config.data;
69
- // Truncate long prompts for readability
70
- if (data.prompt && data.prompt.length > 100) {
71
- data.prompt = data.prompt.substring(0, 100) + '...';
72
- }
73
- params = JSON.stringify(data);
74
- }
75
- catch {
76
- params = String(error.config.data).substring(0, 200);
77
- }
78
- }
79
- logger.debug(`[API] ${method} ${url} -> ${status}`, { params });
80
- // Check if this is an auth failure (401 or redirect to auth)
81
- const is401 = error.response?.status === 401;
82
- const isRedirectToAuth = isAuthRedirect(error);
83
- // If auth failure and we haven't retried yet, attempt token refresh
84
- if ((is401 || isRedirectToAuth) && !originalRequest._retry) {
85
- originalRequest._retry = true;
86
- if (isRedirectToAuth) {
87
- logger.debug('[AUTH] Received redirect to auth endpoint - token likely expired');
88
- }
89
- else {
90
- logger.debug('[AUTH] Received 401 error - attempting token refresh');
91
- }
92
- // Attempt to refresh the token
93
- const refreshed = await auth.refreshSession();
94
- if (refreshed) {
95
- logger.debug('[AUTH] Token refreshed - retrying request');
96
- // Get the new session and update the request headers
97
- const session = await auth.getStoredSession();
98
- if (session && originalRequest.headers) {
99
- originalRequest.headers.Authorization = `Bearer ${session.sealed_session}`;
100
- }
101
- // Retry the original request with the new token
102
- return instance(originalRequest);
103
- }
104
- else {
105
- logger.warn('[AUTH] Token refresh failed - clearing session');
106
- // Refresh failed, clear the session
107
- await auth.clearSession();
108
- // Return a more user-friendly error
109
- const authError = new Error('Authentication expired. Please run "braingrid login" to re-authenticate.');
110
- return Promise.reject(authError);
111
- }
112
- }
113
- // For all other errors or if retry already happened, just reject
114
- return Promise.reject(error);
115
- });
116
- return instance;
117
- }
118
- //# sourceMappingURL=axios-with-auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"axios-with-auth.js","sourceRoot":"","sources":["../../src/utils/axios-with-auth.ts"],"names":[],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- /**
2
- * CLI Tools Detection Utilities
3
- *
4
- * Detects installed AI coding tools and CLI utilities:
5
- * - Checks if common AI IDE CLIs are installed
6
- * - Gets version information where available
7
- * - Cross-platform support (macOS, Linux, Windows)
8
- */
9
- export interface CliToolInfo {
10
- name: string;
11
- command: string;
12
- installed: boolean;
13
- version?: string;
14
- }
15
- /**
16
- * Check if a CLI command is installed
17
- * Uses user's shell to access PATH (supports shell-installed CLIs)
18
- */
19
- export declare function isCliInstalled(command: string): Promise<boolean>;
20
- /**
21
- * Get the version of a CLI tool
22
- * Returns null if version cannot be determined
23
- */
24
- export declare function getCliVersion(command: string, versionFlag?: string, parser?: (output: string) => string | null): Promise<string | null>;
25
- /**
26
- * Check all configured CLI tools in parallel
27
- * Returns array of CLI tool information
28
- */
29
- export declare function checkInstalledCliTools(): Promise<CliToolInfo[]>;
30
- //# sourceMappingURL=cli-tools.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-tools.d.ts","sourceRoot":"","sources":["../../src/utils/cli-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAsGD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAYtE;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAClC,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,MAAoB,EACjC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GACxC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBxB;AA6CD;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAarE"}