@sideboard-ai/core 0.1.316 → 0.1.317

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 (33) hide show
  1. package/dist/{agents-Y3M3EKLY.js → agents-BJVSYC6Y.js} +4 -4
  2. package/dist/{agents-5XJ7EHGU.js → agents-KABJUDPI.js} +4 -4
  3. package/dist/{chunk-ATSZXRFQ.js → chunk-4XZJYBO2.js} +5 -34
  4. package/dist/{chunk-5CTG5W7S.js → chunk-A46CIARU.js} +1 -1
  5. package/dist/{chunk-PN32Z4JL.js → chunk-A6C67DY5.js} +2 -2
  6. package/dist/{chunk-7BLIY2DD.js → chunk-BXTISNKW.js} +15 -15
  7. package/dist/{chunk-FVTR54LY.js → chunk-GH7UMULC.js} +4 -4
  8. package/dist/{chunk-U35AHE2P.js → chunk-HOLB6ZFZ.js} +33 -2
  9. package/dist/{chunk-DNWO6PQJ.js → chunk-NRSC4N5X.js} +5 -34
  10. package/dist/{chunk-GFM63DTU.js → chunk-PX324N7P.js} +2 -2
  11. package/dist/{chunk-4ISF5XUA.js → chunk-U53JICJ2.js} +16 -16
  12. package/dist/{chunk-NKVNHBDB.js → chunk-XWUDFLBX.js} +3 -3
  13. package/dist/{chunk-CHUPIJP7.js → chunk-YEIHCSZS.js} +63 -2
  14. package/dist/{chunk-BPBDGJ43.js → chunk-YN6XONV5.js} +1 -1
  15. package/dist/{conductor-NZ4V5CJX.js → conductor-NIUBJLTS.js} +4 -4
  16. package/dist/{conductor-CFLBKVHJ.js → conductor-TP2NA44I.js} +4 -4
  17. package/dist/{coordinator-prompt-HUZC4DZ2.js → coordinator-prompt-3CT3D5UM.js} +3 -3
  18. package/dist/{coordinator-prompt-SPOYUZG5.js → coordinator-prompt-FQC2SZPP.js} +3 -3
  19. package/dist/{global-workspace-3NNDDTFD.js → global-workspace-72K6D354.js} +3 -3
  20. package/dist/{global-workspace-SK4JQBPN.js → global-workspace-BUWMRNW5.js} +3 -3
  21. package/dist/index.cjs +67 -36
  22. package/dist/index.js +12 -11
  23. package/dist/mcp/run-stdio.cjs +36 -34
  24. package/dist/mcp/run-stdio.js +6 -6
  25. package/dist/{orchestrator-KXEPWTG5.js → orchestrator-E72HYGTB.js} +6 -6
  26. package/dist/{orchestrator-7342RGRU.js → orchestrator-N54V3B76.js} +6 -6
  27. package/dist/{thread-store-5OF6M6VZ.js → thread-store-7BBA63KV.js} +1 -1
  28. package/dist/{thread-store-GOVVXQV2.js → thread-store-PLNIWFZ4.js} +1 -1
  29. package/dist/{workspaces-EYNZDL45.js → workspaces-2V5UYPYC.js} +3 -3
  30. package/dist/{workspaces-52L6NZ3P.js → workspaces-GAUHXBUL.js} +3 -3
  31. package/dist/{worktree-BP5ICYQ2.js → worktree-6FUQ7FEF.js} +2 -2
  32. package/dist/{worktree-UCOSAI7J.js → worktree-XJKLDYOL.js} +2 -2
  33. package/package.json +1 -1
@@ -37,7 +37,7 @@ import {
37
37
  planModeTurnInstruction,
38
38
  resolveCursorModelId,
39
39
  resolveQuotaFallbackAgent
40
- } from "./chunk-NKVNHBDB.js";
40
+ } from "./chunk-XWUDFLBX.js";
41
41
  import "./chunk-HH3VVTEC.js";
42
42
  import "./chunk-7Q327QF2.js";
