@sideboard-ai/core 0.1.176 → 0.1.178

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 (31) hide show
  1. package/dist/{agents-544IX5KA.js → agents-2UD26PUT.js} +4 -4
  2. package/dist/{agents-UENEQ6J2.js → agents-XPWZG3JU.js} +4 -4
  3. package/dist/{chunk-3ZFGZ7RT.js → chunk-7T5XKNOF.js} +2 -2
  4. package/dist/{chunk-LZQULFIT.js → chunk-GOZ6T3AG.js} +2 -0
  5. package/dist/{chunk-4ELBAYFW.js → chunk-GVC4IVF5.js} +83 -17
  6. package/dist/{chunk-NIB6BTC6.js → chunk-IVJFEB3T.js} +3 -3
  7. package/dist/{chunk-JUA7XEXR.js → chunk-MZOZ6PIZ.js} +82 -16
  8. package/dist/{chunk-7UURXPKD.js → chunk-TCQAFTSV.js} +2 -0
  9. package/dist/{chunk-W44EKPIR.js → chunk-VUFJ5MAN.js} +3 -3
  10. package/dist/{chunk-7JIYKYLL.js → chunk-WXKXSZN4.js} +10 -7
  11. package/dist/{chunk-7O53GXTA.js → chunk-XBLN52RZ.js} +10 -7
  12. package/dist/{chunk-FJWQCZ74.js → chunk-XV3EFFZ6.js} +2 -2
  13. package/dist/{coordinator-prompt-PRM5ARWG.js → coordinator-prompt-3NRUXH3F.js} +3 -3
  14. package/dist/{coordinator-prompt-BE2FERYE.js → coordinator-prompt-GKH7Q7PK.js} +3 -3
  15. package/dist/{global-workspace-3HIWNQ3B.js → global-workspace-2FQU62S2.js} +3 -3
  16. package/dist/{global-workspace-J737XNUX.js → global-workspace-C2JMJXYV.js} +3 -3
  17. package/dist/index.cjs +90 -12
  18. package/dist/index.d.cts +25 -2
  19. package/dist/index.d.ts +25 -2
  20. package/dist/index.js +15 -7
  21. package/dist/mcp/run-stdio.cjs +133 -12
  22. package/dist/mcp/run-stdio.js +59 -8
  23. package/dist/{orchestrator-GDKEVLFK.js → orchestrator-HOMNNKMT.js} +7 -5
  24. package/dist/{orchestrator-2KZD7N4X.js → orchestrator-WNFMRRQP.js} +7 -5
  25. package/dist/{thread-store-KBFBHT5G.js → thread-store-RXXNSRVO.js} +1 -1
  26. package/dist/{thread-store-MVQU6HPJ.js → thread-store-ZL6GDIDP.js} +1 -1
  27. package/dist/{workspaces-ULHYXM4Y.js → workspaces-J3M3IPR3.js} +3 -3
  28. package/dist/{workspaces-DR4UNOQC.js → workspaces-YVZYX5H2.js} +3 -3
  29. package/dist/{worktree-LC4VRWDM.js → worktree-7LOSSD7G.js} +2 -2
  30. package/dist/{worktree-UTDBQXSS.js → worktree-LPWTX2NA.js} +2 -2
  31. package/package.json +1 -1
@@ -32,9 +32,9 @@ import {
32
32
  resolveLoginCommand,
33
33
  resolveQuotaFallbackAgent,
34
34
  whichOnPath
35
- } from "./chunk-NIB6BTC6.js";
36
- import "./chunk-3ZFGZ7RT.js";
37
- import "./chunk-7JIYKYLL.js";
35
+ } from "./chunk-IVJFEB3T.js";
36
+ import "./chunk-7T5XKNOF.js";
37
+ import "./chunk-WXKXSZN4.js";
38
38
  import "./chunk-6K64FJDD.js";
39
39
  import "./chunk-IEEAVWAP.js";
40
40
  import "./chunk-AN3THU7F.js";
@@ -53,7 +53,7 @@ import {
53
53
  } from "./chunk-J7LQVLFQ.js";
54
54
  import "./chunk-4TR3HZFT.js";
55
55
  import "./chunk-JT7R45JB.js";
56
- import "./chunk-7UURXPKD.js";
56
+ import "./chunk-TCQAFTSV.js";
57
57
  import "./chunk-77WWLBCI.js";
58
58
  import "./chunk-EFVFB2AH.js";
59
59
  import "./chunk-QQKDGPUI.js";
