@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
package/dist/index.js CHANGED
@@ -1,3 +1,35 @@
1
+ import {
2
+ ABLETIME_MCP_PATH,
3
+ ABLETIME_MCP_PM_PATH,
4
+ ABLETIME_PM_TOOL_NAMES,
5
+ DEFAULT_ABLETIME_HOST,
6
+ ableTimeDependencyTarget,
7
+ abletimeMcpRequest,
8
+ abletimeMcpUrl,
9
+ abletimeToolUsesPm,
10
+ callAbleTimeTool,
11
+ commentAbleTimeTask,
12
+ createAbleTimeTask,
13
+ ensureAbleTimeTask,
14
+ getAbleTimeOrientation,
15
+ getAbleTimeTask,
16
+ issueAttachmentForAbleTimeTask,
17
+ listAbleTimeAssignedIssues,
18
+ listAbleTimeProjects,
19
+ listAbleTimeTasks,
20
+ mapAbleTimeTask,
21
+ normalizeAbleTimeHost,
22
+ rewriteAbleTimeError,
23
+ searchAbleTimeTasks,
24
+ taskUrl,
25
+ toAbleTimeIssueInfo,
26
+ updateAbleTimeTask,
27
+ verifyAbleTimeConnection
28
+ } from "./chunk-O4BMPY5Y.js";
29
+ import {
30
+ getGitHubStatus,
31
+ refreshGitHubAuth
32
+ } from "./chunk-ILWQT2UN.js";
1
33
  import {
2
34
  AGENT_GIT_ACTIONS,
3
35
  BOARD_COLUMN_DEFS,
@@ -197,9 +229,11 @@ import {
197
229
  resolveCreateFirstPrompt,
198
230
  resolveDetachedJobScript,
199
231
  resolveFilesToCopy,
232
+ resolveOrchChildFollowUp,
200
233
  resolveReviewGuidelines,
201
234
  resolveScheduleThreadId,
202
235
  resolveSendFollowUp,
236
+ resolveSidebarGitPrompt,
203
237
  runArchiveScript,
204
238
  runConventionSetup,
205
239
  runSetupScript,
@@ -238,18 +272,7 @@ import {
238
272
  worktreeCleanupSettings,
239
273
  wrapReviewSkillMarkdown,
240
274
  writeWorktreeFile
241
- } from "./chunk-5RRAKGPK.js";
242
- import {
243
- LEGACY_PLAN_FILE_REL,
244
- PLAN_FILE_NAME,
245
- PLAN_FILE_REL,
246
- extractPresentedPlan,
247
- isPresentPlanToolName,
248
- planFileAbs,
249
- readPlanFile,
250
- resolvePlanMarkdown,
251
- writePlanFile
252
- } from "./chunk-DJU54RYW.js";
275
+ } from "./chunk-EQXXGOMD.js";
253
276
  import {
254
277
  BRIGHTSY_MCP_ALLOWED_TOOLS,
255
278
  CLAUDE_MODEL_CATALOG,
@@ -344,7 +367,18 @@ import {
344
367
  withEventParentId,
345
368
  withEventsParentId,
346
369
  writeInjectedMcpConfig
347
- } from "./chunk-OLDZXO53.js";
370
+ } from "./chunk-MQC2VA5U.js";
371
+ import {
372
+ LEGACY_PLAN_FILE_REL,
373
+ PLAN_FILE_NAME,
374
+ PLAN_FILE_REL,
375
+ extractPresentedPlan,
376
+ isPresentPlanToolName,
377
+ planFileAbs,
378
+ readPlanFile,
379
+ resolvePlanMarkdown,
380
+ writePlanFile
381
+ } from "./chunk-DJU54RYW.js";
348
382
  import {
349
383
  CLOUD_COORDINATOR_BUSY_REPLY,
350
384
  CLOUD_COORDINATOR_STOPPED_REPLY,
@@ -387,18 +421,15 @@ import {
387
421
  stageBuffersAsAttachments,
388
422
  syncWorkspacesFromThreads,
389
423
  takenTeamSlugsForOrchestration
390
- } from "./chunk-VIODP5PT.js";
424
+ } from "./chunk-4OVCJPVI.js";
391
425
  import {
392
- FAMOUS_SOCCER_TEAMS,
393
426
  GITHUB_PR_BODY_MAX_CHARS,
394
427
  GITHUB_PR_BODY_SAFE_CHARS,
395
428
  PR_DETAILS_JSON_FIELDS,
396
429
  addPrStackLayer,
397
- allocateTeamName,
398
430
  allocateTeamSlug,
399
431
  appendIndexedGitConfig,
400
432
  applyGithubGitAuthEnv,
401
- branchDisplayLabel,
402
433
  canonicalizeRepoPath,
403
434
  checkoutPrStackLayer,
404
435
  clampGithubPrBody,
@@ -439,19 +470,16 @@ import {
439
470
  isGhPrBodyTooLongError,
440
471
  isGhRateLimitError,
441
472
  isInPrStack,
442
- isPlaceholderBranch,
443
473
  isPrNotMergeableError,
444
474
  isSideboardScratchPath,
445
475
  listBranches,
446
476
  listPrs,
447
477
  listWorktrees,
448
- lookupSoccerTeam,
449
478
  markPrReady,
450
479
  mergeAgentGitAuthEnv,
451
480
  mergePr,
452
481
  mergePrStack,
453
482
  nonInteractiveGitProcessEnv,
454
- normalizeWorktreePath,
455
483
  originFetchBranch,
456
484
  originGhRepoEnv,
457
485
  parseGhStackViewJson,
@@ -477,14 +505,8 @@ import {
477
505
  stackMergeReadiness,
478
506
  submitPrStack,
479
507
  suggestSlug,
480
- threadDisplayLabel,
481
- ticketSlugForBranch,
482
- warmGithubAgentAuth,
483
- worktreeDisplayLabel,
484
- worktreeDisplayLabelForGroup,
485
- worktreeNameFromPath,
486
- worktreeSlugForTicket
487
- } from "./chunk-WXKXSZN4.js";
508
+ warmGithubAgentAuth
509
+ } from "./chunk-BIKCWYRP.js";
488
510
  import {
489
511
  ATTACHMENTS_DIR,
490
512
  CLI_DIR,
@@ -494,6 +516,7 @@ import {
494
516
  attachmentsGitignoreBody,
495
517
  isWorkspaceScratchPath
496
518
  } from "./chunk-6K64FJDD.js";
519
+ import "./chunk-QQKDGPUI.js";
497
520
  import {
498
521
  brightsyMcpServerName,
499
522
  connectBrightsyTeam,
@@ -503,7 +526,7 @@ import {
503
526
  listBrightsyAccounts,
504
527
  listConnectedBrightsyTeams,
505
528
  switchBrightsyAccount
506
- } from "./chunk-IEEAVWAP.js";
529
+ } from "./chunk-PE337IM2.js";
507
530
  import {
508
531
  brightsyAccessTokenNeedsRefresh,
509
532
  brightsyConfigPath,
@@ -512,34 +535,6 @@ import {
512
535
  refreshBrightsyAccessToken,
513
536
  saveBrightsyConfig
514
537
  } from "./chunk-AN3THU7F.js";
515
- import {
516
- ABLETIME_MCP_PATH,
517
- ABLETIME_MCP_PM_PATH,
518
- ABLETIME_PM_TOOL_NAMES,
519
- DEFAULT_ABLETIME_HOST,
520
- ableTimeDependencyTarget,
521
- abletimeMcpRequest,
522
- abletimeMcpUrl,
523
- abletimeToolUsesPm,
524
- callAbleTimeTool,
525
- commentAbleTimeTask,
526
- createAbleTimeTask,
527
- ensureAbleTimeTask,
528
- getAbleTimeOrientation,
529
- getAbleTimeTask,
530
- issueAttachmentForAbleTimeTask,
531
- listAbleTimeAssignedIssues,
532
- listAbleTimeProjects,
533
- listAbleTimeTasks,
534
- mapAbleTimeTask,
535
- normalizeAbleTimeHost,
536
- rewriteAbleTimeError,
537
- searchAbleTimeTasks,
538
- taskUrl,
539
- toAbleTimeIssueInfo,
540
- updateAbleTimeTask,
541
- verifyAbleTimeConnection
542
- } from "./chunk-4M2AK3O5.js";
543
538
  import {
544
539
  formatFetchError,
545
540
  httpFetch,
@@ -557,7 +552,21 @@ import {
557
552
  trustSystemCertificates,
558
553
  turnCostUsdFromCursorUsage,
559
554
  withMaxOldSpaceSize
560
- } from "./chunk-FY64F2ZQ.js";
555
+ } from "./chunk-7AJ7OZZF.js";
556
+ import {
557
+ conductorBundledBinDir,
558
+ enrichPathWithNpmGlobalBin,
559
+ ensureAgentPath,
560
+ gh,
561
+ git,
562
+ isConductorBundledCli,
563
+ posixShellSingleQuote,
564
+ resolveCommandBinarySync,
565
+ resolveGhAuthToken,
566
+ resolveGitDirsForLockRecovery,
567
+ run,
568
+ withExportedPath
569
+ } from "./chunk-UFHNSFAS.js";
561
570
  import {
562
571
  FOLLOW_UP_BEHAVIORS,
563
572
  GITHUB_GIT_AUTH_MODES,
@@ -607,6 +616,7 @@ import {
607
616
  getGithubPat,
608
617
  getIssueSource,
609
618
  getLinearApiKey,
619
+ gitBranchPrefixSetting,
610
620
  harnessEnvKey,
611
621
  isAbleTimeConnected,
612
622
  isIssueSourceConnected,
@@ -652,17 +662,22 @@ import {
652
662
  updateOpencodeSettings,
653
663
  updateProjectProfileSettings,
654
664
  writeViewerContext
655
- } from "./chunk-J7LQVLFQ.js";
665
+ } from "./chunk-BWRS6GAS.js";
656
666
  import {
657
667
  stripNestedElectronEnv
658
668
  } from "./chunk-4TR3HZFT.js";
669
+ import {
670
+ examplePrefixedBranch,
671
+ resolveGitBranchPrefix,
672
+ sanitizeGitBranchPrefix
673
+ } from "./chunk-7SNJMKD6.js";
659
674
  import {
660
675
  caffeinateHoldPath,
661
676
  getCaffeinateHold,
662
677
  isThreadCaffeinated,
663
678
  releaseCaffeinateHoldForThread,
664
679
  setCaffeinateHold
665
- } from "./chunk-AO35MGOE.js";
680
+ } from "./chunk-4TYXWPAJ.js";
666
681
  import "./chunk-JT7R45JB.js";
667
682
  import {
668
683
  appendMessage,
@@ -679,7 +694,7 @@ import {
679
694
  updateThread,
680
695
  withThreadLock,
681
696
  writeThread
682
- } from "./chunk-TCQAFTSV.js";
697
+ } from "./chunk-KJBYIIJU.js";
683
698
  import {
684
699
  THINKING_EFFORTS,
685
700
  isThinkingEffort,
@@ -715,69 +730,21 @@ import {
715
730
  threadsDir,
716
731
  workspaceSettingsSourceLabel,
717
732
  worktreesRoot
718
- } from "./chunk-EFVFB2AH.js";
719
- import "./chunk-QQKDGPUI.js";
733
+ } from "./chunk-WFUDY6PC.js";
720
734
  import {
721
- conductorBundledBinDir,
722
- enrichPathWithNpmGlobalBin,
723
- ensureAgentPath,
724
- gh,
725
- git,
726
- isConductorBundledCli,
727
- posixShellSingleQuote,
728
- resolveCommandBinarySync,
729
- resolveGhAuthToken,
730
- resolveGitDirsForLockRecovery,
731
- run,
732
- withExportedPath
733
- } from "./chunk-UFHNSFAS.js";
734
-
735
- // src/integrations/github.ts
736
- async function getGitHubStatus() {
737
- const which = await run("which", ["gh"], { reject: false });
738
- if (which.exitCode !== 0 || !which.stdout.trim()) {
739
- return {
740
- connected: false,
741
- login: null,
742
- hosts: [],
743
- reason: "gh CLI not found on PATH"
744
- };
745
- }
746
- const loginResult = await run(
747
- "gh",
748
- ["api", "user", "--jq", ".login"],
749
- { reject: false }
750
- );
751
- if (loginResult.exitCode === 0 && loginResult.stdout.trim()) {
752
- return {
753
- connected: true,
754
- login: loginResult.stdout.trim(),
755
- hosts: ["github.com"],
756
- reason: null
757
- };
758
- }
759
- const status = await run("gh", ["auth", "status"], { reject: false });
760
- const text7 = `${status.stdout}
761
- ${status.stderr}`;
762
- const loginMatch = text7.match(/Logged in to ([^\s]+) account (\S+)/i) ?? text7.match(/Logged in to ([^\s]+) as (\S+)/i);
763
- if (loginMatch) {
764
- return {
765
- connected: true,
766
- login: loginMatch[2].replace(/['"]/g, ""),
767
- hosts: [loginMatch[1]],
768
- reason: null
769
- };
770
- }
771
- return {
772
- connected: false,
773
- login: null,
774
- hosts: [],
775
- reason: status.stderr.trim() || status.stdout.trim() || "Not logged in to GitHub (run: gh auth login)"
776
- };
777
- }
778
- async function refreshGitHubAuth() {
779
- return getGitHubStatus();
780
- }
735
+ FAMOUS_SOCCER_TEAMS,
736
+ allocateTeamName,
737
+ branchDisplayLabel,
738
+ isPlaceholderBranch,
739
+ lookupSoccerTeam,
740
+ normalizeWorktreePath,
741
+ threadDisplayLabel,
742
+ ticketSlugForBranch,
743
+ worktreeDisplayLabel,
744
+ worktreeDisplayLabelForGroup,
745
+ worktreeNameFromPath,
746
+ worktreeSlugForTicket
747
+ } from "./chunk-RCWHL4TK.js";
781
748
 
782
749
  // src/integrations/issue-since.ts
783
750
  var ISSUE_SINCE_ERROR = "updatedSince must be an ISO datetime, YYYY-MM-DD, or relative time (yesterday, 2d, 3 hours ago)";
@@ -1297,6 +1264,16 @@ query SideboardLabels($first: Int!) {
1297
1264
  }
1298
1265
  }
1299
1266
  `;
1267
+ var TEAM_LABELS_QUERY = `
1268
+ query SideboardTeamLabels($id: String!, $first: Int!, $after: String) {
1269
+ team(id: $id) {
1270
+ labels(first: $first, after: $after) {
1271
+ nodes { id name }
1272
+ pageInfo { hasNextPage endCursor }
1273
+ }
1274
+ }
1275
+ }
1276
+ `;
1300
1277
  var PROJECTS_QUERY = `
1301
1278
  query SideboardProjects($first: Int!, $filter: ProjectFilter) {
1302
1279
  projects(first: $first, filter: $filter) {
@@ -1670,15 +1647,38 @@ function formatRelationList(relations) {
1670
1647
  if (!relations.length) return "(none)";
1671
1648
  return relations.map((r) => `${r.type} ${r.issue.identifier || r.issue.id}`).join(", ");
1672
1649
  }
1673
- async function listLinearLabels(opts) {
1674
- const json = await linearGraphql(LABELS_QUERY, { first: 250 }, opts);
1675
- return (json.issueLabels?.nodes ?? []).flatMap((node) => {
1650
+ function mapLabelNodes(nodes) {
1651
+ return (nodes ?? []).flatMap((node) => {
1676
1652
  const id = String(node.id ?? "").trim();
1677
1653
  const name = String(node.name ?? "").trim();
1678
1654
  if (!id) return [];
1679
1655
  return [{ id, name }];
1680
1656
  });
1681
1657
  }
1658
+ async function listLinearWorkspaceLabels(opts) {
1659
+ const json = await linearGraphql(LABELS_QUERY, { first: 250 }, opts);
1660
+ return mapLabelNodes(json.issueLabels?.nodes);
1661
+ }
1662
+ async function listLinearLabels(opts) {
1663
+ const teamId = opts?.teamId?.trim();
1664
+ if (teamId) {
1665
+ const out = [];
1666
+ let after;
1667
+ for (let page = 0; page < 4; page++) {
1668
+ const json = await linearGraphql(
1669
+ TEAM_LABELS_QUERY,
1670
+ after ? { id: teamId, first: 250, after } : { id: teamId, first: 250 },
1671
+ opts
1672
+ );
1673
+ const conn = json.team?.labels;
1674
+ out.push(...mapLabelNodes(conn?.nodes));
1675
+ if (!conn?.pageInfo?.hasNextPage || !conn.pageInfo.endCursor) break;
1676
+ after = conn.pageInfo.endCursor;
1677
+ }
1678
+ if (out.length) return out;
1679
+ }
1680
+ return listLinearWorkspaceLabels(opts);
1681
+ }
1682
1682
  async function listLinearProjects(filter, opts) {
1683
1683
  const json = await linearGraphql(PROJECTS_QUERY, { first: 50, filter: filter ?? {} }, opts);
1684
1684
  return (json.projects?.nodes ?? []).flatMap((node) => {
@@ -1973,7 +1973,7 @@ async function updateLinearIssue(input, opts) {
1973
1973
  }
1974
1974
  const addRelations = input.relations?.length ? input.relations : void 0;
1975
1975
  const removeRelations = input.removeRelations?.length ? input.removeRelations : void 0;
1976
- const needsIssue = Boolean(input.state?.trim()) || input.cycle !== void 0 || Boolean(addRelations) || Boolean(removeRelations);
1976
+ const needsIssue = Boolean(input.state?.trim()) || input.cycle !== void 0 || input.labels !== void 0 || Boolean(addRelations) || Boolean(removeRelations);
1977
1977
  const existing = needsIssue ? await getLinearIssue(issueId, opts) : void 0;
1978
1978
  if (input.state?.trim()) {
1979
1979
  const { teams } = await listLinearTeams(opts);
@@ -2008,7 +2008,10 @@ async function updateLinearIssue(input, opts) {
2008
2008
  mutationInput.priority = normalizePriority(input.priority);
2009
2009
  }
2010
2010
  if (input.labels !== void 0) {
2011
- mutationInput.labelIds = await resolveLinearLabelIds(input.labels, opts);
2011
+ mutationInput.labelIds = await resolveLinearLabelIds(input.labels, {
2012
+ ...opts,
2013
+ teamId: existing?.team?.id
2014
+ });
2012
2015
  }
2013
2016
  if (input.project !== void 0) {
2014
2017
  mutationInput.projectId = await resolveLinearProjectId(input.project, opts);
@@ -2312,7 +2315,7 @@ function parseProjectTitles(raw) {
2312
2315
  }
2313
2316
  async function listGitHubIssueProjects(number, cwd, repoArgs) {
2314
2317
  const result = await gh(
2315
- ["issue", "view", String(number), ...repoArgs, "--json", "projectItems,projects"],
2318
+ ["issue", "view", String(number), ...repoArgs, "--json", "projectItems"],
2316
2319
  cwd,
2317
2320
  { reject: false }
2318
2321
  );
@@ -5061,7 +5064,7 @@ async function startMcpServer() {
5061
5064
  );
5062
5065
  }
5063
5066
  try {
5064
- const { maxConcurrentAgents: maxConcurrentAgents2 } = await import("./app-settings-663VQWUV.js");
5067
+ const { maxConcurrentAgents: maxConcurrentAgents2 } = await import("./app-settings-LO7UFHQ6.js");
5065
5068
  orch.setMaxConcurrent(maxConcurrentAgents2());
5066
5069
  } catch {
5067
5070
  }
@@ -5375,8 +5378,8 @@ async function startMcpServer() {
5375
5378
  registerSlackTools(server);
5376
5379
  registerConnectedIssueVendorTools(server);
5377
5380
  registerScheduleTools(server);
5378
- const { getCaffeinateHold: getCaffeinateHold2, setCaffeinateHold: setCaffeinateHold2 } = await import("./caffeinate-hold-SK2QISPE.js");
5379
- const { resolveNewThreadOptions: resolveNewThreadOptions2, resolveThreadDefaults: resolveThreadDefaults2 } = await import("./app-settings-663VQWUV.js");
5381
+ const { getCaffeinateHold: getCaffeinateHold2, setCaffeinateHold: setCaffeinateHold2 } = await import("./caffeinate-hold-22VFDPSO.js");
5382
+ const { resolveNewThreadOptions: resolveNewThreadOptions2, resolveThreadDefaults: resolveThreadDefaults2 } = await import("./app-settings-LO7UFHQ6.js");
5380
5383
  const accountDefaults = resolveThreadDefaults2();
5381
5384
  const accountDefaultsHint = `Account defaults: agent=${accountDefaults.agent}, model=${accountDefaults.model?.trim() || "Auto"}, effort=${accountDefaults.effort}`;
5382
5385
  server.tool(
@@ -5536,7 +5539,7 @@ async function startMcpServer() {
5536
5539
  );
5537
5540
  server.tool(
5538
5541
  "send_to_thread",
5539
- '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.',
5542
+ '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.',
5540
5543
  {
5541
5544
  ref: z9.string(),
5542
5545
  prompt: z9.string(),
@@ -5549,7 +5552,9 @@ async function startMcpServer() {
5549
5552
  orch.stop(ref, { clearQueue: true, notifyParent: false });
5550
5553
  }
5551
5554
  }
5552
- const thread = await orch.send(ref, prompt);
5555
+ const thread = await orch.send(ref, prompt, {
5556
+ followUp: resolveOrchChildFollowUp()
5557
+ });
5553
5558
  return mcpJson({
5554
5559
  id: thread.id,
5555
5560
  status: thread.status,
@@ -5560,7 +5565,7 @@ async function startMcpServer() {
5560
5565
  );
5561
5566
  server.tool(
5562
5567
  "wait_for_turn",
5563
- "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).",
5568
+ "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).",
5564
5569
  {
5565
5570
  ref: z9.string(),
5566
5571
  timeoutMs: z9.number().optional()
@@ -5717,7 +5722,7 @@ async function startMcpServer() {
5717
5722
  );
5718
5723
  server.tool(
5719
5724
  "ask_git",
5720
- "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.",
5725
+ "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.",
5721
5726
  {
5722
5727
  ref: z9.string().describe("Worktree thread id/ref"),
5723
5728
  action: z9.enum(AGENT_GIT_ACTIONS).describe(
@@ -8592,6 +8597,7 @@ export {
8592
8597
  estimateMessageChars,
8593
8598
  estimateOccupancyTokens,
8594
8599
  estimateThreadChars,
8600
+ examplePrefixedBranch,
8595
8601
  expandComposerPrompt,
8596
8602
  extractBrightsyContextSummary,
8597
8603
  extractGhErrorDetail,
@@ -8704,6 +8710,7 @@ export {
8704
8710
  ghHeadRef,
8705
8711
  ghRepoSelectArgs,
8706
8712
  git,
8713
+ gitBranchPrefixSetting,
8707
8714
  githubAgentGitEnv,
8708
8715
  githubHttpsInsteadOfEntries,
8709
8716
  githubRelationEditFlag,
@@ -8952,6 +8959,7 @@ export {
8952
8959
  resolveEffectiveIssueSource,
8953
8960
  resolveFilesToCopy,
8954
8961
  resolveGhAuthToken,
8962
+ resolveGitBranchPrefix,
8955
8963
  resolveGitDirsForLockRecovery,
8956
8964
  resolveGitHubIssueRepo,
8957
8965
  resolveGithubAgentToken,
@@ -8964,6 +8972,7 @@ export {
8964
8972
  resolveLoginCommand,
8965
8973
  resolveNewOrchestratorOptions,
8966
8974
  resolveNewThreadOptions,
8975
+ resolveOrchChildFollowUp,
8967
8976
  resolveOrchestratorDefaults,
8968
8977
  resolvePlanMarkdown,
8969
8978
  resolvePrSelector,
@@ -8973,6 +8982,7 @@ export {
8973
8982
  resolveReviewGuidelines,
8974
8983
  resolveScheduleThreadId,
8975
8984
  resolveSendFollowUp,
8985
+ resolveSidebarGitPrompt,
8976
8986
  resolveSlackListenMode,
8977
8987
  resolveThreadDefaults,
8978
8988
  resolveThreadEffort,
@@ -8992,6 +9002,7 @@ export {
8992
9002
  runSlackRelayClient,
8993
9003
  runWorkspaceSetup,
8994
9004
  sameWorktreePath,
9005
+ sanitizeGitBranchPrefix,
8995
9006
  sanitizeMcpServerName,
8996
9007
  saveAbleTimeConnection,
8997
9008
  saveAppSettings,