@sideboard-ai/core 0.1.89 → 0.1.92

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 (30) hide show
  1. package/dist/agents/cursor-runner.cjs +129 -14
  2. package/dist/agents/cursor-runner.js +4 -1
  3. package/dist/{agents-LMUFTGKF.js → agents-JXQ5QHDU.js} +4 -4
  4. package/dist/{agents-ODBP7J6E.js → agents-TUV4NH7S.js} +5 -5
  5. package/dist/{chunk-RJLBSYUO.js → chunk-35LKGGOC.js} +45 -77
  6. package/dist/{chunk-WANQFU3S.js → chunk-6XBXVXX2.js} +2 -2
  7. package/dist/{chunk-7D27DD2X.js → chunk-CIRXAYWS.js} +260 -61
  8. package/dist/{chunk-B2KIO2SD.js → chunk-CLGO7TLO.js} +2 -2
  9. package/dist/{chunk-JE75QW2I.js → chunk-GJ2HJQIU.js} +236 -96
  10. package/dist/{chunk-CBJSPTBG.js → chunk-GXSYI7FH.js} +206 -5
  11. package/dist/{chunk-UHTNJKZX.js → chunk-NR6APJLD.js} +2 -2
  12. package/dist/{chunk-6EZRSCIT.js → chunk-QKYO6BHB.js} +2 -2
  13. package/dist/{chunk-ZXYWWSHZ.js → chunk-R7BQBSDT.js} +254 -61
  14. package/dist/{chunk-OB6IRIFV.js → chunk-XH2GS2LO.js} +2 -2
  15. package/dist/{chunk-VZ2L4AEJ.js → chunk-XUWDLRAE.js} +2 -2
  16. package/dist/{coordinator-prompt-UK5LYFN5.js → coordinator-prompt-AKEY4WSO.js} +2 -2
  17. package/dist/{coordinator-prompt-CI5SHONJ.js → coordinator-prompt-OQOOD5ET.js} +2 -2
  18. package/dist/{global-workspace-2YZ2V4I5.js → global-workspace-3GNPQCLE.js} +3 -3
  19. package/dist/{global-workspace-JQQLPJM5.js → global-workspace-M3OMVDDH.js} +3 -3
  20. package/dist/index.cjs +941 -455
  21. package/dist/index.d.cts +77 -19
  22. package/dist/index.d.ts +77 -19
  23. package/dist/index.js +166 -42
  24. package/dist/mcp/run-stdio.cjs +815 -428
  25. package/dist/mcp/run-stdio.js +77 -40
  26. package/dist/{workspaces-YWCC3WV4.js → workspaces-ERZC7ULY.js} +4 -4
  27. package/dist/{workspaces-FDO5L4NI.js → workspaces-J4WG6UFR.js} +4 -4
  28. package/dist/{worktree-7YNSJ224.js → worktree-DA4BOV7G.js} +7 -1
  29. package/dist/{worktree-4555QBQ7.js → worktree-EO5QAGJU.js} +7 -1
  30. package/package.json +1 -1
@@ -17,14 +17,14 @@ import {
17
17
  resolveQuotaFallbackAgent,
18
18
  sideboardMcpProfile,
19
19
  summarizeTurnStderr
20
- } from "../chunk-JE75QW2I.js";
20
+ } from "../chunk-GJ2HJQIU.js";
21
21
  import "../chunk-DKHGWYWR.js";
