@sideboard-ai/core 0.1.148 → 0.1.149

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.
@@ -212,6 +212,36 @@ function cursorSessionRecoveryMessage(err, agentId) {
212
212
  }
213
213
  return `Cursor session is unresumable (${detail}) \u2014 starting a new session`;
214
214
  }
215
+ function isRetryableCursorTransportError(err) {
216
+ if (looksLikeNonRetryableCursorFailure(cursorErrorMessage(err))) return false;
217
+ if (err && typeof err === "object" && "isRetryable" in err && err.isRetryable === true) {
218
+ return true;
219
+ }
220
+ return /network request failed/i.test(cursorErrorMessage(err));
221
+ }
222
+ function looksLikeNonRetryableCursorFailure(message) {
223
+ const lower = message.toLowerCase();
224
+ return /invalid (?:user )?api key|not logged in|not authenticated|unauthorized|credit balance|out of credits|insufficient.?quota/.test(
225
+ lower
226
+ );
227
+ }
228
+ function cursorRetryableTransportMessage(err) {
229
+ const detail = cursorErrorMessage(err) || "network error";
230
+ return `Cursor hit a retryable error (${detail}) \u2014 retrying once`;
231
+ }
232
+ var CURSOR_RETRYABLE_TRANSPORT_DELAY_MS = 1500;
233
+ async function retryOnceOnRetryableCursorError(fn, onRetry, delayMs = CURSOR_RETRYABLE_TRANSPORT_DELAY_MS) {
234
+ try {
235
+ return await fn();
236
+ } catch (err) {
237
+ if (!isRetryableCursorTransportError(err)) throw err;
238
+ onRetry?.(err);
239
+ if (delayMs > 0) {
240
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
241
+ }
242
+ return fn();
243
+ }
244
+ }
215
245
  function cursorSendOptions(mcpServers) {
216
246
  const opts = { local: { force: true } };
217
247
  if (mcpServers && typeof mcpServers === "object" && Object.keys(mcpServers).length > 0) {
@@ -746,18 +776,23 @@ async function main() {
746
776
  name: "Sideboard",
747
777
  ...mcpServers ? { mcpServers } : {}
748
778
  };
779
+ const retryTransport = (fn) => retryOnceOnRetryableCursorError(fn, (err) => {
780
+ emit({ type: "stderr", data: cursorRetryableTransportMessage(err) });
781
+ });
749
782
  async function createAgent() {
750
- return import_sdk.Agent.create(createOpts);
783
+ return retryTransport(() => import_sdk.Agent.create(createOpts));
751
784
  }
752
785
  async function openAgent() {
753
786
  try {
754
- return req.agentId ? await import_sdk.Agent.resume(req.agentId, {
755
- apiKey,
756
- model,
757
- mode,
758
- local,
759
- ...mcpServers ? { mcpServers } : {}
760
- }) : await createAgent();
787
+ return req.agentId ? await retryTransport(
788
+ () => import_sdk.Agent.resume(req.agentId, {
789
+ apiKey,
790
+ model,
791
+ mode,
792
+ local,
793
+ ...mcpServers ? { mcpServers } : {}
794
+ })
795
+ ) : await createAgent();
761
796
  } catch (err) {
762
797
  if (!isUnresumableCursorSession(err)) throw err;
763
798
  emit({
@@ -773,7 +808,7 @@ async function main() {
773
808
  ...extra
774
809
  };
775
810
  try {
776
- return await agent.send(req.prompt, sendOpts);
811
+ return await retryTransport(() => agent.send(req.prompt, sendOpts));
777
812
  } catch (err) {
778
813
  if (!isAgentBusyError(err)) throw err;
779
814
  const n = await cancelStaleLocalRuns(agent.agentId, {
@@ -784,7 +819,7 @@ async function main() {
784
819
  type: "stderr",
785
820
  data: n > 0 ? `Cursor agent had ${n} stale active run(s) \u2014 cancelled and retrying` : "Cursor agent busy \u2014 retrying send"
786
821
  });
787
- return agent.send(req.prompt, sendOpts);
822
+ return retryTransport(() => agent.send(req.prompt, sendOpts));
788
823
  }
789
824
  }
790
825
  let liveRun = null;
@@ -12,7 +12,7 @@ import {
12
12
  ensureCursorRipgrepPath,
13
13
  fetchCursorTurnCostUsd,
14
14
  formatUnknownDetail
15
- } from "../chunk-WT5HSFOU.js";
15
+ } from "../chunk-LAFA56WD.js";
16
16
  import {
17
17
  dropNestedElectronEnvFromProcess
18
18
  } from "../chunk-4TR3HZFT.js";
@@ -50,6 +50,36 @@ function cursorSessionRecoveryMessage(err, agentId) {
50
50
  }
51
51
  return `Cursor session is unresumable (${detail}) \u2014 starting a new session`;
52
52
  }
53
+ function isRetryableCursorTransportError(err) {
54
+ if (looksLikeNonRetryableCursorFailure(cursorErrorMessage(err))) return false;
55
+ if (err && typeof err === "object" && "isRetryable" in err && err.isRetryable === true) {
56
+ return true;
57
+ }
58
+ return /network request failed/i.test(cursorErrorMessage(err));
59
+ }
60
+ function looksLikeNonRetryableCursorFailure(message) {
61
+ const lower = message.toLowerCase();
62
+ return /invalid (?:user )?api key|not logged in|not authenticated|unauthorized|credit balance|out of credits|insufficient.?quota/.test(
63
+ lower
64
+ );
65
+ }
66
+ function cursorRetryableTransportMessage(err) {
67
+ const detail = cursorErrorMessage(err) || "network error";
68
+ return `Cursor hit a retryable error (${detail}) \u2014 retrying once`;
69
+ }
70
+ var CURSOR_RETRYABLE_TRANSPORT_DELAY_MS = 1500;
71
+ async function retryOnceOnRetryableCursorError(fn, onRetry, delayMs = CURSOR_RETRYABLE_TRANSPORT_DELAY_MS) {
72
+ try {
73
+ return await fn();
74
+ } catch (err) {
75
+ if (!isRetryableCursorTransportError(err)) throw err;
76
+ onRetry?.(err);
77
+ if (delayMs > 0) {
78
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
79
+ }
80
+ return fn();
81
+ }
82
+ }
53
83
  function cursorSendOptions(mcpServers) {
54
84
  const opts = { local: { force: true } };
55
85
  if (mcpServers && typeof mcpServers === "object" && Object.keys(mcpServers).length > 0) {
@@ -190,18 +220,23 @@ async function main() {
190
220
  name: "Sideboard",
191
221
  ...mcpServers ? { mcpServers } : {}
192
222
  };
223
+ const retryTransport = (fn) => retryOnceOnRetryableCursorError(fn, (err) => {
224
+ emit({ type: "stderr", data: cursorRetryableTransportMessage(err) });
225
+ });
193
226
  async function createAgent() {
194
- return Agent.create(createOpts);
227
+ return retryTransport(() => Agent.create(createOpts));
195
228
  }
196
229
  async function openAgent() {
197
230
  try {
198
- return req.agentId ? await Agent.resume(req.agentId, {
199
- apiKey,
200
- model,
201
- mode,
202
- local,
203
- ...mcpServers ? { mcpServers } : {}
204
- }) : await createAgent();
231
+ return req.agentId ? await retryTransport(
232
+ () => Agent.resume(req.agentId, {
233
+ apiKey,
234
+ model,
235
+ mode,
236
+ local,
237
+ ...mcpServers ? { mcpServers } : {}
238
+ })
239
+ ) : await createAgent();
205
240
  } catch (err) {
206
241
  if (!isUnresumableCursorSession(err)) throw err;
207
242
  emit({
@@ -217,7 +252,7 @@ async function main() {
217
252
  ...extra
218
253
  };
219
254
  try {
220
- return await agent.send(req.prompt, sendOpts);
255
+ return await retryTransport(() => agent.send(req.prompt, sendOpts));
221
256
  } catch (err) {
222
257
  if (!isAgentBusyError(err)) throw err;
223
258
  const n = await cancelStaleLocalRuns(agent.agentId, {
@@ -228,7 +263,7 @@ async function main() {
228
263
  type: "stderr",
229
264
  data: n > 0 ? `Cursor agent had ${n} stale active run(s) \u2014 cancelled and retrying` : "Cursor agent busy \u2014 retrying send"
230
265
  });
231
- return agent.send(req.prompt, sendOpts);
266
+ return retryTransport(() => agent.send(req.prompt, sendOpts));
232
267
  }
233
268
  }
234
269
  let liveRun = null;
@@ -30,7 +30,7 @@ import {
30
30
  resolveLoginCommand,
31
31
  resolveQuotaFallbackAgent,
32
32
  whichOnPath
33
- } from "./chunk-YQRBNOIW.js";
33
+ } from "./chunk-PTI5H3RK.js";
34
34
  import "./chunk-KBWND62T.js";
35
35
  import "./chunk-M267JPEA.js";
36
36
  import {
@@ -46,7 +46,7 @@ import {
46
46
  parseCursorRunnerLine,
47
47
  preferredCursorCostCents,
48
48
  turnCostUsdFromCursorUsage
49
- } from "./chunk-WT5HSFOU.js";
49
+ } from "./chunk-LAFA56WD.js";
50
50
  import "./chunk-YP3CSOZ6.js";
51
51
  import "./chunk-FKOIHGKV.js";
52
52
  import "./chunk-I77RYPOH.js";
@@ -36,7 +36,7 @@ import {
36
36
  resolveQuotaFallbackAgent,
37
37
  turnCostUsdFromCursorUsage,
38
38
  whichOnPath
39
- } from "./chunk-XOKHXFFX.js";
39
+ } from "./chunk-Q5DHVMXB.js";
40
40
  import "./chunk-ED4UPEJX.js";
41
41
  import "./chunk-S42XV45P.js";
42
42
  import "./chunk-6GN5WPYZ.js";
@@ -18,7 +18,7 @@ import {
18
18
  stripBrightsyNdjsonNoise,
19
19
  sumUsageList,
20
20
  toolDescription
21
- } from "./chunk-YQRBNOIW.js";
21
+ } from "./chunk-PTI5H3RK.js";
22
22
  import {
23
23
  addWorkspace,
24
24
  ensureWorkspace,
@@ -74,7 +74,7 @@ import {
74
74
  shouldRetryFailedAgentTurn,
75
75
  summarizeTurnStderr,
76
76
  turnFailChatText
77
- } from "./chunk-WT5HSFOU.js";
77
+ } from "./chunk-LAFA56WD.js";
78
78
  import {
79
79
  releaseCaffeinateHoldForThread
80
80
  } from "./chunk-DCOZABNT.js";
@@ -456,7 +456,7 @@ async function continueSourceThread(threadId, prompt) {
456
456
  await continueOnReply(threadId, prompt);
457
457
  return;
458
458
  }
459
- const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-NWIU5TJP.js");
459
+ const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-Z2O5OVJA.js");
460
460
  await getOrchestrator2().send(threadId, prompt);
461
461
  } catch {
462
462
  }
@@ -3073,7 +3073,7 @@ async function createThread(input, _onSetupLine) {
3073
3073
  return readThread(thread.id) ?? thread;
3074
3074
  }
3075
3075
  async function listLinearIssues(agent, repoPath) {
3076
- const { getAdapter: getAdapter2 } = await import("./agents-DUF4Q2ZI.js");
3076
+ const { getAdapter: getAdapter2 } = await import("./agents-HSVQ2Z6Y.js");
3077
3077
  await requireAgent(agent, { requireLinear: true });
3078
3078
  const adapter = getAdapter2(agent);
3079
3079
  if (!adapter.listLinearIssues) {
@@ -5928,7 +5928,7 @@ function formatScheduledPrompt(name, prompt) {
5928
5928
  ${prompt}`;
5929
5929
  }
5930
5930
  async function defaultDeps() {
5931
- const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-NWIU5TJP.js");
5931
+ const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-Z2O5OVJA.js");
5932
5932
  const orch = getOrchestrator2();
5933
5933
  return {
5934
5934
  findThread: (id) => findThreadByRef(id),
@@ -139,7 +139,7 @@ function looksLikeRetryableRunnerCrash(text) {
139
139
  const lower = text.trim().toLowerCase();
140
140
  if (/cannot find (?:package|module)|err_module_not_found/.test(lower)) return false;
141
141
  if (!lower) return true;
142
- return /uv_run|spineventloopinternal|libuv|homebrew node \+ shared libuv|cursor runner crashed in node|hascustomhostobject|electroninitializeicuandstartnode|nested chromium|truncated crash dump|connection stalled|sig(?:segv|abrt|ill)|segmentation fault|illegal instruction|fatal error/.test(
142
+ return /uv_run|spineventloopinternal|libuv|homebrew node \+ shared libuv|cursor runner crashed in node|hascustomhostobject|electroninitializeicuandstartnode|nested chromium|truncated crash dump|connection stalled|network request failed|cursor startup failed:.+\(retryable\)|sig(?:segv|abrt|ill)|segmentation fault|illegal instruction|fatal error/.test(
143
143
  lower
144
144
  );
145
145
  }
@@ -207,6 +207,9 @@ function humanizeAgentFailDetail(detail) {
207
207
  if (/connection stalled/.test(lower)) {
208
208
  return /retry the turn/i.test(raw) ? raw : `${raw} \u2014 retry the turn (Sideboard will start a fresh Cursor session).`;
209
209
  }
210
+ if (/network request failed|cursor startup failed:.+\(retryable\)/.test(lower)) {
211
+ return /retry the turn/i.test(raw) ? raw : `${raw} \u2014 retry the turn (a transient Cursor SDK network error).`;
212
+ }
210
213
  return raw;
211
214
  }
212
215
  function turnFailChatText(opts) {
@@ -22,7 +22,7 @@ import {
22
22
  packagedMcpStdioPath,
23
23
  parseCursorRunnerLine,
24
24
  resolveNodeLaunch
25
- } from "./chunk-WT5HSFOU.js";
25
+ } from "./chunk-LAFA56WD.js";
26
26
  import {
27
27
  codexUnattendedGitConfigArgs,
28
28
  mergeAgentGitAuthEnv,
@@ -283,7 +283,7 @@ function looksLikeRetryableRunnerCrash(text) {
283
283
  const lower = text.trim().toLowerCase();
284
284
  if (/cannot find (?:package|module)|err_module_not_found/.test(lower)) return false;
285
285
  if (!lower) return true;
286
- return /uv_run|spineventloopinternal|libuv|homebrew node \+ shared libuv|cursor runner crashed in node|hascustomhostobject|electroninitializeicuandstartnode|nested chromium|truncated crash dump|connection stalled|sig(?:segv|abrt|ill)|segmentation fault|illegal instruction|fatal error/.test(
286
+ return /uv_run|spineventloopinternal|libuv|homebrew node \+ shared libuv|cursor runner crashed in node|hascustomhostobject|electroninitializeicuandstartnode|nested chromium|truncated crash dump|connection stalled|network request failed|cursor startup failed:.+\(retryable\)|sig(?:segv|abrt|ill)|segmentation fault|illegal instruction|fatal error/.test(
287
287
  lower
288
288
  );
289
289
  }
@@ -351,6 +351,9 @@ function humanizeAgentFailDetail(detail) {
351
351
  if (/connection stalled/.test(lower)) {
352
352
  return /retry the turn/i.test(raw) ? raw : `${raw} \u2014 retry the turn (Sideboard will start a fresh Cursor session).`;
353
353
  }
354
+ if (/network request failed|cursor startup failed:.+\(retryable\)/.test(lower)) {
355
+ return /retry the turn/i.test(raw) ? raw : `${raw} \u2014 retry the turn (a transient Cursor SDK network error).`;
356
+ }
354
357
  return raw;
355
358
  }
356
359
  function turnFailChatText(opts) {
@@ -32,7 +32,7 @@ import {
32
32
  summarizeTurnStderr,
33
33
  toolDescription,
34
34
  turnFailChatText
35
- } from "./chunk-XOKHXFFX.js";
35
+ } from "./chunk-Q5DHVMXB.js";
36
36
  import {
37
37
  addWorkspace,
38
38
  ensureWorkspace,
@@ -391,7 +391,7 @@ async function continueSourceThread(threadId, prompt) {
391
391
  await continueOnReply(threadId, prompt);
392
392
  return;
393
393
  }
394
- const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-OVYITCO6.js");
394
+ const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-6TXQWBXN.js");
395
395
  await getOrchestrator2().send(threadId, prompt);
396
396
  } catch {
397
397
  }
@@ -3005,7 +3005,7 @@ async function createThread(input, _onSetupLine) {
3005
3005
  return readThread(thread.id) ?? thread;
3006
3006
  }
3007
3007
  async function listLinearIssues(agent, repoPath) {
3008
- const { getAdapter: getAdapter2 } = await import("./agents-INCTFWKA.js");
3008
+ const { getAdapter: getAdapter2 } = await import("./agents-V4MTDWXS.js");
3009
3009
  await requireAgent(agent, { requireLinear: true });
3010
3010
  const adapter = getAdapter2(agent);
3011
3011
  if (!adapter.listLinearIssues) {
@@ -5611,7 +5611,7 @@ function formatScheduledPrompt(name, prompt) {
5611
5611
  ${prompt}`;
5612
5612
  }
5613
5613
  async function defaultDeps() {
5614
- const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-OVYITCO6.js");
5614
+ const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-6TXQWBXN.js");
5615
5615
  const orch = getOrchestrator2();
5616
5616
  return {
5617
5617
  findThread: (id) => findThreadByRef(id),
package/dist/index.cjs CHANGED
@@ -7467,7 +7467,7 @@ function looksLikeRetryableRunnerCrash(text5) {
7467
7467
  const lower = text5.trim().toLowerCase();
7468
7468
  if (/cannot find (?:package|module)|err_module_not_found/.test(lower)) return false;
7469
7469
  if (!lower) return true;
7470
- return /uv_run|spineventloopinternal|libuv|homebrew node \+ shared libuv|cursor runner crashed in node|hascustomhostobject|electroninitializeicuandstartnode|nested chromium|truncated crash dump|connection stalled|sig(?:segv|abrt|ill)|segmentation fault|illegal instruction|fatal error/.test(
7470
+ return /uv_run|spineventloopinternal|libuv|homebrew node \+ shared libuv|cursor runner crashed in node|hascustomhostobject|electroninitializeicuandstartnode|nested chromium|truncated crash dump|connection stalled|network request failed|cursor startup failed:.+\(retryable\)|sig(?:segv|abrt|ill)|segmentation fault|illegal instruction|fatal error/.test(
7471
7471
  lower
7472
7472
  );
7473
7473
  }
@@ -7535,6 +7535,9 @@ function humanizeAgentFailDetail(detail) {
7535
7535
  if (/connection stalled/.test(lower)) {
7536
7536
  return /retry the turn/i.test(raw) ? raw : `${raw} \u2014 retry the turn (Sideboard will start a fresh Cursor session).`;
7537
7537
  }
7538
+ if (/network request failed|cursor startup failed:.+\(retryable\)/.test(lower)) {
7539
+ return /retry the turn/i.test(raw) ? raw : `${raw} \u2014 retry the turn (a transient Cursor SDK network error).`;
7540
+ }
7538
7541
  return raw;
7539
7542
  }
7540
7543
  function turnFailChatText(opts) {
package/dist/index.js CHANGED
@@ -212,7 +212,7 @@ import {
212
212
  worktreeCleanupSettings,
213
213
  wrapReviewSkillMarkdown,
214
214
  writeWorktreeFile
215
- } from "./chunk-CTXQHSTY.js";
215
+ } from "./chunk-JDYKQ6OI.js";
216
216
  import {
217
217
  BRIGHTSY_MCP_ALLOWED_TOOLS,
218
218
  CLAUDE_MODEL_CATALOG,
@@ -294,7 +294,7 @@ import {
294
294
  withEventParentId,
295
295
  withEventsParentId,
296
296
  writeInjectedMcpConfig
297
- } from "./chunk-YQRBNOIW.js";
297
+ } from "./chunk-PTI5H3RK.js";
298
298
  import {
299
299
  brightsyMcpServerName,
300
300
  connectBrightsyTeam,
@@ -411,7 +411,7 @@ import {
411
411
  preferredCursorCostCents,
412
412
  turnCostUsdFromCursorUsage,
413
413
  withMaxOldSpaceSize
414
- } from "./chunk-WT5HSFOU.js";
414
+ } from "./chunk-LAFA56WD.js";
415
415
  import {
416
416
  caffeinateHoldPath,
417
417
  getCaffeinateHold,
@@ -1527,7 +1527,7 @@ function looksLikeRetryableRunnerCrash(text5) {
1527
1527
  const lower = text5.trim().toLowerCase();
1528
1528
  if (/cannot find (?:package|module)|err_module_not_found/.test(lower)) return false;
1529
1529
  if (!lower) return true;
1530
- return /uv_run|spineventloopinternal|libuv|homebrew node \+ shared libuv|cursor runner crashed in node|hascustomhostobject|electroninitializeicuandstartnode|nested chromium|truncated crash dump|connection stalled|sig(?:segv|abrt|ill)|segmentation fault|illegal instruction|fatal error/.test(
1530
+ return /uv_run|spineventloopinternal|libuv|homebrew node \+ shared libuv|cursor runner crashed in node|hascustomhostobject|electroninitializeicuandstartnode|nested chromium|truncated crash dump|connection stalled|network request failed|cursor startup failed:.+\(retryable\)|sig(?:segv|abrt|ill)|segmentation fault|illegal instruction|fatal error/.test(
1531
1531
  lower
1532
1532
  );
1533
1533
  }
@@ -1595,6 +1595,9 @@ function humanizeAgentFailDetail(detail) {
1595
1595
  if (/connection stalled/.test(lower)) {
1596
1596
  return /retry the turn/i.test(raw) ? raw : `${raw} \u2014 retry the turn (Sideboard will start a fresh Cursor session).`;
1597
1597
  }
1598
+ if (/network request failed|cursor startup failed:.+\(retryable\)/.test(lower)) {
1599
+ return /retry the turn/i.test(raw) ? raw : `${raw} \u2014 retry the turn (a transient Cursor SDK network error).`;
1600
+ }
1598
1601
  return raw;
1599
1602
  }
1600
1603
  function turnFailChatText(opts) {
@@ -32,11 +32,11 @@ import {
32
32
  slackTokenFor,
33
33
  syncBoardPins,
34
34
  updateSchedule
35
- } from "../chunk-5MS2XTNV.js";
35
+ } from "../chunk-TZWO7J4W.js";
36
36
  import {
37
37
  listModelsForAgent,
38
38
  sideboardMcpProfile
39
- } from "../chunk-XOKHXFFX.js";
39
+ } from "../chunk-Q5DHVMXB.js";
40
40
  import "../chunk-ED4UPEJX.js";
41
41
  import "../chunk-S42XV45P.js";
42
42
  import "../chunk-Q62SDB53.js";
@@ -6,8 +6,8 @@ import {
6
6
  isPidAlive,
7
7
  startOrchestration,
8
8
  waitForPidExit
9
- } from "./chunk-5MS2XTNV.js";
10
- import "./chunk-XOKHXFFX.js";
9
+ } from "./chunk-TZWO7J4W.js";
10
+ import "./chunk-Q5DHVMXB.js";
11
11
  import "./chunk-ED4UPEJX.js";
12
12
  import "./chunk-S42XV45P.js";
13
13
  import "./chunk-Q62SDB53.js";
@@ -4,8 +4,8 @@ import {
4
4
  isPidAlive,
5
5
  startOrchestration,
6
6
  waitForPidExit
7
- } from "./chunk-CTXQHSTY.js";
8
- import "./chunk-YQRBNOIW.js";
7
+ } from "./chunk-JDYKQ6OI.js";
8
+ import "./chunk-PTI5H3RK.js";
9
9
  import "./chunk-KBWND62T.js";
10
10
  import "./chunk-M267JPEA.js";
11
11
  import "./chunk-3QRGCKYL.js";
@@ -14,7 +14,7 @@ import "./chunk-EGDRPA4B.js";
14
14
  import "./chunk-ELBYOGVA.js";
15
15
  import "./chunk-QTUESPAW.js";
16
16
  import "./chunk-AXQ4ZWHK.js";
17
- import "./chunk-WT5HSFOU.js";
17
+ import "./chunk-LAFA56WD.js";
18
18
  import "./chunk-DCOZABNT.js";
19
19
  import "./chunk-YP3CSOZ6.js";
20
20
  import "./chunk-FKOIHGKV.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sideboard-ai/core",
3
- "version": "0.1.148",
3
+ "version": "0.1.149",
4
4
  "description": "Sideboard core — orchestration, agents, git worktrees, MCP server",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",