byterover-cli 2.3.1 → 2.3.3

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 (51) hide show
  1. package/dist/agent/infra/llm/generators/ai-sdk-content-generator.d.ts +8 -0
  2. package/dist/agent/infra/llm/generators/ai-sdk-content-generator.js +39 -1
  3. package/dist/server/core/domain/errors/task-error.js +21 -1
  4. package/dist/server/utils/error-helpers.js +9 -1
  5. package/node_modules/@campfirein/brv-transport-client/package.json +1 -1
  6. package/node_modules/{socket.io-parser/node_modules/debug → debug}/package.json +7 -3
  7. package/node_modules/{socket.io-parser/node_modules/debug → debug}/src/browser.js +2 -1
  8. package/node_modules/{socket.io-client/node_modules/debug → debug}/src/common.js +57 -39
  9. package/node_modules/socket.io-client/build/cjs/index.d.ts +2 -2
  10. package/node_modules/socket.io-client/build/cjs/socket.js +2 -3
  11. package/node_modules/socket.io-client/build/esm/index.d.ts +2 -2
  12. package/node_modules/socket.io-client/build/esm/package.json +1 -1
  13. package/node_modules/socket.io-client/build/esm/socket.js +1 -3
  14. package/node_modules/socket.io-client/build/esm-debug/index.d.ts +2 -2
  15. package/node_modules/socket.io-client/build/esm-debug/package.json +1 -1
  16. package/node_modules/socket.io-client/build/esm-debug/socket.js +2 -3
  17. package/node_modules/socket.io-client/dist/socket.io.esm.min.js +3 -3
  18. package/node_modules/socket.io-client/dist/socket.io.esm.min.js.map +1 -1
  19. package/node_modules/socket.io-client/dist/socket.io.js +89 -42
  20. package/node_modules/socket.io-client/dist/socket.io.js.map +1 -1
  21. package/node_modules/socket.io-client/dist/socket.io.min.js +3 -3
  22. package/node_modules/socket.io-client/dist/socket.io.min.js.map +1 -1
  23. package/node_modules/socket.io-client/dist/socket.io.msgpack.min.js +3 -3
  24. package/node_modules/socket.io-client/dist/socket.io.msgpack.min.js.map +1 -1
  25. package/node_modules/socket.io-client/package.json +3 -3
  26. package/node_modules/socket.io-parser/LICENSE +1 -1
  27. package/node_modules/socket.io-parser/build/cjs/binary.js +2 -3
  28. package/node_modules/socket.io-parser/build/cjs/index.d.ts +15 -4
  29. package/node_modules/socket.io-parser/build/cjs/index.js +62 -16
  30. package/node_modules/socket.io-parser/build/cjs/is-binary.d.ts +1 -1
  31. package/node_modules/socket.io-parser/build/cjs/is-binary.js +2 -3
  32. package/node_modules/socket.io-parser/build/esm/index.d.ts +15 -4
  33. package/node_modules/socket.io-parser/build/esm/index.js +60 -15
  34. package/node_modules/socket.io-parser/build/esm/is-binary.d.ts +1 -1
  35. package/node_modules/socket.io-parser/build/esm-debug/index.d.ts +15 -4
  36. package/node_modules/socket.io-parser/build/esm-debug/index.js +60 -15
  37. package/node_modules/socket.io-parser/build/esm-debug/is-binary.d.ts +1 -1
  38. package/node_modules/socket.io-parser/package.json +8 -22
  39. package/oclif.manifest.json +99 -99
  40. package/package.json +1 -3
  41. package/node_modules/socket.io-client/node_modules/debug/package.json +0 -60
  42. package/node_modules/socket.io-client/node_modules/debug/src/browser.js +0 -271
  43. package/node_modules/socket.io-parser/node_modules/debug/LICENSE +0 -20
  44. package/node_modules/socket.io-parser/node_modules/debug/README.md +0 -481
  45. package/node_modules/socket.io-parser/node_modules/debug/src/common.js +0 -274
  46. package/node_modules/socket.io-parser/node_modules/debug/src/index.js +0 -10
  47. package/node_modules/socket.io-parser/node_modules/debug/src/node.js +0 -263
  48. /package/node_modules/{socket.io-client/node_modules/debug → debug}/LICENSE +0 -0
  49. /package/node_modules/{socket.io-client/node_modules/debug → debug}/README.md +0 -0
  50. /package/node_modules/{socket.io-client/node_modules/debug → debug}/src/index.js +0 -0
  51. /package/node_modules/{socket.io-client/node_modules/debug → debug}/src/node.js +0 -0
