@sideboard-ai/core 0.1.85 → 0.1.86

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 (29) hide show
  1. package/dist/agents/cursor-runner.cjs +54 -16
  2. package/dist/agents/cursor-runner.js +54 -16
  3. package/dist/{agents-YAYNNJWC.js → agents-HJ3Y2JN5.js} +4 -4
  4. package/dist/{agents-FD77JUOP.js → agents-NDHD3VOL.js} +4 -4
  5. package/dist/{chunk-JFQ2M6NQ.js → chunk-45U4RQ74.js} +2 -2
  6. package/dist/{chunk-WGI6KXKJ.js → chunk-4Y745GLN.js} +3 -3
  7. package/dist/{chunk-6WQAYBVE.js → chunk-6ZGTM2E7.js} +1 -1
  8. package/dist/{chunk-6GKDYUTJ.js → chunk-EWKHP6DD.js} +2 -2
  9. package/dist/{chunk-XVFV56JG.js → chunk-HA2QTIWN.js} +1 -1
  10. package/dist/{chunk-2N5DVTGH.js → chunk-IGEL6M4G.js} +2 -2
  11. package/dist/{chunk-3CCRD6WS.js → chunk-KE6QLNTJ.js} +3 -3
  12. package/dist/{chunk-KRAUS3RF.js → chunk-OBHZKT2T.js} +1 -1
  13. package/dist/{chunk-JTHWVYSD.js → chunk-U4RZ3IQI.js} +2 -2
  14. package/dist/{chunk-SH75CXJR.js → chunk-ZN4NDAHV.js} +1 -1
  15. package/dist/{coordinator-prompt-VN7FF76K.js → coordinator-prompt-HOMHBR2L.js} +2 -2
  16. package/dist/{coordinator-prompt-YYQSPLIP.js → coordinator-prompt-L65MIGCV.js} +2 -2
  17. package/dist/{global-workspace-U3XVTQLL.js → global-workspace-MXOLTUAR.js} +3 -3
  18. package/dist/{global-workspace-BRIDCBMY.js → global-workspace-VGKPYFE2.js} +3 -3
  19. package/dist/index.cjs +1 -1
  20. package/dist/index.d.cts +2 -2
  21. package/dist/index.d.ts +2 -2
  22. package/dist/index.js +12 -12
  23. package/dist/mcp/run-stdio.cjs +1 -1
  24. package/dist/mcp/run-stdio.js +11 -11
  25. package/dist/{workspaces-IWQIWAMQ.js → workspaces-2GZ2VNNU.js} +4 -4
  26. package/dist/{workspaces-AIZDG6PS.js → workspaces-VWQ5YSND.js} +4 -4
  27. package/dist/{worktree-6ZALJUWG.js → worktree-RFCCG23P.js} +1 -1
  28. package/dist/{worktree-7Y22WHR7.js → worktree-WZJ3CFEN.js} +1 -1
  29. package/package.json +1 -1
@@ -69,6 +69,16 @@ function cursorSessionRecoveryMessage(err, agentId) {
69
69
  }
70
70
  return `Cursor session is unresumable (${detail}) \u2014 starting a new session`;
71
71
  }
72
+ function cursorSendOptions(mcpServers) {
73
+ const opts = { local: { force: true } };
74
+ if (mcpServers && typeof mcpServers === "object" && Object.keys(mcpServers).length > 0) {
75
+ opts.mcpServers = mcpServers;
76
+ }
77
+ return opts;
78
+ }
79
+ function withCursorLocalHangGuards(local) {
80
+ return { ...local, enableAgentRetries: false };
81
+ }
72
82
 
73
83
  // src/agents/error-detail.ts
74
84
  function formatUnknownDetail(err) {
@@ -347,7 +357,7 @@ async function main() {
347
357
  });
348
358
  const mode = req.planMode ? "plan" : "agent";
349
359
  const store = localAgentStore();
350
- const local = { cwd: req.cwd, store };
360
+ const local = withCursorLocalHangGuards({ cwd: req.cwd, store });
351
361
  const mcpServers = req.mcpServers && Object.keys(req.mcpServers).length > 0 ? req.mcpServers : void 0;
352
362
  const createOpts = {
353
363
  apiKey,
@@ -379,7 +389,7 @@ async function main() {
379
389
  }
380
390
  }
