@sideboard-ai/core 0.1.288 → 0.1.290

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-GZLTMGSH.js → agents-4BBCKITL.js} +4 -4
  2. package/dist/{agents-UQMHFZSM.js → agents-XAKSP653.js} +4 -4
  3. package/dist/{chunk-HNB2HTCV.js → chunk-2IXKTAIT.js} +1 -1
  4. package/dist/{chunk-442O6OXM.js → chunk-4VXWLY3L.js} +13 -12
  5. package/dist/{chunk-3W5SL5EW.js → chunk-5HPMKLJ7.js} +1 -1
  6. package/dist/{chunk-4NM72HJZ.js → chunk-G74TSBJ3.js} +4 -4
  7. package/dist/{chunk-WQSIUZEB.js → chunk-GBAACE3C.js} +4 -4
  8. package/dist/{chunk-2N77CLRQ.js → chunk-LUQ7MIVD.js} +3 -3
  9. package/dist/{chunk-IA4MPG7F.js → chunk-O4324MXE.js} +2 -2
  10. package/dist/{chunk-WW5XGEMY.js → chunk-QOUTSISS.js} +14 -13
  11. package/dist/{chunk-DBOFDEQ7.js → chunk-V3BSO2O6.js} +2 -2
  12. package/dist/{chunk-6NVQNTJO.js → chunk-VNCPRMIK.js} +3 -3
  13. package/dist/{conductor-MCU63Z5U.js → conductor-5MNGC25D.js} +4 -4
  14. package/dist/{conductor-ZLYZVIAV.js → conductor-UFJXJPTF.js} +4 -4
  15. package/dist/{coordinator-prompt-KHCXXDRO.js → coordinator-prompt-5Q66Y5KW.js} +3 -3
  16. package/dist/{coordinator-prompt-UV6THLMD.js → coordinator-prompt-BYPEW6DE.js} +3 -3
  17. package/dist/{global-workspace-GDHZSFP6.js → global-workspace-BTH2YGDZ.js} +3 -3
  18. package/dist/{global-workspace-AXTSYVAE.js → global-workspace-YKOYXSB2.js} +3 -3
  19. package/dist/index.cjs +695 -145
  20. package/dist/index.d.cts +18 -2
  21. package/dist/index.d.ts +18 -2
  22. package/dist/index.js +641 -102
  23. package/dist/mcp/run-stdio.cjs +2 -1
  24. package/dist/mcp/run-stdio.js +6 -6
  25. package/dist/{orchestrator-5ZBHR6BJ.js → orchestrator-EQSK2RMI.js} +6 -6
  26. package/dist/{orchestrator-SDH6W6ZL.js → orchestrator-GSOW3RPA.js} +6 -6
  27. package/dist/{thread-store-7XBOUQ5K.js → thread-store-DPKESDFR.js} +1 -1
  28. package/dist/{thread-store-ZQZDREVH.js → thread-store-X6S2GIR5.js} +1 -1
  29. package/dist/{workspaces-Q2R2XGO3.js → workspaces-ELO2YVTU.js} +3 -3
  30. package/dist/{workspaces-L2UR4KC2.js → workspaces-RFD6I4FM.js} +3 -3
  31. package/dist/{worktree-2GOK4VYT.js → worktree-ADVQ6X6C.js} +2 -2
  32. package/dist/{worktree-YEUTJ7MZ.js → worktree-TN7DZDJZ.js} +2 -2
  33. package/package.json +1 -1
  34. /package/dist/{chunk-N5UGX3JL.js → chunk-QB5MDOHL.js} +0 -0
  35. /package/dist/{chunk-JPH7PYSK.js → chunk-YRXV3E7J.js} +0 -0
@@ -37,7 +37,7 @@ import {
37
37
  planModeTurnInstruction,
38
38
  resolveCursorModelId,
39
39
  resolveQuotaFallbackAgent
40
- } from "./chunk-6NVQNTJO.js";
40
+ } from "./chunk-VNCPRMIK.js";
41
41
  import "./chunk-VGNLMGBK.js";
42
42
  import "./chunk-YSLCWCMJ.js";
