@sideboard-ai/core 0.1.319 → 0.1.321

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 (75) hide show
  1. package/dist/{abletime-L3ODNTBT.js → abletime-CRRLEYTE.js} +4 -4
  2. package/dist/{abletime-DVYO4IVS.js → abletime-ICW6Q2AB.js} +4 -4
  3. package/dist/{abletime-oauth-2VWQCXGT.js → abletime-oauth-P3KPPJE4.js} +3 -3
  4. package/dist/{abletime-oauth-6DTX7LB7.js → abletime-oauth-Q76XBSPG.js} +3 -3
  5. package/dist/{abletime-rest-PYQM234B.js → abletime-rest-DNFAYYLP.js} +3 -3
  6. package/dist/{abletime-rest-7NICZYOC.js → abletime-rest-DQ3PNKXP.js} +3 -3
  7. package/dist/agents/cursor-runner.js +2 -2
  8. package/dist/{agents-KABJUDPI.js → agents-PFVYC36J.js} +10 -10
  9. package/dist/{agents-2AR7I6B6.js → agents-ROFDNE7Z.js} +11 -11
  10. package/dist/{app-settings-CZVFMOI5.js → app-settings-KMPVI2B7.js} +1 -1
  11. package/dist/{app-settings-V6YPYY57.js → app-settings-P3H4SEIK.js} +1 -1
  12. package/dist/{chunk-QVN2WOKJ.js → chunk-2TUE6JKQ.js} +12 -0
  13. package/dist/{chunk-OO3R6CS2.js → chunk-45UB2J47.js} +537 -90
  14. package/dist/{chunk-DD67JWTN.js → chunk-4YXZOXMT.js} +1 -1
  15. package/dist/{chunk-5OM7UCTQ.js → chunk-56M6VEXI.js} +3 -3
  16. package/dist/{chunk-ZM43NTJJ.js → chunk-5OQONGHO.js} +5 -5
  17. package/dist/{chunk-V5BTGQ6M.js → chunk-6U6QRUHY.js} +1 -1
  18. package/dist/{chunk-QPLQXWND.js → chunk-72PUPPV2.js} +3 -3
  19. package/dist/{chunk-53OCOGND.js → chunk-7JV5QP5K.js} +3 -3
  20. package/dist/{chunk-HOLB6ZFZ.js → chunk-B4CDSSRN.js} +2 -0
  21. package/dist/{chunk-ST2UQBJT.js → chunk-BANN5HUX.js} +8 -8
  22. package/dist/{chunk-AESO2KJS.js → chunk-BPDVHB4U.js} +3 -3
  23. package/dist/{chunk-WLZHRNE6.js → chunk-BTIXTH4N.js} +3 -3
  24. package/dist/{chunk-AUJ4XB6H.js → chunk-DFUXW2IT.js} +2 -2
  25. package/dist/{chunk-I5TESHDN.js → chunk-EQ52JR3Q.js} +5 -5
  26. package/dist/{chunk-E52SQENB.js → chunk-FZKAAAEB.js} +3 -1
  27. package/dist/{chunk-YALFZKSC.js → chunk-H6GXYV5Q.js} +23 -20
  28. package/dist/{chunk-JD7CC6SW.js → chunk-HHPTGIKS.js} +2 -2
  29. package/dist/{chunk-GCHSJCCX.js → chunk-IFU4W4C4.js} +3 -1
  30. package/dist/{chunk-YEIHCSZS.js → chunk-IFWGG2M2.js} +9 -0
  31. package/dist/{chunk-IAPO7ZFG.js → chunk-JNEFEA2A.js} +8 -8
  32. package/dist/{chunk-U2N32EA6.js → chunk-LD2DXHBP.js} +543 -92
  33. package/dist/{chunk-7Q327QF2.js → chunk-QIC2JXHW.js} +5 -5
  34. package/dist/{chunk-2P4XKWV2.js → chunk-QKHEVSB5.js} +1 -1
  35. package/dist/{chunk-NRSC4N5X.js → chunk-RGUZPMTF.js} +8 -8
  36. package/dist/{chunk-AZ4GEEGL.js → chunk-RHJKZOPQ.js} +3 -3
  37. package/dist/{chunk-HH3VVTEC.js → chunk-S5CJUIPY.js} +5 -5
  38. package/dist/{chunk-A6C67DY5.js → chunk-SPMIZSKH.js} +16 -13
  39. package/dist/{chunk-FDXHNROD.js → chunk-TEFFR6PB.js} +2 -2
  40. package/dist/{chunk-TUJFCJJU.js → chunk-UWJUARFA.js} +546 -187
  41. package/dist/{chunk-MBYGWNLQ.js → chunk-UX6EDDGR.js} +1 -1
  42. package/dist/{chunk-LXBZQP2Q.js → chunk-V76MQ7MH.js} +5 -5
  43. package/dist/{chunk-GH7UMULC.js → chunk-XDQSHSL6.js} +8 -8
  44. package/dist/{chunk-2UG25RMK.js → chunk-YBTSZ2SW.js} +12 -0
  45. package/dist/{chunk-A46CIARU.js → chunk-YWBLQBSN.js} +549 -188
  46. package/dist/{chunk-Y3Y7SZBZ.js → chunk-ZHGMRBSC.js} +1 -1
  47. package/dist/{conductor-MG2RAQNT.js → conductor-CNT3VL3S.js} +8 -8
  48. package/dist/{conductor-NIUBJLTS.js → conductor-XLXJU24U.js} +8 -8
  49. package/dist/{connected-teams-IHK2WXUI.js → connected-teams-H4LZOJDC.js} +2 -2
  50. package/dist/{connected-teams-IFW3NQ6G.js → connected-teams-XYRZMQO4.js} +2 -2
  51. package/dist/{coordinator-prompt-X74F3JIC.js → coordinator-prompt-D5EE2YTV.js} +6 -6
  52. package/dist/{coordinator-prompt-3CT3D5UM.js → coordinator-prompt-TU24TQ4I.js} +6 -6
  53. package/dist/{global-workspace-BUWMRNW5.js → global-workspace-743TPQNF.js} +6 -6
  54. package/dist/{global-workspace-FTNJEML3.js → global-workspace-UPMXDQM7.js} +6 -6
  55. package/dist/index.cjs +2160 -867
  56. package/dist/index.d.cts +211 -74
  57. package/dist/index.d.ts +211 -74
  58. package/dist/index.js +496 -78
  59. package/dist/mcp/run-stdio.cjs +1377 -478
  60. package/dist/mcp/run-stdio.js +80 -32
  61. package/dist/{optional-cli-6GGESWGE.js → optional-cli-2YDQQCCD.js} +5 -5
  62. package/dist/{optional-cli-EMSZBYDE.js → optional-cli-USD6PROE.js} +4 -4
  63. package/dist/{orchestrator-NCA4LSCC.js → orchestrator-B4STIW4B.js} +14 -14
  64. package/dist/{orchestrator-H3DSZ5RM.js → orchestrator-VQ4HRYVB.js} +13 -13
  65. package/dist/{run-PCX5QWR4.js → run-7QMRYP3F.js} +3 -1
  66. package/dist/{run-TB7RBII2.js → run-UPNCCRCN.js} +3 -1
  67. package/dist/{thread-store-PLNIWFZ4.js → thread-store-3F7GR64A.js} +1 -1
  68. package/dist/{thread-store-7BBA63KV.js → thread-store-JRSL4HQY.js} +1 -1
  69. package/dist/{workspaces-MGKEAYNM.js → workspaces-47WQL5IG.js} +6 -6
  70. package/dist/{workspaces-2V5UYPYC.js → workspaces-75FD4QUR.js} +6 -6
  71. package/dist/{worktree-XJKLDYOL.js → worktree-G3E6WP66.js} +11 -9
  72. package/dist/{worktree-THAXW5U7.js → worktree-PDNPL5CQ.js} +11 -9
  73. package/dist/{worktree-exclude-RXZPTCNH.js → worktree-exclude-INRDQFWV.js} +2 -2
  74. package/dist/{worktree-exclude-5N2KTYIT.js → worktree-exclude-P5NJODWP.js} +2 -2
  75. package/package.json +1 -1
