@sideboard-ai/core 0.1.81 → 0.1.84

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 (35) hide show
  1. package/dist/agents/cursor-runner.cjs +106 -53
  2. package/dist/agents/cursor-runner.js +96 -55
  3. package/dist/{agents-UQ7D6U6L.js → agents-JFXM66QA.js} +7 -6
  4. package/dist/{agents-EBKJ55PN.js → agents-OPTHS4IX.js} +5 -5
  5. package/dist/{app-settings-6IOQYGBK.js → app-settings-K6RFCRF6.js} +2 -1
  6. package/dist/{app-settings-NILNWNNQ.js → app-settings-PEXK5VEX.js} +1 -1
  7. package/dist/chunk-5KLC2MWZ.js +40 -0
  8. package/dist/{chunk-XKNBSYA7.js → chunk-AY53MPDE.js} +39 -1
  9. package/dist/{chunk-4AVU4QXO.js → chunk-BBQ6HXKS.js} +67 -17
  10. package/dist/{chunk-SEOICVGB.js → chunk-CBJSPTBG.js} +30 -6
  11. package/dist/{chunk-FUUVPN4A.js → chunk-CKBIQ54F.js} +78 -49
  12. package/dist/{chunk-IFPN6TER.js → chunk-I3FRXL7J.js} +4 -1
  13. package/dist/{chunk-CQBQWX73.js → chunk-JPHG2KCC.js} +8 -3
  14. package/dist/{chunk-4HJK57XU.js → chunk-NW7MEJHO.js} +8 -3
  15. package/dist/{chunk-K553XK7M.js → chunk-ODZ2ZOA4.js} +2 -2
  16. package/dist/{chunk-6F2TQFJE.js → chunk-OIEFHOP7.js} +3 -3
  17. package/dist/{chunk-XNECBC6T.js → chunk-R753UFSX.js} +39 -11
  18. package/dist/{chunk-TDJ43HUD.js → chunk-UN3LVQB2.js} +2 -2
  19. package/dist/{chunk-P5VDPGAN.js → chunk-WJ5TINR6.js} +3 -3
  20. package/dist/{chunk-YVVXWWCC.js → chunk-XW47PL6A.js} +81 -49
  21. package/dist/{coordinator-prompt-NYNEFKIV.js → coordinator-prompt-DOIOSLUN.js} +3 -3
  22. package/dist/{coordinator-prompt-JQF72JKX.js → coordinator-prompt-RCTIIZ6C.js} +4 -3
  23. package/dist/{global-workspace-NUMUJRWG.js → global-workspace-33BIG7KK.js} +4 -4
  24. package/dist/{global-workspace-DZM4ZFGU.js → global-workspace-73OAKD3C.js} +5 -4
  25. package/dist/index.cjs +235 -88
  26. package/dist/index.d.cts +36 -9
  27. package/dist/index.d.ts +36 -9
  28. package/dist/index.js +69 -45
  29. package/dist/mcp/run-stdio.cjs +233 -88
  30. package/dist/mcp/run-stdio.js +60 -43
  31. package/dist/{workspaces-QLRCOXAY.js → workspaces-SRITISKA.js} +6 -5
  32. package/dist/{workspaces-SUU2GO3A.js → workspaces-WDLY34MX.js} +5 -5
  33. package/dist/{worktree-5VLLFI5W.js → worktree-SGZVAWOQ.js} +3 -2
  34. package/dist/{worktree-UNSOCYZU.js → worktree-TUAO74SI.js} +2 -2
  35. package/package.json +1 -1
@@ -17,14 +17,14 @@ import {
17
17
  resolveQuotaFallbackAgent,
18
18
  sideboardMcpProfile,
19
19
  summarizeTurnStderr
20
- } from "../chunk-4AVU4QXO.js";
20
+ } from "../chunk-BBQ6HXKS.js";
21
21
  import "../chunk-VROPG6QF.js";