43
43
  import {
@@ -52,9 +52,9 @@ import {
52
52
  resolveLoginCommand,
53
53
  whichOnPath
54
54
  } from "./chunk-NXXQFLNQ.js";
55
- import "./chunk-DBOFDEQ7.js";
56
- import "./chunk-HNB2HTCV.js";
57
- import "./chunk-N5UGX3JL.js";
55
+ import "./chunk-V3BSO2O6.js";
56
+ import "./chunk-2IXKTAIT.js";
57
+ import "./chunk-QB5MDOHL.js";
58
58
  import "./chunk-2P4XKWV2.js";
59
59
  import "./chunk-33KDPEK4.js";
60
60
  import "./chunk-JAT3JFOS.js";
@@ -46,7 +46,7 @@ import {
46
46
  resolveCursorSdkRoot,
47
47
  resolveQuotaFallbackAgent,
48
48
  turnCostUsdFromCursorUsage
49
- } from "./chunk-2N77CLRQ.js";
49
+ } from "./chunk-LUQ7MIVD.js";
50
50
  import {
51
51
  getAgentSetupInfo,
52
52
  installAgent,
@@ -63,8 +63,8 @@ import "./chunk-7IAMHN2N.js";
63
63
  import "./chunk-PXMLMBMI.js";
64
64
  import "./chunk-2GPQZZLY.js";
65
65
  import "./chunk-AFLNFGGB.js";
66
- import "./chunk-IA4MPG7F.js";
67
- import "./chunk-3W5SL5EW.js";
66
+ import "./chunk-O4324MXE.js";
67
+ import "./chunk-5HPMKLJ7.js";
68
68
  import "./chunk-N2WW62LF.js";
69
69
  import "./chunk-DD67JWTN.js";
70
70
  import {
@@ -88,7 +88,7 @@ import "./chunk-NSTQ6QKD.js";
88
88
  import "./chunk-WWUABK6B.js";
89
89
  import "./chunk-FJZWM2ON.js";
90
90
  import "./chunk-UN5Q7POQ.js";
91
- import "./chunk-JPH7PYSK.js";
91
+ import "./chunk-YRXV3E7J.js";
92
92
  import "./chunk-4RZRHTSZ.js";
93
93
  import "./chunk-KGZBYWZ3.js";
94
94
  import "./chunk-H5XL4KUS.js";
@@ -4,7 +4,7 @@ import {
4
4
  normalizeTakenSlug,
5
5
  normalizeWorktreePath,
6
6
  takenSlugsFromThread
7
- } from "./chunk-N5UGX3JL.js";
7
+ } from "./chunk-QB5MDOHL.js";
8
8
  import {
9
9
  ensureWorktreeSideboardIgnored
10
10
  } from "./chunk-2P4XKWV2.js";
@@ -27,7 +27,7 @@ import {
27
27
  parseSessionQuotaResetAt,
28
28
  planModeTurnInstruction,
29
29
  resolveQuotaFallbackAgent
30
- } from "./chunk-2N77CLRQ.js";
30
+ } from "./chunk-LUQ7MIVD.js";
31
31
  import {
32
32
  REVIEW_TAB_TITLE,
33
33
  applyWorktreePkgCacheEnv,
@@ -66,7 +66,7 @@ import {
66
66
  worktreeDevProcessKey,
67
67
  worktreeRunProcessKey,
68
68
  worktreeSetupProcessKey
69
- } from "./chunk-4NM72HJZ.js";
69
+ } from "./chunk-G74TSBJ3.js";
70
70
  import {
71
71
  applyAgentEvent,
72
72
  clipAgentEventForPaint,
@@ -118,7 +118,7 @@ import {
118
118
  stageAbsolutePathsAsAttachments,
119
119
  stageBuffersAsAttachments,
120
120
  syncWorkspacesFromThreads
121
- } from "./chunk-IA4MPG7F.js";
121
+ } from "./chunk-O4324MXE.js";
122
122
  import {
123
123
  addPrStackLayer,
124
124
  allocateTeamSlug,
@@ -160,7 +160,7 @@ import {
160
160
  resolveRepoRoot,
161
161
  switchWorktreeBranch,
162
162
  withRepoGitLock
163
- } from "./chunk-3W5SL5EW.js";
163
+ } from "./chunk-5HPMKLJ7.js";
164
164
  import {
165
165
  clearStaleIndexLocks,
166
166
  enrichPathWithNpmGlobalBin,
@@ -238,7 +238,7 @@ import {
238
238
  worktreeNameFromPath,
239
239
  worktreeSlugForTicket,
240
240
  writeThread
241
- } from "./chunk-JPH7PYSK.js";
241
+ } from "./chunk-YRXV3E7J.js";
242
242
  import {
243
243
  annotateDevAccessRuns,
244
244
  appDataDir,
@@ -503,9 +503,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
503
503
  `Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
504
504
  );
505
505
  }
506
- const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-GDHZSFP6.js");
506
+ const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-BTH2YGDZ.js");
507
507
  if (isGlobalThread2(thread)) {
508
- const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-UV6THLMD.js");
508
+ const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-BYPEW6DE.js");
509
509
  ensureGlobalCoordinatorCwd2(
510
510
  isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
511
511
  );
@@ -3119,7 +3119,7 @@ async function adoptThread(input) {
3119
3119
  messages: input.messages ?? []
3120
3120
  });
3121
3121
  writeThread(thread);
3122
- const { addWorkspace: addWorkspace2 } = await import("./workspaces-Q2R2XGO3.js");
3122
+ const { addWorkspace: addWorkspace2 } = await import("./workspaces-ELO2YVTU.js");
3123
3123
  await addWorkspace2(repoPath);
3124
3124
  const { ensureWorktreeSideboardIgnored } = await import("./worktree-exclude-5N2KTYIT.js");
3125
3125
  await ensureWorktreeSideboardIgnored(input.worktreePath);
@@ -5270,12 +5270,13 @@ function formatArtifactDirective() {
5270
5270
  "Sideboard side column (desktop UI) \u2014 Sideboard MCP tools present_artifact, present_schema, present_files, ask_user (see their descriptions). claude.ai\u2019s \u201CArtifact\u201D tool does not exist here; never say artifacts, the CMS UI, or the Files column are unavailable.",
5271
5271
  "- Standalone documents: a fenced block tagged `html` (preferred), `svg`, or `markdown` containing the FULL document opens the side column by itself. Use that or present_artifact \u2014 never both for the same body.",
5272
5272
  "- present_artifact type=log appends: same artifact_id, content = new lines only (plus status/phase). Do not resend the full log or wrap it in HTML.",
5273
+ "- Chat links open the side column and files: `[label](sideboard://artifact/<artifact_id or title>)` opens that pane; `[label](sideboard://file/<path>#L12-L40)` opens the file (line range optional). A repo-relative markdown link opens the file too.",
5273
5274
  "- Data: a markdown table is enough to read. Call present_schema only when the user needs to filter/edit/publish/persist rows \u2014 including when they ask for an editable table after you already showed markdown. Never re-present rows you already wrote just to display them.",
5274
5275
  "- ask_user only when work is blocked on a few concrete options (approach fork, which API, auth vs cookies): first a short chat message explaining the decision and each option, then the call (description on every option), then stop and wait. Not for greetings, check-ins, an invented menu of next tasks, or after a review \u2014 reply in chat. If one option is the obvious default, proceed. ask_user already notifies the parent orchestrator. Call notify_orchestrator only when blocked without a picker."
5275
5276
  ].join("\n");
5276
5277
  }
