@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.
- package/dist/agents/cursor-runner.cjs +45 -10
- package/dist/agents/cursor-runner.js +46 -11
- package/dist/{agents-DUF4Q2ZI.js → agents-HSVQ2Z6Y.js} +2 -2
- package/dist/{agents-INCTFWKA.js → agents-V4MTDWXS.js} +1 -1
- package/dist/{chunk-CTXQHSTY.js → chunk-JDYKQ6OI.js} +5 -5
- package/dist/{chunk-WT5HSFOU.js → chunk-LAFA56WD.js} +4 -1
- package/dist/{chunk-YQRBNOIW.js → chunk-PTI5H3RK.js} +1 -1
- package/dist/{chunk-XOKHXFFX.js → chunk-Q5DHVMXB.js} +4 -1
- package/dist/{chunk-5MS2XTNV.js → chunk-TZWO7J4W.js} +4 -4
- package/dist/index.cjs +4 -1
- package/dist/index.js +3 -3
- package/dist/mcp/run-stdio.cjs +4 -1
- package/dist/mcp/run-stdio.js +2 -2
- package/dist/{orchestrator-OVYITCO6.js → orchestrator-6TXQWBXN.js} +2 -2
- package/dist/{orchestrator-NWIU5TJP.js → orchestrator-Z2O5OVJA.js} +3 -3
- package/package.json +1 -1
|
@@ -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
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
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-
|
|
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
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
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-
|
|
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-
|
|
49
|
+
} from "./chunk-LAFA56WD.js";
|
|
50
50
|
import "./chunk-YP3CSOZ6.js";
|
|
51
51
|
import "./chunk-FKOIHGKV.js";
|
|
52
52
|
import "./chunk-I77RYPOH.js";
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
stripBrightsyNdjsonNoise,
|
|
19
19
|
sumUsageList,
|
|
20
20
|
toolDescription
|
|
21
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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) {
|
|
@@ -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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
414
|
+
} from "./chunk-LAFA56WD.js";
|
|
415
415
|
import {
|
|
416
416
|
caffeinateHoldPath,
|
|
417
417
|
getCaffeinateHold,
|
package/dist/mcp/run-stdio.cjs
CHANGED
|
@@ -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) {
|
package/dist/mcp/run-stdio.js
CHANGED
|
@@ -32,11 +32,11 @@ import {
|
|
|
32
32
|
slackTokenFor,
|
|
33
33
|
syncBoardPins,
|
|
34
34
|
updateSchedule
|
|
35
|
-
} from "../chunk-
|
|
35
|
+
} from "../chunk-TZWO7J4W.js";
|
|
36
36
|
import {
|
|
37
37
|
listModelsForAgent,
|
|
38
38
|
sideboardMcpProfile
|
|
39
|
-
} from "../chunk-
|
|
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-
|
|
10
|
-
import "./chunk-
|
|
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-
|
|
8
|
-
import "./chunk-
|
|
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-
|
|
17
|
+
import "./chunk-LAFA56WD.js";
|
|
18
18
|
import "./chunk-DCOZABNT.js";
|
|
19
19
|
import "./chunk-YP3CSOZ6.js";
|
|
20
20
|
import "./chunk-FKOIHGKV.js";
|