@@ -31,3 +31,11 @@ export declare class AiSdkContentGenerator implements IContentGenerator {
31
31
  generateContent(request: GenerateContentRequest): Promise<GenerateContentResponse>;
32
32
  generateContentStream(request: GenerateContentRequest): AsyncGenerator<GenerateContentChunk>;
33
33
  }
34
+ /**
35
+ * Extract a human-readable message from an AI SDK stream error.
36
+ *
37
+ * The @ai-sdk/openai Responses API provider passes the raw SSE chunk
38
+ * object as the error value (not an Error instance). The actual message
39
+ * is nested at `.error.message`.
40
+ */
41
+ export declare function extractStreamErrorMessage(error: unknown): string;
@@ -89,7 +89,7 @@ export class AiSdkContentGenerator {
89
89
  // Throw the error so RetryableContentGenerator can catch and retry it.
90
90
  // Yielding it as content would swallow the error and prevent retry logic
91
91
  // from working (e.g., for 429 rate limit errors).
92
- throw event.error instanceof Error ? event.error : new Error(String(event.error));
92
+ throw event.error instanceof Error ? event.error : new Error(extractStreamErrorMessage(event.error));
93
93
  }
94
94
  case 'finish-step': {
95
95
  yield {
@@ -139,6 +139,44 @@ export class AiSdkContentGenerator {
139
139
  }
140
140
  }
141
141
  }
142
+ /**
143
+ * Extract a human-readable message from an AI SDK stream error.
144
+ *
145
+ * The @ai-sdk/openai Responses API provider passes the raw SSE chunk
146
+ * object as the error value (not an Error instance). The actual message
147
+ * is nested at `.error.message`.
148
+ */
149
+ export function extractStreamErrorMessage(error) {
150
+ if (typeof error === 'string') {
151
+ return error;
152
+ }
153
+ if (error && typeof error === 'object') {
154
+ // OpenAI Responses API shape: { type: "error", error: { message: "..." } }
155
+ if ('error' in error) {
156
+ const nested = error.error;
157
+ if (nested && typeof nested === 'object' && 'message' in nested) {
158
+ const msg = nested.message;
159
+ if (typeof msg === 'string') {
160
+ return msg;
161
+ }
162
+ }
163
+ }
164
+ // Direct message property: { message: "..." }
165
+ if ('message' in error) {
166
+ const msg = error.message;
167
+ if (typeof msg === 'string') {
168
+ return msg;
169
+ }
170
+ }
171
+ try {
172
+ return JSON.stringify(error);
173
+ }
174
+ catch {
175
+ // circular reference or other stringify failure
176
+ }
177
+ }
178
+ return String(error);
179
+ }
142
180
  /**
143
181
  * Map AI SDK finish reason to our finish reason format.
144
182
  */
@@ -82,7 +82,27 @@ export function serializeTaskError(error) {
82
82
  name: error.name,
83
83
  };
84
84
  }
85
- // Unknown error type
85
+ // Unknown error type — extract message if possible, JSON.stringify to avoid "[object Object]"
86
+ if (error && typeof error === 'object') {
87
+ if ('message' in error) {
88
+ const msg = error.message;
89
+ if (typeof msg === 'string') {
90
+ return {
91
+ message: msg,
92
+ name: 'Error',
93
+ };
94
+ }
95
+ }
96
+ try {
97
+ return {
98
+ message: JSON.stringify(error),
99
+ name: 'Error',
100
+ };
101
+ }
102
+ catch {
103
+ // circular reference — fall through
104
+ }
105
+ }
86
106
  return {
87
107
  message: String(error),
88
108
  name: 'Error',
@@ -32,7 +32,15 @@ export function getErrorMessage(error) {
32
32
  return message;
33
33
  }
34
34
  }
