@sideboard-ai/core 0.1.191 → 0.1.193

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 (68) hide show
  1. package/dist/{abletime-JFMBCSIQ.js → abletime-QHKWGTBY.js} +4 -3
  2. package/dist/{abletime-53T7G667.js → abletime-UX53JTIH.js} +4 -3
  3. package/dist/agents/cursor-runner.js +4 -4
  4. package/dist/{agents-DTPVTDB5.js → agents-MN4GSQTL.js} +19 -17
  5. package/dist/{agents-5OBZETUV.js → agents-OK5VD25T.js} +10 -8
  6. package/dist/{app-settings-663VQWUV.js → app-settings-LO7UFHQ6.js} +5 -2
  7. package/dist/{app-settings-74HBAAH7.js → app-settings-QYLNKRK4.js} +5 -2
  8. package/dist/branch-prefix-7F37FIPX.js +10 -0
  9. package/dist/branch-prefix-EVW2KHGQ.js +12 -0
  10. package/dist/{caffeinate-hold-SK2QISPE.js → caffeinate-hold-22VFDPSO.js} +2 -2
  11. package/dist/{caffeinate-hold-DBKMRZZO.js → caffeinate-hold-OK4JJ5PP.js} +2 -2
  12. package/dist/{chunk-GPSIZGEZ.js → chunk-3DX2T2KR.js} +181 -172
  13. package/dist/{chunk-HVIEYTUK.js → chunk-3OHR73VK.js} +1 -1
  14. package/dist/{chunk-VIODP5PT.js → chunk-4OVCJPVI.js} +13 -11
  15. package/dist/{chunk-UBQIELFS.js → chunk-4QJRH5DL.js} +1 -1
  16. package/dist/{chunk-AO35MGOE.js → chunk-4TYXWPAJ.js} +1 -1
  17. package/dist/chunk-64QSHOKV.js +869 -0
  18. package/dist/{chunk-FY64F2ZQ.js → chunk-7AJ7OZZF.js} +4 -4
  19. package/dist/{chunk-WLPXZFRE.js → chunk-7J72QJOM.js} +1 -1
  20. package/dist/chunk-7SNJMKD6.js +20 -0
  21. package/dist/{chunk-WXKXSZN4.js → chunk-BIKCWYRP.js} +16 -873
  22. package/dist/{chunk-J7LQVLFQ.js → chunk-BWRS6GAS.js} +19 -1
  23. package/dist/{chunk-GOZ6T3AG.js → chunk-CJFBSQIB.js} +1 -1
  24. package/dist/{chunk-GBWKMWUQ.js → chunk-EBPBGQ4P.js} +13 -13
  25. package/dist/{chunk-JTJHOYCU.js → chunk-EQNRWDLN.js} +10 -4
  26. package/dist/{chunk-5RRAKGPK.js → chunk-EQXXGOMD.js} +192 -182
  27. package/dist/{chunk-XXEIF2IL.js → chunk-HIX2VDRE.js} +13 -11
  28. package/dist/chunk-ILWQT2UN.js +55 -0
  29. package/dist/chunk-JTWKGOFI.js +23 -0
  30. package/dist/{chunk-TCQAFTSV.js → chunk-KJBYIIJU.js} +1 -1
  31. package/dist/{chunk-OKZFTOM2.js → chunk-KORE4WOF.js} +19 -1
  32. package/dist/{chunk-OLDZXO53.js → chunk-MQC2VA5U.js} +14 -14
  33. package/dist/{chunk-4M2AK3O5.js → chunk-O4BMPY5Y.js} +1 -1
  34. package/dist/chunk-PBEPPXMY.js +57 -0
  35. package/dist/{chunk-IEEAVWAP.js → chunk-PE337IM2.js} +7 -7
  36. package/dist/chunk-RCWHL4TK.js +866 -0
  37. package/dist/{chunk-EFVFB2AH.js → chunk-WFUDY6PC.js} +12 -5
  38. package/dist/{chunk-XBLN52RZ.js → chunk-XPKKCFRT.js} +9 -866
  39. package/dist/{chunk-OCQPTUR7.js → chunk-YWI3IBP2.js} +1 -1
  40. package/dist/{connected-teams-WOYCH7FR.js → connected-teams-PU4AMFNA.js} +2 -2
  41. package/dist/{connected-teams-ON2KIKQX.js → connected-teams-SYQQGCXD.js} +2 -2
  42. package/dist/{coordinator-prompt-LWKOL3AZ.js → coordinator-prompt-GXJIPWNA.js} +7 -5
  43. package/dist/{coordinator-prompt-MSC44OOM.js → coordinator-prompt-WB65HIZ3.js} +9 -7
  44. package/dist/{cursor-recover-NDMLLNYX.js → cursor-recover-DTQAUDGO.js} +2 -2
  45. package/dist/{cursor-recover-L5MD6MBO.js → cursor-recover-TXVTLAMA.js} +1 -1
  46. package/dist/github-DWROJOB7.js +11 -0
  47. package/dist/github-IIF7AQNO.js +9 -0
  48. package/dist/{global-workspace-6G5JJH2E.js → global-workspace-BZ6V6TEX.js} +7 -5
  49. package/dist/{global-workspace-XATJTV3N.js → global-workspace-MMK5UFUZ.js} +9 -7
  50. package/dist/index.cjs +332 -205
  51. package/dist/index.d.cts +53 -9
  52. package/dist/index.d.ts +53 -9
  53. package/dist/index.js +147 -136
  54. package/dist/mcp/run-stdio.cjs +316 -201
  55. package/dist/mcp/run-stdio.js +84 -85
  56. package/dist/{orchestrator-F3CXDBZB.js → orchestrator-4KI6VIFG.js} +16 -12
  57. package/dist/{orchestrator-2X6LYBQI.js → orchestrator-SFOT6Q6F.js} +15 -11
  58. package/dist/{paths-RRCLNSJB.js → paths-C2VERLAE.js} +1 -1
  59. package/dist/{paths-53TLA7VQ.js → paths-LOXCISLX.js} +1 -1
  60. package/dist/{thread-store-ZL6GDIDP.js → thread-store-CO77HV2K.js} +2 -2
  61. package/dist/{thread-store-RXXNSRVO.js → thread-store-M4B52FUS.js} +2 -2
  62. package/dist/{workspaces-LMFCRXTT.js → workspaces-ACMZMKPD.js} +7 -5
  63. package/dist/{workspaces-FWKPWSXV.js → workspaces-KPJS7GLY.js} +9 -7
  64. package/dist/{worktree-7LOSSD7G.js → worktree-6IEVF3GN.js} +15 -12
  65. package/dist/{worktree-LPWTX2NA.js → worktree-UW6DNBIE.js} +20 -17
  66. package/dist/worktree-labels-3XDS6O3U.js +22 -0
  67. package/dist/worktree-labels-PEDOJBMD.js +24 -0
  68. package/package.json +1 -1
