@sideboard-ai/core 0.1.62 → 0.1.67

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 (43) hide show
  1. package/dist/{agents-KF3J3C53.js → agents-OTBZVTZO.js} +27 -7
  2. package/dist/{agents-QLSFIQAO.js → agents-TS3EI2YI.js} +27 -7
  3. package/dist/{app-settings-LTSFG7QJ.js → app-settings-GJVZGU3M.js} +13 -3
  4. package/dist/{app-settings-HK4KAM4R.js → app-settings-ONKMFSEJ.js} +13 -3
  5. package/dist/{chunk-UGXSSBFJ.js → chunk-4BUCGNZS.js} +1 -1
  6. package/dist/chunk-4UIYN56C.js +173 -0
  7. package/dist/{chunk-NVU7EC2E.js → chunk-57WWNMFP.js} +2 -2
  8. package/dist/{chunk-A6FOKNOU.js → chunk-5HTTCYWA.js} +2 -2
  9. package/dist/{chunk-DXTGDXO2.js → chunk-7ZOQY4A7.js} +31 -6
  10. package/dist/{chunk-ZF5YJCXO.js → chunk-B4PRRKMA.js} +284 -93
  11. package/dist/{chunk-DDN3UF4R.js → chunk-BPOTVI5J.js} +115 -3
  12. package/dist/{chunk-MBAL5FE6.js → chunk-DB3I75FI.js} +4 -4
  13. package/dist/chunk-FGDJOJ2L.js +176 -0
  14. package/dist/{chunk-2FEA4LDA.js → chunk-JWZNK3CQ.js} +31 -6
  15. package/dist/{chunk-2MCNURQV.js → chunk-K7LM4CLD.js} +279 -93
  16. package/dist/{chunk-3KKNTHUC.js → chunk-LW5CMQGZ.js} +1 -1
  17. package/dist/{chunk-JB2H7E7V.js → chunk-M5V4QIWF.js} +1 -1
  18. package/dist/{chunk-6CUJQKTJ.js → chunk-MHR4OGZ4.js} +115 -3
  19. package/dist/{chunk-46KMKHSD.js → chunk-WAFIF22N.js} +2 -2
  20. package/dist/{chunk-27MAWNKY.js → chunk-ZRFAZVGL.js} +2 -2
  21. package/dist/{connected-teams-MKIYKOYA.js → connected-teams-OMDHTL6A.js} +2 -2
  22. package/dist/{connected-teams-RSL4VB3X.js → connected-teams-RUNMOCG5.js} +2 -2
  23. package/dist/{coordinator-prompt-N2R6FGZK.js → coordinator-prompt-3BSMKZL4.js} +4 -4
  24. package/dist/{coordinator-prompt-LKG3SHMI.js → coordinator-prompt-6HMTOX4G.js} +4 -4
  25. package/dist/{global-workspace-LALWQWRJ.js → global-workspace-QS7A23CB.js} +5 -6
  26. package/dist/{global-workspace-YOAUQCMA.js → global-workspace-YZ2NJVLL.js} +5 -6
  27. package/dist/index.cjs +1345 -933
  28. package/dist/index.d.cts +96 -1
  29. package/dist/index.d.ts +96 -1
  30. package/dist/index.js +750 -715
  31. package/dist/mcp/run-stdio.cjs +1293 -977
  32. package/dist/mcp/run-stdio.js +691 -748
  33. package/dist/{run-GPSVV5OH.js → run-JLD2Y52J.js} +1 -1
  34. package/dist/{run-HZTBWGQR.js → run-Y2MI3EVV.js} +1 -1
  35. package/dist/{workspaces-E75POJXP.js → workspaces-AIUYUXB7.js} +6 -7
  36. package/dist/{workspaces-VCAIHVIE.js → workspaces-EBFW7I7S.js} +6 -7
  37. package/dist/{worktree-MV4WRW6G.js → worktree-7NBPIVFZ.js} +2 -2
  38. package/dist/{worktree-LZEGVQSN.js → worktree-WMDJW2BL.js} +2 -2
  39. package/package.json +1 -1
  40. package/dist/chunk-73AT5K4A.js +0 -104
  41. package/dist/chunk-GI7E5733.js +0 -30
  42. package/dist/chunk-RIWUU7FO.js +0 -107
  43. package/dist/chunk-S2LL5HA4.js +0 -33