381
391
  async function sendPrompt(agent) {
382
- const sendOpts = mcpServers ? { mcpServers } : void 0;
392
+ const sendOpts = cursorSendOptions(mcpServers);
383
393
  try {
384
394
  return await agent.send(req.prompt, sendOpts);
385
395
  } catch (err) {
@@ -395,25 +405,53 @@ async function main() {
395
405
  return agent.send(req.prompt, sendOpts);
396
406
  }
397
407
  }
408
+ let liveRun = null;
409
+ let shuttingDown = false;
410
+ const cancelLiveRun = async () => {
411
+ const run = liveRun;
412
+ liveRun = null;
413
+ if (!run) return;
414
+ try {
415
+ await run.cancel();
416
+ } catch {
417
+ }
418
+ };
419
+ const onSignal = () => {
420
+ if (shuttingDown) return;
421
+ shuttingDown = true;
422
+ void Promise.race([
423
+ cancelLiveRun(),
424
+ new Promise((resolve) => {
425
+ setTimeout(resolve, 2e3);
426
+ })
427
+ ]).finally(() => process.exit(1));
428
+ };
429
+ process.once("SIGTERM", onSignal);
430
+ process.once("SIGINT", onSignal);
398
431
  async function runTurn(agent) {
399
432
  emit({ type: "session_id", data: agent.agentId });
400
433
  const run = await sendPrompt(agent);
401
- for await (const msg of run.stream()) {
402
- for (const event of cursorSdkMessageToEvents(msg)) {
403
- emit(event);
434
+ liveRun = run;
435
+ try {
436
+ for await (const msg of run.stream()) {
437
+ for (const event of cursorSdkMessageToEvents(msg)) {
438
+ emit(event);
439
+ }
404
440
  }
441
+ const result = await run.wait();
442
+ if (result.status === "error") {
443
+ const detail = formatUnknownDetail(result.error);
444
+ emit({
445
+ type: "stderr",
446
+ data: detail ? `Cursor run failed (${result.id}): ${detail}` : `Cursor run failed (${result.id})`
447
+ });
448
+ return 2;
449
+ }
450
+ if (result.status === "cancelled") return 0;
451
+ return 0;
452
+ } finally {
453
+ liveRun = null;
405
454
  }
406
- const result = await run.wait();
407
- if (result.status === "error") {
408
- const detail = formatUnknownDetail(result.error);
409
- emit({
410
- type: "stderr",
411
- data: detail ? `Cursor run failed (${result.id}): ${detail}` : `Cursor run failed (${result.id})`
412
- });
413
- return 2;
414
- }
415
- if (result.status === "cancelled") return 0;
416
- return 0;
417
455
  }
418
456
  try {
419
457
  let agent = await openAgent();
@@ -41,6 +41,16 @@ function cursorSessionRecoveryMessage(err, agentId) {
41
41
  }
42
42
  return `Cursor session is unresumable (${detail}) \u2014 starting a new session`;
43
43
  }
44
+ function cursorSendOptions(mcpServers) {
45
+ const opts = { local: { force: true } };
46
+ if (mcpServers && typeof mcpServers === "object" && Object.keys(mcpServers).length > 0) {
47
+ opts.mcpServers = mcpServers;
48
+ }
49
+ return opts;
50
+ }
51
+ function withCursorLocalHangGuards(local) {
52
+ return { ...local, enableAgentRetries: false };
53
+ }
44
54
 
45
55
  // src/agents/cursor-runner.ts
46
56
  dropNestedElectronEnvFromProcess();
@@ -123,7 +133,7 @@ async function main() {
123
133
  });
124
134
  const mode = req.planMode ? "plan" : "agent";
125
135
  const store = localAgentStore();
126
- const local = { cwd: req.cwd, store };
136
+ const local = withCursorLocalHangGuards({ cwd: req.cwd, store });
127
137
  const mcpServers = req.mcpServers && Object.keys(req.mcpServers).length > 0 ? req.mcpServers : void 0;
128
138
  const createOpts = {
129
139
  apiKey,
@@ -155,7 +165,7 @@ async function main() {
155
165
  }
156
166
  }
157
167
  async function sendPrompt(agent) {
158
- const sendOpts = mcpServers ? { mcpServers } : void 0;
168
+ const sendOpts = cursorSendOptions(mcpServers);
159
169
  try {
160
170
  return await agent.send(req.prompt, sendOpts);
161
171
  } catch (err) {
@@ -171,25 +181,53 @@ async function main() {
171
181
  return agent.send(req.prompt, sendOpts);
172
182
  }
173
183
  }
184
+ let liveRun = null;
185
+ let shuttingDown = false;
186
+ const cancelLiveRun = async () => {
187
+ const run = liveRun;
188
+ liveRun = null;
189
+ if (!run) return;
190
+ try {
191
+ await run.cancel();
192
+ } catch {
193
+ }
194
+ };
195
+ const onSignal = () => {
196
+ if (shuttingDown) return;
197
+ shuttingDown = true;
198
+ void Promise.race([
199
+ cancelLiveRun(),
200
+ new Promise((resolve) => {
201
+ setTimeout(resolve, 2e3);
202
+ })
203
+ ]).finally(() => process.exit(1));
204
+ };
205
+ process.once("SIGTERM", onSignal);
206
+ process.once("SIGINT", onSignal);
174
207
  async function runTurn(agent) {
175
208
  emit({ type: "session_id", data: agent.agentId });
176
209
  const run = await sendPrompt(agent);
177
- for await (const msg of run.stream()) {
178
- for (const event of cursorSdkMessageToEvents(msg)) {
179
- emit(event);
210
+ liveRun = run;
211
+ try {
212
+ for await (const msg of run.stream()) {
213
+ for (const event of cursorSdkMessageToEvents(msg)) {
214
+ emit(event);
215
+ }
180
216
  }
217
+ const result = await run.wait();
218
+ if (result.status === "error") {
219
+ const detail = formatUnknownDetail(result.error);
220
+ emit({
221
+ type: "stderr",
222
+ data: detail ? `Cursor run failed (${result.id}): ${detail}` : `Cursor run failed (${result.id})`
223
+ });
224
+ return 2;
225
+ }
226
+ if (result.status === "cancelled") return 0;
227
+ return 0;
228
+ } finally {
229
+ liveRun = null;
181
230
  }
182
- const result = await run.wait();
183
- if (result.status === "error") {
184
- const detail = formatUnknownDetail(result.error);
185
- emit({
186
- type: "stderr",
187
- data: detail ? `Cursor run failed (${result.id}): ${detail}` : `Cursor run failed (${result.id})`
188
- });
189
- return 2;
190
- }
191
- if (result.status === "cancelled") return 0;
192
- return 0;
193
231
  }
194
232
  try {
195
233
  let agent = await openAgent();
@@ -28,20 +28,20 @@ import {
28
28
  resolveCursorModelId,
29
29
  resolveLoginCommand,
30
30
  resolveQuotaFallbackAgent
31
- } from "./chunk-WGI6KXKJ.js";
31
+ } from "./chunk-4Y745GLN.js";
32
32
  import {
33
33
  ORCHESTRATOR_AGENT_KINDS,
34
34
  assertOrchestratorCapableAgent,
35
35
  coerceOrchestratorAgent,
36
36
  isOrchestratorCapableAgent
37
- } from "./chunk-JTHWVYSD.js";
38
- import "./chunk-SH75CXJR.js";
37
+ } from "./chunk-U4RZ3IQI.js";
38
+ import "./chunk-ZN4NDAHV.js";
39
39
  import "./chunk-HHTHF5BQ.js";
40
40
  import {
41
41
  cursorSdkMessageToEvents,
42
42
  parseCursorRunnerLine
43
43
  } from "./chunk-CBJSPTBG.js";
44
- import "./chunk-KRAUS3RF.js";
44
+ import "./chunk-OBHZKT2T.js";
45
45
  import "./chunk-FKOIHGKV.js";
46
46
  import "./chunk-I3FRXL7J.js";
47
47
  import "./chunk-5KLC2MWZ.js";
@@ -32,16 +32,16 @@ import {
32
32
  resolveCursorModelId,
33
33
  resolveLoginCommand,
34
34
  resolveQuotaFallbackAgent
35
- } from "./chunk-3CCRD6WS.js";
35
+ } from "./chunk-KE6QLNTJ.js";
36
36
  import "./chunk-6K5VAPVR.js";
37
37
  import {
38
38
  ORCHESTRATOR_AGENT_KINDS,
39
39
  assertOrchestratorCapableAgent,
40
40
  coerceOrchestratorAgent,
41
41
  isOrchestratorCapableAgent
42
- } from "./chunk-6GKDYUTJ.js";
43
- import "./chunk-XVFV56JG.js";
44
- import "./chunk-6WQAYBVE.js";
42
+ } from "./chunk-EWKHP6DD.js";
43
+ import "./chunk-HA2QTIWN.js";
44
+ import "./chunk-6ZGTM2E7.js";
45
45
  import "./chunk-B3SJXYIJ.js";
46
46
  import "./chunk-7FD7COKE.js";
47
47
  import "./chunk-AY53MPDE.js";
@@ -2,11 +2,11 @@
2
2
 
3
3
  import {
4
4
  isGlobalRepoPath
5
- } from "./chunk-6GKDYUTJ.js";
5
+ } from "./chunk-EWKHP6DD.js";
6
6
  import {
7
7
  ensureGhPreferOrigin,
8
8
  resolveRepoRoot
9
- } from "./chunk-6WQAYBVE.js";
9
+ } from "./chunk-6ZGTM2E7.js";
10
10
  import {
11
11
  appDataDir
12
12
  } from "./chunk-7MV3RXSC.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isOrchestratorThread