@@ -1,5 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ import {
4
+ getGitHubStatus
5
+ } from "../chunk-PBEPPXMY.js";
3
6
  import {
4
7
  AGENT_GIT_ACTIONS,
5
8
  BOARD_COLUMN_DEFS,
@@ -30,6 +33,7 @@ import {
30
33
  readTurnLive,
31
34
  recordSlackOutboundWatch,
32
35
  requireSlackWorkspace,
36
+ resolveOrchChildFollowUp,
33
37
  resolveScheduleThreadId,
34
38
  slackApi,
35
39
  slackTokenFor,
@@ -37,7 +41,9 @@ import {
37
41
  syncBoardPins,
38
42
  updateSchedule,
39
43
  waitForDetachedJob
40
- } from "../chunk-GPSIZGEZ.js";
44
+ } from "../chunk-3DX2T2KR.js";
45
+ import "../chunk-JFOPOMK7.js";
46
+ import "../chunk-YWI3IBP2.js";
41
47
  import {
42
48
  applySystemCaEnv,
43
49
  isCursorApiKeyConfigured,
@@ -46,31 +52,12 @@ import {
46
52
  materializeSystemCaBundle,
47
53
  sideboardMcpProfile,
48
54
  trustSystemCertificates
49
- } from "../chunk-GBWKMWUQ.js";
50
- import "../chunk-HVIEYTUK.js";
51
- import "../chunk-Y4MIXGPA.js";
52
- import {
53
- commentAbleTimeTask,
54
- createAbleTimeTask,
55
- ensureAbleTimeTask,
56
- getAbleTimeOrientation,
57
- getAbleTimeTask,
58
- listAbleTimeProjects,
59
- listAbleTimeTasks,
60
- searchAbleTimeTasks,
61
- toAbleTimeIssueInfo,
62
- updateAbleTimeTask
63
- } from "../chunk-UBQIELFS.js";
64
- import {
65
- httpFetch
66
- } from "../chunk-VKQGAWHY.js";
67
- import "../chunk-JFOPOMK7.js";
68
- import "../chunk-OCQPTUR7.js";
55
+ } from "../chunk-EBPBGQ4P.js";
69
56
  import {
70
57
  GLOBAL_WORKSPACE_ID,
71
58
  isCloudCoordinatorThread,
72
59
  listWorkspaces
73
- } from "../chunk-XXEIF2IL.js";
60
+ } from "../chunk-HIX2VDRE.js";
74
61
  import {
75
62
  canonicalizeRepoPath,
76
63
  formatGhLandError,
@@ -81,13 +68,30 @@ import {
81
68
  resolveListPrsOptions,
82
69
  resolveRepoRoot,
83
70
  warmGithubAgentAuth
84
- } from "../chunk-XBLN52RZ.js";
71
+ } from "../chunk-XPKKCFRT.js";
85
72
  import "../chunk-D6JWYJ4P.js";
86
- import "../chunk-GOZ6T3AG.js";
73
+ import "../chunk-3OHR73VK.js";
74
+ import "../chunk-Y4MIXGPA.js";
75
+ import {
76
+ commentAbleTimeTask,
77
+ createAbleTimeTask,
78
+ ensureAbleTimeTask,
79
+ getAbleTimeOrientation,
80
+ getAbleTimeTask,
81
+ listAbleTimeProjects,
82
+ listAbleTimeTasks,
83
+ searchAbleTimeTasks,
84
+ toAbleTimeIssueInfo,
85
+ updateAbleTimeTask
86
+ } from "../chunk-4QJRH5DL.js";
87
+ import {
88
+ httpFetch
89
+ } from "../chunk-VKQGAWHY.js";
90
+ import "../chunk-CJFBSQIB.js";
91
+ import "../chunk-64QSHOKV.js";
87
92
  import "../chunk-SYFVUF2C.js";