22
22
  import {
23
23
  addWorkspace,
24
24
  ensureWorkspace,
25
25
  removeWorkspace,
26
26
  syncWorkspacesFromThreads
27
- } from "../chunk-WANQFU3S.js";
27
+ } from "../chunk-6XBXVXX2.js";
28
28
  import {
29
29
  extractPresentedPlan,
30
30
  readPlanFile,
@@ -42,14 +42,14 @@ import {
42
42
  isGlobalThread,
43
43
  isOrchestratorThread,
44
44
  orchestratorSessionPoisonedByBuiltins
45
- } from "../chunk-UHTNJKZX.js";
45
+ } from "../chunk-NR6APJLD.js";
46
46
  import {
47
47
  SLACK_REPLY_FORMATTING,
48
48
  coordinatorSystemPrompt,
49
49
  coordinatorTurnReminder,
50
50
  enrichWorkspacesWithGithub,
51
51
  ensureGlobalCoordinatorCwd
52
- } from "../chunk-OB6IRIFV.js";
52
+ } from "../chunk-XH2GS2LO.js";
53
53
  import {
54
54
  addPrStackLayer,
55
55
  allocateTeamName,
@@ -66,6 +66,7 @@ import {
66
66
  getPr,
67
67
  getPrChecks,
68
68
  getPrDetails,
69
+ getPrForHeadBranch,
69
70
  getPrMeta,
70
71
  getPrStack,
71
72
  initPrStack,
@@ -75,6 +76,7 @@ import {
75
76
  listBranches,
76
77
  listPrs,
77
78
  listWorktrees,
79
+ mergeAgentGitAuthEnv,
78
80
  mergePr,
79
81
  normalizeWorktreePath,
80
82
  originGhRepoEnv,
@@ -85,11 +87,13 @@ import {
85
87
  resolveDiffBaseRef,
86
88
  resolveGithubRepoSlug,
87
89
  resolvePrSelector,
90
+ resolvePrSelectors,
88
91
  resolveRepoRoot,
89
92
  takenSlugsFromThread,
90
93
  threadDisplayLabel,
94
+ warmGithubAgentAuth,
91
95
  worktreeNameFromPath
92
- } from "../chunk-ZXYWWSHZ.js";
96
+ } from "../chunk-R7BQBSDT.js";
93
97
  import {
94
98
  ATTACHMENTS_DIR,
95
99
  LEGACY_ATTACHMENTS_DIR,
@@ -939,9 +943,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
939
943
  `Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
940
944
  );
941
945
  }
942
- const { isGlobalThread: isGlobalThread2 } = await import("../global-workspace-2YZ2V4I5.js");
946
+ const { isGlobalThread: isGlobalThread2 } = await import("../global-workspace-3GNPQCLE.js");
943
947
  if (isGlobalThread2(thread)) {
944
- const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("../coordinator-prompt-CI5SHONJ.js");
948
+ const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("../coordinator-prompt-OQOOD5ET.js");
945
949
  ensureGlobalCoordinatorCwd2(
946
950
  isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
947
951
  );
@@ -959,10 +963,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
959
963
  const env = childEnvWithAppSettings(cmd.env);
960
964
  try {
961
965
  if (isOrchestratorThread(thread)) {
962
- Object.assign(env, await resolveAgentGitAuthEnv(env));
966
+ mergeAgentGitAuthEnv(env, await resolveAgentGitAuthEnv(env));
963
967
  } else {
964
- const originEnv = await originGhRepoEnv(thread.worktreePath, { env });
965
- Object.assign(env, originEnv);
968
+ mergeAgentGitAuthEnv(env, await originGhRepoEnv(thread.worktreePath, { env }));
966
969
  }
967
970
  } catch (err) {
968
971
  const detail = err instanceof Error ? err.message : String(err);
@@ -1351,7 +1354,10 @@ async function spawnWorkspaceScript(command, opts) {
1351
1354
  loginEnv
1352
1355
  );
1353
1356
  try {
1354
- Object.assign(env, await resolveAgentGitAuthEnv(env, { cwd: opts.worktreePath }));
1357
+ mergeAgentGitAuthEnv(
1358
+ env,
1359
+ await resolveAgentGitAuthEnv(env, { cwd: opts.worktreePath })
1360
+ );
1355
1361
  } catch {
1356
1362
  }
1357
1363
  const shell = process.platform === "darwin" ? "zsh" : "bash";
@@ -1785,6 +1791,7 @@ async function createThread(input, _onSetupLine) {
1785
1791
  let sourceRef = input.sourceRef;
1786
1792
  let sourceIsFork = false;
1787
1793
  let prUrl = null;
1794
+ let prTitle = null;
1788
1795
  if (input.sourceType === "pr") {
1789
1796
  const num = Number(input.sourceRef.replace(/^#/, ""));
1790
1797
  if (!Number.isFinite(num)) throw new Error(`Invalid PR number: ${input.sourceRef}`);
@@ -1800,6 +1807,12 @@ async function createThread(input, _onSetupLine) {
1800
1807
  } else if (input.sourceType === "branch") {
1801
1808
  if (!sourceRef || sourceRef === "HEAD" || sourceRef === "default") {
1802
1809
  sourceRef = await resolveDefaultBranch(repoPath);
1810
+ } else {
1811
+ const existing = await getPrForHeadBranch(repoPath, sourceRef);
1812
+ if (existing?.url) {
1813
+ prUrl = existing.url;
1814
+ prTitle = existing.title;
1815
+ }
1803
1816
  }
1804
1817
  } else if (input.sourceType === "adopt") {
1805
1818
  throw new Error("Use adoptThread() for adopt sources");
@@ -1830,14 +1843,15 @@ async function createThread(input, _onSetupLine) {
1830
1843
  sourceIsFork,
1831
1844
  parentThreadId: input.parentThreadId ?? null,
1832
1845
  status: "idle",
1833
- prUrl
1846
+ prUrl,
1847
+ prTitle
1834
1848
  });
1835
1849
  writeThread(thread);
1836
1850
  await ensureWorkspace(repoPath);
1837
1851
  return readThread(thread.id) ?? thread;
1838
1852
  }
1839
1853
  async function listLinearIssues(agent, repoPath) {
1840
- const { getAdapter: getAdapter2 } = await import("../agents-LMUFTGKF.js");
1854
+ const { getAdapter: getAdapter2 } = await import("../agents-JXQ5QHDU.js");
1841
1855
  await requireAgent(agent, { requireLinear: true });
1842
1856
  const adapter = getAdapter2(agent);
1843
1857
  if (!adapter.listLinearIssues) {
@@ -2628,7 +2642,7 @@ import {
2628
2642
  } from "fs";
2629
2643
  import { tmpdir } from "os";
2630
2644
  import { join as join8 } from "path";
2631
- import Database from "better-sqlite3";
2645
+ import { createRequire } from "module";
2632
2646
  var CONDUCTOR_APP_SUPPORT = join8(
2633
2647
  process.env.HOME ?? "",
2634
2648
  "Library",
@@ -2637,6 +2651,11 @@ var CONDUCTOR_APP_SUPPORT = join8(
2637
2651
  );
2638
2652
  var CONDUCTOR_DB = join8(CONDUCTOR_APP_SUPPORT, "conductor.db");
2639
2653
  var CURSOR_SDK_STORE = join8(CONDUCTOR_APP_SUPPORT, "cursor-sdk-store");
2654
+ function openReadonlySqlite(file) {
2655
+ const req = createRequire(import.meta.url);
2656
+ const Database = req("better-sqlite3");
2657
+ return new Database(file, { readonly: true, fileMustExist: true });
2658
+ }
2640
2659
  function mapAgentType(raw) {
2641
2660
  if (!raw) return null;
2642
2661
  const v = raw.toLowerCase();
@@ -2705,7 +2724,7 @@ async function adoptThread(input) {
2705
2724
  messages: input.messages ?? []
2706
2725
  });
2707
2726
  writeThread(thread);
2708
- const { ensureWorkspace: ensureWorkspace2 } = await import("../workspaces-FDO5L4NI.js");
2727
+ const { ensureWorkspace: ensureWorkspace2 } = await import("../workspaces-J4WG6UFR.js");
2709
2728
  await ensureWorkspace2(repoPath);
2710
2729
  return thread;
2711
2730
  }
@@ -2726,7 +2745,7 @@ function listConductorWorkspaces() {
2726
2745
  }
2727
2746
  }
2728
2747
  }
2729
- const db = new Database(snapshot, { readonly: true, fileMustExist: true });
2748
+ const db = openReadonlySqlite(snapshot);
2730
2749
  try {
2731
2750
  const tables = db.prepare(`SELECT name FROM sqlite_master WHERE type='table'`).all();
2732
2751
  const names = new Set(tables.map((t) => t.name));
@@ -2817,7 +2836,7 @@ function importConductorWorkspace(workspaceId) {
2817
2836
  }
2818
2837
  }
2819
2838
  }
2820
- const db = new Database(snapshot, { readonly: true, fileMustExist: true });
2839
+ const db = openReadonlySqlite(snapshot);
2821
2840
  try {
2822
2841
  const row = db.prepare(
2823
2842
  `SELECT
@@ -4549,9 +4568,10 @@ function formatArtifactDirective() {
4549
4568
  "Files / media browser (CMS file manager column):",
4550
4569
  "4) Call Sideboard MCP `present_files` with optional title, path, and datasource (brightsy|memory).",
4551
4570
  " Opens the Files column for browse/upload/pick. Do NOT say a file manager UI is missing.",
4552
- "Multiple-choice questions (any mode \u2014 not only Plan):",
4553
- "5) Call Sideboard MCP `ask_user` when the user should pick from predefined options (approach forks, requirements, which API). First write a short chat message that explains the decision and what each option means (tradeoffs, when to pick it). Include a description on every option. After calling, stop and wait for their next message with answers. Do not ask multiple-choice questions as plain chat bullets \u2014 use ask_user so Sideboard shows the composer picker.",
4554
- "Never say artifacts, CMS UI, or the Files column are unavailable. Prefer present_schema for list/edit/publish; present_files for storage UI; html fences for standalone pages; ask_user for predefined-option questions."
4571
+ "Multiple-choice questions:",
4572
+ "5) Call Sideboard MCP `ask_user` only when work is blocked on choosing among a few concrete options (approach forks, which API, auth vs cookies). First write a short chat message that explains the decision and what each option means (tradeoffs, when to pick it). Include a description on every option. After calling, stop and wait for their next message with answers. If you are asking a real multiple-choice, use ask_user rather than chat bullets so Sideboard shows the composer picker.",
4573
+ "Do not call ask_user for greetings, check-ins, \u201Chello\u201D, open-ended how-can-I-help, or to invent a menu of possible next tasks \u2014 reply in chat. If one option is the obvious default, proceed without asking.",
4574
+ "Never say artifacts, CMS UI, or the Files column are unavailable. Prefer present_schema for list/edit/publish; present_files for storage UI; html fences for standalone pages; ask_user only for those blocked predefined-option questions."
4555
4575
  ].join("\n");
4556
4576
  }
4557
4577
  function formatUiReminder() {
@@ -4562,7 +4582,7 @@ function formatUiReminder() {
4562
4582
  "CMS forms/tables: MCP present_schema (Brightsy resource_id or inline schema+schemaUi).",
4563
4583
  "Files column: MCP present_files (brightsy account storage or memory).",
4564
4584
  "Do not say artifacts/CMS UI are unavailable.",
4565
- "Multiple-choice questions: MCP ask_user (composer picker, any mode). Explain options in chat first, then wait for answers."
4585
+ "ask_user: only when blocked on a real multiple-choice (approach fork, which API). Never for hellos, check-ins, or \u201Cwhat next?\u201D menus \u2014 reply in chat."
4566
4586
  ].join(" ");
4567
4587
  }
4568
4588
 
@@ -5770,8 +5790,9 @@ var Orchestrator = class {
5770
5790
  return result;
5771
5791
  }
5772
5792
  async mergePr(threadRef) {
5773
- const { thread, selector, cwd } = await this.withPrSelector(threadRef);
5793
+ const { thread, selectors, cwd } = await this.withPrSelector(threadRef);
5774
5794
  this.assertNotGlobal(thread, "Merge PR");
5795
+ const selector = selectors[0];
5775
5796
  if (!selector) throw new Error("No pull request linked to this thread");
5776
5797
  const result = await mergePr(cwd, selector);
5777
5798
  const state = normalizePrState(result.state) || "MERGED";
@@ -5791,29 +5812,34 @@ var Orchestrator = class {
5791
5812
  await this.persistPrMetaAndMaybeArchive(thread, metaLike);
5792
5813
  return { url: metaLike.url, state };
5793
5814
  }
5794
- /** Resolve PR selector and optionally persist `prUrl` when found. */
5815
+ /** Resolve PR selectors and optionally persist `prUrl` when found. */
5795
5816
  async withPrSelector(threadRef) {
5796
5817
  const thread = this.requireThread(threadRef);
5797
- const selector = resolvePrSelector(thread);
5818
+ const selectors = resolvePrSelectors(thread);
5798
5819
  const cwd = thread.worktreePath;
5799
5820
  if (!cwd?.trim()) {
5800
5821
  throw new Error(`Thread ${threadRef} has no worktreePath`);
5801
5822
  }
5802
- return { thread, selector, cwd };
5823
+ return { thread, selectors, cwd };
5803
5824
  }
5804
5825
  async getPrChecks(threadRef) {
5805
- const { selector, cwd } = await this.withPrSelector(threadRef);
5806
- if (!selector) return null;
5807
- return getPrChecks(cwd, selector);
5826
+ const { selectors, cwd } = await this.withPrSelector(threadRef);
5827
+ for (const selector of selectors) {
5828
+ const checks = await getPrChecks(cwd, selector);
5829
+ if (checks) return checks;
5830
+ }
5831
+ return null;
5808
5832
  }
5809
5833
  async getPrMeta(threadRef) {
5810
- const { thread, selector, cwd } = await this.withPrSelector(threadRef);
5811
- if (!selector) return null;
5812
- const meta = await getPrMeta(cwd, selector);
5813
- if (meta) {
5814
- await this.persistPrMetaAndMaybeArchive(thread, meta);
5834
+ const { thread, selectors, cwd } = await this.withPrSelector(threadRef);
5835
+ for (const selector of selectors) {
5836
+ const meta = await getPrMeta(cwd, selector);
5837
+ if (meta) {
5838
+ await this.persistPrMetaAndMaybeArchive(thread, meta);
5839
+ return meta;
5840
+ }
5815
5841
  }
5816
- return meta;
5842
+ return null;
5817
5843
  }
5818
5844
  /**
5819
5845
  * Persist PR URL/title/state and Conductor-style auto-archive when the PR
@@ -5937,9 +5963,12 @@ var Orchestrator = class {
5937
5963
  return { stack: result.stack, threads: result.threads };
5938
5964
  }
5939
5965
  async getPrDetails(threadRef) {
5940
- const { thread, selector, cwd } = await this.withPrSelector(threadRef);
5941
- if (!selector) return null;
5942
- const details = await getPrDetails(cwd, selector);
5966
+ const { thread, selectors, cwd } = await this.withPrSelector(threadRef);
5967
+ let details = null;
5968
+ for (const selector of selectors) {
5969
+ details = await getPrDetails(cwd, selector);
5970
+ if (details) break;
5971
+ }
5943
5972
  if (details) {
5944
5973
  const patch = {};
5945
5974
  if (details.url && details.url !== thread.prUrl) patch.prUrl = details.url;
@@ -6124,7 +6153,7 @@ var Orchestrator = class {
6124
6153
  this.emit({ type: "status_changed", threadId: archived.id, status: "archived" });
6125
6154
  if (thread.repoPath && !isGlobalRepoPath(thread.repoPath)) {
6126
6155
  try {
6127
- const { ensureWorkspace: ensureWorkspace2 } = await import("../workspaces-FDO5L4NI.js");
6156
+ const { ensureWorkspace: ensureWorkspace2 } = await import("../workspaces-J4WG6UFR.js");
6128
6157
  await ensureWorkspace2(thread.repoPath);
6129
6158
  } catch {
6130
6159
  }
@@ -6167,7 +6196,7 @@ var Orchestrator = class {
6167
6196
  return restored2;
6168
6197
  }
6169
6198
  if (!existsSync14(thread.worktreePath)) {
6170
- const { createThreadWorktree: createThreadWorktree2 } = await import("../worktree-4555QBQ7.js");
6199
+ const { createThreadWorktree: createThreadWorktree2 } = await import("../worktree-EO5QAGJU.js");
6171
6200
  const { execa: execa5 } = await import("execa");
6172
6201
  const slug = thread.worktreePath.split("/").pop();
6173
6202
  const dest = thread.worktreePath;
@@ -7337,6 +7366,14 @@ function withTimeout(promise, ms, label) {
7337
7366
  }
7338
7367
  async function startMcpServer() {
7339
7368
  const orch = getOrchestrator();
7369
+ try {
7370
+ await warmGithubAgentAuth();
7371
+ } catch (err) {
7372
+ console.error(
7373
+ "[sideboard-mcp] GitHub agent auth warm skipped:",
7374
+ err instanceof Error ? err.message : err
7375
+ );
7376
+ }
7340
7377
  try {
7341
7378
  const { maxConcurrentAgents } = await import("../app-settings-ZXPAB3QN.js");
7342
7379
  orch.setMaxConcurrent(maxConcurrentAgents());
@@ -7443,7 +7480,7 @@ async function startMcpServer() {
7443
7480
  );
7444
7481
  server.tool(
7445
7482
  "ask_user",
7446
- "Ask the user clarifying multiple-choice questions in Sideboard\u2019s composer (any mode \u2014 not only Plan). Before calling, write a short chat message explaining the decision and what each option means. Include a description on every option. Use when the user should pick from predefined options (approach forks, requirements, which API) \u2014 not for \u201Cis the plan ready?\u201D. After calling, stop and wait for their next message with answers.",
7483
+ "Ask the user a clarifying multiple-choice question in Sideboard\u2019s composer. Call only when work is blocked on choosing among a few concrete options (approach fork, which API, auth vs cookies). Do not call for greetings, check-ins, \u201Chello\u201D, open-ended how-can-I-help, or to invent a menu of possible next tasks \u2014 reply in chat instead. If one option is the obvious default, proceed without asking. Before calling, write a short chat message explaining the decision and what each option means. Include a description on every option. After calling, stop and wait for answers. Not for \u201Cis the plan ready?\u201D.",
7447
7484
  {
7448
7485
  questions: z3.array(
7449
7486
  z3.object({
@@ -4,10 +4,10 @@ import {
4
4
  listWorkspaces,
5
5
  removeWorkspace,
6
6
  syncWorkspacesFromThreads
7
- } from "./chunk-6EZRSCIT.js";
8
- import "./chunk-B2KIO2SD.js";
9
- import "./chunk-VZ2L4AEJ.js";
10
- import "./chunk-7D27DD2X.js";
7
+ } from "./chunk-QKYO6BHB.js";
8
+ import "./chunk-CLGO7TLO.js";
9
+ import "./chunk-XUWDLRAE.js";
10
+ import "./chunk-CIRXAYWS.js";
11
11
  import "./chunk-FKOIHGKV.js";
12
12
  import "./chunk-FT2SQOL4.js";
13
13
  import "./chunk-TLPJHLLM.js";
@@ -6,10 +6,10 @@ import {
6
6
  listWorkspaces,
7
7
  removeWorkspace,
8
8
  syncWorkspacesFromThreads
9
- } from "./chunk-WANQFU3S.js";
10
- import "./chunk-UHTNJKZX.js";
11
- import "./chunk-OB6IRIFV.js";
12
- import "./chunk-ZXYWWSHZ.js";
9
+ } from "./chunk-6XBXVXX2.js";
10
+ import "./chunk-NR6APJLD.js";
11
+ import "./chunk-XH2GS2LO.js";
12
+ import "./chunk-R7BQBSDT.js";
13
13
  import "./chunk-B3SJXYIJ.js";
14
14
  import "./chunk-JOF3XIEM.js";
15
15
  import "./chunk-6LFV4VFI.js";
@@ -15,10 +15,12 @@ import {
15
15
  getPr,
16
16
  getPrChecks,
17
17
  getPrDetails,
18
+ getPrForHeadBranch,
18
19
  getPrMeta,
19
20
  ghHeadRef,
20
21
  ghRepoSelectArgs,
21
22
  githubAgentGitEnv,
23
+ isDefaultishSourceRef,
22
24
  isDirty,
23
25
  isPlaceholderBranch,
24
26
  isSideboardScratchPath,
@@ -36,6 +38,7 @@ import {
36
38
  resolveDiffBaseRef,
37
39
  resolveGithubRepoSlug,
38
40
  resolvePrSelector,
41
+ resolvePrSelectors,
39
42
  resolveRepoRoot,
40
43
  resolveWorktreeStartPoint,
41
44
  slugify,
@@ -44,7 +47,7 @@ import {
44
47
  worktreeDisplayLabel,
45
48
  worktreeDisplayLabelForGroup,
46
49
  worktreeNameFromPath
47
- } from "./chunk-7D27DD2X.js";
50
+ } from "./chunk-CIRXAYWS.js";
48
51
  import "./chunk-FKOIHGKV.js";
49
52
  import "./chunk-FT2SQOL4.js";
50
53
  import "./chunk-TLPJHLLM.js";
@@ -70,10 +73,12 @@ export {
70
73
  getPr,
71
74
  getPrChecks,
72
75
  getPrDetails,
76
+ getPrForHeadBranch,
73
77
  getPrMeta,
74
78
  ghHeadRef,
75
79
  ghRepoSelectArgs,
76
80
  githubAgentGitEnv,
81
+ isDefaultishSourceRef,
77
82
  isDirty,
78
83
  isPlaceholderBranch,
79
84
  isSideboardScratchPath,
@@ -91,6 +96,7 @@ export {
91
96
  resolveDiffBaseRef,
92
97
  resolveGithubRepoSlug,
93
98
  resolvePrSelector,
99
+ resolvePrSelectors,
94
100
  resolveRepoRoot,
95
101
  resolveWorktreeStartPoint,
96
102
  slugify,
@@ -17,10 +17,12 @@ import {
17
17
  getPr,
18
18
  getPrChecks,
19
19
  getPrDetails,
20
+ getPrForHeadBranch,
20
21
  getPrMeta,
21
22
  ghHeadRef,
22
23
  ghRepoSelectArgs,
23
24
  githubAgentGitEnv,
25
+ isDefaultishSourceRef,
24
26
  isDirty,
25
27
  isPlaceholderBranch,
26
28
  isSideboardScratchPath,
@@ -38,6 +40,7 @@ import {
38
40
  resolveDiffBaseRef,
39
41
  resolveGithubRepoSlug,
40
42
  resolvePrSelector,
43
+ resolvePrSelectors,
41
44
  resolveRepoRoot,
42
45
  resolveWorktreeStartPoint,
43
46
  slugify,
@@ -46,7 +49,7 @@ import {
46
49
  worktreeDisplayLabel,
47
50
  worktreeDisplayLabelForGroup,
48
51
  worktreeNameFromPath
49
- } from "./chunk-ZXYWWSHZ.js";
52
+ } from "./chunk-R7BQBSDT.js";
50
53
  import "./chunk-B3SJXYIJ.js";
51
54
  import "./chunk-JOF3XIEM.js";
52
55
  import "./chunk-6LFV4VFI.js";
@@ -71,10 +74,12 @@ export {
71
74
  getPr,
72
75
  getPrChecks,
73
76
  getPrDetails,
77
+ getPrForHeadBranch,
74
78
  getPrMeta,
75
79
  ghHeadRef,
76
80
  ghRepoSelectArgs,
77
81
  githubAgentGitEnv,
82
+ isDefaultishSourceRef,
78
83
  isDirty,
79
84
  isPlaceholderBranch,
80
85
  isSideboardScratchPath,
@@ -92,6 +97,7 @@ export {
92
97
  resolveDiffBaseRef,
93
98
  resolveGithubRepoSlug,
94
99
  resolvePrSelector,
100
+ resolvePrSelectors,
95
101
  resolveRepoRoot,
96
102
  resolveWorktreeStartPoint,
97
103
  slugify,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sideboard-ai/core",
3
- "version": "0.1.89",
3
+ "version": "0.1.92",
4
4
  "description": "Sideboard core — orchestration, agents, git worktrees, MCP server",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",