43
43
  import {
@@ -52,9 +52,9 @@ import {
52
52
  resolveLoginCommand,
53
53
  whichOnPath
54
54
  } from "./chunk-NXNNYY3Q.js";
55
- import "./chunk-GFM63DTU.js";
56
- import "./chunk-BPBDGJ43.js";
57
- import "./chunk-CHUPIJP7.js";
55
+ import "./chunk-PX324N7P.js";
56
+ import "./chunk-YN6XONV5.js";
57
+ import "./chunk-YEIHCSZS.js";
58
58
  import "./chunk-2P4XKWV2.js";
59
59
  import "./chunk-RSA47QYR.js";
60
60
  import "./chunk-JAT3JFOS.js";
@@ -46,7 +46,7 @@ import {
46
46
  resolveCursorSdkRoot,
47
47
  resolveQuotaFallbackAgent,
48
48
  turnCostUsdFromCursorUsage
49
- } from "./chunk-FVTR54LY.js";
49
+ } from "./chunk-GH7UMULC.js";
50
50
  import {
51
51
  getAgentSetupInfo,
52
52
  installAgent,
@@ -63,8 +63,8 @@ import "./chunk-V5BTGQ6M.js";
63
63
  import "./chunk-E63AM3PW.js";
64
64
  import "./chunk-2GPQZZLY.js";
65
65
  import "./chunk-I5TESHDN.js";
66
- import "./chunk-PN32Z4JL.js";
67
- import "./chunk-5CTG5W7S.js";
66
+ import "./chunk-A6C67DY5.js";
67
+ import "./chunk-A46CIARU.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-J2LNLI4S.js";
91
- import "./chunk-U35AHE2P.js";
91
+ import "./chunk-HOLB6ZFZ.js";
92
92
  import "./chunk-WMZIANPV.js";
93
93
  import "./chunk-KGZBYWZ3.js";
94
94
  import "./chunk-WOU343SI.js";
@@ -8,12 +8,13 @@ import {
8
8
  isGlobalThread,
9
9
  isOrchestratorThread,
10
10
  isSlackCoordinatorThread
11
- } from "./chunk-GFM63DTU.js";
11
+ } from "./chunk-PX324N7P.js";
12
12
  import {
13
13
  mergeAgentGitAuthEnv,
14
14
  resolveAgentGitAuthEnv
15
- } from "./chunk-BPBDGJ43.js";
15
+ } from "./chunk-YN6XONV5.js";
16
16
  import {
17
+ REVIEW_TAB_TITLE,
17
18
  allocateTeamName,
18
19
  createEmptyThread,
19
20
  findThreadByRef,
@@ -23,7 +24,7 @@ import {
23
24
  updateThread,
24
25
  worktreeNameFromPath,
25
26
  writeThread
26
- } from "./chunk-CHUPIJP7.js";
27
+ } from "./chunk-YEIHCSZS.js";
27
28
  import {
28
29
  ensureWorktreeSideboardIgnored
29
30
  } from "./chunk-2P4XKWV2.js";
@@ -787,32 +788,6 @@ function forkChatTab(input) {
787
788
  return tab;
788
789
  }
789
790
 
790
- // src/review/review-write-gate.ts
791
- var REVIEW_TAB_TITLE = "Review";
792
- function hasLiveReviewSibling(thread, siblings = []) {
793
- const selfId = thread.id;
794
- return siblings.some(
795
- (t) => t.id !== selfId && t.status !== "archived" && t.title.trim() === REVIEW_TAB_TITLE
796
- );
797
- }
798
- function isReviewWriteGatedThread(thread, siblings) {
799
- if (thread.sourceType === "pr" || thread.title.trim() === REVIEW_TAB_TITLE) {
800
- return true;
801
- }
802
- return hasLiveReviewSibling(thread, siblings);
803
- }
804
- function formatReviewWriteGateDirective() {
805
- return [
806
- "Review writes are public. The PR or ticket author sees GitHub/Linear/AbleTime comments, ticket updates, and submitted reviews immediately \u2014 a draft will confuse them.",
807
- "Write the recommendation in chat so the user can work through the feedback first. Do not call github_comment, linear_comment, abletime_comment, github_update_issue, linear_update_issue, abletime_update_task, or run `gh pr review` / `gh pr comment`, until they type a next step that asks you to post.",
808
- "After the review is in chat, stop. Do not call ask_user. The user needs time to read and will type the next steps. If they already asked you to post a specific comment or update in this turn, that is confirmation.",
809
- "Do not request reviewers, change labels, or assign yourself unless they asked \u2014 those also notify the author."
810
- ].join("\n");
811
- }
812
- function formatReviewWriteGateReminder() {
813
- return "Review writes: keep the review in chat. Do not ask_user after it \u2014 they read and type next steps. Do not github_comment / linear_comment / *_update_* / `gh pr review` on the PR or ticket until they ask. Authors see those immediately.";
814
- }
815
-
816
791
  // src/review/review-request-template.ts