88
93
  import {
89
- gh,
90
- run
94
+ gh
91
95
  } from "../chunk-FNQNJOHY.js";
92
96
  import {
93
97
  disconnectLinearConnection,
@@ -102,12 +106,13 @@ import {
102
106
  resolveViewerProfileForRepo,
103
107
  saveLinearOAuth,
104
108
  writeViewerContext
105
- } from "../chunk-OKZFTOM2.js";
109
+ } from "../chunk-KORE4WOF.js";
106
110
  import "../chunk-NSTQ6QKD.js";
107
111
  import "../chunk-KGZBYWZ3.js";
108
112
  import {
109
113
  appDataDir
110
- } from "../chunk-JTJHOYCU.js";
114
+ } from "../chunk-EQNRWDLN.js";
115
+ import "../chunk-JTWKGOFI.js";
111
116
 
112
117
  // src/mcp/server.ts
113
118
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
@@ -414,7 +419,7 @@ function parseProjectTitles(raw) {
414
419
  }
415
420
  async function listGitHubIssueProjects(number, cwd, repoArgs) {
416
421
  const result = await gh(
417
- ["issue", "view", String(number), ...repoArgs, "--json", "projectItems,projects"],
422
+ ["issue", "view", String(number), ...repoArgs, "--json", "projectItems"],
418
423
  cwd,
419
424
  { reject: false }
420
425
  );
@@ -798,6 +803,16 @@ query SideboardLabels($first: Int!) {
798
803
  }
799
804
  }
800
805
  `;
806
+ var TEAM_LABELS_QUERY = `
807
+ query SideboardTeamLabels($id: String!, $first: Int!, $after: String) {
808
+ team(id: $id) {
809
+ labels(first: $first, after: $after) {
810
+ nodes { id name }
811
+ pageInfo { hasNextPage endCursor }
812
+ }
813
+ }
814
+ }
815
+ `;
801
816
  var PROJECTS_QUERY = `