35
- // Fallback for unknown error types
35
+ // Fallback: JSON for objects (avoids "[object Object]"), String for primitives
36
+ if (error && typeof error === 'object') {
37
+ try {
38
+ return JSON.stringify(error);
39
+ }
40
+ catch {
41
+ return String(error);
42
+ }
43
+ }
36
44
  return String(error);
37
45
  }
38
46
  /**
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@campfirein/brv-transport-client",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Transport client for ByteRover CLI - server discovery, connection, and real-time communication",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "debug",
3
- "version": "4.3.7",
3
+ "version": "4.4.3",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git://github.com/debug-js/debug.git"
@@ -26,7 +26,7 @@
26
26
  "scripts": {
27
27
  "lint": "xo",
28
28
  "test": "npm run test:node && npm run test:browser && npm run lint",
29
- "test:node": "istanbul cover _mocha -- test.js test.node.js",
29
+ "test:node": "mocha test.js test.node.js",
30
30
  "test:browser": "karma start --single-run",
31
31
  "test:coverage": "cat ./coverage/lcov.info | coveralls"
32
32
  },
@@ -37,7 +37,6 @@
37
37
  "brfs": "^2.0.1",
38
38
  "browserify": "^16.2.3",
39
39
  "coveralls": "^3.0.2",
40
- "istanbul": "^0.4.5",
41
40
  "karma": "^3.1.4",
42
41
  "karma-browserify": "^6.0.0",
43
42
  "karma-chrome-launcher": "^2.2.0",
@@ -56,5 +55,10 @@
56
55
  "browser": "./src/browser.js",
57
56
  "engines": {
58
57
  "node": ">=6.0"
58
+ },
59
+ "xo": {
60
+ "rules": {
61
+ "import/extensions": "off"
62
+ }
59
63
  }
60
64
  }
@@ -129,6 +129,7 @@ function useColors() {
129
129
 
130
130
  // Is webkit? http://stackoverflow.com/a/16459606/376773
131
131
  // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
132
+ // eslint-disable-next-line no-return-assign
132
133
  return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||
133
134
  // Is firebug? http://stackoverflow.com/a/398120/376773
134
135
  (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
@@ -218,7 +219,7 @@ function save(namespaces) {
218
219
  function load() {
219
220
  let r;
220
221
  try {
221
- r = exports.storage.getItem('debug');
222
+ r = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;
222
223
  } catch (error) {
223
224
  // Swallow
224
225
  // XXX (@Qix-) should we be logging these?
@@ -166,24 +166,62 @@ function setup(env) {
166
166
  createDebug.names = [];
167
167
  createDebug.skips = [];
168
168
 
169
- let i;
170
- const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
171
- const len = split.length;
172
-
173
- for (i = 0; i < len; i++) {
174
- if (!split[i]) {
175
- // ignore empty strings
176
- continue;
169
+ const split = (typeof namespaces === 'string' ? namespaces : '')
170
+ .trim()
171
+ .replace(/\s+/g, ',')
172
+ .split(',')
173
+ .filter(Boolean);
174
+
175
+ for (const ns of split) {
176
+ if (ns[0] === '-') {
177
+ createDebug.skips.push(ns.slice(1));
178
+ } else {
179
+ createDebug.names.push(ns);
177
180
  }
181
+ }
182
+ }
178
183
 
179
- namespaces = split[i].replace(/\*/g, '.*?');
180
-
181
- if (namespaces[0] === '-') {
182
- createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));
184
+ /**
185
+ * Checks if the given string matches a namespace template, honoring
186
+ * asterisks as wildcards.
187
+ *
188
+ * @param {String} search
189
+ * @param {String} template
190
+ * @return {Boolean}
191
+ */
192
+ function matchesTemplate(search, template) {
193
+ let searchIndex = 0;
194
+ let templateIndex = 0;
195
+ let starIndex = -1;
196
+ let matchIndex = 0;
197
+
198
+ while (searchIndex < search.length) {
199
+ if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {
200
+ // Match character or proceed with wildcard
201
+ if (template[templateIndex] === '*') {
202
+ starIndex = templateIndex;
203
+ matchIndex = searchIndex;
204
+ templateIndex++; // Skip the '*'
205
+ } else {
206
+ searchIndex++;
207
+ templateIndex++;
208
+ }
209
+ } else if (starIndex !== -1) { // eslint-disable-line no-negated-condition
210
+ // Backtrack to the last '*' and try to match more characters
211
+ templateIndex = starIndex + 1;
212
+ matchIndex++;
213
+ searchIndex = matchIndex;
183
214
  } else {
184
- createDebug.names.push(new RegExp('^' + namespaces + '$'));
215
+ return false; // No match
185
216
  }
186
217
  }
218
+
219
+ // Handle trailing '*' in template
220
+ while (templateIndex < template.length && template[templateIndex] === '*') {
221
+ templateIndex++;
222
+ }
223
+
224
+ return templateIndex === template.length;
187
225
  }
