@sideboard-ai/core 0.1.232 → 0.1.234

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 (42) hide show
  1. package/dist/agents/cursor-runner.cjs +207 -62
  2. package/dist/agents/cursor-runner.js +24 -10
  3. package/dist/{agents-TCTEAK6M.js → agents-BTXL6R5I.js} +17 -7
  4. package/dist/{agents-ENAQHQRZ.js → agents-WMN7C322.js} +16 -6
  5. package/dist/{chunk-PO4M4JAJ.js → chunk-2P4XKWV2.js} +1 -1
  6. package/dist/{chunk-FA4CPYCY.js → chunk-2UBVFL2X.js} +81 -41
  7. package/dist/{chunk-ABOBTSO6.js → chunk-2UG25RMK.js} +18 -5
  8. package/dist/{chunk-4CZ25DO2.js → chunk-4VFOJZPS.js} +2 -2
  9. package/dist/{chunk-N5TX66CD.js → chunk-7H2CVVLF.js} +2 -2
  10. package/dist/{chunk-SZJZEFTY.js → chunk-DD67JWTN.js} +1 -1
  11. package/dist/{chunk-LLMG6OVS.js → chunk-LEYY54BN.js} +19 -19
  12. package/dist/{chunk-6L25K7BE.js → chunk-NOIWXANG.js} +224 -73
  13. package/dist/{chunk-HVUVQXZ2.js → chunk-QVN2WOKJ.js} +18 -5
  14. package/dist/{chunk-7BZ7DSBN.js → chunk-RKKTCKVX.js} +17 -17
  15. package/dist/{chunk-HZFLKVGC.js → chunk-S2OEFXST.js} +1 -1
  16. package/dist/{chunk-SXFRXNBM.js → chunk-SPAMHHJH.js} +1 -1
  17. package/dist/{chunk-ZXJMAKEP.js → chunk-TNVJPFHM.js} +5 -5
  18. package/dist/{chunk-UNTOZA3C.js → chunk-TWXSZYR2.js} +1 -1
  19. package/dist/{chunk-TQBUXKIB.js → chunk-WPD7BR6C.js} +135 -11
  20. package/dist/{connected-teams-PIBQTOJU.js → connected-teams-JUJAQZZE.js} +2 -2
  21. package/dist/{connected-teams-RVD3PFAG.js → connected-teams-KQUDU7LZ.js} +2 -2
  22. package/dist/{coordinator-prompt-YKLXQTWH.js → coordinator-prompt-CE7MN6QY.js} +4 -4
  23. package/dist/{coordinator-prompt-DFXYTM6D.js → coordinator-prompt-IGDMFKCD.js} +4 -4
  24. package/dist/{global-workspace-EYZKYHAO.js → global-workspace-7WH24UFO.js} +4 -4
  25. package/dist/{global-workspace-4SPANNJT.js → global-workspace-NCIC2Y2U.js} +4 -4
  26. package/dist/index.cjs +519 -326
  27. package/dist/index.d.cts +19 -3
  28. package/dist/index.d.ts +19 -3
  29. package/dist/index.js +27 -8
  30. package/dist/mcp/run-stdio.cjs +447 -302
  31. package/dist/mcp/run-stdio.js +7 -7
  32. package/dist/{orchestrator-RJX4OKYC.js → orchestrator-7ZEGFPK4.js} +7 -7
  33. package/dist/{orchestrator-FTHJKPIX.js → orchestrator-R2WCTNJI.js} +8 -8
  34. package/dist/{run-UEQM4JMZ.js → run-PCX5QWR4.js} +1 -1
  35. package/dist/{run-QDZCTP4Y.js → run-TB7RBII2.js} +1 -1
  36. package/dist/{workspaces-73Y7IJY2.js → workspaces-H2TRFDE2.js} +4 -4
  37. package/dist/{workspaces-FQCSCTNH.js → workspaces-NSQZSDQD.js} +4 -4
  38. package/dist/{worktree-DOPRKG7K.js → worktree-FMIX4BRV.js} +3 -3
  39. package/dist/{worktree-36VEFUJN.js → worktree-W7BSI4GU.js} +3 -3
  40. package/dist/{worktree-exclude-K7QK4RI5.js → worktree-exclude-5N2KTYIT.js} +2 -2
  41. package/dist/{worktree-exclude-L32WEBX6.js → worktree-exclude-RXZPTCNH.js} +2 -2
  42. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  git