3
- } from "./chunk-JTHWVYSD.js";
3
+ } from "./chunk-U4RZ3IQI.js";
4
4
  import {
5
5
  applyConnectedTeamToCli,
6
6
  brightsyMcpServerName,
@@ -17,7 +17,7 @@ import {
17
17
  import {
18
18
  codexUnattendedGitConfigArgs,
19
19
  resolveAgentGitAuthEnv
20
- } from "./chunk-KRAUS3RF.js";
20
+ } from "./chunk-OBHZKT2T.js";
21
21
  import {
22
22
  claudeChromeEnabled,
23
23
  loadAppSettings,
@@ -1025,7 +1025,7 @@ var claudeAdapter = {
1025
1025
  );
1026
1026
  }
1027
1027
  const mode = permissionMode(thread);
1028
- const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-BRIDCBMY.js");
1028
+ const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-VGKPYFE2.js");
1029
1029
  const isOrchestrator = isOrchestratorThread2(thread);
1030
1030
  const injectedServers = await buildInjectedMcpServers({
1031
1031
  includeSideboard: true,
@@ -1025,7 +1025,7 @@ function formatGitAuthModeDirective(mode) {
1025
1025
  default:
1026
1026
  return [
1027
1027
  "Git authentication (Account \u2192 GitHub mode: auto):",
1028
- "- This process rewrites GitHub SSH remotes to HTTPS and authenticates with `GH_TOKEN` from `gh` so git/ssh never prompt the macOS Keychain (required for Slack / unattended Cursor).",
1028
+ "- This process rewrites GitHub SSH remotes to HTTPS and authenticates with `GH_TOKEN` from `gh` so git/ssh never prompt the macOS Keychain (required for unattended orchestrator turns).",
1029
1029
  "- Do not switch remotes to SSH. Push with `git push -u origin HEAD`.",
1030
1030
  "- If HTTPS auth fails, tell the user to run `gh auth login` on this Mac or set Account \u2192 GitHub to a PAT \u2014 do not wait for a Keychain dialog."
1031
1031
  ].join("\n");
@@ -2,12 +2,12 @@
2
2
 
3
3
  import {
4
4
  ensureGlobalCoordinatorCwd
5
- } from "./chunk-XVFV56JG.js";
5
+ } from "./chunk-HA2QTIWN.js";
6
6
  import {
7
7
  allocateTeamName,
8
8
  takenSlugsFromThread,
9
9
  teamSlugFromName
10
- } from "./chunk-6WQAYBVE.js";
10
+ } from "./chunk-6ZGTM2E7.js";
11
11
  import {
12
12
  createEmptyThread,
13
13
  listThreads,
@@ -2,7 +2,7 @@
2
2
 
3
3
  import {
4
4
  resolveGithubRepoSlug
5
- } from "./chunk-6WQAYBVE.js";
5
+ } from "./chunk-6ZGTM2E7.js";
6
6
  import {
7
7
  resolveThreadDefaults
8
8
  } from "./chunk-AY53MPDE.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  isGlobalRepoPath
3
- } from "./chunk-JTHWVYSD.js";
3
+ } from "./chunk-U4RZ3IQI.js";
4
4
  import {
5
5
  ensureGhPreferOrigin,
6
6
  resolveRepoRoot
7
- } from "./chunk-KRAUS3RF.js";
7
+ } from "./chunk-OBHZKT2T.js";
8
8
  import {
9
9
  appDataDir
10
10
  } from "./chunk-M37RITA6.js";