817
792
  var REVIEW_REQUEST_TEMPLATE = `# Review guidelines:
818
793
 
@@ -1833,7 +1808,7 @@ var PORT_RANGE_SIZE = 10;
1833
1808
  var RECLAIM_RETRY_DELAY_MS = 40;
1834
1809
  var RECLAIM_TRIES = 8;
1835
1810
  async function killReclaimable(ports, worktreePath, signal) {
1836
- const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-CFLBKVHJ.js");
1811
+ const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-TP2NA44I.js");
1837
1812
  if (worktreePath) killStaleWorktreeListeners2(ports, worktreePath, signal);
1838
1813
  else killListenersOnPorts2(ports);
1839
1814
  }
@@ -2584,10 +2559,6 @@ export {
2584
2559
  buildForkTranscriptAttachment,
2585
2560
  createChatTab,
2586
2561
  forkChatTab,
2587
- REVIEW_TAB_TITLE,
2588
- isReviewWriteGatedThread,
2589
- formatReviewWriteGateDirective,
2590
- formatReviewWriteGateReminder,
2591
2562
  REVIEW_REQUEST_TEMPLATE,
2592
2563
  REVIEW_SKILL_PATH,
2593
2564
  REVIEW_SKILL_NAME,
@@ -26,7 +26,7 @@ import {
26
26
  normalizeTakenSlug,
27
27
  normalizeWorktreePath,
28
28
  takenSlugsFromThread
29
- } from "./chunk-U35AHE2P.js";
29
+ } from "./chunk-HOLB6ZFZ.js";
30
30
  import {
31
31
  worktreesRoot
32
32
  } from "./chunk-WOU343SI.js";
@@ -5,7 +5,7 @@ import {
5
5
  ensureGhPreferOrigin,
6
6
  resolveGithubRepoSlug,
7
7
  resolveRepoRoot
8
- } from "./chunk-5CTG5W7S.js";
8
+ } from "./chunk-A46CIARU.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-U35AHE2P.js";
34
+ } from "./chunk-HOLB6ZFZ.js";
35
35
  import {
36
36
  appDataDir,
37
37
  globalAgentCwd,
@@ -27,9 +27,8 @@ import {
27
27
  parseSessionQuotaResetAt,
28
28
  planModeTurnInstruction,
29
29
  resolveQuotaFallbackAgent
30
- } from "./chunk-FVTR54LY.js";
30
+ } from "./chunk-GH7UMULC.js";
31
31
  import {
32
- REVIEW_TAB_TITLE,
33
32
  applyWorktreePkgCacheEnv,
34
33
  askBlockStillWaiting,
35
34
  buildBrightsySessionSeed,
@@ -41,13 +40,10 @@ import {
41
40
  extractPendingPlanQuestions,
42
41
  forkChatTab,
43
42
  forkMessageSlice,
44
- formatReviewWriteGateDirective,
45
- formatReviewWriteGateReminder,
46
43
  getDefaultRunScript,
47
44
  getRunMode,
48
45
  isAskUserToolName,
49
46
  isJobContinuePrompt,
50
- isReviewWriteGatedThread,
51
47
  isWorktreeRunProcessKey,
52
48
  killDetachedRunTree,
53
49
  killListenersOnPorts,
@@ -69,7 +65,7 @@ import {
69
65
  worktreeDevProcessKey,
70
66
  worktreeRunProcessKey,
71
67
  worktreeSetupProcessKey
72
- } from "./chunk-DNWO6PQJ.js";
68
+ } from "./chunk-NRSC4N5X.js";
73
69
  import {
74
70
  applyAgentEvent,
75
71
  clipAgentEventForPaint,
@@ -121,7 +117,7 @@ import {
121
117
  stageAbsolutePathsAsAttachments,
122
118
  stageBuffersAsAttachments,
123
119
  syncWorkspacesFromThreads
124
- } from "./chunk-PN32Z4JL.js";
120
+ } from "./chunk-A6C67DY5.js";
125
121
  import {
126
122
  addPrStackLayer,
127
123
  allocateTeamSlug,
@@ -163,7 +159,7 @@ import {
163
159
  resolveRepoRoot,
164
160
  switchWorktreeBranch,
165
161
  withRepoGitLock
166
- } from "./chunk-5CTG5W7S.js";
162
+ } from "./chunk-A46CIARU.js";
167
163
  import {
168
164
  clearStaleIndexLocks,
169
165
  enrichPathWithNpmGlobalBin,
@@ -220,12 +216,16 @@ import {
220
216
  resolveAccountForThread
221
217
  } from "./chunk-J2LNLI4S.js";
222
218
  import {
219
+ REVIEW_TAB_TITLE,
223
220
  agentNicknameFromWorktreePath,
224
221
  appendMessage,
225
222
  createEmptyThread,
226
223
  deleteThreadRecord,
227
224
  findThreadByRef,
225
+ formatReviewWriteGateDirective,
226
+ formatReviewWriteGateReminder,
228
227
  isPlaceholderBranch,
228
+ isReviewWriteGatedThread,
229
229
  isWorktreeIdentityTitle,
230
230
  listThreads,
231
231
  normalizeWorkspaceTags,
@@ -242,7 +242,7 @@ import {
242
242
  worktreeNameFromPath,
243
243
  worktreeSlugForTicket,
244
244
  writeThread
245
- } from "./chunk-U35AHE2P.js";
245
+ } from "./chunk-HOLB6ZFZ.js";
246
246
  import {
247
247
  annotateDevAccessRuns,
248
248
  appDataDir,
@@ -507,9 +507,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
507
507
  `Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
