@sideboard-ai/core 0.1.303 → 0.1.305

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 (84) hide show
  1. package/dist/{abletime-APP3DZ4P.js → abletime-SJUVZVRU.js} +6 -6
  2. package/dist/{abletime-RYDAQ3FE.js → abletime-T5YSJLNZ.js} +6 -6
  3. package/dist/{abletime-oauth-ZURGXSY6.js → abletime-oauth-2TOOZ2FN.js} +5 -5
  4. package/dist/{abletime-oauth-KTERKARA.js → abletime-oauth-73TFJME4.js} +5 -5
  5. package/dist/{abletime-rest-4TVIWLZK.js → abletime-rest-5TDRIFEV.js} +5 -5
  6. package/dist/{abletime-rest-EUB6RW7K.js → abletime-rest-PNUGH2FS.js} +5 -5
  7. package/dist/agents/claude-runner.js +2 -2
  8. package/dist/agents/cursor-runner.js +5 -5
  9. package/dist/{agents-3GN4E2X3.js → agents-IWNQOQOU.js} +12 -12
  10. package/dist/{agents-XLHFVC64.js → agents-PGU5WVSO.js} +10 -10
  11. package/dist/{app-settings-2IH42VA5.js → app-settings-CC65VPBL.js} +3 -3
  12. package/dist/{app-settings-3OQWRKOK.js → app-settings-DZ5AY7N5.js} +3 -3
  13. package/dist/{caffeinate-hold-7JM5H5P3.js → caffeinate-hold-H7TTUDGM.js} +2 -2
  14. package/dist/{caffeinate-hold-DYJGWK6Y.js → caffeinate-hold-ZNUEZGHB.js} +2 -2
  15. package/dist/{chunk-545DY7CQ.js → chunk-33HIBNSF.js} +106 -64
  16. package/dist/{chunk-FA3V56KF.js → chunk-3UDRWMIM.js} +2 -2
  17. package/dist/{chunk-7IAMHN2N.js → chunk-42JGPPVS.js} +1 -1
  18. package/dist/{chunk-BRFDPV7Z.js → chunk-5QX2NYXL.js} +4 -4
  19. package/dist/{chunk-DW6NNYUJ.js → chunk-5SFA27CF.js} +61 -8
  20. package/dist/{chunk-XCXUVX7I.js → chunk-62ESCTJ4.js} +1 -1
  21. package/dist/{chunk-SSETL5EX.js → chunk-6424BACS.js} +2 -2
  22. package/dist/{chunk-RSATPXU4.js → chunk-A2YXQC65.js} +264 -2
  23. package/dist/{chunk-GEFH4QFX.js → chunk-BIPXOHZI.js} +3 -3
  24. package/dist/{chunk-HSF2RQSQ.js → chunk-CFTOKVQN.js} +5 -5
  25. package/dist/{chunk-3D3GGL6X.js → chunk-CW4FIIDE.js} +3 -3
  26. package/dist/{chunk-5DZUWGKV.js → chunk-DC3VZXMA.js} +1 -1
  27. package/dist/{chunk-5MVOZLN7.js → chunk-DLGGLV2M.js} +3 -3
  28. package/dist/{chunk-WZCPZVUC.js → chunk-EGTCXNQM.js} +3 -3
  29. package/dist/{chunk-3TZRSKFJ.js → chunk-EZYZGDWU.js} +422 -175
  30. package/dist/{chunk-7AYOOG77.js → chunk-G2L3CR3A.js} +471 -107
  31. package/dist/{chunk-EHT2DRT4.js → chunk-H4UEFJRI.js} +4 -0
  32. package/dist/{chunk-P2GHFJOB.js → chunk-HG25AYBV.js} +2 -2
  33. package/dist/{chunk-GS6O65Q2.js → chunk-I34DCC4L.js} +104 -62
  34. package/dist/{chunk-UN5Q7POQ.js → chunk-J2LNLI4S.js} +1 -1
  35. package/dist/{chunk-MOP5L5QZ.js → chunk-JARCAPKL.js} +3 -3
  36. package/dist/{chunk-FAXOEKQR.js → chunk-JWW66PO3.js} +5 -5
  37. package/dist/{chunk-3HO2OY5T.js → chunk-KI45T4DI.js} +1 -1
  38. package/dist/{chunk-NOT4SEAM.js → chunk-LAWLUOWQ.js} +1 -1
  39. package/dist/{chunk-UWQ6UCIB.js → chunk-LG6RJBIY.js} +1 -1
  40. package/dist/{chunk-IOY2LF3Y.js → chunk-MMVMQ34G.js} +1 -1
  41. package/dist/{chunk-LZVWKJXY.js → chunk-OLSLE3LO.js} +3 -3
  42. package/dist/{chunk-RAGDMEIB.js → chunk-OVNIP265.js} +59 -8
  43. package/dist/{chunk-BU6HH5VA.js → chunk-PHMFAU35.js} +66 -2
  44. package/dist/{chunk-ISEYRGMP.js → chunk-RU6DTCCV.js} +2 -2
  45. package/dist/{chunk-R3R3ZDFC.js → chunk-SZ3XS2WM.js} +2 -2
  46. package/dist/{chunk-B42H6GJR.js → chunk-U4WACWBC.js} +3 -3
  47. package/dist/{chunk-VGNLMGBK.js → chunk-VEVFHO6K.js} +5 -5
  48. package/dist/{chunk-4RZRHTSZ.js → chunk-WMZIANPV.js} +1 -1
  49. package/dist/{chunk-H5XL4KUS.js → chunk-WOU343SI.js} +4 -0
  50. package/dist/{chunk-QDDTVIWE.js → chunk-WRZRX4Q7.js} +2 -2
  51. package/dist/{chunk-YCDHLK2Z.js → chunk-X3FSWWW2.js} +4 -4
  52. package/dist/{chunk-QDA6NXRA.js → chunk-YDUHLWI5.js} +1 -1
  53. package/dist/{chunk-J54UPHXZ.js → chunk-YJBUYGPN.js} +1 -1
  54. package/dist/{conductor-ATST6OMC.js → conductor-YBXURAUL.js} +10 -8
  55. package/dist/{conductor-2AVFGSQJ.js → conductor-ZFRXTVGP.js} +10 -8
  56. package/dist/{connected-teams-BJ6PMIST.js → connected-teams-BBNYTR3I.js} +2 -2
  57. package/dist/{connected-teams-AB7ZHJVO.js → connected-teams-WLWIVYGD.js} +2 -2
  58. package/dist/{coordinator-prompt-TIAI6A47.js → coordinator-prompt-GZCWQAAV.js} +7 -7
  59. package/dist/{coordinator-prompt-CQPUNMRX.js → coordinator-prompt-YAZRQ4BI.js} +7 -7
  60. package/dist/{cursor-recover-A6V5UVFT.js → cursor-recover-OWPQUHFH.js} +2 -2
  61. package/dist/{cursor-recover-MB3T2K5T.js → cursor-recover-TEBFKAZ4.js} +2 -2
  62. package/dist/{global-workspace-7YABMLQG.js → global-workspace-BZAVBOH3.js} +7 -7
  63. package/dist/{global-workspace-UZJUHGQP.js → global-workspace-H6X32IJZ.js} +7 -7
  64. package/dist/index.cjs +13486 -12609
  65. package/dist/index.d.cts +94 -14
  66. package/dist/index.d.ts +94 -14
  67. package/dist/index.js +11807 -11663
  68. package/dist/{managed-accounts-2AK5RIAF.js → managed-accounts-JJTAKHMG.js} +2 -2
  69. package/dist/{managed-accounts-46A4KRUE.js → managed-accounts-PITLFLKU.js} +2 -2
  70. package/dist/mcp/run-stdio.cjs +1037 -616
  71. package/dist/mcp/run-stdio.js +20 -20
  72. package/dist/{optional-cli-JQVNSMSU.js → optional-cli-QDIT57VD.js} +5 -5
  73. package/dist/{optional-cli-PZXDOVJJ.js → optional-cli-QY6V5S5N.js} +6 -6
  74. package/dist/{orchestrator-CZPRDLHV.js → orchestrator-IKKSYIQ3.js} +16 -16
  75. package/dist/{orchestrator-COX6QO2B.js → orchestrator-JGHYZDDB.js} +14 -14
  76. package/dist/{paths-HYT5WOOX.js → paths-HAAJNTTE.js} +1 -1
  77. package/dist/{paths-5JYXTAPC.js → paths-PHWEVXD5.js} +1 -1
  78. package/dist/{thread-store-PNX4HVLO.js → thread-store-HY22M5A7.js} +3 -3
  79. package/dist/{thread-store-VC4AIKN3.js → thread-store-XMUQDO5O.js} +3 -3
  80. package/dist/{workspaces-GZ7F5EJR.js → workspaces-AGOLRBYZ.js} +7 -7
  81. package/dist/{workspaces-6DJL4IST.js → workspaces-BQUDYTBX.js} +7 -7
  82. package/dist/{worktree-2BYVRYPJ.js → worktree-C5VI46RZ.js} +6 -6
  83. package/dist/{worktree-VXPOY2LE.js → worktree-FMK57ULT.js} +6 -6
  84. package/package.json +4 -1