5277
5278
  function formatUiReminder() {
5278
- return "Sideboard UI: markdown table is enough to read data; present_schema if they ask to edit/filter (even after markdown); present_files for the file manager. html fence or present_artifact, not both for the same document. type=log appends (same artifact_id, new lines only). ask_user only for a real multiple-choice (not hellos, \u201Cwhat next?\u201D, or after a review) \u2014 reply in chat. ask_user wakes the parent orchestrator; notify_orchestrator if blocked without a picker. Do not say artifacts/CMS UI are unavailable. Dev / preview: run_dev_script (same as the Dev button; pass name \u2014 several scripts can run at once) returns {url, port, preview} (SIDEBOARD_PORT \u2014 never guess :3000). preview=url \u2192 open url; preview=window \u2192 Electron window is the app, url is renderer/HMR only. list_run_scripts active[].url if already running; get_run_log for that script\u2019s Run-tab terminal; stop_dev_script to stop one.";
5279
+ return "Sideboard UI: markdown table is enough to read data; present_schema if they ask to edit/filter (even after markdown); present_files for the file manager. html fence or present_artifact, not both for the same document. type=log appends (same artifact_id, new lines only). Chat links: `[name](sideboard://artifact/<id-or-title>)` opens that pane; `[name](sideboard://file/path#L12-L40)` opens a file. ask_user only for a real multiple-choice (not hellos, \u201Cwhat next?\u201D, or after a review) \u2014 reply in chat. ask_user wakes the parent orchestrator; notify_orchestrator if blocked without a picker. Do not say artifacts/CMS UI are unavailable. Dev / preview: run_dev_script (same as the Dev button; pass name \u2014 several scripts can run at once) returns {url, port, preview} (SIDEBOARD_PORT \u2014 never guess :3000). preview=url \u2192 open url; preview=window \u2192 Electron window is the app, url is renderer/HMR only. list_run_scripts active[].url if already running; get_run_log for that script\u2019s Run-tab terminal; stop_dev_script to stop one.";
5279
5280
  }
5280
5281
 
5281
5282
  // src/mcp/viewer-context-tools.ts