@@ -56,7 +56,7 @@ import {
56
56
  updateSchedule,
57
57
  workspaceTagTargetRef,
58
58
  writeAgentBlock
59
- } from "../chunk-OO3R6CS2.js";
59
+ } from "../chunk-45UB2J47.js";
60
60
  import "../chunk-LX5R5JOR.js";
61
61
  import {
62
62
  commentAbleTimeTask,
@@ -76,12 +76,12 @@ import {
76
76
  searchAbleTimeTasks,
77
77
  toAbleTimeIssueInfo,
78
78
  updateAbleTimeTask
79
- } from "../chunk-QPLQXWND.js";
80
- import "../chunk-JD7CC6SW.js";
81
- import "../chunk-ZM43NTJJ.js";
79
+ } from "../chunk-72PUPPV2.js";
80
+ import "../chunk-HHPTGIKS.js";
81
+ import "../chunk-5OQONGHO.js";
82
82
  import {
83
83
  normalizeServiceOrigin
84
- } from "../chunk-MBYGWNLQ.js";
84
+ } from "../chunk-UX6EDDGR.js";
85
85
  import {
86
86
  PRESENT_PLAN_REQUIRES_PLAN_MODE,
87
87
  PRESENT_PLAN_TOOL_DESCRIPTION,
@@ -97,9 +97,9 @@ import {
97
97
  shouldRegisterMcpWaitForTurn,
98
98
  sideboardMcpProfile,
99
99
  worktreeMcpToolNames
100
- } from "../chunk-GH7UMULC.js";
101
- import "../chunk-53OCOGND.js";
102
- import "../chunk-V5BTGQ6M.js";
100
+ } from "../chunk-XDQSHSL6.js";
101
+ import "../chunk-7JV5QP5K.js";
102
+ import "../chunk-6U6QRUHY.js";
103
103
  import "../chunk-E63AM3PW.js";
104
104
  import {
105
105
  httpFetch
@@ -114,18 +114,18 @@ import {
114
114
  waitForDetachedJob,
115
115
  waitForTurnToolResult,
116
116
  workspaceAgentChatSummaries
117
- } from "../chunk-NRSC4N5X.js";
117
+ } from "../chunk-RGUZPMTF.js";
118
118
  import {
119
119
  HUGE_TOOL_RESULT_SUMMARY,
120
120
  clipToolResultForStore,
121
121
  formatUnknownDetail,
122
122
  isInternalAgentStatusText,
123
123
  looksLikeHugeToolResultDump
124
- } from "../chunk-I5TESHDN.js";
124
+ } from "../chunk-EQ52JR3Q.js";
125
125
  import {
126
126
  GLOBAL_WORKSPACE_ID,
127
127
  isCloudCoordinatorThread
128
- } from "../chunk-A6C67DY5.js";
128
+ } from "../chunk-SPMIZSKH.js";
129
129
  import {
130
130
  canonicalizeRepoPath,
131
131
  formatGhLandError,
@@ -134,18 +134,20 @@ import {
134
134
  listPrs,
135
135
  resolveGithubRepoSlug,
136
136
  resolveListPrsOptions,
137
+ resolveOriginRemote,
138
+ resolveProjectRemoteTag,
137
139
  resolveRepoRoot,
138
140
  warmGithubAgentAuth
139
- } from "../chunk-A46CIARU.js";
141
+ } from "../chunk-YWBLQBSN.js";
140
142
  import {
141
143
  CLI_DIR
142
144
  } from "../chunk-N2WW62LF.js";