@@ -8,11 +8,11 @@ import {
8
8
  isGlobalThread,
9
9
  isOrchestratorThread,
10
10
  isSlackCoordinatorThread
11
- } from "./chunk-BRFDPV7Z.js";
11
+ } from "./chunk-5QX2NYXL.js";
12
12
  import {
13
13
  mergeAgentGitAuthEnv,
14
14
  resolveAgentGitAuthEnv
15
- } from "./chunk-GEFH4QFX.js";
15
+ } from "./chunk-BIPXOHZI.js";
16
16
  import {
17
17
  allocateTeamName,
18
18
  createEmptyThread,
@@ -23,7 +23,7 @@ import {
23
23
  updateThread,
24
24
  worktreeNameFromPath,
25
25
  writeThread
26
- } from "./chunk-P2GHFJOB.js";
26
+ } from "./chunk-HG25AYBV.js";
27
27
  import {
28
28
  ensureWorktreeSideboardIgnored
29
29
  } from "./chunk-2P4XKWV2.js";
@@ -43,7 +43,7 @@ import {
43
43
  import {
44
44
  assertOrchestratorCapableAgent,
45
45
  contextTokens
46
- } from "./chunk-RSATPXU4.js";
46
+ } from "./chunk-A2YXQC65.js";
47
47
  import {
48
48
  stripNestedElectronEnv
49
49
  } from "./chunk-4TR3HZFT.js";