3
- } from "./chunk-HVUVQXZ2.js";
3
+ } from "./chunk-QVN2WOKJ.js";
4
4
 
5
5
  // src/git/worktree-exclude.ts
6
6
  import { mkdirSync, readFileSync, writeFileSync } from "fs";
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  isOrchestratorThread
3
- } from "./chunk-HZFLKVGC.js";
3
+ } from "./chunk-S2OEFXST.js";
4
4
  import {
5
5
  codexUnattendedGitConfigArgs,
6
6
  mergeAgentGitAuthEnv,
7
7
  resolveAgentGitAuthEnv,
8
8
  resolveCodexGitWritableRoots
9
- } from "./chunk-N5TX66CD.js";
9
+ } from "./chunk-7H2CVVLF.js";
10
10
  import {
11
11
  applyConnectedTeamToCli,
12
12
  brightsyMcpServerName,
13
13
  ensureCliTeamTracked,
14
14
  ensureConnectedBrightsyTeamTokens
15
- } from "./chunk-ZXJMAKEP.js";
15
+ } from "./chunk-TNVJPFHM.js";
16
16
  import {
17
17
  loadBrightsyConfig
18
18
  } from "./chunk-ROPGQRPU.js";
@@ -20,20 +20,23 @@ import {
20
20
  httpFetch
21
21
  } from "./chunk-N7WZ6NIN.js";
22
22
  import {
23
+ CURSOR_SDK_INSTALL_HINT,
23
24
  applyAgentRunnerHeapEnv,
24
25
  applyNodeLaunch,
25
26
  clipToolResultForStore,
26
27
  cursorRipgrepEnv,
27
28
  extractJsonErrorMessage,
28
29
  formatUnknownDetail,
30
+ importCursorSdk,
29
31
  isAsarPath,
32
+ isCursorSdkInstalled,
30
33
  looksLikeAgentFailureMessage,
31
34
  looksLikeBrightsyEmptyCompletion,
32
35
  packagedCursorRunnerPath,
33
36
  packagedMcpStdioPath,
34
37
  parseCursorRunnerLine,
35
38
  resolveNodeLaunch
36
- } from "./chunk-TQBUXKIB.js";
39
+ } from "./chunk-WPD7BR6C.js";
37
40
  import {
38
41
  claudeChromeEnabled,
39
42
  fromInclusiveInputUsage,
@@ -52,7 +55,7 @@ import {
52
55
  resolveCommandBinarySync,
53
56
  run,
54
57
  withExportedPath
55
- } from "./chunk-HVUVQXZ2.js";
58
+ } from "./chunk-QVN2WOKJ.js";
56
59
  import {
57
60
  isElectronLikeCommand,
58
61
  unwrapStrippedElectronLaunch
@@ -2117,7 +2120,7 @@ var claudeAdapter = {
2117
2120
  );
2118
2121
  }
2119
2122
  const mode = permissionMode(thread);
2120
- const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-4SPANNJT.js");
2123
+ const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-NCIC2Y2U.js");
2121
2124
  const isOrchestrator = isOrchestratorThread2(thread);