143
- import "../chunk-DD67JWTN.js";
145
+ import "../chunk-4YXZOXMT.js";
144
146
  import {
145
147
  gh,
146
148
  resolveGhAuthToken,
147
149
  run
148
- } from "../chunk-2UG25RMK.js";
150
+ } from "../chunk-YBTSZ2SW.js";
149
151
  import {
150
152
  disconnectLinearConnection,
151
153
  formatWorkspaceProfileSuffix,
@@ -158,7 +160,7 @@ import {
158
160
  resolveViewerProfile,
159
161
  resolveViewerProfileForRepo,
160
162
  saveLinearOAuth
161
- } from "../chunk-GCHSJCCX.js";
163
+ } from "../chunk-IFU4W4C4.js";
162
164
  import "../chunk-NSTQ6QKD.js";
163
165
  import {
164
166
  dropNestedElectronEnvFromProcess
@@ -169,7 +171,7 @@ import {
169
171
  normalizeWorkspaceTags,
170
172
  readThread,
171
173
  updateThread
172
- } from "../chunk-HOLB6ZFZ.js";
174
+ } from "../chunk-B4CDSSRN.js";
173
175
  import "../chunk-WMZIANPV.js";
174
176
  import "../chunk-KGZBYWZ3.js";
175
177
  import {
@@ -1959,6 +1961,18 @@ async function commentLinearIssue(input, opts) {
1959
1961
  }
1960
1962
 
1961
1963
  // src/integrations/issues.ts
1964
+ var CURSOR_ISSUES_UNAVAILABLE = "Cursor Origin has no issue tracker. Tickets for this repo come from Linear or AbleTime (Settings \u2192 Issues).";
1965
+ var ENTIRE_ISSUES_ARE_TRAILS = "Entire does not use GitHub Issues. Tickets for this repo are Trails (`entire trail list`). Linear or AbleTime still work when selected in Settings \u2192 Issues.";
1966
+ async function cursorIssuesUnavailableReason(repoPath) {
1967
+ try {
1968
+ const remote = await resolveOriginRemote(repoPath);
1969
+ if (remote?.forge === "cursor") return CURSOR_ISSUES_UNAVAILABLE;
1970
+ if (remote?.forge === "entire") return ENTIRE_ISSUES_ARE_TRAILS;
1971
+ return null;
1972
+ } catch {
1973
+ return null;
1974
+ }
1975
+ }
1962
1976
  function assigneeKey(assignee) {
1963
1977
  return (assignee ?? "").trim().toLowerCase();
1964
1978
  }
@@ -2120,6 +2134,17 @@ async function listIssues(repoPath, opts) {
2120
2134
  ...since ? { since, comments: commentsFromAbleTimeIssues(tasks, issues2, since) } : {}
2121
2135
  };
2122
2136
  }