@@ -9,11 +9,11 @@ import {
9
9
  } from "./chunk-6K5VAPVR.js";
10
10
  import {
11
11
  isOrchestratorThread
12
- } from "./chunk-6GKDYUTJ.js";
12
+ } from "./chunk-EWKHP6DD.js";
13
13
  import {
14
14
  codexUnattendedGitConfigArgs,
15
15
  resolveAgentGitAuthEnv
16
- } from "./chunk-6WQAYBVE.js";
16
+ } from "./chunk-6ZGTM2E7.js";
17
17
  import {
18
18
  claudeChromeEnabled,
19
19
  isStrippedElectronLaunch,
@@ -1100,7 +1100,7 @@ var claudeAdapter = {
1100
1100
  );
1101
1101
  }
1102
1102
  const mode = permissionMode(thread);
1103
- const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-U3XVTQLL.js");
1103
+ const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-MXOLTUAR.js");
1104
1104
  const isOrchestrator = isOrchestratorThread2(thread);
1105
1105
  const injectedServers = await buildInjectedMcpServers({
1106
1106
  includeSideboard: true,
@@ -1031,7 +1031,7 @@ function formatGitAuthModeDirective(mode) {
1031
1031
  default:
1032
1032
  return [
1033
1033
  "Git authentication (Account \u2192 GitHub mode: auto):",
1034
- "- This process rewrites GitHub SSH remotes to HTTPS and authenticates with `GH_TOKEN` from `gh` so git/ssh never prompt the macOS Keychain (required for Slack / unattended Cursor).",
1034
+ "- This process rewrites GitHub SSH remotes to HTTPS and authenticates with `GH_TOKEN` from `gh` so git/ssh never prompt the macOS Keychain (required for unattended orchestrator turns).",
1035
1035
  "- Do not switch remotes to SSH. Push with `git push -u origin HEAD`.",
1036
1036
  "- If HTTPS auth fails, tell the user to run `gh auth login` on this Mac or set Account \u2192 GitHub to a PAT \u2014 do not wait for a Keychain dialog."
1037
1037
  ].join("\n");
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  ensureGlobalCoordinatorCwd
3
- } from "./chunk-SH75CXJR.js";
3
+ } from "./chunk-ZN4NDAHV.js";
4
4
  import {
5
5
  allocateTeamName,
6
6
  takenSlugsFromThread,
7
7
  teamSlugFromName
8
- } from "./chunk-KRAUS3RF.js";
8
+ } from "./chunk-OBHZKT2T.js";
9
9
  import {
10
10
  resolveNewThreadOptions,
11
11
  resolveThreadDefaults
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveGithubRepoSlug
3
- } from "./chunk-KRAUS3RF.js";
3
+ } from "./chunk-OBHZKT2T.js";
4
4
  import {
5
5
  resolveThreadDefaults
6
6
  } from "./chunk-I3FRXL7J.js";