@@ -5993,7 +5994,7 @@ function formatScheduledPrompt(name, prompt) {
5993
5994
  ${prompt}`;
5994
5995
  }
5995
5996
  async function defaultDeps() {
5996
- const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-5ZBHR6BJ.js");
5997
+ const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-EQSK2RMI.js");
5997
5998
  const orch = getOrchestrator2();
5998
5999
  return {
5999
6000
  findThread: (id) => findThreadByRef(id),
@@ -8865,7 +8866,7 @@ async function startOrchestration(opts) {
8865
8866
  sourceRef: "default",
8866
8867
  ...createOpts
8867
8868
  }).catch(async () => {
8868
- const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-2GOK4VYT.js");
8869
+ const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-ADVQ6X6C.js");
8869
8870
  const repo = await resolveRepoRoot2(repoPath);
8870
8871
  const def = await resolveDefaultBranch2(repo);
8871
8872
  return orch.createThread({
@@ -8875,7 +8876,7 @@ async function startOrchestration(opts) {
8875
8876
  repoPath: repo
8876
8877
  });
8877
8878
  });
8878
- const { updateThread: upd } = await import("./thread-store-7XBOUQ5K.js");
8879
+ const { updateThread: upd } = await import("./thread-store-DPKESDFR.js");
8879
8880
  const updated = upd(thread.id, {
8880
8881
  sourceType: "orchestration",
8881
8882
  sourceRef: goal
@@ -26,7 +26,7 @@ import {
26
26
  normalizeTakenSlug,
27
27
  normalizeWorktreePath,
28
28
  takenSlugsFromThread
29
- } from "./chunk-JPH7PYSK.js";
29
+ } from "./chunk-YRXV3E7J.js";
30
30
  import {
31
31
  worktreesRoot
32
32
  } from "./chunk-H5XL4KUS.js";
@@ -11,11 +11,11 @@ import {
11
11
  isGlobalThread,
12
12
  isOrchestratorThread,
13
13
  isSlackCoordinatorThread
14
- } from "./chunk-IA4MPG7F.js";
14
+ } from "./chunk-O4324MXE.js";
15
15
  import {
16
16
  mergeAgentGitAuthEnv,
17
17
  resolveAgentGitAuthEnv
18
- } from "./chunk-3W5SL5EW.js";
18
+ } from "./chunk-5HPMKLJ7.js";
19
19
  import {
20
20
  ATTACHMENTS_DIR,
21
21
  DETACHED_JOBS_DIR,
@@ -46,7 +46,7 @@ import {
46
46
  updateThread,
47
47
  worktreeNameFromPath,
48
48
  writeThread
49
- } from "./chunk-JPH7PYSK.js";
49
+ } from "./chunk-YRXV3E7J.js";
50
50
  import {
51
51
  findConventionSetup,
52
52
  loadRepoSettings,
@@ -1674,7 +1674,7 @@ var PORT_RANGE_SIZE = 10;
1674
1674
  var RECLAIM_RETRY_DELAY_MS = 40;
1675
1675
  var RECLAIM_TRIES = 8;
1676
1676
  async function killReclaimable(ports, worktreePath, signal) {
1677
- const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-MCU63Z5U.js");
1677
+ const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-5MNGC25D.js");
1678
1678
  if (worktreePath) killStaleWorktreeListeners2(ports, worktreePath, signal);
1679
1679
  else killListenersOnPorts2(ports);
1680
1680
  }
@@ -8,11 +8,11 @@ import {
8
8
  isGlobalThread,
9
9
  isOrchestratorThread,
10
10
  isSlackCoordinatorThread
11
- } from "./chunk-DBOFDEQ7.js";
11
+ } from "./chunk-V3BSO2O6.js";
12
12
  import {
13
13
  mergeAgentGitAuthEnv,
14
14
  resolveAgentGitAuthEnv
15
- } from "./chunk-HNB2HTCV.js";
15
+ } from "./chunk-2IXKTAIT.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-N5UGX3JL.js";
26
+ } from "./chunk-QB5MDOHL.js";
27
27
  import {
28
28
  ensureWorktreeSideboardIgnored
29
29
  } from "./chunk-2P4XKWV2.js";
@@ -1776,7 +1776,7 @@ var PORT_RANGE_SIZE = 10;
1776
1776
  var RECLAIM_RETRY_DELAY_MS = 40;
1777
1777
  var RECLAIM_TRIES = 8;
1778
1778
  async function killReclaimable(ports, worktreePath, signal) {
1779
- const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-ZLYZVIAV.js");
1779
+ const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-UFJXJPTF.js");
1780
1780
  if (worktreePath) killStaleWorktreeListeners2(ports, worktreePath, signal);
1781
1781
  else killListenersOnPorts2(ports);
1782
1782
  }
@@ -24,13 +24,13 @@ import {
24
24
  } from "./chunk-AFLNFGGB.js";
25
25
  import {
26
26
  isOrchestratorThread
27
- } from "./chunk-IA4MPG7F.js";
27
+ } from "./chunk-O4324MXE.js";
28
28
  import {
29
29
  codexUnattendedGitConfigArgs,
30
30
  mergeAgentGitAuthEnv,
31
31
  resolveAgentGitAuthEnv,
32
32
  resolveCodexGitWritableRoots
33
- } from "./chunk-3W5SL5EW.js";
33
+ } from "./chunk-5HPMKLJ7.js";
34
34
  import {
35
35
  npmGlobalNodeModules,
36
36
  run
@@ -2015,7 +2015,7 @@ var claudeAdapter = {
2015
2015
  );
2016
2016
  }
2017
2017
  const mode = permissionMode(thread);
2018
- const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-GDHZSFP6.js");
2018
+ const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-BTH2YGDZ.js");
2019
2019
  const isOrchestrator = isOrchestratorThread2(thread);
2020
2020
  const rpc = worktreeAgentRpc(isOrchestrator);
2021
2021
  const injectedServers = await buildInjectedMcpServers({
@@ -5,7 +5,7 @@ import {
5
5
  ensureGhPreferOrigin,
6
6
  resolveGithubRepoSlug,
7
7
  resolveRepoRoot
8
- } from "./chunk-3W5SL5EW.js";
8
+ } from "./chunk-5HPMKLJ7.js";
9
9
  import {
10
10
  ATTACHMENTS_DIR,
11
11
  attachmentsGitignoreBody
@@ -31,7 +31,7 @@ import {
31
31
  teamSlugFromName,
32
32
  updateThread,
33
33
  writeThread
34
- } from "./chunk-JPH7PYSK.js";
34
+ } from "./chunk-YRXV3E7J.js";
35
35
  import {
36
36
  appDataDir,
37
37
  globalAgentCwd,
@@ -14,7 +14,7 @@ import {
14
14
  parseSessionQuotaResetAt,
15
15
  planModeTurnInstruction,
16
16
  resolveQuotaFallbackAgent
17
- } from "./chunk-6NVQNTJO.js";
17
+ } from "./chunk-VNCPRMIK.js";
18
18
  import {
19
19
  REVIEW_TAB_TITLE,
20
20
  applyWorktreePkgCacheEnv,
@@ -53,7 +53,7 @@ import {
53
53
  worktreeDevProcessKey,
54
54
  worktreeRunProcessKey,
55
55
  worktreeSetupProcessKey
56
- } from "./chunk-WQSIUZEB.js";
56
+ } from "./chunk-GBAACE3C.js";
57
57
  import {
58
58
  applyAgentEvent,
59
59
  clipAgentEventForPaint,
@@ -100,7 +100,7 @@ import {
100
100
  stageAbsolutePathsAsAttachments,
101
101
  stageBuffersAsAttachments,
102
102
  syncWorkspacesFromThreads
103
- } from "./chunk-DBOFDEQ7.js";
103
+ } from "./chunk-V3BSO2O6.js";
104
104
  import {
105
105
  addPrStackLayer,
106
106
  allocateTeamSlug,
@@ -142,7 +142,7 @@ import {
142
142
  resolveRepoRoot,
143
143
  switchWorktreeBranch,
144
144
  withRepoGitLock
145
- } from "./chunk-HNB2HTCV.js";
145
+ } from "./chunk-2IXKTAIT.js";
146
146
  import {
147
147
  agentNicknameFromWorktreePath,
148
148
  appendMessage,
@@ -166,7 +166,7 @@ import {
166
166
  worktreeNameFromPath,
167
167
  worktreeSlugForTicket,
168
168
  writeThread
169
- } from "./chunk-N5UGX3JL.js";
169
+ } from "./chunk-QB5MDOHL.js";
170
170
  import {
171
171
  createAgentStreamCoalescer
172
172
  } from "./chunk-AXQ4ZWHK.js";
@@ -451,9 +451,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
451
451
  `Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
452
452
  );