@@ -28,20 +28,32 @@ import {
28
28
  parseCursorRunnerLine,
29
29
  parseSessionQuotaResetAt,
30
30
  permissionMode,
31
+ prepareTerminalCommand,
31
32
  resolveCursorModelId,
33
+ resolveLoginCommand,
32
34
  resolveQuotaFallbackAgent
33
- } from "./chunk-2MCNURQV.js";
34
- import "./chunk-JB2H7E7V.js";
35
+ } from "./chunk-K7LM4CLD.js";
36
+ import "./chunk-M5V4QIWF.js";
35
37
  import {
36
38
  ORCHESTRATOR_AGENT_KINDS,
37
39
  assertOrchestratorCapableAgent,
38
40
  coerceOrchestratorAgent,
39
41
  isOrchestratorCapableAgent
40
- } from "./chunk-S2LL5HA4.js";
42
+ } from "./chunk-JWZNK3CQ.js";
43
+ import "./chunk-57WWNMFP.js";
44
+ import "./chunk-LW5CMQGZ.js";
45
+ import "./chunk-B3SJXYIJ.js";
46
+ import "./chunk-7FD7COKE.js";
41
47
  import {
42
- ensureAgentPath
43
- } from "./chunk-RIWUU7FO.js";
44
- import "./chunk-DDN3UF4R.js";
48
+ conductorBundledBinDir,
49
+ enrichPathWithNpmGlobalBin,
50
+ ensureAgentPath,
51
+ isConductorBundledCli,
52
+ posixShellSingleQuote,
53
+ resolveCommandBinarySync,
54
+ withExportedPath
55
+ } from "./chunk-FGDJOJ2L.js";
56
+ import "./chunk-BPOTVI5J.js";
45
57
  import "./chunk-KGZBYWZ3.js";
46
58
  import "./chunk-7MV3RXSC.js";
47
59
  export {
@@ -54,14 +66,17 @@ export {
54
66
  claudeAdapter,
55
67
  codexAdapter,
56
68
  coerceOrchestratorAgent,
69
+ conductorBundledBinDir,
57
70
  cursorAdapter,
58
71
  cursorSdkMessageToEvents,
59
72
  decodeBrightsyTarget,
60
73
  encodeBrightsyTarget,
74
+ enrichPathWithNpmGlobalBin,
61
75
  ensureAgentPath,
62
76
  getAdapter,
63
77
  getAgentSetupInfo,
64
78
  installAgent,
79
+ isConductorBundledCli,
65
80
  isCursorAutoModel,
66
81
  isOrchestratorCapableAgent,
67
82
  isSessionQuotaLimit,
@@ -77,6 +92,11 @@ export {
77
92
  parseCursorRunnerLine,
78
93
  parseSessionQuotaResetAt,
79
94
  permissionMode,
95
+ posixShellSingleQuote,
96
+ prepareTerminalCommand,
97
+ resolveCommandBinarySync,
80
98
  resolveCursorModelId,
81
- resolveQuotaFallbackAgent
99
+ resolveLoginCommand,
100
+ resolveQuotaFallbackAgent,
101
+ withExportedPath
82
102
  };
@@ -24,26 +24,38 @@ import {
24
24
  opencodeAdapter,
25
25
  parseSessionQuotaResetAt,
26
26
  permissionMode,
27
+ prepareTerminalCommand,
27
28
  resolveCursorModelId,
29
+ resolveLoginCommand,
28
30
  resolveQuotaFallbackAgent
29
- } from "./chunk-ZF5YJCXO.js";
31
+ } from "./chunk-B4PRRKMA.js";
30
32
  import {
31
33
  ORCHESTRATOR_AGENT_KINDS,
32
34
  assertOrchestratorCapableAgent,
33
35
  coerceOrchestratorAgent,
34
36
  isOrchestratorCapableAgent
35
- } from "./chunk-GI7E5733.js";
36
- import "./chunk-MBAL5FE6.js";
37
+ } from "./chunk-7ZOQY4A7.js";
38
+ import "./chunk-DB3I75FI.js";
37
39
  import {
38
40
  cursorSdkMessageToEvents,
39
41
  parseCursorRunnerLine
40
42
  } from "./chunk-3WJAUKIL.js";