188
226
 
189
227
  /**
@@ -194,8 +232,8 @@ function setup(env) {
194
232
  */
195
233
  function disable() {
196
234
  const namespaces = [
197
- ...createDebug.names.map(toNamespace),
198
- ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)
235
+ ...createDebug.names,
236
+ ...createDebug.skips.map(namespace => '-' + namespace)
199
237
  ].join(',');
200
238
  createDebug.enable('');
201
239
  return namespaces;
@@ -209,21 +247,14 @@ function setup(env) {
209
247
  * @api public
210
248
  */
211
249
  function enabled(name) {
212
- if (name[name.length - 1] === '*') {
213
- return true;
214
- }
215
-
216
- let i;
217
- let len;
218
-
219
- for (i = 0, len = createDebug.skips.length; i < len; i++) {
220
- if (createDebug.skips[i].test(name)) {
250
+ for (const skip of createDebug.skips) {
251
+ if (matchesTemplate(name, skip)) {
221
252
  return false;
222
253
  }
223
254
  }
224
255
 
225
- for (i = 0, len = createDebug.names.length; i < len; i++) {
226
- if (createDebug.names[i].test(name)) {
256
+ for (const ns of createDebug.names) {
257
+ if (matchesTemplate(name, ns)) {
227
258
  return true;
228
259
  }
229
260
  }
@@ -231,19 +262,6 @@ function setup(env) {
231
262
  return false;
232
263
  }
233
264
 
234
- /**
235
- * Convert regexp to namespace
236
- *
237
- * @param {RegExp} regxep
238
- * @return {String} namespace
239
- * @api private
240
- */
241
- function toNamespace(regexp) {
242
- return regexp.toString()
243
- .substring(2, regexp.toString().length - 2)
244
- .replace(/\.\*\?$/, '*');
245
- }
246
-
247
265
  /**
248
266
  * Coerce `val`.
249
267
  *
@@ -1,5 +1,5 @@
1
1
  import { Manager, ManagerOptions } from "./manager.js";
2
- import { Socket, SocketOptions } from "./socket.js";
2
+ import { DisconnectDescription, Socket, SocketOptions } from "./socket.js";
3
3
  /**
4
4
  * Looks up an existing `Manager` for multiplexing.
5
5
  * If the user summons:
@@ -25,5 +25,5 @@ export { protocol } from "socket.io-parser";
25
25
  *
26
26
  * @public
27
27
  */
28
- export { Manager, ManagerOptions, Socket, SocketOptions, lookup as io, lookup as connect, lookup as default, };
28
+ export { DisconnectDescription, Manager, ManagerOptions, Socket, SocketOptions, lookup as io, lookup as connect, lookup as default, };
29
29
  export { Fetch, NodeXHR, XHR, NodeWebSocket, WebSocket, WebTransport, } from "engine.io-client";
@@ -358,8 +358,7 @@ class Socket extends component_emitter_1.Emitter {
358
358
  };
359
359
  args.push((err, ...responseArgs) => {
360
360
  if (packet !== this._queue[0]) {
361
- // the packet has already been acknowledged
362
- return;
361
+ return debug("packet [%d] already acknowledged", packet.id);
363
362
  }
364
363
  const hasError = err !== null;
365
364
  if (hasError) {
@@ -615,8 +614,8 @@ class Socket extends component_emitter_1.Emitter {
615
614
  this._pid = pid; // defined only if connection state recovery is enabled
616
615
  this.connected = true;
617
616
  this.emitBuffered();
618
- this.emitReserved("connect");
619
617
  this._drainQueue(true);
618
+ this.emitReserved("connect");
620
619
  }
621
620
  /**
622
621
  * Emit buffered events (received and emitted).
@@ -1,5 +1,5 @@
1
1
  import { Manager, ManagerOptions } from "./manager.js";
2
- import { Socket, SocketOptions } from "./socket.js";
2
+ import { DisconnectDescription, Socket, SocketOptions } from "./socket.js";
3
3
  /**
4
4
  * Looks up an existing `Manager` for multiplexing.
5
5
  * If the user summons:
@@ -25,5 +25,5 @@ export { protocol } from "socket.io-parser";
25
25
  *
26
26
  * @public
27
27
  */
28
- export { Manager, ManagerOptions, Socket, SocketOptions, lookup as io, lookup as connect, lookup as default, };
28
+ export { DisconnectDescription, Manager, ManagerOptions, Socket, SocketOptions, lookup as io, lookup as connect, lookup as default, };
29
29
  export { Fetch, NodeXHR, XHR, NodeWebSocket, WebSocket, WebTransport, } from "engine.io-client";
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "socket.io-client",
3
- "version": "4.7.5",
3
+ "version": "4.8.3",
4
4
  "type": "module"
5
5
  }
@@ -346,8 +346,6 @@ export class Socket extends Emitter {
346
346
  };
347
347
  args.push((err, ...responseArgs) => {
348
348
  if (packet !== this._queue[0]) {
349
- // the packet has already been acknowledged
350
- return;
351
349
  }
352
350
  const hasError = err !== null;
353
351
  if (hasError) {
@@ -590,8 +588,8 @@ export class Socket extends Emitter {
590
588
  this._pid = pid; // defined only if connection state recovery is enabled
591
589
  this.connected = true;
592
590
  this.emitBuffered();
593
- this.emitReserved("connect");
594
591
  this._drainQueue(true);
592
+ this.emitReserved("connect");
595
593
  }
596
594
  /**
597
595
  * Emit buffered events (received and emitted).
@@ -1,5 +1,5 @@
1
1
  import { Manager, ManagerOptions } from "./manager.js";
2
- import { Socket, SocketOptions } from "./socket.js";
2
+ import { DisconnectDescription, Socket, SocketOptions } from "./socket.js";
3
3
  /**
4
4
  * Looks up an existing `Manager` for multiplexing.
5
5
  * If the user summons:
@@ -25,5 +25,5 @@ export { protocol } from "socket.io-parser";
25
25
  *
26
26
  * @public
27
27
  */
28
- export { Manager, ManagerOptions, Socket, SocketOptions, lookup as io, lookup as connect, lookup as default, };
28
+ export { DisconnectDescription, Manager, ManagerOptions, Socket, SocketOptions, lookup as io, lookup as connect, lookup as default, };
29
29
  export { Fetch, NodeXHR, XHR, NodeWebSocket, WebSocket, WebTransport, } from "engine.io-client";
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "socket.io-client",
3
- "version": "4.7.5",
3
+ "version": "4.8.3",
4
4
  "type": "module"
5
5
  }
@@ -352,8 +352,7 @@ export class Socket extends Emitter {
352
352
  };
353
353
  args.push((err, ...responseArgs) => {
354
354
  if (packet !== this._queue[0]) {
355
- // the packet has already been acknowledged
356
- return;
355
+ return debug("packet [%d] already acknowledged", packet.id);
357
356
  }
358
357
  const hasError = err !== null;
359
358
  if (hasError) {
@@ -609,8 +608,8 @@ export class Socket extends Emitter {
609
608
  this._pid = pid; // defined only if connection state recovery is enabled
610
609
  this.connected = true;
611
610
  this.emitBuffered();
612
- this.emitReserved("connect");
613
611
  this._drainQueue(true);
612
+ this.emitReserved("connect");
614
613
  }
615
614
  /**
616
615
  * Emit buffered events (received and emitted).