22
22
  import {
23
23
  addWorkspace,
24
24
  ensureWorkspace,
25
25
  removeWorkspace,
26
26
  syncWorkspacesFromThreads
27
- } from "../chunk-TDJ43HUD.js";
27
+ } from "../chunk-UN3LVQB2.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-P5VDPGAN.js";
45
+ } from "../chunk-WJ5TINR6.js";
46
46
  import {
47
47
  SLACK_REPLY_FORMATTING,
48
48
  coordinatorSystemPrompt,
49
49
  coordinatorTurnReminder,
50
50
  enrichWorkspacesWithGithub,
51
51
  ensureGlobalCoordinatorCwd
52
- } from "../chunk-4HJK57XU.js";
52
+ } from "../chunk-NW7MEJHO.js";
53
53
  import {
54
54
  addPrStackLayer,
55
55
  allocateTeamName,
@@ -88,7 +88,7 @@ import {
88
88
  takenSlugsFromThread,
89
89
  threadDisplayLabel,
90
90
  worktreeNameFromPath
91
- } from "../chunk-FUUVPN4A.js";
91
+ } from "../chunk-CKBIQ54F.js";
92
92
  import {
93
93
  ATTACHMENTS_DIR,
94
94
  LEGACY_ATTACHMENTS_DIR,
@@ -116,6 +116,7 @@ import {
116
116
  import {
117
117
  childEnvWithAppSettings,
118
118
  disconnectLinearConnection,
119
+ dropNestedElectronEnvFromProcess,
119
120
  isLinearConnected,
120
121
  isSecureFileEncrypted,
121
122
  loadAppSettings,
@@ -126,9 +127,10 @@ import {
126
127
  resolveNewThreadOptions,
127
128
  resolveVaultKey,
128
129
  saveLinearOAuth,
130
+ stripNestedElectronEnv,
129
131
  updateAdvancedSettings,
130
132
  writeSecureJson
131
- } from "../chunk-XKNBSYA7.js";
133
+ } from "../chunk-AY53MPDE.js";
132
134
  import {
133
135
  writePrivateFile
134
136
  } from "../chunk-NSTQ6QKD.js";
@@ -891,9 +893,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
891
893
  `Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
892
894
  );
893
895
  }
894
- const { isGlobalThread: isGlobalThread2 } = await import("../global-workspace-NUMUJRWG.js");
896
+ const { isGlobalThread: isGlobalThread2 } = await import("../global-workspace-33BIG7KK.js");
895
897
  if (isGlobalThread2(thread)) {
896
- const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("../coordinator-prompt-NYNEFKIV.js");
898
+ const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("../coordinator-prompt-DOIOSLUN.js");
897
899
  ensureGlobalCoordinatorCwd2(
898
900
  isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
899
901
  );
@@ -1092,7 +1094,8 @@ function agentGitPrompt(action, opts) {
1092
1094
  return "Commit, push, and open a PR in the browser.";
1093
1095
  case "resolve-conflicts": {
1094
1096
  const base = opts?.prBase?.trim().replace(/^refs\/heads\//, "");
1095
- return base ? `Merge origin/${base} into this branch. Then push.` : "Fix merge conflicts.";
1097
+ const named = base ? ` (${base})` : "";
1098
+ return `Merge the remote branch${named} into your branch and resolve conflicts. Then, commit and push your changes.`;
1096
1099
  }
1097
1100
  case "merge":
1098
1101
  return "Merge PR.";
@@ -1208,16 +1211,6 @@ async function captureLoginEnv() {
1208
1211
  cachedLoginEnv = { ...process.env };
1209
1212
  return { ...cachedLoginEnv };
1210
1213
  }
1211
- var NESTED_ELECTRON_ENV_PREFIXES = ["ELECTRON_", "CHROME_"];
1212
- function stripNestedElectronEnv(env) {
1213
- const out = { ...env };
1214
- for (const key of Object.keys(out)) {
1215
- if (NESTED_ELECTRON_ENV_PREFIXES.some((prefix) => key.startsWith(prefix))) {
1216
- delete out[key];
1217
- }
1218
- }
1219
- return out;
1220
- }
1221
1214
  function buildWorkspaceScriptEnv(opts, baseEnv) {
1222
1215
  const env = stripNestedElectronEnv({
1223
1216
  ...baseEnv ?? process.env
@@ -1825,7 +1818,7 @@ async function createThread(input, _onSetupLine) {
1825
1818
  return readThread(thread.id) ?? thread;
1826
1819
  }
1827
1820
  async function listLinearIssues(agent, repoPath) {
1828
- const { getAdapter: getAdapter2 } = await import("../agents-EBKJ55PN.js");
1821
+ const { getAdapter: getAdapter2 } = await import("../agents-OPTHS4IX.js");
1829
1822
  await requireAgent(agent, { requireLinear: true });
1830
1823
  const adapter = getAdapter2(agent);
1831
1824
  if (!adapter.listLinearIssues) {
@@ -2339,6 +2332,10 @@ File: src/client/frontends/desktop/core/UserData.ts
2339
2332
 
2340
2333
  **Approve** \u2014 Diff is scoped, behavior looks correct, and there are no blocking issues. Safe to merge.
2341
2334
  </example>
2335
+
2336
+ ## Growing the rules
2337
+
2338
+ If a blocking issue is a missing or ambiguous repo rule that will recur, say so and propose one sentence for \`.sideboard/review.md\` or a \`.claude/skills/<name>/SKILL.md\`. Do not only patch this diff when the same miss will happen again. New skills go under \`.claude/skills\` (Claude Code / attach) \u2014 not \`.sideboard/skills\`.
2342
2339
  `;
2343
2340
 
2344
2341
  // src/review/request-review.ts
@@ -2689,7 +2686,7 @@ async function adoptThread(input) {
2689
2686
  messages: input.messages ?? []
2690
2687
  });
2691
2688
  writeThread(thread);
2692
- const { ensureWorkspace: ensureWorkspace2 } = await import("../workspaces-SUU2GO3A.js");
2689
+ const { ensureWorkspace: ensureWorkspace2 } = await import("../workspaces-WDLY34MX.js");
2693
2690
  await ensureWorkspace2(repoPath);
2694
2691
  return thread;
2695
2692
  }