2122
2125
  const injectedServers = await buildInjectedMcpServers({
2123
2126
  includeSideboard: true,
@@ -2734,7 +2737,6 @@ import { existsSync as existsSync7 } from "fs";
2734
2737
  import { createRequire as createRequire2 } from "module";
2735
2738
  import { dirname as dirname3, join as join5 } from "path";
2736
2739
  import { fileURLToPath as fileURLToPath2 } from "url";
2737
- import { Cursor } from "@cursor/sdk";
2738
2740
  var FALLBACK_CURSOR_MODELS = [
2739
2741
  { id: "default", displayName: "Auto" },
2740
2742
  { id: "composer-2.5", displayName: "Composer 2.5" },
@@ -2765,8 +2767,10 @@ async function listCursorModels() {
2765
2767
  }
2766
2768
  const apiKey = resolveCursorApiKey();
2767
2769
  if (!apiKey) return FALLBACK_CURSOR_MODELS;
2770
+ const sdk = await importCursorSdk();
2771
+ if (!sdk) return FALLBACK_CURSOR_MODELS;
2768
2772
  try {
2769
- const listed = await Cursor.models.list({ apiKey });
2773
+ const listed = await sdk.Cursor.models.list({ apiKey });
2770
2774
  const models = listed.map((m) => ({
2771
2775
  id: m.id,
2772
2776
  displayName: m.displayName || m.id,
@@ -2815,6 +2819,16 @@ function cursorRunnerPath() {
2815
2819
  var cursorAdapter = {
2816
2820
  kind: "cursor",
2817
2821
  async detect() {
2822
+ if (!isCursorSdkInstalled()) {
2823
+ return {
2824
+ agent: "cursor",
2825
+ installed: false,
2826
+ authenticated: false,
2827
+ linearMcp: false,
2828
+ warnings: [],
2829
+ reason: CURSOR_SDK_INSTALL_HINT
2830
+ };
2831
+ }
2818
2832
  const apiKey = resolveCursorApiKey();
2819
2833
  if (!apiKey) {
2820
2834
  return {
@@ -3810,6 +3824,7 @@ async function getClaudePlanUsage(opts = {}) {
3810
3824
  }
3811
3825
 
3812
3826
  // src/agents/install.ts
3827
+ import { existsSync as existsSync10 } from "fs";
3813
3828
  var SETUP = {
3814
3829
  claude: {
3815
3830
  agent: "claude",
@@ -3818,7 +3833,8 @@ var SETUP = {
3818
3833
  docsUrl: "https://code.claude.com/docs/en/install",
3819
3834
  installCommand: "npm install -g @anthropic-ai/claude-code",
3820
3835
  loginCommand: "claude auth login",
3821
- npmPackage: "@anthropic-ai/claude-code"
3836
+ npmPackage: "@anthropic-ai/claude-code",
3837
+ updateArgs: ["update"]
3822
3838
  },
3823
3839
  codex: {
3824
3840
  agent: "codex",
@@ -3827,7 +3843,8 @@ var SETUP = {
3827
3843
  docsUrl: "https://github.com/openai/codex",
3828
3844
  installCommand: "npm install -g @openai/codex",
3829
3845
  loginCommand: "codex login",
3830
- npmPackage: "@openai/codex"
3846
+ npmPackage: "@openai/codex",
3847
+ updateArgs: ["update"]
3831
3848
  },
3832
3849
  opencode: {
3833
3850
  agent: "opencode",
@@ -3837,20 +3854,22 @@ var SETUP = {
3837
3854
  // Prefer the official installer; npm package name is opencode-ai.
3838
3855
  installCommand: "curl -fsSL https://opencode.ai/install | bash",
3839
3856
  loginCommand: "opencode auth login",
3840
- npmPackage: "opencode-ai@latest"
3857
+ npmPackage: "opencode-ai@latest",
3858
+ updateArgs: ["upgrade"]
3841
3859
  },
3842
3860
  cursor: {
3843
3861
  agent: "cursor",
3844
- kind: "bundled-sdk",
3845
- summary: "No CLI install \u2014 Sideboard ships the Cursor SDK. Add a CURSOR_API_KEY from the Cursor dashboard.",
3846
- docsUrl: "https://cursor.com/dashboard/integrations",
3847
- installCommand: null,
3848
- loginCommand: null
3862
+ kind: "cli",
3863
+ summary: "Install (or update) @cursor/sdk with npm \u2014 Sideboard does not pin it in the app. Then add a CURSOR_API_KEY.",
3864
+ docsUrl: "https://www.npmjs.com/package/@cursor/sdk",
3865
+ installCommand: "npm install -g @cursor/sdk",
3866
+ loginCommand: null,
3867
+ npmPackage: "@cursor/sdk"
3849
3868
  },
3850
3869
  brightsy: {
3851
3870
  agent: "brightsy",
3852
3871
  kind: "cli",
3853
- summary: "Install the Brightsy CLI, then run `brightsy login`.",
3872
+ summary: "Install (or update) the Brightsy CLI with npm, then run `brightsy login`.",
3854
3873
  docsUrl: "https://www.npmjs.com/package/@brightsy/cli",
3855
3874
  installCommand: "npm install -g @brightsy/cli",
3856
3875
  loginCommand: "brightsy login",
@@ -3946,16 +3965,6 @@ async function whichOnPath(bin) {
3946
3965
  }
3947
3966
  async function installNpmGlobalPackage(opts) {
3948
3967
  enrichPathWithNpmGlobalBin();
3949
- if (opts.cliBin) {
3950
- const existing = await whichOnPath(opts.cliBin);
3951
- if (existing) {
3952
- return {
3953
- ok: true,
3954
- command: existing,
3955
- message: isConductorBundledCli(existing) ? `Using Conductor\u2019s ${opts.cliBin} at ${existing}. No extra install \u2014 Log in only if auth is missing.` : `Already on PATH: ${existing}`
3956
- };
3957
- }
3958
- }
3959
3968
  const result = await run("npm", ["install", "-g", opts.npmPackage], { reject: false });
3960
3969
  const ok = result.exitCode === 0;
3961
3970
  if (!ok) {
@@ -3992,6 +4001,33 @@ async function installNpmGlobalPackage(opts) {
3992
4001
  message: binPath ? `Installed ${opts.npmPackage} \u2192 ${binPath}` : `Installed ${opts.npmPackage} (CLI not yet on PATH)`
3993
4002
  };
3994
4003
  }
4004
+ async function resolveExistingCli(agent) {
4005
+ if (agent === "cursor") return null;
4006
+ const exe = resolveAgentExecutable(agent);
4007
+ if ((exe.includes("/") || exe.includes("\\")) && existsSync10(exe)) return exe;
4008
+ enrichPathWithNpmGlobalBin();
4009
+ return whichOnPath(CLI_BIN[agent]);
4010
+ }
4011
+ async function runVendorUpdate(existing, updateArgs) {
4012
+ const result = await run(existing, updateArgs, {
4013
+ reject: false,
4014
+ timeoutMs: 12e4
4015
+ });
4016
+ const command = `${existing} ${updateArgs.join(" ")}`;
4017
+ const ok = result.exitCode === 0;
4018
+ const detail = result.stdout.trim() || result.stderr.trim() || `exit ${result.exitCode}`;
4019
+ return {
4020
+ ok,
4021
+ command,
4022
+ exitCode: result.exitCode,
4023
+ stdout: result.stdout,
4024
+ stderr: result.stderr,
4025
+ message: ok ? isConductorBundledCli(existing) ? `Updated Conductor\u2019s CLI at ${existing}. ${detail}` : `Updated ${command}. ${detail}` : `Update failed (${command}): ${detail}`
4026
+ };
4027
+ }
4028
+ function isCurlInstaller(command) {
4029
+ return /curl\s| \|\s*bash/.test(command);
4030
+ }
3995
4031
  async function installAgent(agent) {
3996
4032
  const info = getAgentSetupInfo(agent);
3997
4033
  if (info.kind === "bundled-sdk" || info.kind === "api-key") {
@@ -4003,21 +4039,25 @@ async function installAgent(agent) {
4003
4039
  if (!info.installCommand) {
4004
4040
  return { ok: false, message: `No install command for ${agent}` };
4005
4041
  }
4006
- if (/curl\s| \|\s*bash/.test(info.installCommand) || !info.npmPackage) {
4007
- await openInSystemTerminal(info.installCommand);
4008
- return {
4009
- ok: true,
4010
- openedTerminal: true,
4011
- command: info.installCommand,
4012
- message: `Opened Terminal to run: ${info.installCommand}`
4013
- };
4042
+ const existing = await resolveExistingCli(agent);
4043
+ if (existing && info.updateArgs?.length) {
4044
+ return runVendorUpdate(existing, info.updateArgs);
4014
4045
  }
4015
- const cliBin = agent === "cursor" ? null : CLI_BIN[agent];
4016
- return installNpmGlobalPackage({
4017
- npmPackage: info.npmPackage,
4018
- installCommand: info.installCommand,
4019
- cliBin
4020
- });
4046
+ if (info.npmPackage && !isCurlInstaller(info.installCommand)) {
4047
+ const cliBin = agent === "cursor" ? null : CLI_BIN[agent];
4048
+ return installNpmGlobalPackage({
4049
+ npmPackage: info.npmPackage,
4050
+ installCommand: info.installCommand,
4051
+ cliBin
4052
+ });
4053
+ }
4054
+ await openInSystemTerminal(info.installCommand);
4055
+ return {
4056
+ ok: true,
4057
+ openedTerminal: true,
4058
+ command: info.installCommand,
4059
+ message: `Opened Terminal to run: ${info.installCommand}`
4060
+ };
4021
4061
  }
4022
4062
  async function loginAgent(agent) {
4023
4063
  const info = getAgentSetupInfo(agent);
@@ -65,6 +65,14 @@ function ensureAgentPath(env = process.env) {
65
65
  }
66
66
  function enrichPathWithNpmGlobalBin(env = process.env) {
67
67
  ensureAgentPath(env);
68
+ const prefix = npmGlobalPrefix(env);
69
+ if (prefix) {
70
+ const binDir = process.platform === "win32" ? prefix : join(prefix, "bin");
71
+ prependPathDir(env, binDir);
72
+ }
73
+ return env.PATH ?? "";
74
+ }
75
+ function npmGlobalPrefix(env = process.env) {
68
76
  try {
69
77
  const prefix = execFileSync("npm", ["prefix", "-g"], {
70
78
  encoding: "utf8",
@@ -72,13 +80,16 @@ function enrichPathWithNpmGlobalBin(env = process.env) {
72
80
  timeout: 8e3,
73
81
  stdio: ["ignore", "pipe", "ignore"]
74
82
  }).trim().split(/\r?\n/).find(Boolean);
75
- if (prefix) {
76
- const binDir = process.platform === "win32" ? prefix : join(prefix, "bin");
77
- prependPathDir(env, binDir);
78
- }
83
+ return prefix || null;
79
84
  } catch {
85
+ return null;
80
86
  }
81
- return env.PATH ?? "";
87
+ }
88
+ function npmGlobalNodeModules(env = process.env) {
89
+ const prefix = npmGlobalPrefix(env);
90
+ if (!prefix) return null;
91
+ const dir = process.platform === "win32" ? join(prefix, "node_modules") : join(prefix, "lib", "node_modules");
92
+ return existsSync(dir) ? dir : null;
82
93
  }
83
94
  function posixShellSingleQuote(value) {
84
95
  return `'${value.replace(/'/g, `'\\''`)}'`;
@@ -309,6 +320,8 @@ export {
309
320
  isConductorBundledCli,
310
321
  ensureAgentPath,
311
322
  enrichPathWithNpmGlobalBin,
323
+ npmGlobalPrefix,
324
+ npmGlobalNodeModules,
312
325
  posixShellSingleQuote,
313
326
  resolveCommandBinarySync,
314
327
  withExportedPath,
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-XJETIO4K.js";
9
9
  import {
10
10
  ensureWorktreeSideboardIgnored
11
- } from "./chunk-SZJZEFTY.js";
11
+ } from "./chunk-DD67JWTN.js";
12
12
  import {
13
13
  gh,
14
14
  git,
@@ -18,7 +18,7 @@ import {
18
18
  githubGhConfigEnv,
19
19
  materializeGithubAgentAuth,
20
20
  resolveGhAuthToken
21
- } from "./chunk-ABOBTSO6.js";
21
+ } from "./chunk-2UG25RMK.js";
22
22
  import {
23
23
  getGithubGitAuthMode,
24
24
  getGithubPat
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-6K64FJDD.js";
4
4
  import {
5
5
  ensureWorktreeSideboardIgnored
6
- } from "./chunk-PO4M4JAJ.js";
6
+ } from "./chunk-2P4XKWV2.js";
7
7
  import {
8
8
  getGithubGitAuthMode,
9
9
  getGithubPat
@@ -23,7 +23,7 @@ import {
23
23
  githubGhConfigEnv,
24
24
  materializeGithubAgentAuth,
25
25
  resolveGhAuthToken
26
- } from "./chunk-HVUVQXZ2.js";
26
+ } from "./chunk-QVN2WOKJ.js";
27
27
 
28
28
  // src/git/worktree.ts
29
29
  import { randomBytes } from "crypto";
@@ -2,7 +2,7 @@
2
2
 
3
3
  import {
4
4
  git
5
- } from "./chunk-ABOBTSO6.js";
5
+ } from "./chunk-2UG25RMK.js";
6
6
 
7
7
  // src/git/worktree-exclude.ts
8
8
  import { mkdirSync, readFileSync, writeFileSync } from "fs";
@@ -24,7 +24,7 @@ import {
24
24
  resolveQuotaFallbackAgent,
25
25
  stripBrightsyNdjsonNoise,
26
26
  toolDescription
27
- } from "./chunk-FA4CPYCY.js";
27
+ } from "./chunk-2UBVFL2X.js";
28
28
  import {
29
29
  SLACK_REPLY_FORMATTING,
30
30
  addWorkspace,
@@ -47,7 +47,7 @@ import {
47
47
  stageAbsolutePathsAsAttachments,
48
48
  stageBuffersAsAttachments,
49
49
  syncWorkspacesFromThreads
50
- } from "./chunk-HZFLKVGC.js";
50
+ } from "./chunk-S2OEFXST.js";
51
51
  import {
52
52
  addPrStackLayer,
53
53
  allocateTeamName,
@@ -96,7 +96,7 @@ import {
96
96
  worktreeDisplayLabelForGroup,
97
97
  worktreeNameFromPath,
98
98
  worktreeSlugForTicket
99
- } from "./chunk-N5TX66CD.js";
99
+ } from "./chunk-7H2CVVLF.js";
100
100
  import {
101
101
  ATTACHMENTS_DIR,
102
102
  DETACHED_JOBS_DIR,
@@ -105,7 +105,7 @@ import {
105
105
  } from "./chunk-6K64FJDD.js";
106
106
  import {
107
107
  ensureWorktreeSideboardIgnored
108
- } from "./chunk-PO4M4JAJ.js";
108
+ } from "./chunk-2P4XKWV2.js";
109
109
  import {
110
110
  httpFetch
111
111
  } from "./chunk-N7WZ6NIN.js";
@@ -128,7 +128,7 @@ import {
128
128
  shouldRetryFailedAgentTurn,
129
129
  summarizeTurnStderr,
130
130
  turnFailChatText
131
- } from "./chunk-TQBUXKIB.js";
131
+ } from "./chunk-WPD7BR6C.js";
132
132
  import {
133
133
  HISTORY_CLEANUP_INTERVAL_HOURS_DEFAULT,
134
134
  applyTurnUsage,
@@ -206,7 +206,7 @@ import {
206
206
  git,
207
207
  resolveGitDirsForLockRecovery,
208
208
  run
209
- } from "./chunk-HVUVQXZ2.js";
209
+ } from "./chunk-QVN2WOKJ.js";
210
210
  import {
211
211
  stripNestedElectronEnv
212
212
  } from "./chunk-4TR3HZFT.js";
@@ -482,7 +482,7 @@ async function continueSourceThread(threadId, prompt) {
482
482
  await continueOnReply(threadId, prompt);
483
483
  return;
484
484
  }
485
- const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-FTHJKPIX.js");
485
+ const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-R2WCTNJI.js");
486
486
  await getOrchestrator2().send(threadId, prompt);
487
487
  } catch {
488
488
  }
@@ -901,9 +901,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
901
901
  `Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
902
902
  );
903
903
  }
904
- const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-4SPANNJT.js");
904
+ const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-NCIC2Y2U.js");
905
905
  if (isGlobalThread2(thread)) {
906
- const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-DFXYTM6D.js");
906
+ const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-IGDMFKCD.js");
907
907
  ensureGlobalCoordinatorCwd2(
908
908
  isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
909
909
  );
@@ -4266,7 +4266,7 @@ async function createThread(input, _onSetupLine) {
4266
4266
  return readThread(thread.id) ?? thread;
4267
4267
  }
4268
4268
  async function listLinearIssues(agent, repoPath) {
4269
- const { getAdapter: getAdapter2 } = await import("./agents-TCTEAK6M.js");
4269
+ const { getAdapter: getAdapter2 } = await import("./agents-BTXL6R5I.js");
4270
4270
  await requireAgent(agent, { requireLinear: true });
4271
4271
  const adapter = getAdapter2(agent);
4272
4272
  if (!adapter.listLinearIssues) {
@@ -4724,7 +4724,7 @@ async function adoptThread(input) {
4724
4724
  throw new Error(`Worktree not found: ${input.worktreePath}`);
4725
4725
  }
4726
4726
  const repoPath = await resolveRepoRoot(input.worktreePath);
4727
- const { stdout: branch } = await import("./run-UEQM4JMZ.js").then(
4727
+ const { stdout: branch } = await import("./run-PCX5QWR4.js").then(
4728
4728
  ({ git: git2 }) => git2(["rev-parse", "--abbrev-ref", "HEAD"], input.worktreePath)
4729
4729
  );
4730
4730
  const thread = createEmptyThread({
@@ -4739,9 +4739,9 @@ async function adoptThread(input) {
4739
4739
  messages: input.messages ?? []
4740
4740
  });
4741
4741
  writeThread(thread);
4742
- const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-73Y7IJY2.js");
4742
+ const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-H2TRFDE2.js");
4743
4743
  await ensureWorkspace2(repoPath);
4744
- const { ensureWorktreeSideboardIgnored: ensureWorktreeSideboardIgnored2 } = await import("./worktree-exclude-L32WEBX6.js");
4744
+ const { ensureWorktreeSideboardIgnored: ensureWorktreeSideboardIgnored2 } = await import("./worktree-exclude-RXZPTCNH.js");
4745
4745
  await ensureWorktreeSideboardIgnored2(input.worktreePath);
4746
4746
  return thread;
4747
4747
  }
@@ -6157,7 +6157,7 @@ async function confirmLand(thread, opts) {
6157
6157
  if (preview.dirty) {
6158
6158
  committed = await commitAll(thread.worktreePath, meta.commitMessage);
6159
6159
  }
6160
- const { git: git2 } = await import("./run-UEQM4JMZ.js");
6160
+ const { git: git2 } = await import("./run-PCX5QWR4.js");
6161
6161
  const { stdout: headOut } = await git2(
6162
6162
  ["rev-parse", "--abbrev-ref", "HEAD"],
6163
6163
  thread.worktreePath,
@@ -7421,7 +7421,7 @@ function formatScheduledPrompt(name, prompt) {
7421
7421
  ${prompt}`;
7422
7422
  }
7423
7423
  async function defaultDeps() {
7424
- const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-FTHJKPIX.js");
7424
+ const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-R2WCTNJI.js");
7425
7425
  const orch = getOrchestrator2();
7426
7426
  return {
7427
7427
  findThread: (id) => findThreadByRef(id),
@@ -9952,7 +9952,7 @@ var Orchestrator = class {
9952
9952
  this.enforceHistoryRetention();
9953
9953
  if (thread.repoPath && !isGlobalRepoPath(thread.repoPath)) {
9954
9954
  try {
9955
- const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-73Y7IJY2.js");
9955
+ const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-H2TRFDE2.js");
9956
9956
  await ensureWorkspace2(thread.repoPath);
9957
9957
  } catch {
9958
9958
  }
@@ -10006,13 +10006,13 @@ var Orchestrator = class {
10006
10006
  `Cowboy checkout missing: ${thread.worktreePath}. Re-add the project folder, then restore.`
10007
10007
  );
10008
10008
  }
10009
- const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-36VEFUJN.js");
10009
+ const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-W7BSI4GU.js");
10010
10010
  const slug = thread.worktreePath.split("/").pop();
10011
10011
  const dest = thread.worktreePath;
10012
10012
  await withRepoGitLock(thread.repoPath, async () => {
10013
10013
  await git(["worktree", "add", dest, thread.branchName], thread.repoPath);
10014
10014
  });
10015
- const { ensureWorktreeSideboardIgnored: ensureWorktreeSideboardIgnored2 } = await import("./worktree-exclude-L32WEBX6.js");
10015
+ const { ensureWorktreeSideboardIgnored: ensureWorktreeSideboardIgnored2 } = await import("./worktree-exclude-RXZPTCNH.js");
10016
10016
  await ensureWorktreeSideboardIgnored2(dest);
10017
10017
  void createThreadWorktree2;
10018
10018
  void slug;
@@ -10116,7 +10116,7 @@ async function startOrchestration(opts) {
10116
10116
  sourceRef: "default",
10117
10117
  ...createOpts
10118
10118
  }).catch(async () => {
10119
- const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-36VEFUJN.js");
10119
+ const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-W7BSI4GU.js");
10120
10120
  const repo = await resolveRepoRoot2(repoPath);
10121
10121
  const def = await resolveDefaultBranch2(repo);
10122
10122
  return orch.createThread({