802
817
  query SideboardProjects($first: Int!, $filter: ProjectFilter) {
803
818
  projects(first: $first, filter: $filter) {
@@ -1171,15 +1186,38 @@ function formatRelationList(relations) {
1171
1186
  if (!relations.length) return "(none)";
1172
1187
  return relations.map((r) => `${r.type} ${r.issue.identifier || r.issue.id}`).join(", ");
1173
1188
  }
1174
- async function listLinearLabels(opts) {
1175
- const json = await linearGraphql(LABELS_QUERY, { first: 250 }, opts);
1176
- return (json.issueLabels?.nodes ?? []).flatMap((node) => {
1189
+ function mapLabelNodes(nodes) {
1190
+ return (nodes ?? []).flatMap((node) => {
1177
1191
  const id = String(node.id ?? "").trim();
1178
1192
  const name = String(node.name ?? "").trim();
1179
1193
  if (!id) return [];
1180
1194
  return [{ id, name }];
1181
1195
  });
1182
1196
  }
1197
+ async function listLinearWorkspaceLabels(opts) {
1198
+ const json = await linearGraphql(LABELS_QUERY, { first: 250 }, opts);
1199
+ return mapLabelNodes(json.issueLabels?.nodes);
1200
+ }
1201
+ async function listLinearLabels(opts) {
1202
+ const teamId = opts?.teamId?.trim();
1203
+ if (teamId) {
1204
+ const out = [];
1205
+ let after;
1206
+ for (let page = 0; page < 4; page++) {
1207
+ const json = await linearGraphql(
1208
+ TEAM_LABELS_QUERY,
1209
+ after ? { id: teamId, first: 250, after } : { id: teamId, first: 250 },
1210
+ opts
1211
+ );
1212
+ const conn = json.team?.labels;
1213
+ out.push(...mapLabelNodes(conn?.nodes));
1214
+ if (!conn?.pageInfo?.hasNextPage || !conn.pageInfo.endCursor) break;
1215
+ after = conn.pageInfo.endCursor;
1216
+ }
1217
+ if (out.length) return out;
1218
+ }
1219
+ return listLinearWorkspaceLabels(opts);
1220
+ }
1183
1221
  async function listLinearProjects(filter, opts) {
1184
1222
  const json = await linearGraphql(PROJECTS_QUERY, { first: 50, filter: filter ?? {} }, opts);
1185
1223
  return (json.projects?.nodes ?? []).flatMap((node) => {
@@ -1468,7 +1506,7 @@ async function updateLinearIssue(input, opts) {
1468
1506
  }
1469
1507
  const addRelations = input.relations?.length ? input.relations : void 0;
1470
1508
  const removeRelations = input.removeRelations?.length ? input.removeRelations : void 0;
1471
- const needsIssue = Boolean(input.state?.trim()) || input.cycle !== void 0 || Boolean(addRelations) || Boolean(removeRelations);
1509
+ const needsIssue = Boolean(input.state?.trim()) || input.cycle !== void 0 || input.labels !== void 0 || Boolean(addRelations) || Boolean(removeRelations);
1472
1510
  const existing = needsIssue ? await getLinearIssue(issueId, opts) : void 0;
1473
1511
  if (input.state?.trim()) {
1474
1512
  const { teams } = await listLinearTeams(opts);
@@ -1503,7 +1541,10 @@ async function updateLinearIssue(input, opts) {
1503
1541
  mutationInput.priority = normalizePriority(input.priority);
1504
1542
  }
1505
1543
  if (input.labels !== void 0) {
1506
- mutationInput.labelIds = await resolveLinearLabelIds(input.labels, opts);
1544
+ mutationInput.labelIds = await resolveLinearLabelIds(input.labels, {
1545
+ ...opts,
1546
+ teamId: existing?.team?.id
1547
+ });
1507
1548
  }
1508
1549
  if (input.project !== void 0) {
1509
1550
  mutationInput.projectId = await resolveLinearProjectId(input.project, opts);
@@ -3639,50 +3680,6 @@ async function getHomeBoardInputs(workspaces, opts) {
3639
3680
  }
3640
3681
  }
3641
3682
 
3642
- // src/integrations/github.ts
3643
- async function getGitHubStatus() {
3644
- const which = await run("which", ["gh"], { reject: false });
3645
- if (which.exitCode !== 0 || !which.stdout.trim()) {
3646
- return {
3647
- connected: false,
3648
- login: null,
3649
- hosts: [],
3650
- reason: "gh CLI not found on PATH"
3651
- };
3652
- }
3653
- const loginResult = await run(
3654
- "gh",
3655
- ["api", "user", "--jq", ".login"],
3656
- { reject: false }
3657
- );
3658
- if (loginResult.exitCode === 0 && loginResult.stdout.trim()) {
3659
- return {
3660
- connected: true,
3661
- login: loginResult.stdout.trim(),
3662
- hosts: ["github.com"],
3663
- reason: null
3664
- };
3665
- }
3666
- const status = await run("gh", ["auth", "status"], { reject: false });
3667
- const text7 = `${status.stdout}
3668
- ${status.stderr}`;
3669
- const loginMatch = text7.match(/Logged in to ([^\s]+) account (\S+)/i) ?? text7.match(/Logged in to ([^\s]+) as (\S+)/i);
3670
- if (loginMatch) {
3671
- return {
3672
- connected: true,
3673
- login: loginMatch[2].replace(/['"]/g, ""),
3674
- hosts: [loginMatch[1]],
3675
- reason: null
3676
- };
3677
- }
3678
- return {
3679
- connected: false,
3680
- login: null,
3681
- hosts: [],
3682
- reason: status.stderr.trim() || status.stdout.trim() || "Not logged in to GitHub (run: gh auth login)"
3683
- };
3684
- }
3685
-
3686
3683
  // src/mcp/create-thread-agent.ts
3687
3684
  function resolveOrchCreateThreadOptions(input) {
3688
3685
  const { resolveNewThreadOptions } = input;
@@ -3840,7 +3837,7 @@ async function startMcpServer() {
3840
3837
  );
3841
3838
  }
3842
3839
  try {
3843
- const { maxConcurrentAgents } = await import("../app-settings-74HBAAH7.js");
3840
+ const { maxConcurrentAgents } = await import("../app-settings-QYLNKRK4.js");
3844
3841
  orch.setMaxConcurrent(maxConcurrentAgents());
3845
3842
  } catch {
3846
3843
  }
@@ -4154,8 +4151,8 @@ async function startMcpServer() {
4154
4151
  registerSlackTools(server);
4155
4152
  registerConnectedIssueVendorTools(server);
4156
4153
  registerScheduleTools(server);
4157
- const { getCaffeinateHold, setCaffeinateHold } = await import("../caffeinate-hold-DBKMRZZO.js");
4158
- const { resolveNewThreadOptions, resolveThreadDefaults } = await import("../app-settings-74HBAAH7.js");
4154
+ const { getCaffeinateHold, setCaffeinateHold } = await import("../caffeinate-hold-OK4JJ5PP.js");
4155
+ const { resolveNewThreadOptions, resolveThreadDefaults } = await import("../app-settings-QYLNKRK4.js");
4159
4156
  const accountDefaults = resolveThreadDefaults();
4160
4157
  const accountDefaultsHint = `Account defaults: agent=${accountDefaults.agent}, model=${accountDefaults.model?.trim() || "Auto"}, effort=${accountDefaults.effort}`;
4161
4158
  server.tool(
@@ -4315,7 +4312,7 @@ async function startMcpServer() {
4315
4312
  );
4316
4313
  server.tool(
4317
4314
  "send_to_thread",
4318
- 'Queue a prompt on a worktree thread chat (runs under concurrency cap). Use after create_thread to start or continue a conversation. For commit/push/PR, prefer ask_git (canonical desktop-button phrases). Send "Merge PR." / ask_git merge only when the user explicitly asked to merge. force_stop=true kills the in-flight turn and clears the queue before this prompt \u2014 only when the current request is wrong and must be replaced. Do not force_stop to check in, resume after a halt notice, or because wait_for_turn returned stillRunning; that stops the child mid-thought. Call wait_for_turn again instead.',
4315
+ 'Steer a prompt on a worktree thread chat (Settings \u2192 Follow-up, default steer: interrupt and start now, skip the inbox). Use after create_thread to start or continue a conversation. For commit/push/PR, prefer ask_git (canonical desktop-button phrases). Send "Merge PR." / ask_git merge only when the user explicitly asked to merge. force_stop=true kills the in-flight turn and clears the queue before this prompt \u2014 only when the current request is wrong and must be replaced. Do not send_to_thread to check in, resume after a halt notice, or because wait_for_turn returned stillRunning; that interrupts the child mid-thought. Call wait_for_turn again instead.',
4319
4316
  {
4320
4317
  ref: z9.string(),
4321
4318
  prompt: z9.string(),
@@ -4328,7 +4325,9 @@ async function startMcpServer() {
4328
4325
  orch.stop(ref, { clearQueue: true, notifyParent: false });
4329
4326
  }
4330
4327
  }
4331
- const thread = await orch.send(ref, prompt);
4328
+ const thread = await orch.send(ref, prompt, {
4329
+ followUp: resolveOrchChildFollowUp()
4330
+ });
4332
4331
  return mcpJson({
4333
4332
  id: thread.id,
4334
4333
  status: thread.status,
@@ -4339,7 +4338,7 @@ async function startMcpServer() {
4339
4338
  );
4340
4339
  server.tool(
4341
4340
  "wait_for_turn",
4342
- "Wait until the thread finishes its current/queued turn, or return early with a live progress snapshot. MCP clients often kill tools around 60s, so this returns within 45s even while the child is still working. stillRunning is the source of truth \u2014 if false, the child is not working (do not say it is waiting for a gate). If stillRunning is true, progress is tools/thinking (or \u201Cqueued, waiting for a concurrency slot\u201D if it has not started). Call wait_for_turn again. Do not send a check-in prompt, force_stop, or assume a hang. On status error, lastError/text is the failure. On status stopped or broken, the child did not finish \u2014 resume with send_to_thread or tell the user; do not treat that as success. When finished, usage is the last agent turn\u2019s tokens + costUsd (when the provider reported cost).",
4341
+ "Wait until the thread finishes its current/queued turn, or return early with a live progress snapshot. MCP clients often kill tools around 60s, so this returns within 45s even while the child is still working. stillRunning is the source of truth \u2014 if false, the child is not working (do not say it is waiting for a gate). If stillRunning is true, progress is tools/thinking (or \u201Cqueued, waiting for a concurrency slot\u201D if it has not started). Call wait_for_turn again. Do not send_to_thread a check-in (that steers / interrupts), force_stop, or assume a hang. On status error, lastError/text is the failure. On status stopped or broken, the child did not finish \u2014 resume with send_to_thread or tell the user; do not treat that as success. When finished, usage is the last agent turn\u2019s tokens + costUsd (when the provider reported cost).",
4343
4342
  {
4344
4343
  ref: z9.string(),
4345
4344
  timeoutMs: z9.number().optional()
@@ -4496,7 +4495,7 @@ async function startMcpServer() {
4496
4495
  );
4497
4496
  server.tool(
4498
4497
  "ask_git",
4499
- "Commit & push, open a draft PR, mark ready for review, resolve conflicts, or merge \u2014 same actions as the desktop git buttons. When the worktree is clean, Sideboard pushes / opens the PR itself (HTTPS via `gh` even when origin is SSH / Settings \u2192 Git is SSH). When dirty, queues the worktree agent to commit; then wait_for_turn (loop while stillRunning). Do not start a checks loop on a plain push \u2014 only if the user gave a goal (Greptile 5/5, CI green). Pass a worktree thread ref (not the orchestrator). action=ready-for-review and action=merge only when the user explicitly asked (or clicked the desktop button). Do not run git or gh from the orchestration cwd. If this tool errors that the GraphQL/PR body is too long, the branch is already pushed \u2014 have the worktree agent retry `gh pr create --body-file` with a short description (GitHub limit 65,536 characters). Do not invent SSH/auth failures from that error.",
4498
+ "Commit & push, open a draft PR, mark ready for review, resolve conflicts, or merge \u2014 same prompts as the desktop git buttons (including Resolve). Always steers the worktree agent; does not push or open the PR locally. Then wait_for_turn (loop while stillRunning). Do not start a checks loop on a plain push \u2014 only if the user gave a goal (Greptile 5/5, CI green). Pass a worktree thread ref (not the orchestrator). action=ready-for-review and action=merge only when the user explicitly asked (or clicked the desktop button). Do not run git or gh from the orchestration cwd.",
4500
4499
  {
4501
4500
  ref: z9.string().describe("Worktree thread id/ref"),
4502
4501
  action: z9.enum(AGENT_GIT_ACTIONS).describe(
@@ -3,34 +3,38 @@ import {
3
3
  Orchestrator,
4
4
  getOrchestrator,
5
5
  isPidAlive,
6
+ resolveOrchChildFollowUp,
6
7
  resolveSendFollowUp,
7
8
  startOrchestration,
8
9
  waitForPidExit
9
- } from "./chunk-5RRAKGPK.js";
10
+ } from "./chunk-EQXXGOMD.js";
11
+ import "./chunk-MQC2VA5U.js";
10
12
  import "./chunk-DJU54RYW.js";
11
- import "./chunk-OLDZXO53.js";
12
- import "./chunk-VIODP5PT.js";
13
- import "./chunk-WXKXSZN4.js";
13
+ import "./chunk-4OVCJPVI.js";
14
+ import "./chunk-BIKCWYRP.js";
14
15
  import "./chunk-6K64FJDD.js";
15
- import "./chunk-IEEAVWAP.js";
16
+ import "./chunk-QQKDGPUI.js";
17
+ import "./chunk-PE337IM2.js";
16
18
  import "./chunk-AN3THU7F.js";
17
19
  import "./chunk-N7WZ6NIN.js";
18
20
  import "./chunk-AXQ4ZWHK.js";
19
- import "./chunk-FY64F2ZQ.js";
20
- import "./chunk-J7LQVLFQ.js";
21
+ import "./chunk-7AJ7OZZF.js";
22
+ import "./chunk-UFHNSFAS.js";
23
+ import "./chunk-BWRS6GAS.js";
21
24
  import "./chunk-4TR3HZFT.js";
22
- import "./chunk-AO35MGOE.js";
25
+ import "./chunk-7SNJMKD6.js";
26
+ import "./chunk-4TYXWPAJ.js";
23
27
  import "./chunk-JT7R45JB.js";
24
- import "./chunk-TCQAFTSV.js";
28
+ import "./chunk-KJBYIIJU.js";
25
29
  import "./chunk-77WWLBCI.js";
26
- import "./chunk-EFVFB2AH.js";
27
- import "./chunk-QQKDGPUI.js";
28
- import "./chunk-UFHNSFAS.js";
30
+ import "./chunk-WFUDY6PC.js";
31
+ import "./chunk-RCWHL4TK.js";
29
32
  export {
30
33
  LIVE_TURN_SPAWN_GRACE_MS,
31
34
  Orchestrator,
32
35
  getOrchestrator,
33
36
  isPidAlive,
37
+ resolveOrchChildFollowUp,
34
38
  resolveSendFollowUp,
35
39
  startOrchestration,
36
40
  waitForPidExit
@@ -5,31 +5,35 @@ import {
5
5
  Orchestrator,
6
6
  getOrchestrator,
7
7
  isPidAlive,
8
+ resolveOrchChildFollowUp,
8
9
  resolveSendFollowUp,
9
10
  startOrchestration,
10
11
  waitForPidExit
11
- } from "./chunk-GPSIZGEZ.js";
12
- import "./chunk-GBWKMWUQ.js";
13
- import "./chunk-HVIEYTUK.js";
14
- import "./chunk-Y4MIXGPA.js";
15
- import "./chunk-VKQGAWHY.js";
12
+ } from "./chunk-3DX2T2KR.js";
16
13
  import "./chunk-JFOPOMK7.js";
17
- import "./chunk-OCQPTUR7.js";
18
- import "./chunk-XXEIF2IL.js";
19
- import "./chunk-XBLN52RZ.js";
14
+ import "./chunk-YWI3IBP2.js";
15
+ import "./chunk-EBPBGQ4P.js";
16
+ import "./chunk-HIX2VDRE.js";
17
+ import "./chunk-XPKKCFRT.js";
20
18
  import "./chunk-D6JWYJ4P.js";
21
- import "./chunk-GOZ6T3AG.js";
19
+ import "./chunk-3OHR73VK.js";
20
+ import "./chunk-Y4MIXGPA.js";
21
+ import "./chunk-VKQGAWHY.js";
22
+ import "./chunk-CJFBSQIB.js";
23
+ import "./chunk-64QSHOKV.js";
22
24
  import "./chunk-SYFVUF2C.js";
23
25
  import "./chunk-FNQNJOHY.js";
24
- import "./chunk-OKZFTOM2.js";
26
+ import "./chunk-KORE4WOF.js";
25
27
  import "./chunk-NSTQ6QKD.js";
26
28
  import "./chunk-KGZBYWZ3.js";
27
- import "./chunk-JTJHOYCU.js";
29
+ import "./chunk-EQNRWDLN.js";
30
+ import "./chunk-JTWKGOFI.js";
28
31
  export {
29
32
  LIVE_TURN_SPAWN_GRACE_MS,
30
33
  Orchestrator,
31
34
  getOrchestrator,
32
35
  isPidAlive,
36
+ resolveOrchChildFollowUp,
33
37
  resolveSendFollowUp,
34
38
  startOrchestration,
35
39
  waitForPidExit
@@ -13,7 +13,7 @@ import {
13
13
  threadLockPath,
14
14
  threadsDir,
15
15
  worktreesRoot
16
- } from "./chunk-JTJHOYCU.js";
16
+ } from "./chunk-EQNRWDLN.js";
17
17
  export {
18
18
  appDataDir,
19
19
  globalAgentCwd,
@@ -11,7 +11,7 @@ import {
11
11
  threadLockPath,
12
12
  threadsDir,
13
13
  worktreesRoot
14
- } from "./chunk-EFVFB2AH.js";
14
+ } from "./chunk-WFUDY6PC.js";
15
15
  export {
16
16
  appDataDir,
17
17
  globalAgentCwd,
@@ -15,9 +15,9 @@ import {
15
15
  updateThread,
16
16
  withThreadLock,
17
17
  writeThread
18
- } from "./chunk-GOZ6T3AG.js";
18
+ } from "./chunk-CJFBSQIB.js";
19
19
  import "./chunk-KGZBYWZ3.js";
20
- import "./chunk-JTJHOYCU.js";
20
+ import "./chunk-EQNRWDLN.js";
21
21
  export {
22
22
  appendMessage,
23
23
  createEmptyThread,
@@ -13,9 +13,9 @@ import {
13
13
  updateThread,
14
14
  withThreadLock,
15
15
  writeThread
16
- } from "./chunk-TCQAFTSV.js";
16
+ } from "./chunk-KJBYIIJU.js";
17
17
  import "./chunk-77WWLBCI.js";
18
- import "./chunk-EFVFB2AH.js";
18
+ import "./chunk-WFUDY6PC.js";
19
19
  export {
20
20
  appendMessage,
21
21
  createEmptyThread,
@@ -6,16 +6,18 @@ import {
6
6
  listWorkspaces,
7
7
  removeWorkspace,
8
8
  syncWorkspacesFromThreads
9
- } from "./chunk-XXEIF2IL.js";
10
- import "./chunk-XBLN52RZ.js";
9
+ } from "./chunk-HIX2VDRE.js";
10
+ import "./chunk-XPKKCFRT.js";
11
11
  import "./chunk-D6JWYJ4P.js";
12
- import "./chunk-GOZ6T3AG.js";
12
+ import "./chunk-CJFBSQIB.js";
13
+ import "./chunk-64QSHOKV.js";
13
14
  import "./chunk-SYFVUF2C.js";
14
15
  import "./chunk-FNQNJOHY.js";
15
- import "./chunk-OKZFTOM2.js";
16
+ import "./chunk-KORE4WOF.js";
16
17
  import "./chunk-NSTQ6QKD.js";
17
18
  import "./chunk-KGZBYWZ3.js";
18
- import "./chunk-JTJHOYCU.js";
19
+ import "./chunk-EQNRWDLN.js";
20
+ import "./chunk-JTWKGOFI.js";
19
21
  export {
20
22
  addWorkspace,
21
23
  ensureWorkspace,
@@ -4,17 +4,19 @@ import {
4
4
  listWorkspaces,
5
5
  removeWorkspace,
6
6
  syncWorkspacesFromThreads
7
- } from "./chunk-VIODP5PT.js";
8
- import "./chunk-WXKXSZN4.js";
7
+ } from "./chunk-4OVCJPVI.js";
8
+ import "./chunk-BIKCWYRP.js";
9
9
  import "./chunk-6K64FJDD.js";
10
- import "./chunk-J7LQVLFQ.js";
10
+ import "./chunk-QQKDGPUI.js";
11
+ import "./chunk-UFHNSFAS.js";
12
+ import "./chunk-BWRS6GAS.js";
11
13
  import "./chunk-4TR3HZFT.js";
14
+ import "./chunk-7SNJMKD6.js";
12
15
  import "./chunk-JT7R45JB.js";
13
- import "./chunk-TCQAFTSV.js";
16
+ import "./chunk-KJBYIIJU.js";
14
17
  import "./chunk-77WWLBCI.js";
15
- import "./chunk-EFVFB2AH.js";
16
- import "./chunk-QQKDGPUI.js";
17
- import "./chunk-UFHNSFAS.js";
18
+ import "./chunk-WFUDY6PC.js";
19
+ import "./chunk-RCWHL4TK.js";
18
20
  export {
19
21
  addWorkspace,
20
22
  ensureWorkspace,
@@ -1,11 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import {
4
- FAMOUS_SOCCER_TEAMS,
5
4
  PR_DETAILS_JSON_FIELDS,
6
- allocateTeamName,
7
5
  allocateTeamSlug,
8
- branchDisplayLabel,
9
6
  canonicalizeRepoPath,
10
7
  collectTakenTeamSlugs,
11
8
  commitAll,
@@ -29,15 +26,12 @@ import {
29
26
  githubAgentGitEnv,
30
27
  isDefaultishSourceRef,
31
28
  isDirty,
32
- isPlaceholderBranch,
33
29
  isSideboardScratchPath,
34
30
  listBranches,
35
31
  listPrs,
36
32
  listWorktrees,
37
- lookupSoccerTeam,
38
33
  markPrReady,
39
34
  mergePr,
40
- normalizeWorktreePath,
41
35
  originFetchBranch,
42
36
  originGhRepoEnv,
43
37
  parseGithubSlugFromRemoteUrl,
@@ -52,22 +46,31 @@ import {
52
46
  resolveRepoRoot,
53
47
  resolveWorktreeStartPoint,
54
48
  slugify,
55
- suggestSlug,
49
+ suggestSlug
50
+ } from "./chunk-XPKKCFRT.js";
51
+ import "./chunk-D6JWYJ4P.js";
52
+ import "./chunk-CJFBSQIB.js";
53
+ import {
54
+ FAMOUS_SOCCER_TEAMS,
55
+ allocateTeamName,
56
+ branchDisplayLabel,
57
+ isPlaceholderBranch,
58
+ lookupSoccerTeam,
59
+ normalizeWorktreePath,
56
60
  threadDisplayLabel,
57
61
  ticketSlugForBranch,
58
62
  worktreeDisplayLabel,
59
63
  worktreeDisplayLabelForGroup,
60
64
  worktreeNameFromPath,
61
65
  worktreeSlugForTicket
62
- } from "./chunk-XBLN52RZ.js";
63
- import "./chunk-D6JWYJ4P.js";
64
- import "./chunk-GOZ6T3AG.js";
66
+ } from "./chunk-64QSHOKV.js";
65
67
  import "./chunk-SYFVUF2C.js";
66
68
  import "./chunk-FNQNJOHY.js";
67
- import "./chunk-OKZFTOM2.js";
69
+ import "./chunk-KORE4WOF.js";
68
70
  import "./chunk-NSTQ6QKD.js";
69
71
  import "./chunk-KGZBYWZ3.js";
70
- import "./chunk-JTJHOYCU.js";
72
+ import "./chunk-EQNRWDLN.js";
73
+ import "./chunk-JTWKGOFI.js";
71
74
  export {
72
75
  FAMOUS_SOCCER_TEAMS,
73
76
  PR_DETAILS_JSON_FIELDS,
@@ -1,9 +1,6 @@
1
1
  import {
2
- FAMOUS_SOCCER_TEAMS,
3
2
  PR_DETAILS_JSON_FIELDS,
4
- allocateTeamName,
5
3
  allocateTeamSlug,
6
- branchDisplayLabel,
7
4
  canonicalizeRepoPath,
8
5
  collectTakenTeamSlugs,
9
6
  commitAll,
@@ -27,15 +24,12 @@ import {
27
24
  githubAgentGitEnv,
28
25
  isDefaultishSourceRef,
29
26
  isDirty,
30
- isPlaceholderBranch,
31
27
  isSideboardScratchPath,
32
28
  listBranches,
33
29
  listPrs,
34
30
  listWorktrees,
35
- lookupSoccerTeam,
36
31
  markPrReady,
37
32
  mergePr,
38
- normalizeWorktreePath,
39
33
  originFetchBranch,
40
34
  originGhRepoEnv,
41
35
  parseGithubSlugFromRemoteUrl,
@@ -50,23 +44,32 @@ import {
50
44
  resolveRepoRoot,
51
45
  resolveWorktreeStartPoint,
52
46
  slugify,
53
- suggestSlug,
47
+ suggestSlug
48
+ } from "./chunk-BIKCWYRP.js";
49
+ import "./chunk-6K64FJDD.js";
50
+ import "./chunk-QQKDGPUI.js";
51
+ import "./chunk-UFHNSFAS.js";
52
+ import "./chunk-BWRS6GAS.js";
53
+ import "./chunk-4TR3HZFT.js";
54
+ import "./chunk-7SNJMKD6.js";
55
+ import "./chunk-JT7R45JB.js";
56
+ import "./chunk-KJBYIIJU.js";
57
+ import "./chunk-77WWLBCI.js";
58
+ import "./chunk-WFUDY6PC.js";
59
+ import {
60
+ FAMOUS_SOCCER_TEAMS,
61
+ allocateTeamName,
62
+ branchDisplayLabel,
63
+ isPlaceholderBranch,
64
+ lookupSoccerTeam,
65
+ normalizeWorktreePath,
54
66
  threadDisplayLabel,
55
67
  ticketSlugForBranch,
56
68
  worktreeDisplayLabel,
57
69
  worktreeDisplayLabelForGroup,
58
70
  worktreeNameFromPath,
59
71
  worktreeSlugForTicket
60
- } from "./chunk-WXKXSZN4.js";
61
- import "./chunk-6K64FJDD.js";
62
- import "./chunk-J7LQVLFQ.js";
63
- import "./chunk-4TR3HZFT.js";
64
- import "./chunk-JT7R45JB.js";
65
- import "./chunk-TCQAFTSV.js";
66
- import "./chunk-77WWLBCI.js";
67
- import "./chunk-EFVFB2AH.js";
68
- import "./chunk-QQKDGPUI.js";
69
- import "./chunk-UFHNSFAS.js";
72
+ } from "./chunk-RCWHL4TK.js";
70
73
  export {
71
74
  FAMOUS_SOCCER_TEAMS,
72
75
  PR_DETAILS_JSON_FIELDS,
@@ -0,0 +1,22 @@
1
+ import {
2
+ branchDisplayLabel,
3
+ isPlaceholderBranch,
4
+ normalizeWorktreePath,
5
+ threadDisplayLabel,
6
+ ticketSlugForBranch,
7
+ worktreeDisplayLabel,
8
+ worktreeDisplayLabelForGroup,
9
+ worktreeNameFromPath,
10
+ worktreeSlugForTicket
11
+ } from "./chunk-RCWHL4TK.js";
12
+ export {
13
+ branchDisplayLabel,
14
+ isPlaceholderBranch,
15
+ normalizeWorktreePath,
16
+ threadDisplayLabel,
17
+ ticketSlugForBranch,
18
+ worktreeDisplayLabel,
19
+ worktreeDisplayLabelForGroup,
20
+ worktreeNameFromPath,
21
+ worktreeSlugForTicket
22
+ };