@@ -53,19 +53,21 @@ import {
53
53
  loadWorkspaceSettings,
54
54
  runCursorWorktreeSetup,
55
55
  workspaceSettingsSourceLabel
56
- } from "./chunk-EHT2DRT4.js";
56
+ } from "./chunk-H4UEFJRI.js";
57
57
 
58
58
  // src/hook/conductor.ts
59
59
  import {
60
60
  copyFileSync,
61
61
  existsSync as existsSync4,
62
+ lstatSync,
62
63
  mkdirSync as mkdirSync5,
63
64
  readdirSync as readdirSync2,
64
65
  readFileSync as readFileSync4,
65
- realpathSync
66
+ realpathSync,
67
+ symlinkSync
66
68
  } from "fs";
67
69
  import { execFileSync } from "child_process";
68
- import { basename, dirname as dirname4, join as join5, resolve, sep } from "path";
70
+ import { basename, dirname as dirname4, isAbsolute, join as join5, resolve, sep } from "path";
69
71
  import { execa } from "execa";
70
72
  import { createInterface } from "readline";
71
73
 
@@ -1776,7 +1778,7 @@ var PORT_RANGE_SIZE = 10;
1776
1778
  var RECLAIM_RETRY_DELAY_MS = 40;
1777
1779
  var RECLAIM_TRIES = 8;
1778
1780
  async function killReclaimable(ports, worktreePath, signal) {
1779
- const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-ATST6OMC.js");
1781
+ const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-YBXURAUL.js");
1780
1782
  if (worktreePath) killStaleWorktreeListeners2(ports, worktreePath, signal);
1781
1783
  else killListenersOnPorts2(ports);
1782
1784
  }
@@ -2028,8 +2030,56 @@ function copyConfiguredFiles(repoPath, worktreePath) {
2028
2030
  copyFileSync(src, dest);
2029
2031
  copied.push(rel);
2030
2032
  }
2033
+ linkSharedDirectories(repoPath, worktreePath);
2031
2034
  return copied;
2032
2035
  }
2036
+ function linkSharedDirectories(repoPath, worktreePath) {
2037
+ const dirs = loadRepoSettings(repoPath)?.sharedDirectories ?? [];
2038
+ if (!dirs.length || samePath(repoPath, worktreePath)) return [];
2039
+ const linked = [];
2040
+ for (const rel of dirs) {
2041
+ if (!isSafeRelativeDir(rel)) continue;
2042
+ if (!isGitignored(repoPath, rel)) continue;
2043
+ const src = join5(repoPath, rel);
2044
+ let srcStat;
2045
+ try {
2046
+ srcStat = lstatSync(src);
2047
+ } catch {
2048
+ continue;
2049
+ }
2050
+ if (!srcStat.isDirectory()) continue;
2051
+ const dest = join5(worktreePath, rel);
2052
+ if (existsSync4(dest)) continue;
2053
+ mkdirSync5(dirname4(dest), { recursive: true });
2054
+ try {
2055
+ symlinkSync(src, dest);
2056
+ } catch {
2057
+ continue;
2058
+ }
2059
+ linked.push(rel);
2060
+ }
2061
+ return linked;
2062
+ }
2063
+ function samePath(a, b) {
2064
+ try {
2065
+ return realpathSync(a) === realpathSync(b);
2066
+ } catch {
2067
+ return resolve(a) === resolve(b);
2068
+ }
2069
+ }
2070
+ function isSafeRelativeDir(rel) {
2071
+ if (!rel || isAbsolute(rel)) return false;
2072
+ const parts = rel.split(/[\\/]/).filter(Boolean);
2073
+ return parts.length > 0 && parts.every((part) => part !== "." && part !== "..");
2074
+ }
2075
+ function isGitignored(repoPath, rel) {
2076
+ try {
2077
+ execFileSync("git", ["-C", repoPath, "check-ignore", "-q", "--", rel], { stdio: "ignore" });
2078
+ return true;
2079
+ } catch {
2080
+ return false;
2081
+ }
2082
+ }
2033
2083
  var cachedLoginEnv = null;
2034
2084
  async function captureLoginEnv() {
2035
2085
  if (cachedLoginEnv) return { ...cachedLoginEnv };
@@ -2522,6 +2572,7 @@ export {
2522
2572
  readWorktreeInclude,
2523
2573
  resolveFilesToCopy,
2524
2574
  copyConfiguredFiles,
2575
+ linkSharedDirectories,
2525
2576
  captureLoginEnv,
2526
2577
  buildWorkspaceScriptEnv,
2527
2578
  killableListenerPids,
@@ -17,13 +17,13 @@ import {
17
17
  withAddedAccount,
18
18
  withRemovedAccount,
19
19
  withSelectedAccount
20
- } from "./chunk-UN5Q7POQ.js";
20
+ } from "./chunk-J2LNLI4S.js";
21
21
  import {
22
22
  normalizeThinkingEffort
23
23
  } from "./chunk-KGZBYWZ3.js";
24
24
  import {
25
25
  appDataDir
26
- } from "./chunk-H5XL4KUS.js";
26
+ } from "./chunk-WOU343SI.js";
27
27
 
28
28
  // src/store/app-settings.ts
29
29
  import { randomUUID } from "crypto";
@@ -160,6 +160,38 @@ function formatViewerContextReminder() {
160
160
  return "Viewer context: get_viewer_context to read; update_viewer_context only after ask_user confirms (Save this context / Do not save).";
161
161
  }
162
162
 