41
- import "./chunk-6CUJQKTJ.js";
43
+ import "./chunk-ZRFAZVGL.js";
44
+ import "./chunk-MHR4OGZ4.js";
45
+ import "./chunk-4BUCGNZS.js";
46
+ import "./chunk-FKOIHGKV.js";
47
+ import "./chunk-FWJYLBO6.js";
42
48
  import "./chunk-77WWLBCI.js";
43
49
  import "./chunk-M37RITA6.js";
44
50
  import {
45
- ensureAgentPath
46
- } from "./chunk-73AT5K4A.js";
51
+ conductorBundledBinDir,
52
+ enrichPathWithNpmGlobalBin,
53
+ ensureAgentPath,
54
+ isConductorBundledCli,
55
+ posixShellSingleQuote,
56
+ resolveCommandBinarySync,
57
+ withExportedPath
58
+ } from "./chunk-4UIYN56C.js";
47
59
  export {
48
60
  CLAUDE_MODEL_CATALOG,
49
61
  ORCHESTRATOR_AGENT_KINDS,
@@ -54,14 +66,17 @@ export {
54
66
  claudeAdapter,
55
67
  codexAdapter,
56
68
  coerceOrchestratorAgent,
69
+ conductorBundledBinDir,
57
70
  cursorAdapter,
58
71
  cursorSdkMessageToEvents,
59
72
  decodeBrightsyTarget,
60
73
  encodeBrightsyTarget,
74
+ enrichPathWithNpmGlobalBin,
61
75
  ensureAgentPath,
62
76
  getAdapter,
63
77
  getAgentSetupInfo,
64
78
  installAgent,
79
+ isConductorBundledCli,
65
80
  isCursorAutoModel,
66
81
  isOrchestratorCapableAgent,
67
82
  isSessionQuotaLimit,
@@ -77,6 +92,11 @@ export {
77
92
  parseCursorRunnerLine,
78
93
  parseSessionQuotaResetAt,
79
94
  permissionMode,
95
+ posixShellSingleQuote,
96
+ prepareTerminalCommand,
97
+ resolveCommandBinarySync,
80
98
  resolveCursorModelId,
81
- resolveQuotaFallbackAgent
99
+ resolveLoginCommand,
100
+ resolveQuotaFallbackAgent,
101
+ withExportedPath
82
102
  };
@@ -10,6 +10,7 @@ import {
10
10
  autoRunAfterSetupEnabled,
11
11
  brightsyCloudConnectAgent,
12
12
  brightsyCloudConnectEnabled,
13
+ brightsyInjectWorktreeMcpEnabled,
13
14
  caffeinateWhileCloudConnectEnabled,
14
15
  caffeinateWhileRunningEnabled,
15
16
  childEnvWithAppSettings,
@@ -28,18 +29,22 @@ import {
28
29
  maxConcurrentAgents,
29
30
  orchestrationQuotaFallbackAgent,
30
31
  orchestrationQuotaOnLimit,
32
+ resolveAgentExecutable,
31
33
  resolveClaudeExecutable,
32
34
  resolveEffectiveIssueSource,
33
35
  resolveNewThreadOptions,
34
36
  resolveThreadDefaults,
35
37
  saveAppSettings,
36
38
  updateAdvancedSettings,
39
+ updateAgentExecutable,
37
40
  updateAppEnvironment,
38
41
  updateBrightsySettings,
39
42
  updateClaudeSettings,
43
+ updateCodexSettings,
40
44
  updateDefaultsSettings,
41
- updateIntegrationsSettings
42
- } from "./chunk-DDN3UF4R.js";
45
+ updateIntegrationsSettings,
46
+ updateOpencodeSettings
47
+ } from "./chunk-BPOTVI5J.js";
43
48
  import "./chunk-KGZBYWZ3.js";
44
49
  import "./chunk-7MV3RXSC.js";
45
50
  export {
@@ -52,6 +57,7 @@ export {
52
57
  autoRunAfterSetupEnabled,
53
58
  brightsyCloudConnectAgent,
54
59
  brightsyCloudConnectEnabled,
60
+ brightsyInjectWorktreeMcpEnabled,
55
61
  caffeinateWhileCloudConnectEnabled,
56
62
  caffeinateWhileRunningEnabled,
57
63
  childEnvWithAppSettings,
@@ -70,15 +76,19 @@ export {
70
76
  maxConcurrentAgents,
71
77
  orchestrationQuotaFallbackAgent,
72
78
  orchestrationQuotaOnLimit,
79
+ resolveAgentExecutable,
73
80
  resolveClaudeExecutable,
74
81
  resolveEffectiveIssueSource,
75
82
  resolveNewThreadOptions,
76
83
  resolveThreadDefaults,
77
84
  saveAppSettings,
78
85
  updateAdvancedSettings,
86
+ updateAgentExecutable,
79
87
  updateAppEnvironment,
80
88
  updateBrightsySettings,
81
89
  updateClaudeSettings,
90
+ updateCodexSettings,
82
91
  updateDefaultsSettings,
83
- updateIntegrationsSettings
92
+ updateIntegrationsSettings,
93
+ updateOpencodeSettings
84
94
  };
@@ -8,6 +8,7 @@ import {
8
8
  autoRunAfterSetupEnabled,
9
9
  brightsyCloudConnectAgent,
10
10
  brightsyCloudConnectEnabled,
11
+ brightsyInjectWorktreeMcpEnabled,
11
12
  caffeinateWhileCloudConnectEnabled,
12
13
  caffeinateWhileRunningEnabled,
13
14
  childEnvWithAppSettings,
@@ -26,18 +27,22 @@ import {
26
27
  maxConcurrentAgents,
27
28
  orchestrationQuotaFallbackAgent,
28
29
  orchestrationQuotaOnLimit,
30
+ resolveAgentExecutable,
29
31
  resolveClaudeExecutable,
30
32
  resolveEffectiveIssueSource,
31
33
  resolveNewThreadOptions,
32
34
  resolveThreadDefaults,
33
35
  saveAppSettings,
34
36
  updateAdvancedSettings,
37
+ updateAgentExecutable,
35
38
  updateAppEnvironment,
36
39
  updateBrightsySettings,
37
40
  updateClaudeSettings,
41
+ updateCodexSettings,
38
42
  updateDefaultsSettings,
39
- updateIntegrationsSettings
40
- } from "./chunk-6CUJQKTJ.js";
43
+ updateIntegrationsSettings,
44
+ updateOpencodeSettings
45
+ } from "./chunk-MHR4OGZ4.js";
41
46
  import "./chunk-77WWLBCI.js";
42
47
  import "./chunk-M37RITA6.js";
43
48
  export {
@@ -50,6 +55,7 @@ export {
50
55
  autoRunAfterSetupEnabled,
51
56
  brightsyCloudConnectAgent,
52
57
  brightsyCloudConnectEnabled,
58
+ brightsyInjectWorktreeMcpEnabled,
53
59
  caffeinateWhileCloudConnectEnabled,
54
60
  caffeinateWhileRunningEnabled,
55
61
  childEnvWithAppSettings,
@@ -68,15 +74,19 @@ export {
68
74
  maxConcurrentAgents,
69
75
  orchestrationQuotaFallbackAgent,
70
76
  orchestrationQuotaOnLimit,
77
+ resolveAgentExecutable,
71
78
  resolveClaudeExecutable,
72
79
  resolveEffectiveIssueSource,
73
80
  resolveNewThreadOptions,
74
81
  resolveThreadDefaults,
75
82
  saveAppSettings,
76
83
  updateAdvancedSettings,
84
+ updateAgentExecutable,
77
85
  updateAppEnvironment,
78
86
  updateBrightsySettings,
79
87
  updateClaudeSettings,
88
+ updateCodexSettings,
80
89
  updateDefaultsSettings,
81
- updateIntegrationsSettings
90
+ updateIntegrationsSettings,
91
+ updateOpencodeSettings
82
92
  };
@@ -11,7 +11,7 @@ import {
11
11
  gh,
12
12
  git,
13
13
  resolveGhAuthToken
14
- } from "./chunk-73AT5K4A.js";
14
+ } from "./chunk-4UIYN56C.js";
15
15
 
16
16
  // src/git/worktree.ts
17
17
  import { existsSync, readdirSync } from "fs";
@@ -0,0 +1,173 @@
1
+ // src/git/run.ts
2
+ import { execa } from "execa";
3
+
4
+ // src/agents/path.ts
5
+ import { existsSync } from "fs";
6
+ import { execFileSync } from "child_process";
7
+ import { homedir } from "os";
8
+ import { delimiter, join } from "path";
9
+ var EXTRA_BIN_DIRS = [
10
+ ".local/bin",
11
+ ".cargo/bin",
12
+ ".nvm/current/bin",
13
+ ".asdf/shims",
14
+ ".volta/bin",
15
+ ".npm-global/bin",
16
+ // fnm default alias (common when shell init is skipped)
17
+ ".local/share/fnm/aliases/default/bin",
18
+ // pnpm / npm global bins (where `@brightsy/cli` typically lands)
19
+ "Library/pnpm",
20
+ ".pnpm"
21
+ ];
22
+ function prependPathDir(env, dir) {
23
+ if (!dir || !existsSync(dir)) return;
24
+ const current = env.PATH ?? "";
25
+ const parts = current.split(delimiter).filter(Boolean);
26
+ if (parts.includes(dir)) {
27
+ env.PATH = current;
28
+ return;
29
+ }
30
+ env.PATH = [dir, ...parts].join(delimiter);
31
+ }
32
+ function conductorBundledBinDir(home = process.env.HOME || process.env.USERPROFILE || homedir()) {
33
+ return join(home, "Library", "Application Support", "com.conductor.app", "bin");
34
+ }
35
+ function isConductorBundledCli(filePath) {
36
+ const p = (filePath ?? "").replace(/\\/g, "/");
37
+ return p.includes("/com.conductor.app/bin/") || p.endsWith("/com.conductor.app/bin");
38
+ }
39
+ function ensureAgentPath(env = process.env) {
40
+ const home = env.HOME || env.USERPROFILE || homedir();
41
+ const current = env.PATH ?? "";
42
+ const parts = current.split(delimiter).filter(Boolean);
43
+ const seen = new Set(parts);
44
+ const extras = [
45
+ ...EXTRA_BIN_DIRS.map((rel) => join(home, rel)),
46
+ "/opt/homebrew/bin",
47
+ "/usr/local/bin",
48
+ // Keep after Homebrew/npm so a user-installed CLI still wins.
49
+ conductorBundledBinDir(home)
50
+ ];
51
+ for (const dir of extras.reverse()) {
52
+ if (!dir || seen.has(dir) || !existsSync(dir)) continue;
53
+ parts.unshift(dir);
54
+ seen.add(dir);
55
+ }
56
+ const next = parts.join(delimiter);
57
+ env.PATH = next;
58
+ return next;
59
+ }
60
+ function enrichPathWithNpmGlobalBin(env = process.env) {
61
+ ensureAgentPath(env);
62
+ try {
63
+ const prefix = execFileSync("npm", ["prefix", "-g"], {
64
+ encoding: "utf8",
65
+ env: { ...process.env, ...env },
66
+ timeout: 8e3,
67
+ stdio: ["ignore", "pipe", "ignore"]
68
+ }).trim().split(/\r?\n/).find(Boolean);
69
+ if (prefix) {
70
+ const binDir = process.platform === "win32" ? prefix : join(prefix, "bin");
71
+ prependPathDir(env, binDir);
72
+ }
73
+ } catch {
74
+ }
75
+ return env.PATH ?? "";
76
+ }
77
+ function posixShellSingleQuote(value) {
78
+ return `'${value.replace(/'/g, `'\\''`)}'`;
79
+ }
80
+ function resolveCommandBinarySync(command, whichPath) {
81
+ const trimmed = command.trim();
82
+ if (!trimmed) return trimmed;
83
+ const match = /^(\S+)(\s[\s\S]*)?$/.exec(trimmed);
84
+ if (!match) return trimmed;
85
+ const bin = match[1];
86
+ const rest = match[2] ?? "";
87
+ if (bin.includes("/") || bin.includes("\\")) return trimmed;
88
+ const abs = whichPath?.trim().split(/\r?\n/).find(Boolean);
89
+ if (!abs) return trimmed;
90
+ return `${abs}${rest}`;
91
+ }
92
+ function withExportedPath(command, pathValue) {
93
+ const trimmed = command.trim();
94
+ if (!trimmed) return trimmed;
95
+ if (/^(export\s+PATH=|PATH=)/.test(trimmed)) return trimmed;
96
+ return `export PATH=${posixShellSingleQuote(pathValue)} && ${trimmed}`;
97
+ }
98
+
99
+ // src/git/run.ts
100
+ async function run(file, args, opts) {
101
+ ensureAgentPath();
102
+ try {
103
+ const result = await execa(file, args, {
104
+ cwd: opts?.cwd,
105
+ env: { ...process.env, ...opts?.env },
106
+ reject: opts?.reject ?? true,
107
+ ...opts?.timeoutMs != null ? { timeout: opts.timeoutMs } : {}
108
+ });
109
+ return {
110
+ stdout: result.stdout ?? "",
111
+ stderr: result.stderr ?? "",
112
+ exitCode: result.exitCode ?? 0
113
+ };
114
+ } catch (err) {
115
+ const e = err;
116
+ if (opts?.reject === false) {
117
+ return {
118
+ stdout: String(e.stdout ?? ""),
119
+ stderr: String(e.stderr ?? ""),
120
+ exitCode: e.exitCode ?? 1
121
+ };
122
+ }
123
+ throw err;
124
+ }
125
+ }
126
+ async function git(args, cwd, opts) {
127
+ const prefix = [];
128
+ if (opts?.config) {
129
+ for (const [key, value] of Object.entries(opts.config)) {
130
+ if (!key) continue;
131
+ prefix.push("-c", `${key}=${value}`);
132
+ }
133
+ }
134
+ return run("git", [...prefix, ...args], {
135
+ cwd,
136
+ reject: opts?.reject,
137
+ timeoutMs: opts?.timeoutMs,
138
+ // Never block forever on a credential/SSH prompt inside MCP / Electron.
139
+ env: {
140
+ GIT_TERMINAL_PROMPT: "0",
141
+ GIT_ASKPASS: process.env.GIT_ASKPASS || "echo",
142
+ GIT_SSH_COMMAND: process.env.GIT_SSH_COMMAND || "ssh -o BatchMode=yes -o ConnectTimeout=15",
143
+ ...opts?.env
144
+ }
145
+ });
146
+ }
147
+ async function gh(args, cwd, opts) {
148
+ return run("gh", args, {
149
+ cwd,
150
+ reject: opts?.reject,
151
+ timeoutMs: opts?.timeoutMs
152
+ });
153
+ }
154
+ async function resolveGhAuthToken(cwd) {
155
+ const result = await gh(["auth", "token"], cwd, { reject: false });
156
+ if (result.exitCode !== 0) return null;
157
+ const token = result.stdout.trim();
158
+ return token || null;
159
+ }
160
+
161
+ export {
162
+ conductorBundledBinDir,
163
+ isConductorBundledCli,
164
+ ensureAgentPath,
165
+ enrichPathWithNpmGlobalBin,
166
+ posixShellSingleQuote,
167
+ resolveCommandBinarySync,
168
+ withExportedPath,
169
+ run,
170
+ git,
171
+ gh,
172
+ resolveGhAuthToken
173
+ };
@@ -2,10 +2,10 @@
2
2
 
3
3
  import {
4
4
  resolveGithubRepoSlug
5
- } from "./chunk-3KKNTHUC.js";
5
+ } from "./chunk-LW5CMQGZ.js";
6
6
  import {
7
7
  resolveThreadDefaults
8
- } from "./chunk-DDN3UF4R.js";
8
+ } from "./chunk-BPOTVI5J.js";
9
9
  import {
10
10
  globalAgentCwd,
11
11
  sideboardReposDir
@@ -2,11 +2,11 @@
2
2
 
3
3
  import {
4
4
  isGlobalRepoPath
5
- } from "./chunk-2FEA4LDA.js";
5
+ } from "./chunk-JWZNK3CQ.js";
6
6
  import {
7
7
  ensureGhPreferOrigin,
8
8
  resolveRepoRoot
9
- } from "./chunk-3KKNTHUC.js";
9
+ } from "./chunk-LW5CMQGZ.js";
10
10
  import {
11
11
  appDataDir
12
12
  } from "./chunk-7MV3RXSC.js";
@@ -1,18 +1,15 @@
1
- import {
2
- assertOrchestratorCapableAgent
3
- } from "./chunk-GI7E5733.js";
4
1
  import {
5
2
  ensureGlobalCoordinatorCwd
6
- } from "./chunk-27MAWNKY.js";
3
+ } from "./chunk-ZRFAZVGL.js";
7
4
  import {
8
5
  resolveNewThreadOptions,
9
6
  resolveThreadDefaults
10
- } from "./chunk-6CUJQKTJ.js";
7
+ } from "./chunk-MHR4OGZ4.js";
11
8
  import {
12
9
  allocateTeamName,
13
10
  takenSlugsFromThread,
14
11
  teamSlugFromName
15
- } from "./chunk-UGXSSBFJ.js";
12
+ } from "./chunk-4BUCGNZS.js";
16
13
  import {
17
14
  createEmptyThread,
18
15
  listThreads,
@@ -53,6 +50,30 @@ function parseForceStopMessage(message) {
53
50
  return { forceStop, remainder: forceStop ? remainder : message };
54
51
  }
55
52
 
53
+ // src/agents/orchestrator-capable.ts
54
+ var ORCHESTRATOR_AGENT_KINDS = [
55
+ "claude",
56
+ "codex",
57
+ "opencode",
58
+ "cursor"
59
+ ];
60
+ function isOrchestratorCapableAgent(agent) {
61
+ return Boolean(
62
+ agent && ORCHESTRATOR_AGENT_KINDS.includes(agent)
63
+ );
64
+ }
65
+ function assertOrchestratorCapableAgent(agent, context = "orchestration") {
66
+ if (!isOrchestratorCapableAgent(agent)) {
67
+ throw new Error(
68
+ `${agent} cannot run ${context} \u2014 it does not support Sideboard MCP. Use Claude, Cursor, Codex, or OpenCode.`
69
+ );
70
+ }
71
+ return agent;
72
+ }
73
+ function coerceOrchestratorAgent(agent, fallback = "claude") {
74
+ return isOrchestratorCapableAgent(agent) ? agent : fallback;
75
+ }
76
+
56
77
  // src/store/global-workspace.ts
57
78
  var GLOBAL_WORKSPACE_ID = "__global__";
58
79
  function isGlobalThread(thread) {
@@ -213,6 +234,10 @@ export {
213
234
  CLOUD_COORDINATOR_STOPPED_REPLY,
214
235
  CLOUD_COORDINATOR_TIMEOUT_REPLY,
215
236
  parseForceStopMessage,
237
+ ORCHESTRATOR_AGENT_KINDS,
238
+ isOrchestratorCapableAgent,
239
+ assertOrchestratorCapableAgent,
240
+ coerceOrchestratorAgent,
216
241
  GLOBAL_WORKSPACE_ID,
217
242
  isGlobalThread,
218
243
  isGlobalRepoPath,