@@ -4492,7 +4489,7 @@ function formatWorktreeDirective(thread, opts) {
4492
4489
  '- "Fix CI: <name>." \u2192 investigate that failing check, fix it, commit, and push.'
4493
4490
  );
4494
4491
  lines.push(
4495
- '- "Update the branch." / "Fix merge conflicts." / "Merge origin/<base> into this branch. Then push." \u2192 sync with the PR base (merge or rebase), resolve conflicts carefully, commit, and push until the PR is mergeable.'
4492
+ '- "Merge the remote branch (<base>) into your branch and resolve conflicts. Then, commit and push your changes." \u2192 fetch the PR base, merge it into this branch, resolve conflicts carefully, commit, and push until the PR is mergeable.'
4496
4493
  );
4497
4494
  lines.push(
4498
4495
  '- "Address review comments." \u2192 read PR review feedback, make the requested changes, commit, and push.'
@@ -4500,11 +4497,22 @@ function formatWorktreeDirective(thread, opts) {
4500
4497
  lines.push(
4501
4498
  '- "Merge PR." \u2192 merge this thread\'s open pull request on GitHub (this phrase is the explicit ask). If `gh stack view` shows a stack, use `gh stack merge`; otherwise `gh pr merge` (respect repo defaults / squash vs merge). Do not force-push main/master or merge locally into the main checkout.'
4502
4499
  );
4500
+ lines.push("");
4501
+ lines.push(formatProcessGuideDirective());
4503
4502
  return lines.join("\n");
4504
4503
  }
4505
4504
  function formatWorktreeReminder() {
4506
4505
  return "Sideboard worktree: stay in this cwd for all file and git work. Push and open PRs against origin, never upstream. Do not edit the main repo checkout.";
4507
4506
  }
4507
+ function formatProcessGuideDirective() {
4508
+ return [
4509
+ "Process guides (recurring work only):",
4510
+ "- If `.claude/skills/graph-engineering/SKILL.md` exists, follow it (`/graph-engineering`) for migrations, ports, batch fixes, and other fan-out. Judge first; state on disk; grow the rulebook; do not patch around it.",
4511
+ "- If this same shape of work will happen again, write `.claude/skills/<kebab-name>/SKILL.md` in this worktree (Claude Code project skill). Sideboard `/name`, Claude Code, and `attach` all load that path. Do not leave the method only in chat.",
4512
+ "- Do not write new skills under `.sideboard/skills` \u2014 native agents do not scan it. Point Codex/OpenCode at the file from `AGENTS.md`. Optional: symlink `.cursor/skills/<name>` to the Claude skill.",
4513
+ "- Skip a guide for a one-off. If a matching skill exists, follow it. Same miss twice \u2192 edit the skill (or `.sideboard/review.md`), do not patch around it."
4514
+ ].join("\n");
4515
+ }
4508
4516
  function formatArtifactDirective() {
4509
4517
  return [
4510
4518
  "Sideboard side column (desktop UI):",
@@ -4522,9 +4530,22 @@ function formatArtifactDirective() {
4522
4530
  "Files / media browser (CMS file manager column):",
4523
4531
  "4) Call Sideboard MCP `present_files` with optional title, path, and datasource (brightsy|memory).",
4524
4532
  " Opens the Files column for browse/upload/pick. Do NOT say a file manager UI is missing.",
4525
- "Never say artifacts, CMS UI, or the Files column are unavailable. Prefer present_schema for list/edit/publish; present_files for storage UI; html fences for standalone pages."
4533
+ "Multiple-choice questions (any mode \u2014 not only Plan):",
4534
+ "5) Call Sideboard MCP `ask_user` when the user should pick from predefined options (approach forks, requirements, which API). First write a short chat message that explains the decision and what each option means (tradeoffs, when to pick it). Include a description on every option. After calling, stop and wait for their next message with answers. Do not ask multiple-choice questions as plain chat bullets \u2014 use ask_user so Sideboard shows the composer picker.",
4535
+ "Never say artifacts, CMS UI, or the Files column are unavailable. Prefer present_schema for list/edit/publish; present_files for storage UI; html fences for standalone pages; ask_user for predefined-option questions."
4526
4536
  ].join("\n");
4527
4537
  }
4538
+ function formatUiReminder() {
4539
+ return [
4540
+ "Sideboard side column (important):",
4541
+ "There is no claude.ai Artifact tool here \u2014 that is normal.",
4542
+ "HTML/SVG/markdown: ```html fence or MCP present_artifact.",
4543
+ "CMS forms/tables: MCP present_schema (Brightsy resource_id or inline schema+schemaUi).",
4544
+ "Files column: MCP present_files (brightsy account storage or memory).",
4545
+ "Do not say artifacts/CMS UI are unavailable.",
4546
+ "Multiple-choice questions: MCP ask_user (composer picker, any mode). Explain options in chat first, then wait for answers."
4547
+ ].join(" ");
4548
+ }
4528
4549
 
4529
4550
  // src/threads/sync-branch.ts
4530
4551
  async function syncThreadBranchFromGit(threadId) {
@@ -4657,7 +4678,7 @@ var Orchestrator = class {
4657
4678
  orphans: orphans.map((o) => ({ path: o.path, repoPath: o.repoPath }))
4658
4679
  });
4659
4680
  }
4660
- const { autoCleanupOrphansEnabled } = await import("../app-settings-NILNWNNQ.js");
4681
+ const { autoCleanupOrphansEnabled } = await import("../app-settings-PEXK5VEX.js");
4661
4682
  if (autoCleanupOrphansEnabled() && shouldRunWorktreeCleanup() && orphans.length > 0) {
4662
4683
  await cleanupOrphanWorktrees({ repoPaths });
4663
4684
  }
@@ -4814,7 +4835,7 @@ var Orchestrator = class {
4814
4835
  }
4815
4836
  async finishCreateThread(threadId, prompt) {
4816
4837
  await this.runSetupAfterCreate(threadId);
4817
- const { autoRunAfterSetupEnabled } = await import("../app-settings-NILNWNNQ.js");
4838
+ const { autoRunAfterSetupEnabled } = await import("../app-settings-PEXK5VEX.js");
4818
4839
  if (autoRunAfterSetupEnabled()) {
4819
4840
  try {
4820
4841
  await this.startDev(threadId);
@@ -5056,14 +5077,7 @@ var Orchestrator = class {
5056
5077
  SLACK_REPLY_FORMATTING
5057
5078
  ].join("\n") : null
5058
5079
  ].filter(Boolean).join("\n") : null;
5059
- const artifactReminder = thread.agent !== "brightsy" ? [
5060
- "Sideboard side column (important):",
5061
- "There is no claude.ai Artifact tool here \u2014 that is normal.",
5062
- "HTML/SVG/markdown: ```html fence or MCP present_artifact.",
5063
- "CMS forms/tables: MCP present_schema (Brightsy resource_id or inline schema+schemaUi).",
5064
- "Files column: MCP present_files (brightsy account storage or memory).",
5065
- "Do not say artifacts/CMS UI are unavailable."
5066
- ].join(" ") : null;
5080
+ const artifactReminder = thread.agent !== "brightsy" ? formatUiReminder() : null;
5067
5081
  const worktreeReminder = thread.agent !== "brightsy" && !isOrchestratorThread(thread) ? formatWorktreeReminder() : null;
5068
5082
  const slackReplyContext = formatSlackRepliesForTurn(
5069
5083
  pendingSlackExternalReplies(thread.messages)
@@ -5092,7 +5106,7 @@ var Orchestrator = class {
5092
5106
  }
5093
5107
  const isBrightsy = fresh.agent === "brightsy";
5094
5108
  const isOrchestration = isOrchestratorThread(fresh);
5095
- const { autoRenameBranchEnabled, getGithubGitAuthMode } = await import("../app-settings-NILNWNNQ.js");
5109
+ const { autoRenameBranchEnabled, getGithubGitAuthMode } = await import("../app-settings-PEXK5VEX.js");
5096
5110
  const gitAuthMode = getGithubGitAuthMode();
5097
5111
  const worktreeDirective = isBrightsy || isOrchestration ? null : formatWorktreeDirective(fresh, {
5098
5112
  githubSlug: await resolveGithubRepoSlug(fresh.worktreePath).catch(
@@ -5202,7 +5216,7 @@ var Orchestrator = class {
5202
5216
  }
5203
5217
  let lastStderr = summarizeTurnStderr(stderrTail);
5204
5218
  let detail = lastStderr || (exitCode !== 0 ? fallbackTurnFailDetail(assistantText) : "");
5205
- if (exitCode !== 0 && !assistantText && parts.length === 0 && !this.stoppedTurns.has(threadId) && looksLikeInvalidAgentSession(detail) && this.requireThread(threadId).sessionId && this.requireThread(threadId).agent !== "cursor" && this.requireThread(threadId).agent !== "brightsy") {
5219
+ if (exitCode !== 0 && !assistantText && parts.length === 0 && !this.stoppedTurns.has(threadId) && looksLikeInvalidAgentSession(detail) && this.requireThread(threadId).sessionId && this.requireThread(threadId).agent !== "brightsy") {
5206
5220
  updateThread(threadId, { sessionId: null });
5207
5221
  pushTurnStderr(
5208
5222
  stderrTail,
@@ -5757,7 +5771,9 @@ var Orchestrator = class {
5757
5771
  reviewDecision: null,
5758
5772
  baseRefName: "",
5759
5773
  headRefName: "",
5760
- isInMergeQueue: false
5774
+ isInMergeQueue: false,
5775
+ mergeable: null,
5776
+ mergeStateStatus: null
5761
5777
  };
5762
5778
  await this.persistPrMetaAndMaybeArchive(thread, metaLike);
5763
5779
  return { url: metaLike.url, state };
@@ -5807,7 +5823,7 @@ var Orchestrator = class {
5807
5823
  updateThread(thread.id, { title: meta.title });
5808
5824
  }
5809
5825
  }
5810
- const { autoArchiveOnMergeEnabled } = await import("../app-settings-NILNWNNQ.js");
5826
+ const { autoArchiveOnMergeEnabled } = await import("../app-settings-PEXK5VEX.js");
5811
5827
  const latest = this.requireThread(thread.id);
5812
5828
  if (!shouldAutoArchiveOnPrMerge({
5813
5829
  previousPrState: prevState || null,
@@ -6095,7 +6111,7 @@ var Orchestrator = class {
6095
6111
  this.emit({ type: "status_changed", threadId: archived.id, status: "archived" });
6096
6112
  if (thread.repoPath && !isGlobalRepoPath(thread.repoPath)) {
6097
6113
  try {
6098
- const { ensureWorkspace: ensureWorkspace2 } = await import("../workspaces-SUU2GO3A.js");
6114
+ const { ensureWorkspace: ensureWorkspace2 } = await import("../workspaces-WDLY34MX.js");
6099
6115
  await ensureWorkspace2(thread.repoPath);
6100
6116
  } catch {
6101
6117
  }
@@ -6117,7 +6133,7 @@ var Orchestrator = class {
6117
6133
  await runArchiveScript(thread.repoPath, thread.worktreePath);
6118
6134
  } catch {
6119
6135
  }
6120
- const { deleteBranchOnPurgeEnabled } = await import("../app-settings-NILNWNNQ.js");
6136
+ const { deleteBranchOnPurgeEnabled } = await import("../app-settings-PEXK5VEX.js");
6121
6137
  const deleteBranch = opts?.deleteBranch ?? deleteBranchOnPurgeEnabled();
6122
6138
  await removeWorktree(thread.repoPath, thread.worktreePath, {
6123
6139
  deleteBranch: deleteBranch ? thread.branchName : void 0
@@ -6138,7 +6154,7 @@ var Orchestrator = class {
6138
6154
  return restored2;
6139
6155
  }
6140
6156
  if (!existsSync15(thread.worktreePath)) {
6141
- const { createThreadWorktree: createThreadWorktree2 } = await import("../worktree-UNSOCYZU.js");
6157
+ const { createThreadWorktree: createThreadWorktree2 } = await import("../worktree-TUAO74SI.js");
6142
6158
  const { execa: execa6 } = await import("execa");
6143
6159
  const slug = thread.worktreePath.split("/").pop();
6144
6160
  const dest = thread.worktreePath;
@@ -7309,7 +7325,7 @@ function withTimeout(promise, ms, label) {
7309
7325
  async function startMcpServer() {
7310
7326
  const orch = getOrchestrator();
7311
7327
  try {
7312
- const { maxConcurrentAgents } = await import("../app-settings-NILNWNNQ.js");
7328
+ const { maxConcurrentAgents } = await import("../app-settings-PEXK5VEX.js");
7313
7329
  orch.setMaxConcurrent(maxConcurrentAgents());
7314
7330
  } catch {
7315
7331
  }
@@ -7414,7 +7430,7 @@ async function startMcpServer() {
7414
7430
  );
7415
7431
  server.tool(
7416
7432
  "ask_user",
7417
- "Ask the user clarifying multiple-choice questions in Sideboard\u2019s composer (plan mode). Before calling, write a short chat message explaining the decision and what each option means. Include a description on every option. Use for approach forks and requirements \u2014 not for \u201Cis the plan ready?\u201D. After calling, stop and wait for their next message with answers.",
7433
+ "Ask the user clarifying multiple-choice questions in Sideboard\u2019s composer (any mode \u2014 not only Plan). Before calling, write a short chat message explaining the decision and what each option means. Include a description on every option. Use when the user should pick from predefined options (approach forks, requirements, which API) \u2014 not for \u201Cis the plan ready?\u201D. After calling, stop and wait for their next message with answers.",
7418
7434
  {
7419
7435
  questions: z3.array(
7420
7436
  z3.object({
@@ -7519,7 +7535,7 @@ async function startMcpServer() {
7519
7535
  registerLinearTools(server);
7520
7536
  if (sideboardMcpProfile() !== "worktree") {
7521
7537
  const { getCaffeinateHold, setCaffeinateHold } = await import("../caffeinate-hold-OHAUWOA6.js");
7522
- const { resolveNewThreadOptions: resolveNewThreadOptions2, resolveThreadDefaults } = await import("../app-settings-NILNWNNQ.js");
7538
+ const { resolveNewThreadOptions: resolveNewThreadOptions2, resolveThreadDefaults } = await import("../app-settings-PEXK5VEX.js");
7523
7539
  const accountDefaults = resolveThreadDefaults();
7524
7540
  const accountDefaultsHint = `Account defaults: agent=${accountDefaults.agent}, model=${accountDefaults.model?.trim() || "Auto"}, effort=${accountDefaults.effort}`;
7525
7541
  server.tool(
@@ -8328,6 +8344,7 @@ async function startMcpServer() {
8328
8344
  }
8329
8345
 
8330
8346
  // src/mcp/run-stdio.ts
8347
+ dropNestedElectronEnvFromProcess();
8331
8348
  startMcpServer().catch((err) => {
8332
8349
  console.error(err);
8333
8350
  process.exitCode = 1;
@@ -4,12 +4,13 @@ import {
4
4
  listWorkspaces,
5
5
  removeWorkspace,
6
6
  syncWorkspacesFromThreads
7
- } from "./chunk-K553XK7M.js";
8
- import "./chunk-6F2TQFJE.js";
9
- import "./chunk-CQBQWX73.js";
10
- import "./chunk-YVVXWWCC.js";
7
+ } from "./chunk-ODZ2ZOA4.js";
8
+ import "./chunk-OIEFHOP7.js";
9
+ import "./chunk-JPHG2KCC.js";
10
+ import "./chunk-XW47PL6A.js";
11
11
  import "./chunk-FKOIHGKV.js";
12
- import "./chunk-IFPN6TER.js";
12
+ import "./chunk-I3FRXL7J.js";
13
+ import "./chunk-5KLC2MWZ.js";
13
14
  import "./chunk-JT7R45JB.js";
14
15
  import "./chunk-FWJYLBO6.js";
15
16
  import "./chunk-77WWLBCI.js";
@@ -6,14 +6,14 @@ import {
6
6
  listWorkspaces,
7
7
  removeWorkspace,
8
8
  syncWorkspacesFromThreads
9
- } from "./chunk-TDJ43HUD.js";
10
- import "./chunk-P5VDPGAN.js";
11
- import "./chunk-4HJK57XU.js";
12
- import "./chunk-FUUVPN4A.js";
9
+ } from "./chunk-UN3LVQB2.js";
10
+ import "./chunk-WJ5TINR6.js";
11
+ import "./chunk-NW7MEJHO.js";
12
+ import "./chunk-CKBIQ54F.js";
13
13
  import "./chunk-B3SJXYIJ.js";
14
14
  import "./chunk-7FD7COKE.js";
15
15
  import "./chunk-AE5VBOFE.js";
16
- import "./chunk-XKNBSYA7.js";
16
+ import "./chunk-AY53MPDE.js";
17
17
  import "./chunk-NSTQ6QKD.js";
18
18
  import "./chunk-KGZBYWZ3.js";
19
19
  import "./chunk-7MV3RXSC.js";
@@ -44,9 +44,10 @@ import {
44
44
  worktreeDisplayLabel,
45
45
  worktreeDisplayLabelForGroup,
46
46
  worktreeNameFromPath
47
- } from "./chunk-YVVXWWCC.js";
47
+ } from "./chunk-XW47PL6A.js";
48
48
  import "./chunk-FKOIHGKV.js";
49
- import "./chunk-IFPN6TER.js";
49
+ import "./chunk-I3FRXL7J.js";
50
+ import "./chunk-5KLC2MWZ.js";
50
51
  import "./chunk-JT7R45JB.js";
51
52
  import "./chunk-FWJYLBO6.js";
52
53
  import "./chunk-77WWLBCI.js";
@@ -46,11 +46,11 @@ import {
46
46
  worktreeDisplayLabel,
47
47
  worktreeDisplayLabelForGroup,
48
48
  worktreeNameFromPath
49
- } from "./chunk-FUUVPN4A.js";
49
+ } from "./chunk-CKBIQ54F.js";
50
50
  import "./chunk-B3SJXYIJ.js";
51
51
  import "./chunk-7FD7COKE.js";
52
52
  import "./chunk-AE5VBOFE.js";
53
- import "./chunk-XKNBSYA7.js";
53
+ import "./chunk-AY53MPDE.js";
54
54
  import "./chunk-NSTQ6QKD.js";
55
55
  import "./chunk-KGZBYWZ3.js";
56
56
  import "./chunk-7MV3RXSC.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sideboard-ai/core",
3
- "version": "0.1.81",
3
+ "version": "0.1.84",
4
4
  "description": "Sideboard core — orchestration, agents, git worktrees, MCP server",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",