163
+ // src/remote/protocol.ts
164
+ var REMOTE_RELAY_PATH = "/remote";
165
+ var BAKED_REMOTE_RELAY_URL = `wss://relay.sideboard.cloud${REMOTE_RELAY_PATH}`;
166
+ function normalizeRemoteRelayUrl(raw) {
167
+ let text = raw.trim();
168
+ if (!text) return null;
169
+ if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(text)) text = `wss://${text}`;
170
+ let url;
171
+ try {
172
+ url = new URL(text);
173
+ } catch {
174
+ return null;
175
+ }
176
+ if (url.protocol === "https:") url.protocol = "wss:";
177
+ else if (url.protocol === "http:") url.protocol = "ws:";
178
+ if (url.protocol !== "ws:" && url.protocol !== "wss:") return null;
179
+ if (url.username || url.password) return null;
180
+ const path = url.pathname.replace(/\/+$/, "") || "/";
181
+ if (path !== "/" && path !== REMOTE_RELAY_PATH) return null;
182
+ url.pathname = REMOTE_RELAY_PATH;
183
+ url.search = "";
184
+ url.hash = "";
185
+ return url.toString();
186
+ }
187
+ function remoteRelayUrl(configured) {
188
+ const fromSettings = configured?.trim() ? normalizeRemoteRelayUrl(configured) : null;
189
+ if (fromSettings) return fromSettings;
190
+ const fromEnv = process.env.SIDEBOARD_REMOTE_RELAY_URL?.trim();
191
+ if (fromEnv) return normalizeRemoteRelayUrl(fromEnv) || BAKED_REMOTE_RELAY_URL;
192
+ return BAKED_REMOTE_RELAY_URL;
193
+ }
194
+
163
195
  // src/store/secret-vault.ts
164
196
  import { join } from "path";
165
197
 