508
508
  );
509
509
  }
510
- const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-SK4JQBPN.js");
510
+ const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-BUWMRNW5.js");
511
511
  if (isGlobalThread2(thread)) {
512
- const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-HUZC4DZ2.js");
512
+ const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-3CT3D5UM.js");
513
513
  ensureGlobalCoordinatorCwd2(
514
514
  isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
515
515
  );
@@ -3564,7 +3564,7 @@ async function adoptThread(input) {
3564
3564
  messages: input.messages ?? []
3565
3565
  });
3566
3566
  writeThread(thread);
3567
- const { addWorkspace: addWorkspace2 } = await import("./workspaces-EYNZDL45.js");
3567
+ const { addWorkspace: addWorkspace2 } = await import("./workspaces-2V5UYPYC.js");
3568
3568
  await addWorkspace2(repoPath);
3569
3569
  const { ensureWorktreeSideboardIgnored } = await import("./worktree-exclude-5N2KTYIT.js");
3570
3570
  await ensureWorktreeSideboardIgnored(input.worktreePath);
@@ -6458,7 +6458,7 @@ function formatScheduledPrompt(name, prompt) {
6458
6458
  ${prompt}`;
6459
6459
  }
6460
6460
  async function defaultDeps() {
6461
- const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-7342RGRU.js");
6461
+ const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-N54V3B76.js");
6462
6462
  const orch = getOrchestrator2();
6463
6463
  return {
6464
6464
  findThread: (id) => findThreadByRef(id),
@@ -9340,7 +9340,7 @@ async function startOrchestration(opts) {
9340
9340
  sourceRef: "default",
9341
9341
  ...createOpts
9342
9342
  }).catch(async () => {
9343
- const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-UCOSAI7J.js");
9343
+ const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-XJKLDYOL.js");
9344
9344
  const repo = await resolveRepoRoot2(repoPath);
9345
9345
  const def = await resolveDefaultBranch2(repo);
9346
9346
  return orch.createThread({
@@ -9350,7 +9350,7 @@ async function startOrchestration(opts) {
9350
9350
  repoPath: repo
9351
9351
  });
9352
9352
  });
9353
- const { updateThread: upd } = await import("./thread-store-GOVVXQV2.js");
9353
+ const { updateThread: upd } = await import("./thread-store-PLNIWFZ4.js");
9354
9354
  const updated = upd(thread.id, {
9355
9355
  sourceType: "orchestration",
9356
9356
  sourceRef: goal
@@ -24,13 +24,13 @@ import {
24
24
  } from "./chunk-I5TESHDN.js";
25
25
  import {
26
26
  isOrchestratorThread
27
- } from "./chunk-PN32Z4JL.js";
27
+ } from "./chunk-A6C67DY5.js";
28
28
  import {
29
29
  codexUnattendedGitConfigArgs,
30
30
  mergeAgentGitAuthEnv,
31
31
  resolveAgentGitAuthEnv,
32
32
  resolveCodexGitWritableRoots
33
- } from "./chunk-5CTG5W7S.js";
33
+ } from "./chunk-A46CIARU.js";
34
34
  import {
35
35
  githubAgentAuthReady,
36
36
  npmGlobalNodeModules,
@@ -57,7 +57,7 @@ import {
57
57
  CLAUDE_POSTHOG_CONNECTOR_ALLOWED_TOOLS,
58
58
  CLAUDE_PRINT_BG_WAIT_CEILING_MS,
59
59
  mcpAllowToolsFromNames
60
- } from "./chunk-U35AHE2P.js";
60
+ } from "./chunk-HOLB6ZFZ.js";
61
61
  import {
62
62
  appDataDir
63
63
  } from "./chunk-WOU343SI.js";
@@ -2916,7 +2916,7 @@ var claudeAdapter = {
2916
2916
  );
2917
2917
  }
2918
2918
  const mode = permissionMode(thread);
2919
- const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-SK4JQBPN.js");
2919
+ const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-BUWMRNW5.js");
2920
2920
  const isOrchestrator = isOrchestratorThread2(thread);
2921
2921
  const rpc = worktreeAgentRpc(isOrchestrator);
2922
2922
  const injectedServers = await buildInjectedMcpServers({
@@ -15,6 +15,32 @@ import {
15
15
  // src/store/thread-store.ts
16
16
  import { randomUUID } from "crypto";
17
17
 
18
+ // src/review/review-write-gate.ts
19
+ var REVIEW_TAB_TITLE = "Review";
20
+ function hasLiveReviewSibling(thread, siblings = []) {
21
+ const selfId = thread.id;
22
+ return siblings.some(
23
+ (t) => t.id !== selfId && t.status !== "archived" && t.title.trim() === REVIEW_TAB_TITLE
24
+ );
25
+ }
26
+ function isReviewWriteGatedThread(thread, siblings) {
27
+ if (thread.sourceType === "pr" || thread.title.trim() === REVIEW_TAB_TITLE) {
28
+ return true;
29
+ }
30
+ return hasLiveReviewSibling(thread, siblings);
31
+ }
32
+ function formatReviewWriteGateDirective() {
33
+ return [
34
+ "Review writes are public. The PR or ticket author sees GitHub/Linear/AbleTime comments, ticket updates, and submitted reviews immediately \u2014 a draft will confuse them.",
35
+ "Write the recommendation in chat so the user can work through the feedback first. Do not call github_comment, linear_comment, abletime_comment, github_update_issue, linear_update_issue, abletime_update_task, or run `gh pr review` / `gh pr comment`, until they type a next step that asks you to post.",
36
+ "After the review is in chat, stop. Do not call ask_user. The user needs time to read and will type the next steps. If they already asked you to post a specific comment or update in this turn, that is confirmation.",
37
+ "Do not request reviewers, change labels, or assign yourself unless they asked \u2014 those also notify the author."
38
+ ].join("\n");
39
+ }
40
+ function formatReviewWriteGateReminder() {
41
+ return "Review writes: keep the review in chat. Do not ask_user after it \u2014 they read and type next steps. Do not github_comment / linear_comment / *_update_* / `gh pr review` on the PR or ticket until they ask. Authors see those immediately.";
42
+ }
43
+
18
44
  // src/git/team-meta.ts
19
45
  var SOCCER_TEAM_META = {
20
46
  "aalborg": { location: "Aalborg, Denmark", league: "Danish Superliga" },
@@ -875,11 +901,12 @@ function branchDisplayLabel(branchName, worktreePath) {
875
901
  }
876
902
  function taskPurposeTitle(title) {
877
903
  const trimmed = title?.trim() ?? "";
878
- if (!trimmed || teamSlugFromName(trimmed)) return null;
904
+ if (!trimmed || teamSlugFromName(trimmed) || trimmed === REVIEW_TAB_TITLE) return null;
879
905
  return trimmed;
880
906
  }
881
907
  function threadDisplayLabel(thread) {
882
- if (thread.userSetTitle && thread.title?.trim()) return thread.title.trim();
908
+ const titled = thread.title?.trim() ?? "";
909
+ if (thread.userSetTitle && titled && titled !== REVIEW_TAB_TITLE) return titled;
883
910
  if (thread.prTitle?.trim()) return thread.prTitle.trim();
884
911
  if (isPlaceholderBranch(thread.branchName, thread.worktreePath)) {
885
912
  const purpose = taskPurposeTitle(thread.title);
@@ -1285,6 +1312,10 @@ function findThreadByRef(ref) {
1285
1312
  }
1286
1313
 
1287
1314
  export {
1315
+ REVIEW_TAB_TITLE,
1316
+ isReviewWriteGatedThread,
1317
+ formatReviewWriteGateDirective,
1318
+ formatReviewWriteGateReminder,
1288
1319
  FAMOUS_SOCCER_TEAMS,
1289
1320
  lookupSoccerTeam,
1290
1321
  teamSlugFromName,
@@ -11,11 +11,11 @@ import {
11
11
  isGlobalThread,
12
12
  isOrchestratorThread,
13
13
  isSlackCoordinatorThread
14
- } from "./chunk-PN32Z4JL.js";
14
+ } from "./chunk-A6C67DY5.js";
15
15
  import {
16
16
  mergeAgentGitAuthEnv,
17
17
  resolveAgentGitAuthEnv
18
- } from "./chunk-5CTG5W7S.js";
18
+ } from "./chunk-A46CIARU.js";
19
19
  import {
20
20
  ATTACHMENTS_DIR,
21
21
  DETACHED_JOBS_DIR,
@@ -37,6 +37,7 @@ import {
37
37
  stripNestedElectronEnv
38
38
  } from "./chunk-WWUABK6B.js";
39
39
  import {
40
+ REVIEW_TAB_TITLE,
40
41
  allocateTeamName,
41
42
  createEmptyThread,
42
43
  findThreadByRef,
@@ -46,7 +47,7 @@ import {
46
47
  updateThread,
47
48
  worktreeNameFromPath,
48
49
  writeThread
49
- } from "./chunk-U35AHE2P.js";
50
+ } from "./chunk-HOLB6ZFZ.js";
50
51
  import {
51
52
  findConventionSetup,
52
53
  loadRepoSettings,
@@ -762,32 +763,6 @@ function forkChatTab(input) {
762
763
  return tab;
763
764
  }
764
765
 
765
- // src/review/review-write-gate.ts
766
- var REVIEW_TAB_TITLE = "Review";
767
- function hasLiveReviewSibling(thread, siblings = []) {
768
- const selfId = thread.id;
769
- return siblings.some(
770
- (t) => t.id !== selfId && t.status !== "archived" && t.title.trim() === REVIEW_TAB_TITLE
771
- );
772
- }
773
- function isReviewWriteGatedThread(thread, siblings) {
774
- if (thread.sourceType === "pr" || thread.title.trim() === REVIEW_TAB_TITLE) {
775
- return true;
776
- }
777
- return hasLiveReviewSibling(thread, siblings);
778
- }
779
- function formatReviewWriteGateDirective() {
780
- return [
781
- "Review writes are public. The PR or ticket author sees GitHub/Linear/AbleTime comments, ticket updates, and submitted reviews immediately \u2014 a draft will confuse them.",
782
- "Write the recommendation in chat so the user can work through the feedback first. Do not call github_comment, linear_comment, abletime_comment, github_update_issue, linear_update_issue, abletime_update_task, or run `gh pr review` / `gh pr comment`, until they type a next step that asks you to post.",
783
- "After the review is in chat, stop. Do not call ask_user. The user needs time to read and will type the next steps. If they already asked you to post a specific comment or update in this turn, that is confirmation.",
784
- "Do not request reviewers, change labels, or assign yourself unless they asked \u2014 those also notify the author."
785
- ].join("\n");
786
- }
787
- function formatReviewWriteGateReminder() {
788
- return "Review writes: keep the review in chat. Do not ask_user after it \u2014 they read and type next steps. Do not github_comment / linear_comment / *_update_* / `gh pr review` on the PR or ticket until they ask. Authors see those immediately.";
789
- }
790
-
791
766
  // src/review/review-request-template.ts
792
767
  var REVIEW_REQUEST_TEMPLATE = `# Review guidelines:
793
768
 
@@ -1703,7 +1678,7 @@ var PORT_RANGE_SIZE = 10;
1703
1678
  var RECLAIM_RETRY_DELAY_MS = 40;
1704
1679
  var RECLAIM_TRIES = 8;
1705
1680
  async function killReclaimable(ports, worktreePath, signal) {
1706
- const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-NZ4V5CJX.js");
1681
+ const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-NIUBJLTS.js");
1707
1682
  if (worktreePath) killStaleWorktreeListeners2(ports, worktreePath, signal);
1708
1683
  else killListenersOnPorts2(ports);
1709
1684
  }
@@ -2411,10 +2386,6 @@ export {
2411
2386
  buildForkTranscriptAttachment,
2412
2387
  createChatTab,
2413
2388
  forkChatTab,
2414
- REVIEW_TAB_TITLE,
2415
- isReviewWriteGatedThread,
2416
- formatReviewWriteGateDirective,
2417
- formatReviewWriteGateReminder,
2418
2389
  requestReview,
2419
2390
  RUN_PORTS_REL,
2420
2391
  worktreeRunPortsPath,
@@ -3,7 +3,7 @@ import {
3
3
  ensureGhPreferOrigin,
4
4
  resolveGithubRepoSlug,
5
5
  resolveRepoRoot
6
- } from "./chunk-BPBDGJ43.js";
6
+ } from "./chunk-YN6XONV5.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-CHUPIJP7.js";
15
+ } from "./chunk-YEIHCSZS.js";
16
16
  import {
17
17
  ATTACHMENTS_DIR,
18
18
  attachmentsGitignoreBody
@@ -14,9 +14,8 @@ import {
14
14
  parseSessionQuotaResetAt,
15
15
  planModeTurnInstruction,
16
16
  resolveQuotaFallbackAgent
17
- } from "./chunk-NKVNHBDB.js";
17
+ } from "./chunk-XWUDFLBX.js";
18
18
  import {
19
- REVIEW_TAB_TITLE,
20
19
  applyWorktreePkgCacheEnv,
21
20
  askBlockStillWaiting,
22
21
  buildBrightsySessionSeed,
@@ -28,13 +27,10 @@ import {
28
27
  extractPendingPlanQuestions,
29
28
  forkChatTab,
30
29
  forkMessageSlice,
31
- formatReviewWriteGateDirective,
32
- formatReviewWriteGateReminder,
33
30
  getDefaultRunScript,
34
31
  getRunMode,
35
32
  isAskUserToolName,
36
33
  isJobContinuePrompt,
37
- isReviewWriteGatedThread,
38
34
  isWorktreeRunProcessKey,
39
35
  killDetachedRunTree,
40
36
  killListenersOnPorts,
@@ -56,7 +52,7 @@ import {
56
52
  worktreeDevProcessKey,
57
53
  worktreeRunProcessKey,
58
54
  worktreeSetupProcessKey
59
- } from "./chunk-ATSZXRFQ.js";
55
+ } from "./chunk-4XZJYBO2.js";
60
56
  import {
61
57
  applyAgentEvent,
62
58
  clipAgentEventForPaint,
@@ -103,7 +99,7 @@ import {
103
99
  stageAbsolutePathsAsAttachments,
104
100
  stageBuffersAsAttachments,
105
101
  syncWorkspacesFromThreads
106
- } from "./chunk-GFM63DTU.js";
102
+ } from "./chunk-PX324N7P.js";
107
103
  import {
108
104
  addPrStackLayer,
109
105
  allocateTeamSlug,
@@ -147,14 +143,18 @@ import {
147
143
  resolveRepoRoot,
148
144
  switchWorktreeBranch,
149
145
  withRepoGitLock
150
- } from "./chunk-BPBDGJ43.js";
146
+ } from "./chunk-YN6XONV5.js";
151
147
  import {
148
+ REVIEW_TAB_TITLE,
152
149
  agentNicknameFromWorktreePath,
153
150
  appendMessage,
154
151
  createEmptyThread,
155
152
  deleteThreadRecord,
156
153
  findThreadByRef,
154
+ formatReviewWriteGateDirective,
155
+ formatReviewWriteGateReminder,
157
156
  isPlaceholderBranch,
157
+ isReviewWriteGatedThread,
158
158
  isWorktreeIdentityTitle,
159
159
  listThreads,
160
160
  normalizeWorkspaceTags,
@@ -171,7 +171,7 @@ import {
171
171
  worktreeNameFromPath,
172
172
  worktreeSlugForTicket,
173
173
  writeThread
174
- } from "./chunk-CHUPIJP7.js";
174
+ } from "./chunk-YEIHCSZS.js";
175
175
  import {
176
176
  mcpServerIdForPermission,
177
177
  mcpServerPermissionUpdate
@@ -461,9 +461,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
461
461
  `Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
462
462
  );
463
463
  }
464
- const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-3NNDDTFD.js");
464
+ const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-72K6D354.js");
465
465
  if (isGlobalThread2(thread)) {
466
- const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-SPOYUZG5.js");
466
+ const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-FQC2SZPP.js");
467
467
  ensureGlobalCoordinatorCwd2(
468
468
  isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
469
469
  );
@@ -3100,7 +3100,7 @@ async function createThread(input, _onSetupLine) {
3100
3100
  return readThread(thread.id) ?? thread;
3101
3101
  }
3102
3102
  async function listLinearIssues(agent, repoPath) {
3103
- const { getAdapter: getAdapter2 } = await import("./agents-Y3M3EKLY.js");
3103
+ const { getAdapter: getAdapter2 } = await import("./agents-BJVSYC6Y.js");
3104
3104
  await requireAgent(agent, { requireLinear: true });
3105
3105
  const adapter = getAdapter2(agent);
3106
3106
  if (!adapter.listLinearIssues) {
@@ -3877,7 +3877,7 @@ async function adoptThread(input) {
3877
3877
  messages: input.messages ?? []
3878
3878
  });
3879
3879
  writeThread(thread);
3880
- const { addWorkspace: addWorkspace2 } = await import("./workspaces-52L6NZ3P.js");
3880
+ const { addWorkspace: addWorkspace2 } = await import("./workspaces-GAUHXBUL.js");
3881
3881
  await addWorkspace2(repoPath);
3882
3882
  const { ensureWorktreeSideboardIgnored } = await import("./worktree-exclude-RXZPTCNH.js");
3883
3883
  await ensureWorktreeSideboardIgnored(input.worktreePath);
@@ -6815,7 +6815,7 @@ function formatScheduledPrompt(name, prompt) {
6815
6815
  ${prompt}`;
6816
6816
  }
6817
6817
  async function defaultDeps() {
6818
- const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-KXEPWTG5.js");
6818
+ const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-E72HYGTB.js");
6819
6819
  const orch = getOrchestrator2();
6820
6820
  return {
6821
6821
  findThread: (id) => findThreadByRef(id),
@@ -9697,7 +9697,7 @@ async function startOrchestration(opts) {
9697
9697
  sourceRef: "default",
9698
9698
  ...createOpts
9699
9699
  }).catch(async () => {
9700
- const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-BP5ICYQ2.js");
9700
+ const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-6FUQ7FEF.js");
9701
9701
  const repo = await resolveRepoRoot2(repoPath);
9702
9702
  const def = await resolveDefaultBranch2(repo);
9703
9703
  return orch.createThread({
@@ -9707,7 +9707,7 @@ async function startOrchestration(opts) {
9707
9707
  repoPath: repo
9708
9708
  });
9709
9709
  });
9710
- const { updateThread: upd } = await import("./thread-store-5OF6M6VZ.js");
9710
+ const { updateThread: upd } = await import("./thread-store-7BBA63KV.js");
9711
9711
  const updated = upd(thread.id, {
9712
9712
  sourceType: "orchestration",
9713
9713
  sourceRef: goal
@@ -12,13 +12,13 @@ import {
12
12
  } from "./chunk-7Q327QF2.js";
13
13
  import {
14
14
  isOrchestratorThread
15
- } from "./chunk-GFM63DTU.js";
15
+ } from "./chunk-PX324N7P.js";
16
16
  import {
17
17
  codexUnattendedGitConfigArgs,
18
18
  mergeAgentGitAuthEnv,
19
19
  resolveAgentGitAuthEnv,
20
20
  resolveCodexGitWritableRoots
21
- } from "./chunk-BPBDGJ43.js";
21
+ } from "./chunk-YN6XONV5.js";
22
22
  import {
23
23
  loadBrightsyConfig
24
24
  } from "./chunk-RSA47QYR.js";
@@ -2609,7 +2609,7 @@ var claudeAdapter = {
2609
2609
  );
2610
2610
  }
2611
2611
  const mode = permissionMode(thread);
2612
- const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-3NNDDTFD.js");
2612
+ const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-72K6D354.js");
2613
2613
  const isOrchestrator = isOrchestratorThread2(thread);
2614
2614
  const rpc = worktreeAgentRpc(isOrchestrator);
2615
2615
  const injectedServers = await buildInjectedMcpServers({