@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,296 +0,0 @@
1
- /**
2
- * STDIO Transport Layer for JSON-RPC 2.0
3
- * Handles newline-delimited JSON message parsing and sending over stdin/stdout
4
- */
5
- import { EventEmitter } from 'events';
6
- import { createParseError, safeParseJsonRpcMessage } from '@braingrid/protocol';
7
- /**
8
- * STDIO Transport implementation for JSON-RPC communication
9
- */
10
- export class StdioTransport extends EventEmitter {
11
- constructor(input = process.stdin, output = process.stdout, options = {}) {
12
- super();
13
- this.buffer = '';
14
- this.isClosed = false;
15
- this.contentBuffer = Buffer.alloc(0);
16
- this.expectedContentLength = null;
17
- this.headers = new Map();
18
- this.input = input;
19
- this.output = output;
20
- this.useContentLength = options.useContentLength || false;
21
- // Set encoding to UTF-8 for newline-delimited mode
22
- if (!this.useContentLength) {
23
- this.input.setEncoding('utf8');
24
- }
25
- // Set up input stream handling
26
- this.input.on('data', this.handleData.bind(this));
27
- this.input.on('error', this.handleError.bind(this));
28
- this.input.on('end', () => this.handleClose());
29
- }
30
- /**
31
- * Handle incoming data chunks from stdin
32
- */
33
- handleData(chunk) {
34
- if (this.isClosed)
35
- return;
36
- if (this.useContentLength) {
37
- // Content-Length mode (LSP-style)
38
- this.handleContentLengthData(chunk);
39
- }
40
- else {
41
- // Newline-delimited mode
42
- this.handleNewlineDelimitedData(chunk);
43
- }
44
- }
45
- /**
46
- * Handle data in newline-delimited mode
47
- */
48
- handleNewlineDelimitedData(chunk) {
49
- // Add chunk to buffer
50
- this.buffer += chunk;
51
- // Process complete messages (newline-delimited)
52
- let newlineIndex;
53
- while ((newlineIndex = this.buffer.indexOf('\n')) !== -1) {
54
- // Extract the complete message
55
- const messageStr = this.buffer.substring(0, newlineIndex).trim();
56
- this.buffer = this.buffer.substring(newlineIndex + 1);
57
- // Skip empty lines
58
- if (messageStr.length === 0)
59
- continue;
60
- // Parse and emit the message
61
- this.processMessage(messageStr);
62
- }
63
- }
64
- /**
65
- * Handle data in content-length mode (LSP-style)
66
- */
67
- handleContentLengthData(chunk) {
68
- // Append chunk to content buffer
69
- this.contentBuffer = Buffer.concat([this.contentBuffer, chunk]);
70
- while (true) {
71
- if (this.expectedContentLength === null) {
72
- // Try to parse headers
73
- const headerEndIndex = this.contentBuffer.indexOf('\r\n\r\n');
74
- if (headerEndIndex === -1) {
75
- // Not enough data for headers yet
76
- break;
77
- }
78
- // Extract headers
79
- const headersStr = this.contentBuffer.subarray(0, headerEndIndex).toString('utf8');
80
- this.parseHeaders(headersStr);
81
- // Remove headers from buffer
82
- this.contentBuffer = this.contentBuffer.subarray(headerEndIndex + 4);
83
- // Get content length
84
- const contentLengthStr = this.headers.get('content-length');
85
- if (!contentLengthStr) {
86
- this.handleError(new Error('Missing Content-Length header'));
87
- this.contentBuffer = Buffer.alloc(0);
88
- this.headers.clear();
89
- break;
90
- }
91
- this.expectedContentLength = parseInt(contentLengthStr, 10);
92
- if (isNaN(this.expectedContentLength)) {
93
- this.handleError(new Error(`Invalid Content-Length: ${contentLengthStr}`));
94
- this.contentBuffer = Buffer.alloc(0);
95
- this.headers.clear();
96
- this.expectedContentLength = null;
97
- break;
98
- }
99
- }
100
- // Check if we have the full content
101
- if (this.contentBuffer.length >= this.expectedContentLength) {
102
- // Extract the message content
103
- const messageBuffer = this.contentBuffer.subarray(0, this.expectedContentLength);
104
- const messageStr = messageBuffer.toString('utf8');
105
- // Remove processed content from buffer
106
- this.contentBuffer = this.contentBuffer.subarray(this.expectedContentLength);
107
- // Reset for next message
108
- this.expectedContentLength = null;
109
- this.headers.clear();
110
- // Process the message
111
- this.processMessage(messageStr);
112
- }
113
- else {
114
- // Not enough data for content yet
115
- break;
116
- }
117
- }
118
- }
119
- /**
120
- * Parse LSP-style headers
121
- */
122
- parseHeaders(headersStr) {
123
- const lines = headersStr.split('\r\n');
124
- for (const line of lines) {
125
- const colonIndex = line.indexOf(':');
126
- if (colonIndex !== -1) {
127
- const key = line.substring(0, colonIndex).toLowerCase().trim();
128
- const value = line.substring(colonIndex + 1).trim();
129
- this.headers.set(key, value);
130
- }
131
- }
132
- }
133
- /**
134
- * Process a complete JSON message string
135
- */
136
- processMessage(messageStr) {
137
- try {
138
- // Parse JSON
139
- const jsonData = JSON.parse(messageStr);
140
- // Check if it's a batch request (array)
141
- if (Array.isArray(jsonData)) {
142
- // Process as batch request
143
- this.processBatchRequest(jsonData);
144
- }
145
- else {
146
- // Process as single message
147
- this.processSingleMessage(jsonData);
148
- }
149
- }
150
- catch (error) {
151
- // JSON parse error
152
- const errorMessage = error instanceof Error ? error.message : 'Invalid JSON';
153
- const errorResponse = createParseError(`JSON parse error: ${errorMessage}`);
154
- this.emit('error', new Error(errorResponse.error.message));
155
- // Send error response
156
- this.send(errorResponse).catch(err => this.handleError(err));
157
- }
158
- }
159
- /**
160
- * Process a single JSON-RPC message
161
- */
162
- processSingleMessage(jsonData) {
163
- // Validate as JSON-RPC message
164
- const parseResult = safeParseJsonRpcMessage(jsonData);
165
- if (!parseResult.success) {
166
- // Emit parse error
167
- const errorResponse = createParseError(`Invalid JSON-RPC message: ${parseResult.error?.message || 'Unknown validation error'}`);
168
- this.emit('error', new Error(errorResponse.error.message));
169
- // Send error response
170
- this.send(errorResponse).catch(err => this.handleError(err));
171
- return;
172
- }
173
- // Emit the validated message
174
- this.emit('message', parseResult.data);
175
- }
176
- /**
177
- * Process a batch request (array of messages)
178
- */
179
- processBatchRequest(jsonArray) {
180
- if (jsonArray.length === 0) {
181
- // Empty batch is invalid
182
- const errorResponse = createParseError('Batch request cannot be empty');
183
- this.emit('error', new Error(errorResponse.error.message));
184
- this.send(errorResponse).catch(err => this.handleError(err));
185
- return;
186
- }
187
- // Emit as batch request
188
- this.emit('batch', jsonArray);
189
- }
190
- /**
191
- * Send a JSON-RPC message or batch response
192
- */
193
- async send(message) {
194
- if (this.isClosed) {
195
- throw new Error('Transport is closed');
196
- }
197
- return new Promise((resolve, reject) => {
198
- try {
199
- const messageStr = JSON.stringify(message);
200
- if (this.useContentLength) {
201
- // Content-Length mode (LSP-style)
202
- const contentBuffer = Buffer.from(messageStr, 'utf8');
203
- const headers = `Content-Length: ${contentBuffer.length}\r\n\r\n`;
204
- const fullMessage = Buffer.concat([Buffer.from(headers, 'utf8'), contentBuffer]);
205
- // Write headers and content
206
- this.output.write(fullMessage, error => {
207
- if (error) {
208
- reject(error);
209
- }
210
- else {
211
- resolve();
212
- }
213
- });
214
- }
215
- else {
216
- // Newline-delimited mode
217
- const fullMessage = messageStr + '\n';
218
- // Write to output stream
219
- this.output.write(fullMessage, 'utf8', error => {
220
- if (error) {
221
- reject(error);
222
- }
223
- else {
224
- resolve();
225
- }
226
- });
227
- }
228
- }
229
- catch (error) {
230
- reject(error);
231
- }
232
- });
233
- }
234
- /**
235
- * Set up a handler for incoming messages
236
- */
237
- onMessage(handler) {
238
- this.on('message', handler);
239
- }
240
- /**
241
- * Set up a handler for batch requests
242
- */
243
- onBatch(handler) {
244
- this.on('batch', handler);
245
- }
246
- /**
247
- * Set up a handler for transport errors
248
- */
249
- onError(handler) {
250
- this.on('error', handler);
251
- }
252
- /**
253
- * Handle transport errors
254
- */
255
- handleError(error) {
256
- if (!this.isClosed) {
257
- this.emit('error', error);
258
- }
259
- }
260
- /**
261
- * Handle transport close
262
- */
263
- handleClose() {
264
- if (!this.isClosed) {
265
- this.isClosed = true;
266
- this.emit('close');
267
- }
268
- }
269
- /**
270
- * Close the transport
271
- */
272
- async close() {
273
- if (this.isClosed)
274
- return;
275
- this.isClosed = true;
276
- // Remove all listeners
277
- this.removeAllListeners();
278
- // Clear buffer
279
- this.buffer = '';
280
- // Don't close stdin/stdout if they are the actual process streams
281
- if (this.input !== process.stdin) {
282
- this.input.destroy();
283
- }
284
- if (this.output !== process.stdout) {
285
- this.output.end();
286
- }
287
- this.emit('close');
288
- }
289
- /**
290
- * Check if transport is closed
291
- */
292
- get closed() {
293
- return this.isClosed;
294
- }
295
- }
296
- //# sourceMappingURL=transport.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/rpc/transport.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- export declare const mockParseRequirementId: (id: string) => {
2
- type: string;
3
- value: number;
4
- } | {
5
- type: string;
6
- value: string;
7
- };
8
- export declare const mockParseTaskId: (id: string) => {
9
- type: string;
10
- value: number;
11
- } | {
12
- type: string;
13
- value: string;
14
- };
15
- export declare const mockFindTaskById: (tasks: any[], id: string) => any;
16
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/services/__mocks__/utils.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,sBAAsB,GAAI,IAAI,MAAM;;;;;;CAKhD,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,IAAI,MAAM;;;;;;CAKzC,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,OAAO,GAAG,EAAE,EAAE,IAAI,MAAM,QAMxD,CAAC"}
@@ -1,21 +0,0 @@
1
- // Mock utilities for tests
2
- export const mockParseRequirementId = (id) => {
3
- if (id.startsWith('REQ-')) {
4
- return { type: 'req_id', value: parseInt(id.substring(4)) };
5
- }
6
- return { type: 'uuid', value: id };
7
- };
8
- export const mockParseTaskId = (id) => {
9
- if (id.startsWith('TASK-')) {
10
- return { type: 'task_id', value: parseInt(id.substring(5)) };
11
- }
12
- return { type: 'uuid', value: id };
13
- };
14
- export const mockFindTaskById = (tasks, id) => {
15
- if (id.startsWith('TASK-')) {
16
- const taskId = parseInt(id.substring(5));
17
- return tasks.find((t) => t.task_id === taskId) || null;
18
- }
19
- return tasks.find((t) => t.id === id) || null;
20
- };
21
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/services/__mocks__/utils.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EAAU,EAAE,EAAE;IACpD,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACpC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAU,EAAE,EAAE;IAC7C,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACpC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAY,EAAE,EAAU,EAAE,EAAE;IAC5D,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC;AACpD,CAAC,CAAC"}
@@ -1,29 +0,0 @@
1
- /**
2
- * Agent Service
3
- * Handles API interactions for agent conversations
4
- */
5
- import { BraingridAuth } from './auth.js';
6
- import type { StreamingConversationResponse, ConversationContext } from '@braingrid/protocol';
7
- export interface AgentConversationRequest {
8
- project: string;
9
- message: string;
10
- conversationId?: string;
11
- context?: ConversationContext;
12
- }
13
- export declare class AgentService {
14
- private baseUrl;
15
- private auth;
16
- private axios;
17
- constructor(baseUrl: string, auth: BraingridAuth);
18
- private getHeaders;
19
- /**
20
- * Stream a conversation with the agent
21
- * Returns the final response after streaming completes
22
- */
23
- streamConversation(request: AgentConversationRequest): Promise<StreamingConversationResponse>;
24
- /**
25
- * Stream a conversation with callback support for real-time updates
26
- */
27
- streamConversationWithCallback(request: AgentConversationRequest, onChunk: (chunk: StreamingConversationResponse) => void | Promise<void>): Promise<StreamingConversationResponse>;
28
- }
29
- //# sourceMappingURL=agent-service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-service.d.ts","sourceRoot":"","sources":["../../src/services/agent-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG1C,OAAO,KAAK,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAI9F,MAAM,WAAW,wBAAwB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAkBD,qBAAa,YAAY;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,KAAK,CAAgB;gBAEjB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa;IAMhD,OAAO,CAAC,UAAU;IAMlB;;;OAGG;IACG,kBAAkB,CACvB,OAAO,EAAE,wBAAwB,GAC/B,OAAO,CAAC,6BAA6B,CAAC;IAwOzC;;OAEG;IACG,8BAA8B,CACnC,OAAO,EAAE,wBAAwB,EACjC,OAAO,EAAE,CAAC,KAAK,EAAE,6BAA6B,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACrE,OAAO,CAAC,6BAA6B,CAAC;CAsBzC"}
@@ -1,273 +0,0 @@
1
- /**
2
- * Agent Service
3
- * Handles API interactions for agent conversations
4
- */
5
- import { createAuthenticatedAxios } from '../utils/axios-with-auth.js';
6
- import { getLogger } from '../utils/logger.js';
7
- const logger = getLogger();
8
- /**
9
- * Format tool arguments or result for display
10
- * Truncates long values to keep output readable
11
- */
12
- function formatToolData(data, maxLength = 100) {
13
- try {
14
- const str = typeof data === 'string' ? data : JSON.stringify(data);
15
- if (str.length <= maxLength) {
16
- return str;
17
- }
18
- return str.substring(0, maxLength) + '...';
19
- }
20
- catch {
21
- return String(data).substring(0, maxLength);
22
- }
23
- }
24
- export class AgentService {
25
- constructor(baseUrl, auth) {
26
- this.baseUrl = baseUrl;
27
- this.auth = auth;
28
- this.axios = createAuthenticatedAxios(auth);
29
- }
30
- getHeaders() {
31
- return {
32
- 'Content-Type': 'application/json',
33
- };
34
- }
35
- /**
36
- * Stream a conversation with the agent
37
- * Returns the final response after streaming completes
38
- */
39
- async streamConversation(request) {
40
- const url = `${this.baseUrl}/api/v1/projects/${request.project}/agent/conversations`;
41
- const headers = await this.getHeaders();
42
- const payload = {
43
- message: request.message,
44
- conversation_id: request.conversationId,
45
- context: request.context,
46
- };
47
- logger.debug('[AgentService] Making POST request with streaming', {
48
- url,
49
- payloadSize: JSON.stringify(payload).length,
50
- hasConversationId: !!request.conversationId,
51
- hasContext: !!request.context,
52
- });
53
- try {
54
- // Make POST request with streaming enabled
55
- // Note: timeout is for the entire request, not inactivity
56
- // For long-running streams, we set a generous timeout
57
- const response = (await this.axios.post(url, payload, {
58
- headers,
59
- timeout: 600000, // 10 minute timeout for long conversations
60
- responseType: 'stream', // Enable streaming
61
- }));
62
- logger.debug('[AgentService] Received streaming response', {
63
- status: response.status,
64
- hasData: !!response.data,
65
- dataType: typeof response.data,
66
- isStream: response.data?.readable,
67
- });
68
- // Collect chunks from the stream
69
- return new Promise((resolve, reject) => {
70
- let buffer = '';
71
- let conversationId = '';
72
- let finalStatus = 'complete';
73
- let assembledContent = '';
74
- let currentLineLength = 0;
75
- let inCodeBlock = false;
76
- let backtickCount = 0; // Track consecutive backticks for code block detection
77
- const maxLineLength = process.stdout.columns ? process.stdout.columns - 4 : 76;
78
- // Set up inactivity timeout (stream stops sending data)
79
- let inactivityTimeout = null;
80
- const inactivityTimeoutMs = 120000; // 2 minutes of no data
81
- const resetInactivityTimeout = () => {
82
- if (inactivityTimeout) {
83
- clearTimeout(inactivityTimeout);
84
- }
85
- inactivityTimeout = setTimeout(() => {
86
- logger.debug('[AgentService] Stream inactivity timeout - no data for 2 minutes');
87
- response.data.destroy(new Error('Stream inactivity timeout'));
88
- }, inactivityTimeoutMs);
89
- };
90
- // Start the inactivity timer
91
- resetInactivityTimeout();
92
- response.data.on('data', (chunk) => {
93
- // Reset inactivity timeout on each chunk
94
- resetInactivityTimeout();
95
- const chunkStr = chunk.toString();
96
- buffer += chunkStr;
97
- // Process complete chunks (separated by \u001e)
98
- const chunks = buffer.split('\u001e');
99
- // Keep the last incomplete chunk in the buffer
100
- buffer = chunks.pop() || '';
101
- for (const completeChunk of chunks) {
102
- if (!completeChunk.trim())
103
- continue;
104
- try {
105
- const parsed = JSON.parse(completeChunk);
106
- if (parsed.conversationId) {
107
- conversationId = parsed.conversationId;
108
- }
109
- if (parsed.status) {
110
- finalStatus = parsed.status;
111
- }
112
- // Parse message content
113
- if (parsed.message?.content) {
114
- try {
115
- const contentObj = JSON.parse(parsed.message.content);
116
- // Handle different chunk types
117
- if (contentObj.type === 'text-delta' && contentObj.text) {
118
- const text = contentObj.text;
119
- assembledContent += text;
120
- // Stream characters immediately with micro-batching
121
- let microBatch = '';
122
- for (const char of text) {
123
- // Check for code block markers
124
- if (char === '`') {
125
- backtickCount++;
126
- }
127
- else {
128
- backtickCount = 0;
129
- }
130
- if (backtickCount === 3) {
131
- inCodeBlock = !inCodeBlock;
132
- backtickCount = 0;
133
- }
134
- // Handle newlines
135
- if (char === '\n') {
136
- microBatch += char;
137
- process.stdout.write(microBatch);
138
- microBatch = '';
139
- currentLineLength = 0;
140
- continue;
141
- }
142
- // Handle word wrapping (only for regular text, not code blocks)
143
- if (!inCodeBlock && char === ' ' && currentLineLength >= maxLineLength) {
144
- microBatch += '\n';
145
- process.stdout.write(microBatch);
146
- microBatch = '';
147
- currentLineLength = 0;
148
- continue;
149
- }
150
- // Add character to micro-batch
151
- microBatch += char;
152
- currentLineLength++;
153
- // Flush micro-batch every 5 characters for smooth streaming
154
- if (microBatch.length >= 5) {
155
- process.stdout.write(microBatch);
156
- microBatch = '';
157
- }
158
- }
159
- // Flush any remaining characters
160
- if (microBatch) {
161
- process.stdout.write(microBatch);
162
- }
163
- }
164
- else if (contentObj.type === 'tool-call') {
165
- // Display tool call with visual indicator
166
- const toolName = contentObj.toolName || 'unknown';
167
- const args = contentObj.input ? formatToolData(contentObj.input) : '';
168
- process.stdout.write('\nšŸ”§ Calling tool: ' + toolName);
169
- if (args) {
170
- process.stdout.write('\n Arguments: ' + args);
171
- }
172
- process.stdout.write('\n');
173
- currentLineLength = 0;
174
- }
175
- else if (contentObj.type === 'tool-input-delta') {
176
- // Display incremental tool input
177
- const delta = contentObj.delta || '';
178
- if (delta) {
179
- process.stdout.write(delta);
180
- }
181
- }
182
- else if (contentObj.type === 'tool-result') {
183
- // Display tool result
184
- const isError = contentObj.result?.isError || false;
185
- if (isError) {
186
- const errorMsg = contentObj.result?.content || 'Unknown error';
187
- process.stdout.write('āœ— Tool failed: ' + formatToolData(errorMsg) + '\n');
188
- }
189
- else {
190
- process.stdout.write('āœ“ Tool completed\n');
191
- }
192
- currentLineLength = 0;
193
- }
194
- else if (contentObj.type === 'error') {
195
- // Display error
196
- const errorMsg = contentObj.error?.message || contentObj.error || 'Unknown error';
197
- process.stdout.write('\nāŒ Error: ' + errorMsg + '\n');
198
- currentLineLength = 0;
199
- }
200
- }
201
- catch {
202
- // If content is not JSON, treat it as plain text
203
- assembledContent += parsed.message.content;
204
- }
205
- }
206
- }
207
- catch {
208
- logger.debug('[AgentService] Failed to parse chunk', {
209
- chunk: completeChunk.substring(0, 100),
210
- });
211
- }
212
- }
213
- });
214
- response.data.on('end', () => {
215
- // Clear inactivity timeout
216
- if (inactivityTimeout) {
217
- clearTimeout(inactivityTimeout);
218
- }
219
- logger.debug('[AgentService] Stream ended', {
220
- conversationId,
221
- status: finalStatus,
222
- contentLength: assembledContent.length,
223
- });
224
- resolve({
225
- conversationId,
226
- message: {
227
- role: 'assistant',
228
- content: assembledContent || 'No content received',
229
- },
230
- status: finalStatus,
231
- });
232
- });
233
- response.data.on('error', (error) => {
234
- // Clear inactivity timeout
235
- if (inactivityTimeout) {
236
- clearTimeout(inactivityTimeout);
237
- }
238
- logger.debug('[AgentService] Stream error', { error: error.message });
239
- reject(error);
240
- });
241
- });
242
- }
243
- catch (error) {
244
- logger.debug('[AgentService] Request failed', {
245
- error: error instanceof Error ? error.message : String(error),
246
- errorType: error?.constructor?.name,
247
- });
248
- throw error;
249
- }
250
- }
251
- /**
252
- * Stream a conversation with callback support for real-time updates
253
- */
254
- async streamConversationWithCallback(request, onChunk) {
255
- const url = `${this.baseUrl}/api/v1/projects/${request.project}/agent/conversations`;
256
- const headers = await this.getHeaders();
257
- const payload = {
258
- message: request.message,
259
- conversation_id: request.conversationId,
260
- context: request.context,
261
- };
262
- // Make request with streaming support
263
- // For now, we'll use a simple POST and call the callback once
264
- // Future enhancement: Support Server-Sent Events (SSE) or chunked responses
265
- const response = await this.axios.post(url, payload, {
266
- headers,
267
- });
268
- // Call the callback with the response
269
- await onChunk(response.data);
270
- return response.data;
271
- }
272
- }
273
- //# sourceMappingURL=agent-service.js.map