@@ -38,14 +38,14 @@ import {
38
38
  resolveQuotaFallbackAgent,
39
39
  turnCostUsdFromCursorUsage,
40
40
  whichOnPath
41
- } from "./chunk-W44EKPIR.js";
41
+ } from "./chunk-VUFJ5MAN.js";
42
42
  import "./chunk-HVIEYTUK.js";
43
43
  import "./chunk-Y4MIXGPA.js";
44
44
  import "./chunk-VKQGAWHY.js";
45
- import "./chunk-FJWQCZ74.js";
46
- import "./chunk-7O53GXTA.js";
45
+ import "./chunk-XV3EFFZ6.js";
46
+ import "./chunk-XBLN52RZ.js";
47
47
  import "./chunk-D6JWYJ4P.js";
48
- import "./chunk-LZQULFIT.js";
48
+ import "./chunk-GOZ6T3AG.js";
49
49
  import "./chunk-SYFVUF2C.js";
50
50
  import {
51
51
  conductorBundledBinDir,
@@ -5,7 +5,7 @@ import {
5
5
  resolveRepoRoot,
6
6
  takenSlugsFromThread,
7
7
  teamSlugFromName
8
- } from "./chunk-7JIYKYLL.js";
8
+ } from "./chunk-WXKXSZN4.js";
9
9
  import {
10
10
  ATTACHMENTS_DIR,
11
11
  attachmentsGitignoreBody
@@ -28,7 +28,7 @@ import {
28
28
  listThreads,
29
29
  updateThread,
30
30
  writeThread
31
- } from "./chunk-7UURXPKD.js";
31
+ } from "./chunk-TCQAFTSV.js";
32
32
  import {
33
33
  appDataDir,
34
34
  globalAgentCwd,
@@ -75,6 +75,8 @@ function createEmptyThread(partial) {
75
75
  prTitle: partial.prTitle ?? null,
76
76
  prState: partial.prState ?? null,
77
77
  prIsDraft: Boolean(partial.prIsDraft),
78
+ prAuthorLogin: partial.prAuthorLogin?.trim() || null,
79
+ prReviewerLogins: partial.prReviewerLogins ?? [],
78
80
  skipAutoArchiveOnMerge: partial.skipAutoArchiveOnMerge ?? false,
79
81
  cowboy: Boolean(partial.cowboy),
80
82
  stackId: partial.stackId ?? null,
@@ -24,7 +24,7 @@ import {
24
24
  stripBrightsyNdjsonNoise,
25
25
  sumUsageList,
26
26
  toolDescription
27
- } from "./chunk-NIB6BTC6.js";
27
+ } from "./chunk-IVJFEB3T.js";
28
28
  import {
29
29
  SLACK_REPLY_FORMATTING,
30
30
  addWorkspace,
@@ -47,7 +47,7 @@ import {
47
47
  stageAbsolutePathsAsAttachments,
48
48
  stageBuffersAsAttachments,
49
49
  syncWorkspacesFromThreads
50
- } from "./chunk-3ZFGZ7RT.js";
50
+ } from "./chunk-7T5XKNOF.js";
51
51
  import {
52
52
  addPrStackLayer,
53
53
  allocateTeamName,
@@ -97,7 +97,7 @@ import {
97
97
  worktreeDisplayLabelForGroup,
98
98
  worktreeNameFromPath,
99
99
  worktreeSlugForTicket
100
- } from "./chunk-7JIYKYLL.js";
100
+ } from "./chunk-WXKXSZN4.js";
101
101
  import {
102
102
  ATTACHMENTS_DIR,
103
103
  DETACHED_JOBS_DIR,
@@ -129,6 +129,7 @@ import {
129
129
  assertOrchestratorCapableAgent,
130
130
  childEnvWithAppSettings,
131
131
  coerceOrchestratorAgent,
132
+ followUpBehavior,
132
133
  formatViewerContextDirective,
133
134
  formatViewerContextReminder,
134
135
  getIssueSource,
@@ -169,7 +170,7 @@ import {
169
170
  updateThread,
170
171
  withThreadLock,
171
172
  writeThread
172
- } from "./chunk-7UURXPKD.js";
173
+ } from "./chunk-TCQAFTSV.js";
173
174
  import {
174
175
  appDataDir,
175
176
  findConventionSetup,
@@ -466,7 +467,7 @@ async function continueSourceThread(threadId, prompt) {
466
467
  await continueOnReply(threadId, prompt);
467
468
  return;
468
469
  }
469
- const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-GDKEVLFK.js");
470
+ const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-HOMNNKMT.js");
470
471
  await getOrchestrator2().send(threadId, prompt);
471
472
  } catch {
472
473
  }
@@ -800,9 +801,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
800
801
  `Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
801
802
  );
802
803
  }
803
- const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-3HIWNQ3B.js");
804
+ const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-2FQU62S2.js");
804
805
  if (isGlobalThread2(thread)) {
805
- const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-PRM5ARWG.js");
806
+ const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-3NRUXH3F.js");
806
807
  ensureGlobalCoordinatorCwd2(
807
808
  isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
808
809
  );
@@ -1567,6 +1568,8 @@ function worktreeBindingFrom(from) {
1567
1568
  prTitle: from.prTitle,
1568
1569
  prState: from.prState,
1569
1570
  prIsDraft: from.prIsDraft,
1571
+ prAuthorLogin: from.prAuthorLogin,
1572
+ prReviewerLogins: from.prReviewerLogins,
1570
1573
  skipAutoArchiveOnMerge: from.skipAutoArchiveOnMerge,
1571
1574
  stackId: from.stackId,
1572
1575
  stackLayer: from.stackLayer,
@@ -3162,6 +3165,36 @@ function groupHomeBoardWorktrees(threads, sort = DEFAULT_WORKTREE_SORT, labelOf
3162
3165
  }
3163
3166
  return [...map.values()].map((list) => sortThreadsInWorktree(list)).sort((a, b) => compareWorktreeGroups(a, b, sort, labelOf));
3164
3167
  }
3168
+ var DEFAULT_BOARD_OWNERSHIP = "all";
3169
+ function normalizeViewerLogin(login) {
3170
+ return (login ?? "").trim().toLowerCase();
3171
+ }
3172
+ function loginsInclude(logins, viewerLogin) {
3173
+ const me = normalizeViewerLogin(viewerLogin);
3174
+ if (!me) return false;
3175
+ return (logins ?? []).some((login) => normalizeViewerLogin(login) === me);
3176
+ }
3177
+ function classifyWorktreeOwnership(group, viewerLogin = "") {
3178
+ const me = normalizeViewerLogin(viewerLogin);
3179
+ if (group.some((t) => {
3180
+ const author = normalizeViewerLogin(t.prAuthorLogin);
3181
+ return Boolean(author && me && author === me);
3182
+ })) {
3183
+ return "mine";
3184
+ }
3185
+ const reviewing = group.some((t) => {
3186
+ const author = normalizeViewerLogin(t.prAuthorLogin);
3187
+ if (author && me && author !== me) return true;
3188
+ if (t.sourceType === "pr" && (!author || !me || author !== me)) return true;
3189
+ if (me && loginsInclude(t.prReviewerLogins, me)) return true;
3190
+ return false;
3191
+ });
3192
+ return reviewing ? "reviewing" : "mine";
3193
+ }
3194
+ function worktreeMatchesOwnership(group, filter, viewerLogin = "") {
3195
+ if (filter === "all") return true;
3196
+ return classifyWorktreeOwnership(group, viewerLogin) === filter;
3197
+ }
3165
3198
  function classifyWorktreeColumn(group) {
3166
3199
  if (group.some((t) => isMergedPrState(t.prUrl, t.prState))) return "done";
3167
3200
  if (group.some((t) => isOpenPrState(t.prUrl, t.prState) && !t.prIsDraft)) {
@@ -3519,6 +3552,8 @@ function assembleHomeBoard(input) {
3519
3552
  const tokens = tokenizeQuery(input.query ?? "");
3520
3553
  const repo = input.repoPath?.trim() ?? "";
3521
3554
  const kind = input.kind ?? "all";
3555
+ const ownership = input.ownership ?? DEFAULT_BOARD_OWNERSHIP;
3556
+ const viewerLogin = input.viewerLogin ?? "";
3522
3557
  const limit = Math.max(1, input.limit ?? BOARD_PAGE_SIZE);
3523
3558
  const wsName = input.workspaceName ?? (() => "");
3524
3559
  const live = input.threads.filter((t) => t.status !== "archived" && isHomeBoardThread(t));
@@ -3547,6 +3582,7 @@ function assembleHomeBoard(input) {
3547
3582
  };
3548
3583
  for (const group of groupHomeBoardWorktrees(live)) {
3549
3584
  if (!group.some((t) => threadMatchesKind(t, kind))) continue;
3585
+ if (!worktreeMatchesOwnership(group, ownership, viewerLogin)) continue;
3550
3586
  const col = classifyWorktreeColumn(group);
3551
3587
  if (col === "backlog") continue;
3552
3588
  const primary = group[0];
@@ -3576,7 +3612,7 @@ function assembleHomeBoard(input) {
3576
3612
  }
3577
3613
  return { columns, hidden, totals };
3578
3614
  }
3579
- var HOME_BOARD_AGENT_HINT = "Home is a Kanban of worktrees (one card per checkout; sibling chat tabs nest as inner cards). Do not create a second worktree for a ticket, PR, or named branch that already has a live checkout \u2014 create_thread / start_board_card return that thread (alreadyStarted). Creating from the default branch still opens a new isolated worktree. Columns are the path to merge: New (no PR) \u2192 Draft (draft PR) \u2192 Review (open PR) \u2192 Merged. Archive removes the card to Settings \u2192 History. Queued/running are activity on the card, not columns. Orchestration chats stay in the sidebar. Do not invent status.";
3615
+ var HOME_BOARD_AGENT_HINT = "Home is a Kanban of worktrees (one card per checkout; sibling chat tabs nest as inner cards). Do not create a second worktree for a ticket, PR, or named branch that already has a live checkout \u2014 create_thread / start_board_card return that thread (alreadyStarted). Creating from the default branch still opens a new isolated worktree. Columns are the path to merge: New (no PR) \u2192 Draft (draft PR) \u2192 Review (open PR) \u2192 Merged. ownership=mine is PRs you authored (or WIP with no PR); ownership=reviewing is someone else's PR (or a review-requested checkout). Viewer login comes from gh, not a setting. Archive removes the card to Settings \u2192 History. Queued/running are activity on the card, not columns. Orchestration chats stay in the sidebar. Do not invent status.";
3580
3616
 
3581
3617
  // src/threads/create.ts
3582
3618
  function persistCreateAttachments(worktreePath, attachments) {
@@ -3709,6 +3745,7 @@ async function createThread(input, _onSetupLine) {
3709
3745
  }
3710
3746
  let prUrl = null;
3711
3747
  let prTitle = null;
3748
+ let prAuthorLogin2 = null;
3712
3749
  if (sourceType === "pr") {
3713
3750
  const num = Number(input.sourceRef.replace(/^#/, ""));
3714
3751
  if (!Number.isFinite(num)) throw new Error(`Invalid PR number: ${input.sourceRef}`);
@@ -3724,6 +3761,7 @@ async function createThread(input, _onSetupLine) {
3724
3761
  if (reusedPr) return reusedPr;
3725
3762
  sourceIsFork = pr.isCrossRepository;
3726
3763
  prUrl = pr.url;
3764
+ prAuthorLogin2 = pr.author?.login?.trim() || null;
3727
3765
  const localFetchBranch = `sideboard-pr-${pr.number}`;
3728
3766
  await fetchPrHead(repoPath, pr.number, localFetchBranch);
3729
3767
  sourceRef = localFetchBranch;
@@ -3746,6 +3784,7 @@ async function createThread(input, _onSetupLine) {
3746
3784
  if (existing.url) {
3747
3785
  prUrl = existing.url;
3748
3786
  prTitle = existing.title;
3787
+ prAuthorLogin2 = existing.author?.login?.trim() || null;
3749
3788
  }
3750
3789
  }
3751
3790
  }
@@ -3780,14 +3819,15 @@ async function createThread(input, _onSetupLine) {
3780
3819
  parentThreadId: input.parentThreadId ?? null,
3781
3820
  status: "idle",
3782
3821
  prUrl,
3783
- prTitle
3822
+ prTitle,
3823
+ prAuthorLogin: prAuthorLogin2
3784
3824
  });
3785
3825
  writeThread(thread);
3786
3826
  await ensureWorkspace(repoPath);
3787
3827
  return readThread(thread.id) ?? thread;
3788
3828
  }
3789
3829
  async function listLinearIssues(agent, repoPath) {
3790
- const { getAdapter: getAdapter2 } = await import("./agents-544IX5KA.js");
3830
+ const { getAdapter: getAdapter2 } = await import("./agents-2UD26PUT.js");
3791
3831
  await requireAgent(agent, { requireLinear: true });
3792
3832
  const adapter = getAdapter2(agent);
3793
3833
  if (!adapter.listLinearIssues) {
@@ -4209,7 +4249,7 @@ async function adoptThread(input) {
4209
4249
  messages: input.messages ?? []
4210
4250
  });
4211
4251
  writeThread(thread);
4212
- const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-ULHYXM4Y.js");
4252
+ const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-J3M3IPR3.js");
4213
4253
  await ensureWorkspace2(repoPath);
4214
4254
  const { ensureWorktreeSideboardIgnored: ensureWorktreeSideboardIgnored2 } = await import("./worktree-exclude-X54WSOXM.js");
4215
4255
  await ensureWorktreeSideboardIgnored2(input.worktreePath);
@@ -6691,7 +6731,7 @@ function formatScheduledPrompt(name, prompt) {
6691
6731
  ${prompt}`;
6692
6732
  }
6693
6733
  async function defaultDeps() {
6694
- const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-GDKEVLFK.js");
6734
+ const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-HOMNNKMT.js");
6695
6735
  const orch = getOrchestrator2();
6696
6736
  return {
6697
6737
  findThread: (id) => findThreadByRef(id),
@@ -6805,6 +6845,11 @@ function isPidAlive(pid) {
6805
6845
  return false;
6806
6846
  }
6807
6847
  }
6848
+ function sameLoginList(a, b) {
6849
+ const left = [...a ?? []].map((s) => s.trim().toLowerCase()).filter(Boolean).sort();
6850
+ const right = [...b ?? []].map((s) => s.trim().toLowerCase()).filter(Boolean).sort();
6851
+ return left.length === right.length && left.every((login, i) => login === right[i]);
6852
+ }
6808
6853
  async function waitForPidExit(pid, timeoutMs) {
6809
6854
  const start = Date.now();
6810
6855
  while (isPidAlive(pid)) {
@@ -6813,6 +6858,10 @@ async function waitForPidExit(pid, timeoutMs) {
6813
6858
  }
6814
6859
  return true;
6815
6860
  }
6861
+ function resolveSendFollowUp(thread, requested) {
6862
+ if (requested === "steer" || requested === "queue") return requested;
6863
+ return isOrchestratorThread(thread) ? followUpBehavior() : "queue";
6864
+ }
6816
6865
  var STALE_AGENT_PID_WAIT_MS = 2500;
6817
6866
  function writeLiveStatus(threadId, status, lastError) {
6818
6867
  const latest = readThread(threadId);
@@ -7278,13 +7327,13 @@ var Orchestrator = class {
7278
7327
  if (thread.status === "archived") {
7279
7328
  throw new Error(`Thread is archived: ${thread.id}`);
7280
7329
  }
7281
- const followUp = opts?.followUp === "steer" ? "steer" : "queue";
7282
7330
  let shouldSteer = false;
7283
7331
  const sent = await withThreadLock(thread.id, async () => {
7284
7332
  const current = this.requireThread(thread.id);
7285
7333
  if (current.status === "archived") {
7286
7334
  throw new Error(`Thread is archived: ${thread.id}`);
7287
7335
  }
7336
+ const followUp = resolveSendFollowUp(current, opts?.followUp);
7288
7337
  const queue = [...current.queue, prompt];
7289
7338
  this.crashContinued.delete(thread.id);
7290
7339
  this.jobContinueCount.delete(thread.id);
@@ -8450,6 +8499,14 @@ var Orchestrator = class {
8450
8499
  if (nextState && nextState !== prevState) patch.prState = nextState;
8451
8500
  const nextDraft = Boolean(meta.isDraft) && nextState !== "MERGED" && nextState !== "CLOSED";
8452
8501
  if (nextDraft !== Boolean(thread.prIsDraft)) patch.prIsDraft = nextDraft;
8502
+ const nextAuthor = meta.authorLogin?.trim() || "";
8503
+ if (nextAuthor && nextAuthor !== (thread.prAuthorLogin ?? "").trim()) {
8504
+ patch.prAuthorLogin = nextAuthor;
8505
+ }
8506
+ const nextReviewers = meta.reviewerLogins ?? [];
8507
+ if (!sameLoginList(nextReviewers, thread.prReviewerLogins)) {
8508
+ patch.prReviewerLogins = nextReviewers;
8509
+ }
8453
8510
  if (thread.skipAutoArchiveOnMerge && nextState && nextState !== "MERGED" && nextState !== "CLOSED") {
8454
8511
  patch.skipAutoArchiveOnMerge = false;
8455
8512
  }
@@ -8477,6 +8534,14 @@ var Orchestrator = class {
8477
8534
  const sibPatch = { prState: "MERGED", prIsDraft: false };
8478
8535
  if (meta.url && meta.url !== t.prUrl) sibPatch.prUrl = meta.url;
8479
8536
  if (meta.title && meta.title !== t.prTitle) sibPatch.prTitle = meta.title;
8537
+ const sibAuthor = meta.authorLogin?.trim() || "";
8538
+ if (sibAuthor && sibAuthor !== (t.prAuthorLogin ?? "").trim()) {
8539
+ sibPatch.prAuthorLogin = sibAuthor;
8540
+ }
8541
+ const sibReviewers = meta.reviewerLogins ?? [];
8542
+ if (!sameLoginList(sibReviewers, t.prReviewerLogins)) {
8543
+ sibPatch.prReviewerLogins = sibReviewers;
8544
+ }
8480
8545
  if (Object.keys(sibPatch).length > 0) updateThread(t.id, sibPatch);
8481
8546
  }
8482
8547
  for (const t of siblings) {
@@ -8777,7 +8842,7 @@ var Orchestrator = class {
8777
8842
  this.emit({ type: "status_changed", threadId: archived.id, status: "archived" });
8778
8843
  if (thread.repoPath && !isGlobalRepoPath(thread.repoPath)) {
8779
8844
  try {
8780
- const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-ULHYXM4Y.js");
8845
+ const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-J3M3IPR3.js");
8781
8846
  await ensureWorkspace2(thread.repoPath);
8782
8847
  } catch {
8783
8848
  }
@@ -8831,7 +8896,7 @@ var Orchestrator = class {
8831
8896
  `Cowboy checkout missing: ${thread.worktreePath}. Re-add the project folder, then restore.`
8832
8897
  );
8833
8898
  }
8834
- const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-UTDBQXSS.js");
8899
+ const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-LPWTX2NA.js");
8835
8900
  const slug = thread.worktreePath.split("/").pop();
8836
8901
  const dest = thread.worktreePath;
8837
8902
  await withRepoGitLock(thread.repoPath, async () => {
@@ -8941,7 +9006,7 @@ async function startOrchestration(opts) {
8941
9006
  sourceRef: "default",
8942
9007
  ...createOpts
8943
9008
  }).catch(async () => {
8944
- const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-UTDBQXSS.js");
9009
+ const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-LPWTX2NA.js");
8945
9010
  const repo = await resolveRepoRoot2(repoPath);
8946
9011
  const def = await resolveDefaultBranch2(repo);
8947
9012
  return orch.createThread({
@@ -8951,7 +9016,7 @@ async function startOrchestration(opts) {
8951
9016
  repoPath: repo
8952
9017
  });
8953
9018
  });
8954
- const { updateThread: upd } = await import("./thread-store-KBFBHT5G.js");
9019
+ const { updateThread: upd } = await import("./thread-store-RXXNSRVO.js");
8955
9020
  const updated = upd(thread.id, {
8956
9021
  sourceType: "orchestration",
8957
9022
  sourceRef: goal
@@ -9195,6 +9260,7 @@ export {
9195
9260
  LIVE_TURN_SPAWN_GRACE_MS,
9196
9261
  isPidAlive,
9197
9262
  waitForPidExit,
9263
+ resolveSendFollowUp,
9198
9264
  Orchestrator,
9199
9265
  getOrchestrator,
9200
9266
  startOrchestration,
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  isOrchestratorThread
3
- } from "./chunk-3ZFGZ7RT.js";
3
+ } from "./chunk-7T5XKNOF.js";
4
4
  import {
5
5
  codexUnattendedGitConfigArgs,
6
6
  mergeAgentGitAuthEnv,
7
7
  resolveAgentGitAuthEnv,
8
8
  resolveCodexGitWritableRoots
9
- } from "./chunk-7JIYKYLL.js";
9
+ } from "./chunk-WXKXSZN4.js";
10
10
  import {
11
11
  applyConnectedTeamToCli,
12
12
  brightsyMcpServerName,
@@ -1898,7 +1898,7 @@ var claudeAdapter = {
1898
1898
  );
1899
1899
  }
1900
1900
  const mode = permissionMode(thread);
1901
- const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-3HIWNQ3B.js");
1901
+ const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-2FQU62S2.js");
1902
1902
  const isOrchestrator = isOrchestratorThread2(thread);
1903
1903
  const injectedServers = await buildInjectedMcpServers({
1904
1904
  includeSideboard: true,