@@ -310,6 +342,12 @@ function normalizeVault(raw) {
310
342
  if (typeof raw.remoteHostSecret === "string" && raw.remoteHostSecret.trim()) {
311
343
  out.remoteHostSecret = raw.remoteHostSecret.trim();
312
344
  }
345
+ if (typeof raw.remoteHostPrivateKey === "string" && raw.remoteHostPrivateKey.trim()) {
346
+ out.remoteHostPrivateKey = raw.remoteHostPrivateKey.trim();
347
+ }
348
+ if (typeof raw.remotePhoneToken === "string" && raw.remotePhoneToken.trim()) {
349
+ out.remotePhoneToken = raw.remotePhoneToken.trim();
350
+ }
313
351
  if (typeof raw.remoteAccountToken === "string" && raw.remoteAccountToken.trim()) {
314
352
  out.remoteAccountToken = raw.remoteAccountToken.trim();
315
353
  }
@@ -895,6 +933,10 @@ function normalizeIntegrations(raw) {
895
933
  const email = source.remoteAccountEmail.trim().toLowerCase();
896
934
  if (email) out.remoteAccountEmail = email;
897
935
  }
936
+ if (typeof source.remoteRelayUrl === "string") {
937
+ const url = normalizeRemoteRelayUrl(source.remoteRelayUrl);
938
+ if (url) out.remoteRelayUrl = url;
939
+ }
898
940
  if (typeof source.githubGitAuthMode === "string" && GIT_AUTH_MODES.has(source.githubGitAuthMode)) {
899
941
  out.githubGitAuthMode = source.githubGitAuthMode;
900
942
  }
@@ -1270,6 +1312,9 @@ function persistSplit(settings) {
1270
1312
  vault[key] = integrations[key];
1271
1313
  delete integrations[key];
1272
1314
  }
1315
+ const previous = loadSecretVault();
1316
+ if (previous.remoteHostPrivateKey) vault.remoteHostPrivateKey = previous.remoteHostPrivateKey;
1317
+ if (previous.remotePhoneToken) vault.remotePhoneToken = previous.remotePhoneToken;
1273
1318
  writePrivateFile(
1274
1319
  appSettingsPath(),
1275
1320
  `${JSON.stringify({ ...settings, environment: {}, integrations }, null, 2)}
@@ -1500,6 +1545,25 @@ function updateIntegrationsSettings(patch) {
1500
1545
  integrations.remoteAccountEmail = patch.remoteAccountEmail.trim().toLowerCase();
1501
1546
  }
1502
1547
  }
1548
+ if ("remoteRelayUrl" in patch) {
1549
+ const previous = remoteRelayUrl(integrations.remoteRelayUrl);
1550
+ if (patch.remoteRelayUrl == null || patch.remoteRelayUrl.trim() === "") {
1551
+ delete integrations.remoteRelayUrl;
1552
+ } else {
1553
+ const url = normalizeRemoteRelayUrl(patch.remoteRelayUrl);
1554
+ if (!url) {
1555
+ throw new Error(
1556
+ "Relay URL must be a WebSocket address, for example wss://relay.example.com/remote."
1557
+ );
1558
+ }
1559
+ integrations.remoteRelayUrl = url;
1560
+ }
1561
+ const next = remoteRelayUrl(integrations.remoteRelayUrl);
1562
+ if (new URL(previous).origin !== new URL(next).origin) {
1563
+ delete integrations.remoteAccountToken;
1564
+ delete integrations.remoteAccountEmail;
1565
+ }
1566
+ }
1503
1567
  if ("githubGitAuthMode" in patch) {
1504
1568
  if (patch.githubGitAuthMode == null) {
1505
1569
  delete integrations.githubGitAuthMode;
@@ -2,11 +2,11 @@ import {
2
2
  OPTIONAL_SERVICES,
3
3
  isOptionalServiceId,
4
4
  optionalServiceSpec
5
- } from "./chunk-QDDTVIWE.js";
5
+ } from "./chunk-WRZRX4Q7.js";
6
6
  import {
7
7
  installNpmGlobalPackage,
8
8
  whichOnPath
9
- } from "./chunk-B42H6GJR.js";
9
+ } from "./chunk-U4WACWBC.js";
10
10
  import {
11
11
  enrichPathWithNpmGlobalBin
12
12
  } from "./chunk-QVN2WOKJ.js";
@@ -4,14 +4,14 @@ import {
4
4
  normalizeAbleTimeCredential,
5
5
  normalizeAbleTimeHost,
6
6
  rewriteAbleTimeError
7
- } from "./chunk-FAXOEKQR.js";
7
+ } from "./chunk-JWW66PO3.js";
8
8
  import {
9
9
  httpFetch
10
10
  } from "./chunk-JAT3JFOS.js";
11
11
  import {
12
12
  getAbleTimeAccessToken,
13
13
  getAbleTimeHost
14
- } from "./chunk-RSATPXU4.js";
14
+ } from "./chunk-A2YXQC65.js";
15
15
 
16
16
  // src/integrations/abletime-rest.ts
17
17
  var ABLETIME_REST_PREFIX = "/api/public/v2";
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-QVN2WOKJ.js";
8
8
  import {
9
9
  resolveAgentExecutable
10
- } from "./chunk-RSATPXU4.js";
10
+ } from "./chunk-A2YXQC65.js";
11
11
 
12
12
  // src/agents/install.ts
13
13
  import { existsSync } from "fs";
@@ -265,8 +265,8 @@ async function loginAgent(agent) {
265
265
  };
266
266
  }
267
267
  async function loginManagedAccount(accountId) {
268
- const { loadAppSettings } = await import("./app-settings-3OQWRKOK.js");
269
- const { loginEnvPrefix } = await import("./managed-accounts-2AK5RIAF.js");
268
+ const { loadAppSettings } = await import("./app-settings-DZ5AY7N5.js");
269
+ const { loginEnvPrefix } = await import("./managed-accounts-JJTAKHMG.js");
270
270
  const account = loadAppSettings().accounts.accounts.find((a) => a.id === accountId);
271
271
  if (!account) {
272
272
  return { ok: false, message: `Account not found: ${accountId}` };
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-QVN2WOKJ.js";
12
12
  import {
13
13
  appDataDir
14
- } from "./chunk-EHT2DRT4.js";
14
+ } from "./chunk-H4UEFJRI.js";
15
15
 
16
16
  // src/brightsy/connected-teams.ts
17
17
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
@@ -19,7 +19,7 @@ import { join } from "path";
19
19
 
20
20
  // src/brightsy/accounts.ts
21
21
  async function loadConnectedTeams() {
22
- const { listConnectedBrightsyTeams: listConnectedBrightsyTeams2 } = await import("./connected-teams-BJ6PMIST.js");
22
+ const { listConnectedBrightsyTeams: listConnectedBrightsyTeams2 } = await import("./connected-teams-BBNYTR3I.js");
23
23
  return listConnectedBrightsyTeams2();
24
24
  }
25
25
  async function runBrightsyTeamsJson(args) {
@@ -48,14 +48,14 @@ async function listBrightsyAccounts() {
48
48
  async function getBrightsySession() {
49
49
  try {
50
50
  const { ensureBrightsyLocalConfigFresh: ensureBrightsyLocalConfigFresh2 } = await import("./oauth-DP4ZV2M2.js");
51
- const { ensureConnectedBrightsyTeamTokens: ensureConnectedBrightsyTeamTokens2 } = await import("./connected-teams-BJ6PMIST.js");
51
+ const { ensureConnectedBrightsyTeamTokens: ensureConnectedBrightsyTeamTokens2 } = await import("./connected-teams-BBNYTR3I.js");
52
52
  await ensureBrightsyLocalConfigFresh2();
53
53
  await ensureConnectedBrightsyTeamTokens2();
54
54
  loadBrightsyConfig();
55
55
  const data = await runBrightsyTeamsJson([]);
56
56
  const accounts = Array.isArray(data.teams) ? data.teams : [];
57
57
  const active = data.active ?? accounts.find((a) => a.active) ?? null;
58
- const { ensureCliTeamTracked: ensureCliTeamTracked2 } = await import("./connected-teams-BJ6PMIST.js");
58
+ const { ensureCliTeamTracked: ensureCliTeamTracked2 } = await import("./connected-teams-BBNYTR3I.js");
59
59
  const connectedTeams = ensureCliTeamTracked2(
60
60
  active ? { id: active.id, slug: active.slug, name: active.name } : void 0
61
61
  );
@@ -95,7 +95,7 @@ async function performBrightsyAccountSwitch(accountIdOrSlug) {
95
95
  return { cfg, target: data.active };
96
96
  }
97
97
  async function switchBrightsyAccount(accountIdOrSlug) {
98
- const { connectBrightsyTeam: connectBrightsyTeam2 } = await import("./connected-teams-BJ6PMIST.js");
98
+ const { connectBrightsyTeam: connectBrightsyTeam2 } = await import("./connected-teams-BBNYTR3I.js");
99
99
  await connectBrightsyTeam2(accountIdOrSlug);
100
100
  return getBrightsySession();
101
101
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  import {
4
4
  appDataDir
5
- } from "./chunk-H5XL4KUS.js";
5
+ } from "./chunk-WOU343SI.js";
6
6
 
7
7
  // src/agents/cursor-store.ts
8
8
  import { join } from "path";
@@ -275,6 +275,8 @@ function parseSettingsFile(path, source) {
275
275
  if (Array.isArray(copySection?.paths)) {
276
276
  filesToCopy.push(...copySection.paths.map(String));
277
277
  }
278
+ const worktree = data.worktree;
279
+ const sharedDirectories = Array.isArray(worktree?.shared_directories) ? worktree.shared_directories.map(String).map((item) => item.trim()).filter(Boolean) : [];
278
280
  const fileIncludeGlobs = [];
279
281
  if (Array.isArray(data.file_include_globs)) {
280
282
  fileIncludeGlobs.push(...data.file_include_globs.map(String));
@@ -326,6 +328,7 @@ function parseSettingsFile(path, source) {
326
328
  fileIncludeGlobs: fileIncludeGlobs.length ? fileIncludeGlobs : void 0,
327
329
  runScripts,
328
330
  worktreesRoot: worktreesRoot2,
331
+ sharedDirectories: sharedDirectories.length ? sharedDirectories : void 0,
329
332
  editor,
330
333
  prompts: hasPrompts ? prompts : void 0
331
334
  };
@@ -357,6 +360,7 @@ function mergeSettings(base, overlay) {
357
360
  fileIncludeGlobs: overlay.fileIncludeGlobs ?? base.fileIncludeGlobs,
358
361
  runScripts: mergeRunScripts(base.runScripts, overlay.runScripts),
359
362
  worktreesRoot: overlay.worktreesRoot ?? base.worktreesRoot,
363
+ sharedDirectories: overlay.sharedDirectories ?? base.sharedDirectories,
360
364
  editor: overlay.editor ?? base.editor,
361
365
  prompts: hasPrompts ? prompts : void 0
362
366
  };
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  loadAppSettings,
6
6
  saveAppSettings
7
- } from "./chunk-RSATPXU4.js";
7
+ } from "./chunk-A2YXQC65.js";
8
8
 
9
9
  // src/integrations/optional-services.ts
10
10
  var OPTIONAL_SERVICE_IDS = ["vercel", "supabase", "posthog", "sentry"];
@@ -273,7 +273,7 @@ async function connectedCliPresence(integrations) {
273
273
  const ids = connectedOptionalServices(integrations).filter((spec) => spec.cli).map((spec) => spec.id);
274
274
  if (ids.length === 0) return void 0;
275
275
  try {
276
- const { optionalCliPresence } = await import("./optional-cli-PZXDOVJJ.js");
276
+ const { optionalCliPresence } = await import("./optional-cli-QY6V5S5N.js");
277
277
  return await optionalCliPresence(ids);
278
278
  } catch {
279
279
  return void 0;
@@ -5,7 +5,7 @@ import {
5
5
  ensureGhPreferOrigin,
6
6
  resolveGithubRepoSlug,
7
7
  resolveRepoRoot
8
- } from "./chunk-5MVOZLN7.js";
8
+ } from "./chunk-DLGGLV2M.js";
9
9
  import {
10
10
  ATTACHMENTS_DIR,
11
11
  attachmentsGitignoreBody
@@ -22,7 +22,7 @@ import {
22
22
  resolveThreadDefaults,
23
23
  resolveViewerProfile,
24
24
  resolveViewerProfileForRepo
25
- } from "./chunk-BU6HH5VA.js";
25
+ } from "./chunk-PHMFAU35.js";
26
26
  import {
27
27
  allocateTeamName,
28
28
  createEmptyThread,
@@ -31,13 +31,13 @@ import {
31
31
  teamSlugFromName,
32
32
  updateThread,
33
33
  writeThread
34
- } from "./chunk-FA3V56KF.js";
34
+ } from "./chunk-3UDRWMIM.js";
35
35
  import {
36
36
  appDataDir,
37
37
  globalAgentCwd,
38
38
  loadRepoSettings,
39
39
  sideboardReposDir
40
- } from "./chunk-H5XL4KUS.js";
40
+ } from "./chunk-WOU343SI.js";
41
41
 
42
42
  // src/store/workspaces.ts
43
43
  import { existsSync as existsSync2, mkdirSync as mkdirSync3, readFileSync as readFileSync3, statSync as statSync2, writeFileSync as writeFileSync3 } from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  appDataDir
3
- } from "./chunk-EHT2DRT4.js";
3
+ } from "./chunk-H4UEFJRI.js";
4
4
 
5
5
  // src/agent-rpc/protocol.ts
6
6
  var AGENT_RPC_PROTOCOL_VERSION = 1;
@@ -14,7 +14,7 @@ import {
14
14
  WAIT_FOR_TURN_DESCRIPTION,
15
15
  WAIT_FOR_TURN_SCHEMA,
16
16
  createPilotRpcExecutors
17
- } from "./chunk-QDA6NXRA.js";
17
+ } from "./chunk-YDUHLWI5.js";
18
18
 
19
19
  // src/agents/tool-result-clip.ts
20
20
  import { mkdirSync, writeFileSync } from "fs";
@@ -15,6 +15,7 @@ import {
15
15
  killListenersOnPorts,
16
16
  killStaleWorktreeListeners,
17
17
  killableListenerPids,
18
+ linkSharedDirectories,
18
19
  listRunScripts,
19
20
  listenerCwd,
20
21
  loadWorktreeRunPorts,
@@ -31,24 +32,24 @@ import {
31
32
  tryReservePort,
32
33
  tryReservePorts,
33
34
  worktreeRunPortsPath
34
- } from "./chunk-RAGDMEIB.js";
35
+ } from "./chunk-OVNIP265.js";
35
36
  import "./chunk-F36QRDM4.js";
36
- import "./chunk-BRFDPV7Z.js";
37
- import "./chunk-GEFH4QFX.js";
38
- import "./chunk-P2GHFJOB.js";
37
+ import "./chunk-5QX2NYXL.js";
38
+ import "./chunk-BIPXOHZI.js";
39
+ import "./chunk-HG25AYBV.js";
39
40
  import "./chunk-2P4XKWV2.js";
40
41
  import "./chunk-F2PVRF3B.js";
41
42
  import "./chunk-HO5R3ZRH.js";
42
43
  import "./chunk-6K64FJDD.js";
43
- import "./chunk-UWQ6UCIB.js";
44
+ import "./chunk-LG6RJBIY.js";
44
45
  import "./chunk-QVN2WOKJ.js";
45
- import "./chunk-RSATPXU4.js";
46
+ import "./chunk-A2YXQC65.js";
46
47
  import "./chunk-77WWLBCI.js";
47
48
  import {
48
49
  stripNestedElectronEnv
49
50
  } from "./chunk-4TR3HZFT.js";
50
51
  import "./chunk-WDRMZKVB.js";
51
- import "./chunk-3HO2OY5T.js";
52
+ import "./chunk-KI45T4DI.js";
52
53
  import "./chunk-JT7R45JB.js";
53
54
  import {
54
55
  hasConductorHook,
@@ -59,7 +60,7 @@ import {
59
60
  loadWorkspaceSettings,
60
61
  settingsSourceLabel,
61
62
  workspaceSettingsSourceLabel
62
- } from "./chunk-EHT2DRT4.js";
63
+ } from "./chunk-H4UEFJRI.js";
63
64
  export {
64
65
  PORT_RANGE_SIZE,
65
66
  RUN_PORTS_REL,
@@ -80,6 +81,7 @@ export {
80
81
  killListenersOnPorts,
81
82
  killStaleWorktreeListeners,
82
83
  killableListenerPids,
84
+ linkSharedDirectories,
83
85
  listRunScripts,
84
86
  listenerCwd,
85
87
  loadConductorSettings,
@@ -17,6 +17,7 @@ import {
17
17
  killListenersOnPorts,
18
18
  killStaleWorktreeListeners,
19
19
  killableListenerPids,
20
+ linkSharedDirectories,
20
21
  listRunScripts,
21
22
  listenerCwd,
22
23
  loadWorktreeRunPorts,
@@ -33,22 +34,22 @@ import {
33
34
  tryReservePort,
34
35
  tryReservePorts,
35
36
  worktreeRunPortsPath
36
- } from "./chunk-DW6NNYUJ.js";
37
+ } from "./chunk-5SFA27CF.js";
37
38
  import "./chunk-5XQ43YZU.js";
38
- import "./chunk-YCDHLK2Z.js";
39
- import "./chunk-5MVOZLN7.js";
39
+ import "./chunk-X3FSWWW2.js";
40
+ import "./chunk-DLGGLV2M.js";
40
41
  import "./chunk-N2WW62LF.js";
41
42
  import "./chunk-DD67JWTN.js";
42
43
  import "./chunk-2UG25RMK.js";
43
- import "./chunk-BU6HH5VA.js";
44
+ import "./chunk-PHMFAU35.js";
44
45
  import "./chunk-NSTQ6QKD.js";
45
46
  import {
46
47
  stripNestedElectronEnv
47
48
  } from "./chunk-WWUABK6B.js";
48
49
  import "./chunk-FJZWM2ON.js";
49
- import "./chunk-UN5Q7POQ.js";
50
- import "./chunk-FA3V56KF.js";
51
- import "./chunk-4RZRHTSZ.js";
50
+ import "./chunk-J2LNLI4S.js";
51
+ import "./chunk-3UDRWMIM.js";
52
+ import "./chunk-WMZIANPV.js";
52
53
  import "./chunk-KGZBYWZ3.js";
53
54
  import {
54
55
  hasConductorHook,
@@ -59,7 +60,7 @@ import {
59
60
  loadWorkspaceSettings,
60
61
  settingsSourceLabel,
61
62
  workspaceSettingsSourceLabel
62
- } from "./chunk-H5XL4KUS.js";
63
+ } from "./chunk-WOU343SI.js";
63
64
  export {
64
65
  PORT_RANGE_SIZE,
65
66
  RUN_PORTS_REL,
@@ -80,6 +81,7 @@ export {
80
81
  killListenersOnPorts,
81
82
  killStaleWorktreeListeners,
82
83
  killableListenerPids,
84
+ linkSharedDirectories,
83
85
  listRunScripts,
84
86
  listenerCwd,
85
87
  loadConductorSettings,
@@ -7,12 +7,12 @@ import {
7
7
  ensureConnectedBrightsyTeamTokens,
8
8
  getConnectedBrightsyTeamsRaw,
9
9
  listConnectedBrightsyTeams
10
- } from "./chunk-VGNLMGBK.js";
10
+ } from "./chunk-VEVFHO6K.js";
11
11
  import "./chunk-33KDPEK4.js";
12
12
  import "./chunk-JAT3JFOS.js";
13
13
  import "./chunk-QVN2WOKJ.js";
14
14
  import "./chunk-4TR3HZFT.js";
15
- import "./chunk-EHT2DRT4.js";
15
+ import "./chunk-H4UEFJRI.js";
16
16
  export {
17
17
  applyConnectedTeamToCli,
18
18
  brightsyMcpServerName,
@@ -9,12 +9,12 @@ import {
9
9
  ensureConnectedBrightsyTeamTokens,
10
10
  getConnectedBrightsyTeamsRaw,
11
11
  listConnectedBrightsyTeams
12
- } from "./chunk-7IAMHN2N.js";
12
+ } from "./chunk-42JGPPVS.js";
13
13
  import "./chunk-PXMLMBMI.js";
14
14
  import "./chunk-2GPQZZLY.js";
15
15
  import "./chunk-2UG25RMK.js";
16
16
  import "./chunk-WWUABK6B.js";
17
- import "./chunk-H5XL4KUS.js";
17
+ import "./chunk-WOU343SI.js";
18
18
  export {
19
19
  applyConnectedTeamToCli,
20
20
  brightsyMcpServerName,
@@ -9,20 +9,20 @@ import {
9
9
  enrichWorkspacesWithGithub,
10
10
  ensureGlobalCoordinatorCwd,
11
11
  formatWorkspaceInventory
12
- } from "./chunk-YCDHLK2Z.js";
13
- import "./chunk-5MVOZLN7.js";
12
+ } from "./chunk-X3FSWWW2.js";
13
+ import "./chunk-DLGGLV2M.js";
14
14
  import "./chunk-N2WW62LF.js";
15
15
  import "./chunk-DD67JWTN.js";
16
16
  import "./chunk-2UG25RMK.js";
17
- import "./chunk-BU6HH5VA.js";
17
+ import "./chunk-PHMFAU35.js";
18
18
  import "./chunk-NSTQ6QKD.js";
19
19
  import "./chunk-WWUABK6B.js";
20
20
  import "./chunk-FJZWM2ON.js";
21
- import "./chunk-UN5Q7POQ.js";
22
- import "./chunk-FA3V56KF.js";
23
- import "./chunk-4RZRHTSZ.js";
21
+ import "./chunk-J2LNLI4S.js";
22
+ import "./chunk-3UDRWMIM.js";
23
+ import "./chunk-WMZIANPV.js";
24
24
  import "./chunk-KGZBYWZ3.js";
25
- import "./chunk-H5XL4KUS.js";
25
+ import "./chunk-WOU343SI.js";
26
26
  export {
27
27
  COORDINATOR_TOOL_PLAYBOOK,
28
28
  SLACK_REPLY_FORMATTING,
@@ -7,21 +7,21 @@ import {
7
7
  enrichWorkspacesWithGithub,
8
8
  ensureGlobalCoordinatorCwd,
9
9
  formatWorkspaceInventory
10
- } from "./chunk-BRFDPV7Z.js";
11
- import "./chunk-GEFH4QFX.js";
12
- import "./chunk-P2GHFJOB.js";
10
+ } from "./chunk-5QX2NYXL.js";
11
+ import "./chunk-BIPXOHZI.js";
12
+ import "./chunk-HG25AYBV.js";
13
13
  import "./chunk-2P4XKWV2.js";
14
14
  import "./chunk-F2PVRF3B.js";
15
15
  import "./chunk-6K64FJDD.js";
16
- import "./chunk-UWQ6UCIB.js";
16
+ import "./chunk-LG6RJBIY.js";
17
17
  import "./chunk-QVN2WOKJ.js";
18
- import "./chunk-RSATPXU4.js";
18
+ import "./chunk-A2YXQC65.js";
19
19
  import "./chunk-77WWLBCI.js";
20
20
  import "./chunk-4TR3HZFT.js";
21
21
  import "./chunk-WDRMZKVB.js";
22
- import "./chunk-3HO2OY5T.js";
22
+ import "./chunk-KI45T4DI.js";
23
23
  import "./chunk-JT7R45JB.js";
24
- import "./chunk-EHT2DRT4.js";
24
+ import "./chunk-H4UEFJRI.js";
25
25
  export {
26
26
  COORDINATOR_TOOL_PLAYBOOK,
27
27
  SLACK_REPLY_FORMATTING,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  cursorSdkRunsNdjsonSearchPaths
3
- } from "./chunk-UWQ6UCIB.js";
4
- import "./chunk-EHT2DRT4.js";
3
+ } from "./chunk-LG6RJBIY.js";
4
+ import "./chunk-H4UEFJRI.js";
5
5
 
6
6
  // src/agents/cursor-recover.ts
7
7
  import { existsSync, readFileSync } from "fs";
@@ -2,8 +2,8 @@
2
2
 
3
3
  import {
4
4
  cursorSdkRunsNdjsonSearchPaths
5
- } from "./chunk-4RZRHTSZ.js";
6
- import "./chunk-H5XL4KUS.js";
5
+ } from "./chunk-WMZIANPV.js";
6
+ import "./chunk-WOU343SI.js";
7
7
 
8
8
  // src/agents/cursor-recover.ts
9
9
  import { existsSync, readFileSync } from "fs";