@@ -7,8 +7,8 @@ import {
7
7
  enrichWorkspacesWithGithub,
8
8
  ensureGlobalCoordinatorCwd,
9
9
  formatWorkspaceInventory
10
- } from "./chunk-SH75CXJR.js";
11
- import "./chunk-KRAUS3RF.js";
10
+ } from "./chunk-ZN4NDAHV.js";
11
+ import "./chunk-OBHZKT2T.js";
12
12
  import "./chunk-FKOIHGKV.js";
13
13
  import "./chunk-I3FRXL7J.js";
14
14
  import "./chunk-5KLC2MWZ.js";
@@ -9,8 +9,8 @@ import {
9
9
  enrichWorkspacesWithGithub,
10
10
  ensureGlobalCoordinatorCwd,
11
11
  formatWorkspaceInventory
12
- } from "./chunk-XVFV56JG.js";
13
- import "./chunk-6WQAYBVE.js";
12
+ } from "./chunk-HA2QTIWN.js";
13
+ import "./chunk-6ZGTM2E7.js";
14
14
  import "./chunk-B3SJXYIJ.js";
15
15
  import "./chunk-7FD7COKE.js";
16
16
  import "./chunk-AY53MPDE.js";
@@ -16,9 +16,9 @@ import {
16
16
  orchestratorSessionPoisonedByBuiltins,
17
17
  slackCoordinatorSourceRef,
18
18
  takenTeamSlugsForOrchestration
19
- } from "./chunk-6GKDYUTJ.js";
20
- import "./chunk-XVFV56JG.js";
21
- import "./chunk-6WQAYBVE.js";
19
+ } from "./chunk-EWKHP6DD.js";
20
+ import "./chunk-HA2QTIWN.js";
21
+ import "./chunk-6ZGTM2E7.js";
22
22
  import "./chunk-B3SJXYIJ.js";
23
23
  import "./chunk-7FD7COKE.js";
24
24
  import "./chunk-AY53MPDE.js";
@@ -14,9 +14,9 @@ import {
14
14
  orchestratorSessionPoisonedByBuiltins,
15
15
  slackCoordinatorSourceRef,
16
16
  takenTeamSlugsForOrchestration
17
- } from "./chunk-JTHWVYSD.js";
18
- import "./chunk-SH75CXJR.js";
19
- import "./chunk-KRAUS3RF.js";
17
+ } from "./chunk-U4RZ3IQI.js";
18
+ import "./chunk-ZN4NDAHV.js";
19
+ import "./chunk-OBHZKT2T.js";
20
20
  import "./chunk-FKOIHGKV.js";
21
21
  import "./chunk-I3FRXL7J.js";
22
22
  import "./chunk-5KLC2MWZ.js";