453
453
  }
454
- const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-AXTSYVAE.js");
454
+ const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-YKOYXSB2.js");
455
455
  if (isGlobalThread2(thread)) {
456
- const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-KHCXXDRO.js");
456
+ const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-5Q66Y5KW.js");
457
457
  ensureGlobalCoordinatorCwd2(
458
458
  isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
459
459
  );
@@ -2740,7 +2740,7 @@ async function createThread(input, _onSetupLine) {
2740
2740
  return readThread(thread.id) ?? thread;
2741
2741
  }
2742
2742
  async function listLinearIssues(agent, repoPath) {
2743
- const { getAdapter: getAdapter2 } = await import("./agents-GZLTMGSH.js");
2743
+ const { getAdapter: getAdapter2 } = await import("./agents-4BBCKITL.js");
2744
2744
  await requireAgent(agent, { requireLinear: true });
2745
2745
  const adapter = getAdapter2(agent);
2746
2746
  if (!adapter.listLinearIssues) {
@@ -3251,7 +3251,7 @@ async function adoptThread(input) {
3251
3251
  messages: input.messages ?? []
3252
3252
  });
3253
3253
  writeThread(thread);
3254
- const { addWorkspace: addWorkspace2 } = await import("./workspaces-L2UR4KC2.js");
3254
+ const { addWorkspace: addWorkspace2 } = await import("./workspaces-RFD6I4FM.js");
3255
3255
  await addWorkspace2(repoPath);
3256
3256
  const { ensureWorktreeSideboardIgnored } = await import("./worktree-exclude-RXZPTCNH.js");
3257
3257
  await ensureWorktreeSideboardIgnored(input.worktreePath);
@@ -5437,12 +5437,13 @@ function formatArtifactDirective() {
5437
5437
  "Sideboard side column (desktop UI) \u2014 Sideboard MCP tools present_artifact, present_schema, present_files, ask_user (see their descriptions). claude.ai\u2019s \u201CArtifact\u201D tool does not exist here; never say artifacts, the CMS UI, or the Files column are unavailable.",
5438
5438
  "- Standalone documents: a fenced block tagged `html` (preferred), `svg`, or `markdown` containing the FULL document opens the side column by itself. Use that or present_artifact \u2014 never both for the same body.",
5439
5439
  "- present_artifact type=log appends: same artifact_id, content = new lines only (plus status/phase). Do not resend the full log or wrap it in HTML.",
5440
+ "- Chat links open the side column and files: `[label](sideboard://artifact/<artifact_id or title>)` opens that pane; `[label](sideboard://file/<path>#L12-L40)` opens the file (line range optional). A repo-relative markdown link opens the file too.",
5440
5441
  "- Data: a markdown table is enough to read. Call present_schema only when the user needs to filter/edit/publish/persist rows \u2014 including when they ask for an editable table after you already showed markdown. Never re-present rows you already wrote just to display them.",
5441
5442
  "- ask_user only when work is blocked on a few concrete options (approach fork, which API, auth vs cookies): first a short chat message explaining the decision and each option, then the call (description on every option), then stop and wait. Not for greetings, check-ins, an invented menu of next tasks, or after a review \u2014 reply in chat. If one option is the obvious default, proceed. ask_user already notifies the parent orchestrator. Call notify_orchestrator only when blocked without a picker."
5442
5443
  ].join("\n");
5443
5444
  }
5444
5445
  function formatUiReminder() {
5445
- return "Sideboard UI: markdown table is enough to read data; present_schema if they ask to edit/filter (even after markdown); present_files for the file manager. html fence or present_artifact, not both for the same document. type=log appends (same artifact_id, new lines only). ask_user only for a real multiple-choice (not hellos, \u201Cwhat next?\u201D, or after a review) \u2014 reply in chat. ask_user wakes the parent orchestrator; notify_orchestrator if blocked without a picker. Do not say artifacts/CMS UI are unavailable. Dev / preview: run_dev_script (same as the Dev button; pass name \u2014 several scripts can run at once) returns {url, port, preview} (SIDEBOARD_PORT \u2014 never guess :3000). preview=url \u2192 open url; preview=window \u2192 Electron window is the app, url is renderer/HMR only. list_run_scripts active[].url if already running; get_run_log for that script\u2019s Run-tab terminal; stop_dev_script to stop one.";
5446
+ return "Sideboard UI: markdown table is enough to read data; present_schema if they ask to edit/filter (even after markdown); present_files for the file manager. html fence or present_artifact, not both for the same document. type=log appends (same artifact_id, new lines only). Chat links: `[name](sideboard://artifact/<id-or-title>)` opens that pane; `[name](sideboard://file/path#L12-L40)` opens a file. ask_user only for a real multiple-choice (not hellos, \u201Cwhat next?\u201D, or after a review) \u2014 reply in chat. ask_user wakes the parent orchestrator; notify_orchestrator if blocked without a picker. Do not say artifacts/CMS UI are unavailable. Dev / preview: run_dev_script (same as the Dev button; pass name \u2014 several scripts can run at once) returns {url, port, preview} (SIDEBOARD_PORT \u2014 never guess :3000). preview=url \u2192 open url; preview=window \u2192 Electron window is the app, url is renderer/HMR only. list_run_scripts active[].url if already running; get_run_log for that script\u2019s Run-tab terminal; stop_dev_script to stop one.";
5446
5447
  }
5447
5448
 
5448
5449
  // src/mcp/viewer-context-tools.ts
@@ -6169,7 +6170,7 @@ function formatScheduledPrompt(name, prompt) {
6169
6170
  ${prompt}`;
6170
6171
  }
6171
6172
  async function defaultDeps() {
6172
- const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-SDH6W6ZL.js");
6173
+ const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-GSOW3RPA.js");
6173
6174
  const orch = getOrchestrator2();
6174
6175
  return {
6175
6176
  findThread: (id) => findThreadByRef(id),
@@ -9041,7 +9042,7 @@ async function startOrchestration(opts) {
9041
9042
  sourceRef: "default",
9042
9043
  ...createOpts
9043
9044
  }).catch(async () => {
9044
- const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-YEUTJ7MZ.js");
9045
+ const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-TN7DZDJZ.js");
9045
9046
  const repo = await resolveRepoRoot2(repoPath);
9046
9047
  const def = await resolveDefaultBranch2(repo);
9047
9048
  return orch.createThread({
@@ -9051,7 +9052,7 @@ async function startOrchestration(opts) {
9051
9052
  repoPath: repo
9052
9053
  });
9053
9054
  });
9054
- const { updateThread: upd } = await import("./thread-store-ZQZDREVH.js");
9055
+ const { updateThread: upd } = await import("./thread-store-X6S2GIR5.js");
9055
9056
  const updated = upd(thread.id, {
9056
9057
  sourceType: "orchestration",
9057
9058
  sourceRef: goal
@@ -3,7 +3,7 @@ import {
3
3
  ensureGhPreferOrigin,
4
4
  resolveGithubRepoSlug,
5
5
  resolveRepoRoot
6
- } from "./chunk-HNB2HTCV.js";
6
+ } from "./chunk-2IXKTAIT.js";
7
7
  import {
8
8
  allocateTeamName,
9
9
  createEmptyThread,
@@ -12,7 +12,7 @@ import {
12
12
  teamSlugFromName,
13
13
  updateThread,
14
14
  writeThread
15
- } from "./chunk-N5UGX3JL.js";
15
+ } from "./chunk-QB5MDOHL.js";
16
16
  import {
17
17
  ATTACHMENTS_DIR,
18
18
  attachmentsGitignoreBody
@@ -12,13 +12,13 @@ import {
12
12
  } from "./chunk-YSLCWCMJ.js";
13
13
  import {
14
14
  isOrchestratorThread
15
- } from "./chunk-DBOFDEQ7.js";
15
+ } from "./chunk-V3BSO2O6.js";
16
16
  import {
17
17
  codexUnattendedGitConfigArgs,
18
18
  mergeAgentGitAuthEnv,
19
19
  resolveAgentGitAuthEnv,
20
20
  resolveCodexGitWritableRoots
21
- } from "./chunk-HNB2HTCV.js";
21
+ } from "./chunk-2IXKTAIT.js";
22
22
  import {
23
23
  loadBrightsyConfig
24
24
  } from "./chunk-33KDPEK4.js";
@@ -1752,7 +1752,7 @@ var claudeAdapter = {
1752
1752
  );
1753
1753
  }
1754
1754
  const mode = permissionMode(thread);
1755
- const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-AXTSYVAE.js");
1755
+ const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-YKOYXSB2.js");
1756
1756
  const isOrchestrator = isOrchestratorThread2(thread);
1757
1757
  const rpc = worktreeAgentRpc(isOrchestrator);
1758
1758
  const injectedServers = await buildInjectedMcpServers({
@@ -33,10 +33,10 @@ import {
33
33
  tryReservePort,
34
34
  tryReservePorts,
35
35
  worktreeRunPortsPath
36
- } from "./chunk-4NM72HJZ.js";
36
+ } from "./chunk-G74TSBJ3.js";
37
37
  import "./chunk-AFLNFGGB.js";
38
- import "./chunk-IA4MPG7F.js";
39
- import "./chunk-3W5SL5EW.js";
38
+ import "./chunk-O4324MXE.js";
39
+ import "./chunk-5HPMKLJ7.js";
40
40
  import "./chunk-N2WW62LF.js";
41
41
  import "./chunk-DD67JWTN.js";
42
42
  import "./chunk-2UG25RMK.js";
@@ -47,7 +47,7 @@ import {
47
47
  } from "./chunk-WWUABK6B.js";
48
48
  import "./chunk-FJZWM2ON.js";
49
49
  import "./chunk-UN5Q7POQ.js";
50
- import "./chunk-JPH7PYSK.js";
50
+ import "./chunk-YRXV3E7J.js";
51
51
  import "./chunk-4RZRHTSZ.js";
52
52
  import "./chunk-KGZBYWZ3.js";
53
53
  import {
@@ -31,11 +31,11 @@ import {
31
31
  tryReservePort,
32
32
  tryReservePorts,
33
33
  worktreeRunPortsPath
34
- } from "./chunk-WQSIUZEB.js";
34
+ } from "./chunk-GBAACE3C.js";
35
35
  import "./chunk-YSLCWCMJ.js";
36
- import "./chunk-DBOFDEQ7.js";
37
- import "./chunk-HNB2HTCV.js";
38
- import "./chunk-N5UGX3JL.js";
36
+ import "./chunk-V3BSO2O6.js";
37
+ import "./chunk-2IXKTAIT.js";
38
+ import "./chunk-QB5MDOHL.js";
39
39
  import "./chunk-2P4XKWV2.js";
40
40
  import "./chunk-MIVX7QKI.js";
41
41
  import "./chunk-6K64FJDD.js";
@@ -7,9 +7,9 @@ import {
7
7
  enrichWorkspacesWithGithub,
8
8
  ensureGlobalCoordinatorCwd,
9
9
  formatWorkspaceInventory
10
- } from "./chunk-DBOFDEQ7.js";
11
- import "./chunk-HNB2HTCV.js";
12
- import "./chunk-N5UGX3JL.js";
10
+ } from "./chunk-V3BSO2O6.js";
11
+ import "./chunk-2IXKTAIT.js";
12
+ import "./chunk-QB5MDOHL.js";
13
13
  import "./chunk-2P4XKWV2.js";
14
14
  import "./chunk-6K64FJDD.js";
15
15
  import "./chunk-UWQ6UCIB.js";
@@ -9,8 +9,8 @@ import {
9
9
  enrichWorkspacesWithGithub,
10
10
  ensureGlobalCoordinatorCwd,
11
11
  formatWorkspaceInventory
12
- } from "./chunk-IA4MPG7F.js";
13
- import "./chunk-3W5SL5EW.js";
12
+ } from "./chunk-O4324MXE.js";
13
+ import "./chunk-5HPMKLJ7.js";
14
14
  import "./chunk-N2WW62LF.js";
15
15
  import "./chunk-DD67JWTN.js";
16
16
  import "./chunk-2UG25RMK.js";
@@ -19,7 +19,7 @@ import "./chunk-NSTQ6QKD.js";
19
19
  import "./chunk-WWUABK6B.js";
20
20
  import "./chunk-FJZWM2ON.js";
21
21
  import "./chunk-UN5Q7POQ.js";
22
- import "./chunk-JPH7PYSK.js";
22
+ import "./chunk-YRXV3E7J.js";
23
23
  import "./chunk-4RZRHTSZ.js";
24
24
  import "./chunk-KGZBYWZ3.js";
25
25
  import "./chunk-H5XL4KUS.js";
@@ -20,8 +20,8 @@ import {
20
20
  remoteCoordinatorSourceRef,
21
21
  slackCoordinatorSourceRef,
22
22
  takenTeamSlugsForOrchestration
23
- } from "./chunk-IA4MPG7F.js";
24
- import "./chunk-3W5SL5EW.js";
23
+ } from "./chunk-O4324MXE.js";
24
+ import "./chunk-5HPMKLJ7.js";
25
25
  import "./chunk-N2WW62LF.js";
26
26
  import "./chunk-DD67JWTN.js";
27
27
  import "./chunk-2UG25RMK.js";
@@ -30,7 +30,7 @@ import "./chunk-NSTQ6QKD.js";
30
30
  import "./chunk-WWUABK6B.js";
31
31
  import "./chunk-FJZWM2ON.js";
32
32
  import "./chunk-UN5Q7POQ.js";
33
- import "./chunk-JPH7PYSK.js";
33
+ import "./chunk-YRXV3E7J.js";
34
34
  import "./chunk-4RZRHTSZ.js";
35
35
  import "./chunk-KGZBYWZ3.js";
36
36
  import {
@@ -18,9 +18,9 @@ import {
18
18
  remoteCoordinatorSourceRef,
19
19
  slackCoordinatorSourceRef,
20
20
  takenTeamSlugsForOrchestration
21
- } from "./chunk-DBOFDEQ7.js";
22
- import "./chunk-HNB2HTCV.js";
23
- import "./chunk-N5UGX3JL.js";
21
+ } from "./chunk-V3BSO2O6.js";
22
+ import "./chunk-2IXKTAIT.js";
23
+ import "./chunk-QB5MDOHL.js";
24
24
  import "./chunk-2P4XKWV2.js";
25
25
  import "./chunk-6K64FJDD.js";
26
26
  import "./chunk-UWQ6UCIB.js";