2137
+ const unavailableReason = await cursorIssuesUnavailableReason(repoPath);
2138
+ if (unavailableReason) {
2139
+ return {
2140
+ source,
2141
+ preferredSource,
2142
+ linearConnected,
2143
+ abletimeConnected,
2144
+ issues: [],
2145
+ unavailableReason
2146
+ };
2147
+ }
2123
2148
  const [issues, login] = await Promise.all([
2124
2149
  listGitHubIssues(repoPath, { assignee, query, limit: opts?.limit, updatedSince: since }),
2125
2150
  githubViewerLogin(repoPath)
@@ -2889,11 +2914,15 @@ function fail2(err) {
2889
2914
  true
2890
2915
  );
2891
2916
  }
2917
+ async function cursorIssueBlock(repoPath) {
2918
+ const cwd = await resolveRepoRoot((repoPath ?? "").trim() || process.cwd());
2919
+ return cursorIssuesUnavailableReason(cwd);
2920
+ }
2892
2921
  var repoPathSchema = z3.string().optional().describe("Workspace / worktree path. Omit on a worktree turn (uses cwd).");
2893
2922
  function registerGithubIssueTools(server) {
2894
2923
  server.tool(
2895
2924
  "github_search_issues",
2896
- "Search or list open GitHub issues in this repo via Account gh. Default 40; pass query and/or limit (max 250) when truncated. assignee: me, unassigned, all, or a login. Pass updatedSince for new/updated tickets and new comments (e.g. \u201Cany updates since yesterday?\u201D).",
2925
+ "Search or list open GitHub issues in this repo via Account gh. A Cursor origin returns unavailableReason \u2014 Origin has no issue tracker. An Entire origin does the same \u2014 tickets there are Trails (`entire trail`), not GitHub Issues. Default 40; pass query and/or limit (max 250) when truncated. assignee: me, unassigned, all, or a login. Pass updatedSince for new/updated tickets and new comments (e.g. \u201Cany updates since yesterday?\u201D).",
2897
2926
  {
2898
2927
  query: z3.string().optional().describe("Search text (title, body, identifiers). Omit to list by assignee only."),
2899
2928
  assignee: z3.string().optional().describe("me, unassigned, all, or a GitHub login. Default: all when query is set, otherwise me."),
@@ -2905,6 +2934,15 @@ function registerGithubIssueTools(server) {
2905
2934
  try {
2906
2935
  const cwd = await resolveRepoRoot((repoPath ?? "").trim() || process.cwd());
2907
2936
  const page = clampMcpIssueLimit(limit);
2937
+ const blocked = await cursorIssuesUnavailableReason(cwd);
2938
+ if (blocked) {
2939
+ return mcpJson(
2940
+ formatListedIssuesForMcp(
2941
+ { source: "github", issues: [], unavailableReason: blocked },
2942
+ page
2943
+ )
2944
+ );
2945
+ }
2908
2946
  const since = updatedSince ? parseIssueSince(updatedSince) : void 0;
2909
2947
  const issues = await listGitHubIssues(cwd, {
2910
2948
  query,
@@ -2940,6 +2978,8 @@ function registerGithubIssueTools(server) {
2940
2978
  { repoPath: repoPathSchema },
2941
2979
  async ({ repoPath }) => {
2942
2980
  try {
2981
+ const blocked = await cursorIssueBlock(repoPath);
2982
+ if (blocked) throw new Error(blocked);
2943
2983
  return text2({ projects: await listGitHubProjects({ repoPath }) });
2944
2984
  } catch (err) {
2945
2985
  return fail2(err);
@@ -2952,6 +2992,8 @@ function registerGithubIssueTools(server) {
2952
2992
  { id: z3.string(), include: mcpIssueIncludeSchema, repoPath: repoPathSchema },
2953
2993
  async ({ id, include, repoPath }) => {
2954
2994
  try {
2995
+ const blocked = await cursorIssueBlock(repoPath);
2996
+ if (blocked) throw new Error(blocked);
2955
2997
  return text2(formatGitHubIssuePayload(await getGitHubIssue(id, { repoPath }), include));
2956
2998
  } catch (err) {
2957
2999
  return fail2(err);
@@ -2980,6 +3022,8 @@ function registerGithubIssueTools(server) {
2980
3022
  { id: z3.string(), body: z3.string(), repoPath: repoPathSchema },
2981
3023
  async ({ id, body, repoPath }) => {
2982
3024
  try {
3025
+ const blocked = await cursorIssueBlock(repoPath);
3026
+ if (blocked) throw new Error(blocked);
2983
3027
  return text2(await commentGitHubIssue({ id, body }, { repoPath }));
2984
3028
  } catch (err) {
2985
3029
  return fail2(err);
@@ -3007,6 +3051,8 @@ function registerGithubIssueTools(server) {
3007
3051
  },
3008
3052
  async (args) => {
3009
3053
  try {
3054
+ const blocked = await cursorIssueBlock(args.repoPath);
3055
+ if (blocked) throw new Error(blocked);
3010
3056
  return text2(await updateGitHubIssue(args, { repoPath: args.repoPath }));
3011
3057
  } catch (err) {
3012
3058
  return fail2(err);
@@ -3024,6 +3070,8 @@ function registerGithubIssueTools(server) {
3024
3070
  },
3025
3071
  async (args) => {
3026
3072
  try {
3073
+ const blocked = await cursorIssueBlock(args.repoPath);
3074
+ if (blocked) throw new Error(blocked);
3027
3075
  return text2(await createGitHubIssue(args, { repoPath: args.repoPath }));
3028
3076
  } catch (err) {
3029
3077
  return fail2(err);
@@ -3545,7 +3593,7 @@ function parseWhen(args) {
3545
3593
  function registerScheduleTools(server) {
3546
3594
  server.tool(
3547
3595
  "list_schedules",
3548
- "List local Sideboard schedules that trigger a chat when due. Jobs fire only while Sideboard.app is running on this Mac (sleep skips until wake).",
3596
+ "List local Sideboard automations that trigger a chat when due. Jobs fire only while Sideboard.app is running on this Mac (sleep skips until wake). Shown in the sidebar after Board.",
3549
3597
  {},
3550
3598
  async () => {
3551
3599
  try {
@@ -3557,9 +3605,9 @@ function registerScheduleTools(server) {
3557
3605
  );
3558
3606
  server.tool(
3559
3607
  "create_schedule",
3560
- "Create a local schedule that, when due, sends a prompt to an existing chat (chatId) or starts a new Global orchestration chat (omit chatId). Pass chatId=self to continue this chat. If that chat is missing or archived when the job fires, Sideboard starts a new Global chat (recurring jobs then continue that chat). Exactly one of at (ISO datetime), every (15m/1h/6h/1d), or cron (5-field). Recurring jobs without chatId open a new Global chat each run. Creating or enabling a future job turns on Settings \u2192 Advanced \u2192 Caffeinate while schedules are enabled so the Mac stays awake until due. Sideboard.app must be running for the job to fire.",
3608
+ "Create a local automation that, when due, sends a prompt to an existing chat (chatId) or starts a new Global orchestration chat (omit chatId). Pass chatId=self to continue this chat. If that chat is missing or archived when the job fires, Sideboard starts a new Global chat (recurring jobs then continue that chat). Exactly one of at (ISO datetime), every (15m/1h/6h/1d), or cron (5-field). Recurring jobs without chatId open a new Global chat each run and archive it when that run finishes. History keeps the latest run for that automation. Creating or enabling a future job turns on Settings \u2192 Advanced \u2192 Caffeinate while automations are enabled so the Mac stays awake until due. Sideboard.app must be running for the job to fire.",
3561
3609
  {
3562
- prompt: z7.string().describe("User message / goal queued when the schedule fires"),
3610
+ prompt: z7.string().describe("User message / goal queued when the automation fires"),
3563
3611
  name: z7.string().optional(),
3564
3612
  at: z7.string().optional().describe("ISO datetime for a one-shot"),
3565
3613
  every: z7.string().optional().describe("Interval such as 15m, 1h, 6h, 1d"),
@@ -3595,7 +3643,7 @@ function registerScheduleTools(server) {
3595
3643
  });
3596
3644
  return text4({
3597
3645
  schedule,
3598
- hint: scheduleNeedsCaffeinate(schedule) ? "Fires while Sideboard.app is running. Recurring jobs without chatId create a new orchestration chat each run. Caffeinate while schedules are enabled is now on so the Mac can stay awake until this job is due." : "Fires while Sideboard.app is running. Recurring jobs without chatId create a new orchestration chat each run."
3646
+ hint: scheduleNeedsCaffeinate(schedule) ? "Fires while Sideboard.app is running. Recurring jobs without chatId create a new orchestration chat each run and archive it when that run finishes (History keeps the latest). Caffeinate while automations are enabled is now on so the Mac can stay awake until this job is due." : "Fires while Sideboard.app is running. Recurring jobs without chatId create a new orchestration chat each run and archive it when that run finishes (History keeps the latest)."
3599
3647
  });
3600
3648
  } catch (err) {
3601
3649
  return fail4(err);
@@ -3604,7 +3652,7 @@ function registerScheduleTools(server) {
3604
3652
  );
3605
3653
  server.tool(
3606
3654
  "update_schedule",
3607
- "Update a local schedule (prompt, cadence, target chat, enabled). Pass id from list_schedules.",
3655
+ "Update a local automation (prompt, cadence, target chat, enabled). Pass id from list_schedules.",
3608
3656
  {
3609
3657
  id: z7.string(),
3610
3658
  prompt: z7.string().optional(),
@@ -3659,7 +3707,7 @@ function registerScheduleTools(server) {
3659
3707
  );
3660
3708
  server.tool(
3661
3709
  "delete_schedule",
3662
- "Delete a local schedule. Pass id from list_schedules.",
3710
+ "Delete a local automation. Pass id from list_schedules.",
3663
3711
  { id: z7.string() },
3664
3712
  async ({ id }) => {
3665
3713
  try {
@@ -3672,12 +3720,12 @@ function registerScheduleTools(server) {
3672
3720
  );
3673
3721
  server.tool(
3674
3722
  "run_schedule",
3675
- "Fire a schedule now (does not wait for nextRunAt). Queues the prompt on the target chat or starts a new Global chat. If Sideboard.app is running, the desktop drains the turn.",
3723
+ "Fire an automation now (does not wait for nextRunAt). Queues the prompt on the target chat or starts a new Global chat. If Sideboard.app is running, the desktop drains the turn.",
3676
3724
  { id: z7.string() },
3677
3725
  async ({ id }) => {
3678
3726
  try {
3679
3727
  if (!getSchedule(id)) {
3680
- return fail4(new Error(`Schedule not found: ${id}`));
3728
+ return fail4(new Error(`Automation not found: ${id}`));
3681
3729
  }
3682
3730
  const schedule = await fireSchedule(id);
3683
3731
  return text4({ schedule });
@@ -4012,7 +4060,7 @@ async function startMcpServer() {
4012
4060
  );
4013
4061
  }
4014
4062
  try {
4015
- const { maxConcurrentAgents } = await import("../app-settings-CZVFMOI5.js");
4063
+ const { maxConcurrentAgents } = await import("../app-settings-KMPVI2B7.js");
4016
4064
  orch.setMaxConcurrent(maxConcurrentAgents());
4017
4065
  } catch {
4018
4066
  }
@@ -4047,13 +4095,13 @@ async function startMcpServer() {
4047
4095
  if (!worktreeProfile) {
4048
4096
  server.tool(
4049
4097
  "list_projects",
4050
- "List registered projects (git repos). Each line is name, path, github:owner/repo when resolvable, and project context when set \u2014 use path as repoPath for list_board/list_branches/list_prs/list_issues/create_workspace. Account / project context (Settings \u2192 Agents / Projects) says which tickets and review PRs belong to the user.",
4098
+ "List registered projects (git repos). Each line is name, path, that repo's origin as host:owner/repo (github:, cursor:, entire:, or another hostname), and project context when set. Projects do not share one git host. Use path as repoPath for list_board/list_branches/list_prs/list_issues/create_workspace. Account / project context (Settings \u2192 Agents / Projects) says which tickets and review PRs belong to the user.",
4051
4099
  {},
4052
4100
  async () => {
4053
4101
  const workspaces = orch.listWorkspaces();
4054
4102
  const lines = await Promise.all(
4055
4103
  workspaces.map(async (w) => {
4056
- const slug = await resolveGithubRepoSlug(w.path).catch(() => null);
4104
+ const tag = await resolveProjectRemoteTag(w.path).catch(() => null);
4057
4105
  let profile;
4058
4106
  try {
4059
4107
  profile = resolveViewerProfileForRepo(w.path);
@@ -4061,7 +4109,7 @@ async function startMcpServer() {
4061
4109
  profile = resolveViewerProfile();
4062
4110
  }
4063
4111
  const suffix = formatWorkspaceProfileSuffix(profile);
4064
- return slug ? `${w.name} ${w.path} github:${slug}${suffix}` : `${w.name} ${w.path}${suffix}`;
4112
+ return tag ? `${w.name} ${w.path} ${tag}${suffix}` : `${w.name} ${w.path}${suffix}`;
4065
4113
  })
4066
4114
  );
4067
4115
  return {
@@ -4560,7 +4608,7 @@ async function startMcpServer() {
4560
4608
  if (!worktreeProfile) {
4561
4609
  registerConnectedIssueVendorTools(server);
4562
4610
  const { getCaffeinateHold, setCaffeinateHold } = await import("../caffeinate-hold-H7TTUDGM.js");
4563
- const { resolveNewThreadOptions, resolveThreadDefaults } = await import("../app-settings-CZVFMOI5.js");
4611
+ const { resolveNewThreadOptions, resolveThreadDefaults } = await import("../app-settings-KMPVI2B7.js");
4564
4612
  const accountDefaults = resolveThreadDefaults();
4565
4613
  const accountDefaultsHint = `Account defaults: agent=${accountDefaults.agent}, model=${accountDefaults.model?.trim() || "Auto"}, effort=${accountDefaults.effort}`;
4566
4614
  server.tool(
@@ -4908,7 +4956,7 @@ async function startMcpServer() {
4908
4956
  error: true,
4909
4957
  action,
4910
4958
  lastError: message,
4911
- hint: /body is too long/i.test(message) ? "Branch is already pushed. send_to_chat so the worktree agent runs gh pr create --draft --assignee @me -R <origin> --body-file <short.md>. Keep the description short." : void 0
4959
+ hint: /body is too long/i.test(message) ? "Branch is already pushed. send_to_chat so the worktree agent retries with a short body (GitHub: gh pr create --draft --assignee @me -R <slug>; Cursor: origin pr create --draft --push -R <slug>; Entire: entire trail create --title with a short --body). Keep the description short." : void 0
4912
4960
  },
4913
4961
  true
4914
4962
  );
@@ -5218,7 +5266,7 @@ async function startMcpServer() {
5218
5266
  );
5219
5267
  server.tool(
5220
5268
  "list_issues",
5221
- "List or search issues (Linear, AbleTime, or GitHub; falls back to GitHub). Use Settings \u2192 Agents / Projects notes and roles to pick tickets relevant to the viewer (query + assignee=me or unassigned as the notes say). Default 40; pass query and/or limit (max 250) when truncated. assignee: me (Linear default), unassigned, all, or a user id. Pass updatedSince for new/updated tickets and new comments (\u201Cany updates since yesterday?\u201D). Then create_workspace with sourceType=ticket.",
5269
+ "List or search issues (Linear, AbleTime, or GitHub; falls back to GitHub). Cursor Origin has no issue tracker \u2014 a Cursor repo returns unavailableReason unless Linear or AbleTime is the source. Entire tickets are Trails (`entire trail`), not GitHub Issues, so an Entire repo does the same unless Linear or AbleTime is the source. Use Settings \u2192 Agents / Projects notes and roles to pick tickets relevant to the viewer (query + assignee=me or unassigned as the notes say). Default 40; pass query and/or limit (max 250) when truncated. assignee: me (Linear default), unassigned, all, or a user id. Pass updatedSince for new/updated tickets and new comments (\u201Cany updates since yesterday?\u201D). Then create_workspace with sourceType=ticket.",
5222
5270
  {
5223
5271
  repoPath: z8.string(),
5224
5272
  query: z8.string().optional().describe("Search title, identifier, or description"),
@@ -3,12 +3,12 @@ import {
3
3
  detectOptionalServiceClis,
4
4
  installOptionalServiceCli,
5
5
  optionalCliPresence
6
- } from "./chunk-AZ4GEEGL.js";
7
- import "./chunk-FDXHNROD.js";
8
- import "./chunk-AESO2KJS.js";
6
+ } from "./chunk-RHJKZOPQ.js";
7
+ import "./chunk-TEFFR6PB.js";
8
+ import "./chunk-BPDVHB4U.js";
9
9
  import "./chunk-JAT3JFOS.js";
10
- import "./chunk-QVN2WOKJ.js";
11
- import "./chunk-E52SQENB.js";
10
+ import "./chunk-2TUE6JKQ.js";
11
+ import "./chunk-FZKAAAEB.js";
12
12
  import "./chunk-77WWLBCI.js";
13
13
  import "./chunk-4TR3HZFT.js";
14
14
  import "./chunk-WDRMZKVB.js";
@@ -4,16 +4,16 @@ import {
4
4
  OPTIONAL_SERVICES,
5
5
  isOptionalServiceId,
6
6
  optionalServiceSpec
7
- } from "./chunk-MBYGWNLQ.js";
7
+ } from "./chunk-UX6EDDGR.js";
8
8
  import {
9
9
  installNpmGlobalPackage,
10
10
  whichOnPath
11
- } from "./chunk-53OCOGND.js";
11
+ } from "./chunk-7JV5QP5K.js";
12
12
  import "./chunk-2GPQZZLY.js";
13
13
  import {
14
14
  enrichPathWithNpmGlobalBin
15
- } from "./chunk-2UG25RMK.js";
16
- import "./chunk-GCHSJCCX.js";
15
+ } from "./chunk-YBTSZ2SW.js";
16
+ import "./chunk-IFU4W4C4.js";
17
17
  import "./chunk-NSTQ6QKD.js";
18
18
  import "./chunk-WWUABK6B.js";
19
19
  import "./chunk-FJZWM2ON.js";
@@ -9,30 +9,30 @@ import {
9
9
  resolveSendFollowUp,
10
10
  startOrchestration,
11
11
  waitForPidExit
12
- } from "./chunk-U2N32EA6.js";
12
+ } from "./chunk-LD2DXHBP.js";
13
13
  import "./chunk-PGPSIEMW.js";
14
- import "./chunk-IAPO7ZFG.js";
15
- import "./chunk-HH3VVTEC.js";
16
- import "./chunk-ST2UQBJT.js";
17
- import "./chunk-7Q327QF2.js";
14
+ import "./chunk-JNEFEA2A.js";
15
+ import "./chunk-S5CJUIPY.js";
16
+ import "./chunk-BANN5HUX.js";
17
+ import "./chunk-QIC2JXHW.js";
18
18
  import "./chunk-7H655NEW.js";
19
- import "./chunk-FDXHNROD.js";
20
- import "./chunk-AESO2KJS.js";
21
- import "./chunk-YALFZKSC.js";
22
- import "./chunk-TUJFCJJU.js";
23
- import "./chunk-YEIHCSZS.js";
24
- import "./chunk-2P4XKWV2.js";
19
+ import "./chunk-TEFFR6PB.js";
20
+ import "./chunk-BPDVHB4U.js";
21
+ import "./chunk-H6GXYV5Q.js";
22
+ import "./chunk-UWJUARFA.js";
23
+ import "./chunk-IFWGG2M2.js";
24
+ import "./chunk-QKHEVSB5.js";
25
25
  import "./chunk-RSA47QYR.js";
26
26
  import "./chunk-JAT3JFOS.js";
27
27
  import "./chunk-F2PVRF3B.js";
28
28
  import "./chunk-AXQ4ZWHK.js";
29
- import "./chunk-Y3Y7SZBZ.js";
29
+ import "./chunk-ZHGMRBSC.js";
30
30
  import "./chunk-5XNT6BCG.js";
31
31
  import "./chunk-6K64FJDD.js";
32
32
  import "./chunk-LG6RJBIY.js";
33
- import "./chunk-QVN2WOKJ.js";
33
+ import "./chunk-2TUE6JKQ.js";
34
34
  import "./chunk-YDUHLWI5.js";
35
- import "./chunk-E52SQENB.js";
35
+ import "./chunk-FZKAAAEB.js";
36
36
  import "./chunk-77WWLBCI.js";
37
37
  import "./chunk-4TR3HZFT.js";
38
38
  import "./chunk-WDRMZKVB.js";
@@ -11,29 +11,29 @@ import {
11
11
  resolveSendFollowUp,
12
12
  startOrchestration,
13
13
  waitForPidExit
14
- } from "./chunk-OO3R6CS2.js";
14
+ } from "./chunk-45UB2J47.js";
15
15
  import "./chunk-LX5R5JOR.js";
16
- import "./chunk-MBYGWNLQ.js";
16
+ import "./chunk-UX6EDDGR.js";
17
17
  import "./chunk-4GK32AYX.js";
18
18
  import "./chunk-DC3VZXMA.js";
19
- import "./chunk-GH7UMULC.js";
20
- import "./chunk-53OCOGND.js";
21
- import "./chunk-V5BTGQ6M.js";
19
+ import "./chunk-XDQSHSL6.js";
20
+ import "./chunk-7JV5QP5K.js";
21
+ import "./chunk-6U6QRUHY.js";
22
22
  import "./chunk-E63AM3PW.js";
23
23
  import "./chunk-2GPQZZLY.js";
24
- import "./chunk-NRSC4N5X.js";
25
- import "./chunk-I5TESHDN.js";
26
- import "./chunk-A6C67DY5.js";
27
- import "./chunk-A46CIARU.js";
24
+ import "./chunk-RGUZPMTF.js";
25
+ import "./chunk-EQ52JR3Q.js";
26
+ import "./chunk-SPMIZSKH.js";
27
+ import "./chunk-YWBLQBSN.js";
28
28
  import "./chunk-N2WW62LF.js";
29
- import "./chunk-DD67JWTN.js";
30
- import "./chunk-2UG25RMK.js";
31
- import "./chunk-GCHSJCCX.js";
29
+ import "./chunk-4YXZOXMT.js";
30
+ import "./chunk-YBTSZ2SW.js";
31
+ import "./chunk-IFU4W4C4.js";
32
32
  import "./chunk-NSTQ6QKD.js";
33
33
  import "./chunk-WWUABK6B.js";
34
34
  import "./chunk-FJZWM2ON.js";
35
35
  import "./chunk-J2LNLI4S.js";
36
- import "./chunk-HOLB6ZFZ.js";
36
+ import "./chunk-B4CDSSRN.js";
37
37
  import "./chunk-WMZIANPV.js";
38
38
  import "./chunk-KGZBYWZ3.js";
39
39
  import "./chunk-WOU343SI.js";
@@ -1,14 +1,16 @@
1
1
  import {
2
2
  gh,
3
3
  git,
4
+ originCli,
4
5
  resolveGhAuthToken,
5
6
  resolveGitDirsForLockRecovery,
6
7
  run
7
- } from "./chunk-QVN2WOKJ.js";
8
+ } from "./chunk-2TUE6JKQ.js";
8
9
  import "./chunk-4TR3HZFT.js";
9
10
  export {
10
11
  gh,
11
12
  git,
13
+ originCli,
12
14
  resolveGhAuthToken,
13
15
  resolveGitDirsForLockRecovery,
14
16
  run
@@ -3,14 +3,16 @@
3
3
  import {
4
4
  gh,
5
5
  git,
6
+ originCli,
6
7
  resolveGhAuthToken,
7
8
  resolveGitDirsForLockRecovery,
8
9
  run
9
- } from "./chunk-2UG25RMK.js";
10
+ } from "./chunk-YBTSZ2SW.js";
10
11
  import "./chunk-WWUABK6B.js";
11
12
  export {
12
13
  gh,
13
14
  git,
15
+ originCli,
14
16
  resolveGhAuthToken,
15
17
  resolveGitDirsForLockRecovery,
16
18
  run
@@ -17,7 +17,7 @@ import {
17
17
  updateThread,
18
18
  withThreadLock,
19
19
  writeThread
20
- } from "./chunk-HOLB6ZFZ.js";
20
+ } from "./chunk-B4CDSSRN.js";
21
21
  import "./chunk-WMZIANPV.js";
22
22
  import "./chunk-KGZBYWZ3.js";
23
23
  import "./chunk-WOU343SI.js";
@@ -15,7 +15,7 @@ import {
15
15
  updateThread,
16
16
  withThreadLock,
17
17
  writeThread
18
- } from "./chunk-YEIHCSZS.js";
18
+ } from "./chunk-IFWGG2M2.js";
19
19
  import "./chunk-F2PVRF3B.js";
20
20
  import "./chunk-LG6RJBIY.js";
21
21
  import "./chunk-77WWLBCI.js";
@@ -9,15 +9,15 @@ import {
9
9
  removeWorkspace,
10
10
  sameWorkspacePath,
11
11
  syncWorkspacesFromThreads
12
- } from "./chunk-YALFZKSC.js";
13
- import "./chunk-TUJFCJJU.js";
14
- import "./chunk-YEIHCSZS.js";
15
- import "./chunk-2P4XKWV2.js";
12
+ } from "./chunk-H6GXYV5Q.js";
13
+ import "./chunk-UWJUARFA.js";
14
+ import "./chunk-IFWGG2M2.js";
15
+ import "./chunk-QKHEVSB5.js";
16
16
  import "./chunk-F2PVRF3B.js";
17
17
  import "./chunk-6K64FJDD.js";
18
18
  import "./chunk-LG6RJBIY.js";
19
- import "./chunk-QVN2WOKJ.js";
20
- import "./chunk-E52SQENB.js";
19
+ import "./chunk-2TUE6JKQ.js";
20
+ import "./chunk-FZKAAAEB.js";
21
21
  import "./chunk-77WWLBCI.js";
22
22
  import "./chunk-4TR3HZFT.js";
23
23
  import "./chunk-WDRMZKVB.js";
@@ -11,17 +11,17 @@ import {
11
11
  removeWorkspace,
12
12
  sameWorkspacePath,
13
13
  syncWorkspacesFromThreads
14
- } from "./chunk-A6C67DY5.js";
15
- import "./chunk-A46CIARU.js";
14
+ } from "./chunk-SPMIZSKH.js";
15
+ import "./chunk-YWBLQBSN.js";
16
16
  import "./chunk-N2WW62LF.js";
17
- import "./chunk-DD67JWTN.js";
18
- import "./chunk-2UG25RMK.js";
19
- import "./chunk-GCHSJCCX.js";
17
+ import "./chunk-4YXZOXMT.js";
18
+ import "./chunk-YBTSZ2SW.js";
19
+ import "./chunk-IFU4W4C4.js";
20
20
  import "./chunk-NSTQ6QKD.js";
21
21
  import "./chunk-WWUABK6B.js";
22
22
  import "./chunk-FJZWM2ON.js";
23
23
  import "./chunk-J2LNLI4S.js";
24
- import "./chunk-HOLB6ZFZ.js";
24
+ import "./chunk-B4CDSSRN.js";
25
25
  import "./chunk-WMZIANPV.js";
26
26
  import "./chunk-KGZBYWZ3.js";
27
27
  import "./chunk-WOU343SI.js";
@@ -9,11 +9,11 @@ import {
9
9
  connectedPrSelectors,
10
10
  countUnpushedVsOrigin,
11
11
  createExistingBranchWorktree,
12
- createOrUpdatePr,
13
12
  createThreadWorktree,
14
13
  currentBranch,
15
14
  detectLocalMergeConflicts,
16
15
  ensureGhPreferOrigin,
16
+ entireUsesTrails,
17
17
  fastForwardMainCheckoutIfSafe,
18
18
  fetchOriginForWorktree,
19
19
  fetchPrHead,
@@ -23,7 +23,6 @@ import {
23
23
  getPrForHeadBranch,
24
24
  getPrMeta,
25
25
  ghHeadRef,
26
- ghPrCreateAssigneeArgs,
27
26
  ghRepoSelectArgs,
28
27
  githubAgentGitEnv,
29
28
  isDefaultishSourceRef,
@@ -43,18 +42,20 @@ import {
43
42
  resolveDefaultBranch,
44
43
  resolveDiffBaseRef,
45
44
  resolveGithubRepoSlug,
45
+ resolveOriginRemote,
46
46
  resolvePrSelector,
47
47
  resolvePrSelectors,
48
+ resolveProjectRemoteTag,
48
49
  resolveRepoRoot,
49
50
  resolveWorktreeStartPoint,
50
51
  slugify,
51
52
  suggestSlug,
52
53
  switchWorktreeBranch
53
- } from "./chunk-A46CIARU.js";
54
+ } from "./chunk-YWBLQBSN.js";
54
55
  import "./chunk-N2WW62LF.js";
55
- import "./chunk-DD67JWTN.js";
56
- import "./chunk-2UG25RMK.js";
57
- import "./chunk-GCHSJCCX.js";
56
+ import "./chunk-4YXZOXMT.js";
57
+ import "./chunk-YBTSZ2SW.js";
58
+ import "./chunk-IFU4W4C4.js";
58
59
  import "./chunk-NSTQ6QKD.js";
59
60
  import "./chunk-WWUABK6B.js";
60
61
  import "./chunk-FJZWM2ON.js";
@@ -74,7 +75,7 @@ import {
74
75
  worktreeDisplayLabelForGroup,
75
76
  worktreeNameFromPath,
76
77
  worktreeSlugForTicket
77
- } from "./chunk-HOLB6ZFZ.js";
78
+ } from "./chunk-B4CDSSRN.js";
78
79
  import "./chunk-WMZIANPV.js";
79
80
  import "./chunk-KGZBYWZ3.js";
80
81
  import "./chunk-WOU343SI.js";
@@ -90,11 +91,11 @@ export {
90
91
  connectedPrSelectors,
91
92
  countUnpushedVsOrigin,
92
93
  createExistingBranchWorktree,
93
- createOrUpdatePr,
94
94
  createThreadWorktree,
95
95
  currentBranch,
96
96
  detectLocalMergeConflicts,
97
97
  ensureGhPreferOrigin,
98
+ entireUsesTrails,
98
99
  fastForwardMainCheckoutIfSafe,
99
100
  fetchOriginForWorktree,
100
101
  fetchPrHead,
@@ -104,7 +105,6 @@ export {
104
105
  getPrForHeadBranch,
105
106
  getPrMeta,
106
107
  ghHeadRef,
107
- ghPrCreateAssigneeArgs,
108
108
  ghRepoSelectArgs,
109
109
  githubAgentGitEnv,
110
110
  isDefaultishSourceRef,
@@ -128,8 +128,10 @@ export {
128
128
  resolveDefaultBranch,
129
129
  resolveDiffBaseRef,
130
130
  resolveGithubRepoSlug,
131
+ resolveOriginRemote,
131
132
  resolvePrSelector,
132
133
  resolvePrSelectors,
134
+ resolveProjectRemoteTag,
133
135
  resolveRepoRoot,
134
136
  resolveWorktreeStartPoint,
135
137
  slugify,