package/dist/index.cjs CHANGED
@@ -3220,7 +3220,7 @@ function formatGitAuthModeDirective(mode) {
3220
3220
  default:
3221
3221
  return [
3222
3222
  "Git authentication (Account \u2192 GitHub mode: auto):",
3223
- "- This process rewrites GitHub SSH remotes to HTTPS and authenticates with `GH_TOKEN` from `gh` so git/ssh never prompt the macOS Keychain (required for Slack / unattended Cursor).",
3223
+ "- This process rewrites GitHub SSH remotes to HTTPS and authenticates with `GH_TOKEN` from `gh` so git/ssh never prompt the macOS Keychain (required for unattended orchestrator turns).",
3224
3224
  "- Do not switch remotes to SSH. Push with `git push -u origin HEAD`.",
3225
3225
  "- If HTTPS auth fails, tell the user to run `gh auth login` on this Mac or set Account \u2192 GitHub to a PAT \u2014 do not wait for a Keychain dialog."
3226
3226
  ].join("\n");
package/dist/index.d.cts CHANGED
@@ -1147,7 +1147,7 @@ declare function formatIpcInvokeError(err: unknown): string;
1147
1147
  type EnvLike = NodeJS.ProcessEnv | Record<string, string | undefined>;
1148
1148
  /**
1149
1149
  * Fail closed instead of a macOS Keychain / SSH passphrase dialog.
1150
- * Slack turns cannot click those prompts.
1150
+ * Orchestrator parents (desktop Global, MCP, Slack) cannot click those prompts.
1151
1151
  */
1152
1152
  declare function nonInteractiveGitProcessEnv(): Record<string, string>;
1153
1153
  /**
@@ -1168,7 +1168,7 @@ declare function githubAgentGitEnv(existing?: EnvLike): Record<string, string>;
1168
1168
  * Does not set `GH_REPO` (caller adds that after resolving origin).
1169
1169
  *
1170
1170
  * `auto` and `gh` rewrite to HTTPS in-process and inject `GH_TOKEN` when
1171
- * provided so Cursor / Slack never talk to the login keychain.
1171
+ * provided so unattended agents never talk to the login keychain.
1172
1172
  */
1173
1173
  declare function applyGithubGitAuthEnv(existing: EnvLike | undefined, opts: {
1174
1174
  mode: GithubGitAuthMode;
package/dist/index.d.ts CHANGED
@@ -1147,7 +1147,7 @@ declare function formatIpcInvokeError(err: unknown): string;
1147
1147
  type EnvLike = NodeJS.ProcessEnv | Record<string, string | undefined>;
1148
1148
  /**
1149
1149
  * Fail closed instead of a macOS Keychain / SSH passphrase dialog.
1150
- * Slack turns cannot click those prompts.
1150
+ * Orchestrator parents (desktop Global, MCP, Slack) cannot click those prompts.
1151
1151
  */
1152
1152
  declare function nonInteractiveGitProcessEnv(): Record<string, string>;
1153
1153
  /**
@@ -1168,7 +1168,7 @@ declare function githubAgentGitEnv(existing?: EnvLike): Record<string, string>;
1168
1168
  * Does not set `GH_REPO` (caller adds that after resolving origin).
1169
1169
  *
1170
1170
  * `auto` and `gh` rewrite to HTTPS in-process and inject `GH_TOKEN` when
1171
- * provided so Cursor / Slack never talk to the login keychain.
1171
+ * provided so unattended agents never talk to the login keychain.
1172
1172
  */
1173
1173
  declare function applyGithubGitAuthEnv(existing: EnvLike | undefined, opts: {
1174
1174
  mode: GithubGitAuthMode;
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  listWorkspaces,
5
5
  removeWorkspace,
6
6
  syncWorkspacesFromThreads
7
- } from "./chunk-2N5DVTGH.js";
7
+ } from "./chunk-IGEL6M4G.js";
8
8
  import {
9
9
  BRIGHTSY_MCP_ALLOWED_TOOLS,
10
10
  CLAUDE_MODEL_CATALOG,
@@ -64,7 +64,7 @@ import {
64
64
  threadRequestsBrightsyMcp,
65
65
  totalTokens,
66
66
  writeInjectedMcpConfig
67
- } from "./chunk-WGI6KXKJ.js";
67
+ } from "./chunk-4Y745GLN.js";
68
68
  import {
69
69
  CLOUD_COORDINATOR_BUSY_REPLY,
70
70
  CLOUD_COORDINATOR_STOPPED_REPLY,
@@ -91,7 +91,7 @@ import {
91
91
  parseForceStopMessage,
92
92
  slackCoordinatorSourceRef,
93
93
  takenTeamSlugsForOrchestration
94
- } from "./chunk-JTHWVYSD.js";
94
+ } from "./chunk-U4RZ3IQI.js";
95
95
  import {
96
96
  COORDINATOR_TOOL_PLAYBOOK,
97
97
  SLACK_REPLY_FORMATTING,
@@ -100,7 +100,7 @@ import {
100
100
  enrichWorkspacesWithGithub,
101
101
  ensureGlobalCoordinatorCwd,
102
102
  formatWorkspaceInventory
103
- } from "./chunk-SH75CXJR.js";
103
+ } from "./chunk-ZN4NDAHV.js";
104
104
  import {
105
105
  brightsyConfigPath,
106
106
  brightsyMcpServerName,
@@ -214,7 +214,7 @@ import {
214
214
  worktreeDisplayLabel,
215
215
  worktreeDisplayLabelForGroup,
216
216
  worktreeNameFromPath
217
- } from "./chunk-KRAUS3RF.js";
217
+ } from "./chunk-OBHZKT2T.js";
218
218
  import {
219
219
  ATTACHMENTS_DIR,
220
220
  LEGACY_ATTACHMENTS_DIR,
@@ -1320,9 +1320,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
1320
1320
  `Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
1321
1321
  );
1322
1322
  }
1323
- const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-BRIDCBMY.js");
1323
+ const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-VGKPYFE2.js");
1324
1324
  if (isGlobalThread2(thread)) {
1325
- const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-VN7FF76K.js");
1325
+ const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-HOMHBR2L.js");
1326
1326
  ensureGlobalCoordinatorCwd2(
1327
1327
  isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
1328
1328
  );
@@ -3843,7 +3843,7 @@ async function createThread(input, _onSetupLine) {
3843
3843
  return readThread(thread.id) ?? thread;
3844
3844
  }
3845
3845
  async function listLinearIssues(agent, repoPath) {
3846
- const { getAdapter: getAdapter2 } = await import("./agents-YAYNNJWC.js");
3846
+ const { getAdapter: getAdapter2 } = await import("./agents-HJ3Y2JN5.js");
3847
3847
  await requireAgent(agent, { requireLinear: true });
3848
3848
  const adapter = getAdapter2(agent);
3849
3849
  if (!adapter.listLinearIssues) {
@@ -4386,7 +4386,7 @@ async function adoptThread(input) {
4386
4386
  messages: input.messages ?? []
4387
4387
  });
4388
4388
  writeThread(thread);
4389
- const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-IWQIWAMQ.js");
4389
+ const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-2GZ2VNNU.js");
4390
4390
  await ensureWorkspace2(repoPath);
4391
4391
  return thread;
4392
4392
  }
@@ -7340,7 +7340,7 @@ var Orchestrator = class {
7340
7340
  this.emit({ type: "status_changed", threadId: archived.id, status: "archived" });
7341
7341
  if (thread.repoPath && !isGlobalRepoPath(thread.repoPath)) {
7342
7342
  try {
7343
- const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-IWQIWAMQ.js");
7343
+ const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-2GZ2VNNU.js");
7344
7344
  await ensureWorkspace2(thread.repoPath);
7345
7345
  } catch {
7346
7346
  }
@@ -7383,7 +7383,7 @@ var Orchestrator = class {
7383
7383
  return restored2;
7384
7384
  }
7385
7385
  if (!existsSync15(thread.worktreePath)) {
7386
- const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-7Y22WHR7.js");
7386
+ const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-WZJ3CFEN.js");
7387
7387
  const { execa: execa6 } = await import("execa");
7388
7388
  const slug = thread.worktreePath.split("/").pop();
7389
7389
  const dest = thread.worktreePath;
@@ -7492,7 +7492,7 @@ async function startOrchestration(opts) {
7492
7492
  sourceRef: "default",
7493
7493
  ...createOpts
7494
7494
  }).catch(async () => {
7495
- const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-7Y22WHR7.js");
7495
+ const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-WZJ3CFEN.js");
7496
7496
  const repo = await resolveRepoRoot2(repoPath);
7497
7497
  const def = await resolveDefaultBranch2(repo);
7498
7498
  return createThread({
@@ -3052,7 +3052,7 @@ function formatGitAuthModeDirective(mode) {
3052
3052
  default:
3053
3053
  return [
3054
3054
  "Git authentication (Account \u2192 GitHub mode: auto):",
3055
- "- This process rewrites GitHub SSH remotes to HTTPS and authenticates with `GH_TOKEN` from `gh` so git/ssh never prompt the macOS Keychain (required for Slack / unattended Cursor).",
3055
+ "- This process rewrites GitHub SSH remotes to HTTPS and authenticates with `GH_TOKEN` from `gh` so git/ssh never prompt the macOS Keychain (required for unattended orchestrator turns).",
3056
3056
  "- Do not switch remotes to SSH. Push with `git push -u origin HEAD`.",
3057
3057
  "- If HTTPS auth fails, tell the user to run `gh auth login` on this Mac or set Account \u2192 GitHub to a PAT \u2014 do not wait for a Keychain dialog."
3058
3058
  ].join("\n");
@@ -17,14 +17,14 @@ import {
17
17
  resolveQuotaFallbackAgent,
18
18
  sideboardMcpProfile,
19
19
  summarizeTurnStderr
20
- } from "../chunk-3CCRD6WS.js";
20
+ } from "../chunk-KE6QLNTJ.js";
21
21
  import "../chunk-6K5VAPVR.js";
22
22
  import {
23
23
  addWorkspace,
24
24
  ensureWorkspace,
25
25
  removeWorkspace,
26
26
  syncWorkspacesFromThreads
27
- } from "../chunk-JFQ2M6NQ.js";
27
+ } from "../chunk-45U4RQ74.js";
28
28
  import {
29
29
  extractPresentedPlan,
30
30
  readPlanFile,
@@ -42,14 +42,14 @@ import {
42
42
  isGlobalThread,
43
43
  isOrchestratorThread,
44
44
  orchestratorSessionPoisonedByBuiltins
45
- } from "../chunk-6GKDYUTJ.js";
45
+ } from "../chunk-EWKHP6DD.js";
46
46
  import {
47
47
  SLACK_REPLY_FORMATTING,
48
48
  coordinatorSystemPrompt,
49
49
  coordinatorTurnReminder,
50
50
  enrichWorkspacesWithGithub,
51
51
  ensureGlobalCoordinatorCwd
52
- } from "../chunk-XVFV56JG.js";
52
+ } from "../chunk-HA2QTIWN.js";
53
53
  import {
54
54
  addPrStackLayer,
55
55
  allocateTeamName,
@@ -89,7 +89,7 @@ import {
89
89
  takenSlugsFromThread,
90
90
  threadDisplayLabel,
91
91
  worktreeNameFromPath
92
- } from "../chunk-6WQAYBVE.js";
92
+ } from "../chunk-6ZGTM2E7.js";
93
93
  import {
94
94
  ATTACHMENTS_DIR,
95
95
  LEGACY_ATTACHMENTS_DIR,
@@ -894,9 +894,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
894
894
  `Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
895
895
  );
896
896
  }
897
- const { isGlobalThread: isGlobalThread2 } = await import("../global-workspace-U3XVTQLL.js");
897
+ const { isGlobalThread: isGlobalThread2 } = await import("../global-workspace-MXOLTUAR.js");
898
898
  if (isGlobalThread2(thread)) {
899
- const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("../coordinator-prompt-YYQSPLIP.js");
899
+ const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("../coordinator-prompt-L65MIGCV.js");
900
900
  ensureGlobalCoordinatorCwd2(
901
901
  isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
902
902
  );
@@ -1825,7 +1825,7 @@ async function createThread(input, _onSetupLine) {
1825
1825
  return readThread(thread.id) ?? thread;
1826
1826
  }
1827
1827
  async function listLinearIssues(agent, repoPath) {
1828
- const { getAdapter: getAdapter2 } = await import("../agents-FD77JUOP.js");
1828
+ const { getAdapter: getAdapter2 } = await import("../agents-NDHD3VOL.js");
1829
1829
  await requireAgent(agent, { requireLinear: true });
1830
1830
  const adapter = getAdapter2(agent);
1831
1831
  if (!adapter.listLinearIssues) {
@@ -2693,7 +2693,7 @@ async function adoptThread(input) {
2693
2693
  messages: input.messages ?? []
2694
2694
  });
2695
2695
  writeThread(thread);
2696
- const { ensureWorkspace: ensureWorkspace2 } = await import("../workspaces-AIZDG6PS.js");
2696
+ const { ensureWorkspace: ensureWorkspace2 } = await import("../workspaces-VWQ5YSND.js");
2697
2697
  await ensureWorkspace2(repoPath);
2698
2698
  return thread;
2699
2699
  }
@@ -6118,7 +6118,7 @@ var Orchestrator = class {
6118
6118
  this.emit({ type: "status_changed", threadId: archived.id, status: "archived" });
6119
6119
  if (thread.repoPath && !isGlobalRepoPath(thread.repoPath)) {
6120
6120
  try {
6121
- const { ensureWorkspace: ensureWorkspace2 } = await import("../workspaces-AIZDG6PS.js");
6121
+ const { ensureWorkspace: ensureWorkspace2 } = await import("../workspaces-VWQ5YSND.js");
6122
6122
  await ensureWorkspace2(thread.repoPath);
6123
6123
  } catch {
6124
6124
  }
@@ -6161,7 +6161,7 @@ var Orchestrator = class {
6161
6161
  return restored2;
6162
6162
  }
6163
6163
  if (!existsSync15(thread.worktreePath)) {
6164
- const { createThreadWorktree: createThreadWorktree2 } = await import("../worktree-6ZALJUWG.js");
6164
+ const { createThreadWorktree: createThreadWorktree2 } = await import("../worktree-RFCCG23P.js");
6165
6165
  const { execa: execa6 } = await import("execa");
6166
6166
  const slug = thread.worktreePath.split("/").pop();
6167
6167
  const dest = thread.worktreePath;
@@ -4,10 +4,10 @@ import {
4
4
  listWorkspaces,
5
5
  removeWorkspace,
6
6
  syncWorkspacesFromThreads
7
- } from "./chunk-2N5DVTGH.js";
8
- import "./chunk-JTHWVYSD.js";
9
- import "./chunk-SH75CXJR.js";
10
- import "./chunk-KRAUS3RF.js";
7
+ } from "./chunk-IGEL6M4G.js";
8
+ import "./chunk-U4RZ3IQI.js";
9
+ import "./chunk-ZN4NDAHV.js";
10
+ import "./chunk-OBHZKT2T.js";
11
11
  import "./chunk-FKOIHGKV.js";
12
12
  import "./chunk-I3FRXL7J.js";
13
13
  import "./chunk-5KLC2MWZ.js";
@@ -6,10 +6,10 @@ import {
6
6
  listWorkspaces,
7
7
  removeWorkspace,
8
8
  syncWorkspacesFromThreads
9
- } from "./chunk-JFQ2M6NQ.js";
10
- import "./chunk-6GKDYUTJ.js";
11
- import "./chunk-XVFV56JG.js";
12
- import "./chunk-6WQAYBVE.js";
9
+ } from "./chunk-45U4RQ74.js";
10
+ import "./chunk-EWKHP6DD.js";
11
+ import "./chunk-HA2QTIWN.js";
12
+ import "./chunk-6ZGTM2E7.js";
13
13
  import "./chunk-B3SJXYIJ.js";
14
14
  import "./chunk-7FD7COKE.js";
15
15
  import "./chunk-AY53MPDE.js";
@@ -46,7 +46,7 @@ import {
46
46
  worktreeDisplayLabel,
47
47
  worktreeDisplayLabelForGroup,
48
48
  worktreeNameFromPath
49
- } from "./chunk-6WQAYBVE.js";
49
+ } from "./chunk-6ZGTM2E7.js";
50
50
  import "./chunk-B3SJXYIJ.js";
51
51
  import "./chunk-7FD7COKE.js";
52
52
  import "./chunk-AY53MPDE.js";
@@ -44,7 +44,7 @@ import {
44
44
  worktreeDisplayLabel,
45
45
  worktreeDisplayLabelForGroup,
46
46
  worktreeNameFromPath
47
- } from "./chunk-KRAUS3RF.js";
47
+ } from "./chunk-OBHZKT2T.js";
48
48
  import "./chunk-FKOIHGKV.js";
49
49
  import "./chunk-I3FRXL7J.js";
50
50
  import "./chunk-5KLC2MWZ.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sideboard-ai/core",
3
- "version": "0.1.85",
3
+ "version": "0.1.86",
4
4
  "description": "Sideboard core — orchestration, agents, git worktrees, MCP server",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",