@sideboard-ai/core 0.1.49 → 0.1.51

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 (36) hide show
  1. package/dist/{agents-3P4N6KHC.js → agents-5ROTZNCX.js} +3 -3
  2. package/dist/{agents-LUB3Q773.js → agents-HIEJL3UV.js} +3 -3
  3. package/dist/{chunk-SS34TVSY.js → chunk-5ZPSH7VI.js} +3 -3
  4. package/dist/{chunk-RQI4TOXK.js → chunk-7EUWSBWR.js} +3 -3
  5. package/dist/{chunk-AJ6ROGD7.js → chunk-7LNGIP3X.js} +20 -2
  6. package/dist/{chunk-ILQK4P5R.js → chunk-BXJ76RHF.js} +4 -4
  7. package/dist/{chunk-3NAS4MWH.js → chunk-E4VVEKAM.js} +2 -2
  8. package/dist/{chunk-GZXBYHJC.js → chunk-F4Q3IM6V.js} +1 -1
  9. package/dist/{chunk-E35APBHV.js → chunk-H6GGDLYS.js} +1 -1
  10. package/dist/{chunk-ZQCQIWIP.js → chunk-K3WMKGFY.js} +1 -1
  11. package/dist/{chunk-5WYEJ3F3.js → chunk-O5DOO7DP.js} +2 -2
  12. package/dist/{chunk-V4JRXYYU.js → chunk-QN7XNQAT.js} +2 -2
  13. package/dist/{chunk-ZVV5EEQN.js → chunk-XRSAGVRW.js} +62 -17
  14. package/dist/{chunk-DF5VQQKA.js → chunk-YFJ4FG2P.js} +2 -2
  15. package/dist/{chunk-FV6FN6V5.js → chunk-ZH5QZ4CR.js} +62 -17
  16. package/dist/{chunk-ISY4EGF6.js → chunk-ZNM4MAN4.js} +20 -2
  17. package/dist/{connected-teams-UBXHZGO4.js → connected-teams-2ANNZCP5.js} +2 -2
  18. package/dist/{connected-teams-GF52Q7LB.js → connected-teams-ONC4666A.js} +2 -2
  19. package/dist/{coordinator-prompt-VG4BZ5JL.js → coordinator-prompt-7HHJRO7B.js} +3 -3
  20. package/dist/{coordinator-prompt-SPGDT7J5.js → coordinator-prompt-WD7FAMA2.js} +3 -3
  21. package/dist/{global-workspace-KSR3E63K.js → global-workspace-ECYN2MKL.js} +4 -4
  22. package/dist/{global-workspace-OJF4ENH4.js → global-workspace-OJEPGDXA.js} +4 -4
  23. package/dist/index.cjs +92 -21
  24. package/dist/index.d.cts +11 -1
  25. package/dist/index.d.ts +11 -1
  26. package/dist/index.js +30 -21
  27. package/dist/mcp/run-stdio.cjs +88 -21
  28. package/dist/mcp/run-stdio.js +26 -20
  29. package/dist/{run-HMRSRG3U.js → run-H3IMNOYN.js} +3 -1
  30. package/dist/run-ZJKYHXGN.js +12 -0
  31. package/dist/{workspaces-OZE7LRDO.js → workspaces-MUU7RGVV.js} +5 -5
  32. package/dist/{workspaces-UJX7JIGH.js → workspaces-ZWOOFZUV.js} +5 -5
  33. package/dist/{worktree-XG5PCLZY.js → worktree-DVNDMWZ7.js} +4 -2
  34. package/dist/{worktree-TEDAJ57S.js → worktree-GDV56MX4.js} +4 -2
  35. package/package.json +1 -1
  36. package/dist/run-LF6E5IKL.js +0 -10
@@ -1536,6 +1536,7 @@ var run_exports = {};
1536
1536
  __export(run_exports, {
1537
1537
  gh: () => gh,
1538
1538
  git: () => git,
1539
+ resolveGhAuthToken: () => resolveGhAuthToken,
1539
1540
  run: () => run
1540
1541
  });
1541
1542
  async function run(file, args, opts) {
@@ -1564,11 +1565,28 @@ async function run(file, args, opts) {
1564
1565
  }
1565
1566
  }
1566
1567
  async function git(args, cwd, opts) {
1567
- return run("git", args, { cwd, reject: opts?.reject });
1568
+ const prefix = [];
1569
+ if (opts?.config) {
1570
+ for (const [key, value] of Object.entries(opts.config)) {
1571
+ if (!key) continue;
1572
+ prefix.push("-c", `${key}=${value}`);
1573
+ }
1574
+ }
1575
+ return run("git", [...prefix, ...args], {
1576
+ cwd,
1577
+ reject: opts?.reject,
1578
+ env: opts?.env
1579
+ });
1568
1580
  }
1569
1581
  async function gh(args, cwd, opts) {
1570
1582
  return run("gh", args, { cwd, reject: opts?.reject });
1571
1583
  }
1584
+ async function resolveGhAuthToken(cwd) {
1585
+ const result = await gh(["auth", "token"], cwd, { reject: false });
1586
+ if (result.exitCode !== 0) return null;
1587
+ const token = result.stdout.trim();
1588
+ return token || null;
1589
+ }
1572
1590
  var import_execa;
1573
1591
  var init_run = __esm({
1574
1592
  "src/git/run.ts"() {
@@ -1693,6 +1711,7 @@ __export(worktree_exports, {
1693
1711
  ghRepoSelectArgs: () => ghRepoSelectArgs,
1694
1712
  isDirty: () => isDirty,
1695
1713
  isPlaceholderBranch: () => isPlaceholderBranch,
1714
+ isSideboardScratchPath: () => isSideboardScratchPath,
1696
1715
  listBranches: () => listBranches,
1697
1716
  listPrs: () => listPrs,
1698
1717
  listWorktrees: () => listWorktrees,
@@ -2222,18 +2241,31 @@ async function fetchPrHead(repoPath, number, localBranch) {
2222
2241
  const slug = await resolveGithubRepoSlug(repoPath);
2223
2242
  const refspec = `+pull/${number}/head:${localBranch}`;
2224
2243
  const errors = [];
2225
- const tryFetch = async (remote) => {
2226
- const result = await git(["fetch", remote, refspec], repoPath, {
2227
- reject: false
2228
- });
2244
+ const httpsRemote = slug ? `https://github.com/${slug}.git` : null;
2245
+ const tryFetch = async (remote, opts) => {
2246
+ const label = opts?.ghAuth ? `${remote} (gh auth)` : remote;
2247
+ const gitOpts = { reject: false };
2248
+ if (opts?.ghAuth) {
2249
+ const token = await resolveGhAuthToken(repoPath);
2250
+ if (!token) {
2251
+ errors.push(`${label}: gh auth token unavailable`);
2252
+ return false;
2253
+ }
2254
+ gitOpts.env = { GIT_TERMINAL_PROMPT: "0" };
2255
+ gitOpts.config = {
2256
+ "http.extraHeader": `AUTHORIZATION: bearer ${token}`
2257
+ };
2258
+ }
2259
+ const result = await git(["fetch", remote, refspec], repoPath, gitOpts);
2229
2260
  if (result.exitCode === 0) return true;
2230
2261
  const detail = (result.stderr || result.stdout).trim();
2231
- if (detail) errors.push(`${remote}: ${detail}`);
2262
+ if (detail) errors.push(`${label}: ${detail}`);
2232
2263
  return false;
2233
2264
  };
2234
2265
  let fetched = await tryFetch("origin");
2235
- if (!fetched && slug) {
2236
- fetched = await tryFetch(`https://github.com/${slug}.git`);
2266
+ if (!fetched && httpsRemote) {
2267
+ fetched = await tryFetch(httpsRemote);
2268
+ if (!fetched) fetched = await tryFetch(httpsRemote, { ghAuth: true });
2237
2269
  }
2238
2270
  const localOk = async () => {
2239
2271
  const verify = await git(["rev-parse", "--verify", localBranch], repoPath, {
@@ -2262,18 +2294,28 @@ async function fetchPrHead(repoPath, number, localBranch) {
2262
2294
  }
2263
2295
  }
2264
2296
  if (oid) {
2265
- const ensureOid = async (remote) => {
2266
- const got = await git(["fetch", remote, oid], repoPath, {
2267
- reject: false
2268
- });
2297
+ const ensureOid = async (remote, opts) => {
2298
+ const gitOpts = { reject: false };
2299
+ if (opts?.ghAuth) {
2300
+ const token = await resolveGhAuthToken(repoPath);
2301
+ if (!token) return false;
2302
+ gitOpts.env = { GIT_TERMINAL_PROMPT: "0" };
2303
+ gitOpts.config = {
2304
+ "http.extraHeader": `AUTHORIZATION: bearer ${token}`
2305
+ };
2306
+ }
2307
+ const got = await git(["fetch", remote, oid], repoPath, gitOpts);
2269
2308
  return got.exitCode === 0;
2270
2309
  };
2271
2310
  let haveObject = (await git(["cat-file", "-e", `${oid}^{commit}`], repoPath, {
2272
2311
  reject: false
2273
2312
  })).exitCode === 0;
2274
2313
  if (!haveObject) haveObject = await ensureOid("origin");
2275
- if (!haveObject && slug) {
2276
- haveObject = await ensureOid(`https://github.com/${slug}.git`);
2314
+ if (!haveObject && httpsRemote) {
2315
+ haveObject = await ensureOid(httpsRemote);
2316
+ if (!haveObject) {
2317
+ haveObject = await ensureOid(httpsRemote, { ghAuth: true });
2318
+ }
2277
2319
  }
2278
2320
  if (haveObject) {
2279
2321
  const branched = await git(["branch", "-f", localBranch, oid], repoPath, {
@@ -2397,8 +2439,28 @@ async function listWorktrees(repoPath) {
2397
2439
  return entries;
2398
2440
  }
2399
2441
  async function isDirty(worktreePath) {
2400
- const { stdout } = await git(["status", "--porcelain"], worktreePath);
2401
- return stdout.trim().length > 0;
2442
+ const { stdout } = await git(["status", "--porcelain", "-uall"], worktreePath);
2443
+ for (const line of stdout.split("\n")) {
2444
+ if (!line.trim()) continue;
2445
+ const rel = porcelainStatusPath(line);
2446
+ if (!rel || isSideboardScratchPath(rel)) continue;
2447
+ return true;
2448
+ }
2449
+ return false;
2450
+ }
2451
+ function isSideboardScratchPath(relativePath) {
2452
+ const p = relativePath.replace(/\\/g, "/").replace(/^\.\//, "").replace(/\/$/, "");
2453
+ return p === ".sideboard/attachments" || p.startsWith(".sideboard/attachments/");
2454
+ }
2455
+ function porcelainStatusPath(line) {
2456
+ const rest = line.length >= 3 ? line.slice(3) : "";
2457
+ if (!rest) return "";
2458
+ const arrow = rest.lastIndexOf(" -> ");
2459
+ const raw = arrow >= 0 ? rest.slice(arrow + 4) : rest;
2460
+ if (raw.startsWith('"') && raw.endsWith('"')) {
2461
+ return raw.slice(1, -1).replace(/\\([\\"])/g, "$1");
2462
+ }
2463
+ return raw;
2402
2464
  }
2403
2465
  async function currentBranch(worktreePath) {
2404
2466
  const { stdout } = await git(["rev-parse", "--abbrev-ref", "HEAD"], worktreePath);
@@ -8290,6 +8352,15 @@ async function resolveMergeBase(worktreePath, base, repoPath) {
8290
8352
  return mb || baseRef;
8291
8353
  }
8292
8354
  async function countUnpushedCommits(worktreePath) {
8355
+ const head = await git(["rev-parse", "--abbrev-ref", "HEAD"], worktreePath, {
8356
+ reject: false
8357
+ });
8358
+ const branch = head.stdout.trim();
8359
+ if (branch && branch !== "HEAD") {
8360
+ await git(["fetch", "origin", branch, "--quiet"], worktreePath, {
8361
+ reject: false
8362
+ });
8363
+ }
8293
8364
  const upstream = await git(
8294
8365
  ["rev-list", "--count", "@{upstream}..HEAD"],
8295
8366
  worktreePath,
@@ -8299,10 +8370,6 @@ async function countUnpushedCommits(worktreePath) {
8299
8370
  const n2 = Number(upstream.stdout.trim());
8300
8371
  return Number.isFinite(n2) ? n2 : 0;
8301
8372
  }
8302
- const head = await git(["rev-parse", "--abbrev-ref", "HEAD"], worktreePath, {
8303
- reject: false
8304
- });
8305
- const branch = head.stdout.trim();
8306
8373
  if (!branch || branch === "HEAD") return 0;
8307
8374
  const remote = await git(
8308
8375
  ["rev-list", "--count", `origin/${branch}..HEAD`],
@@ -8348,7 +8415,7 @@ async function listUntrackedPaths(worktreePath) {
8348
8415
  worktreePath,
8349
8416
  { reject: false }
8350
8417
  );
8351
- return stdout.split("\0").filter(Boolean);
8418
+ return stdout.split("\0").filter(Boolean).filter((p) => !isSideboardScratchPath(p));
8352
8419
  }
8353
8420
  async function listUntrackedFiles(worktreePath, maxHunk) {
8354
8421
  const paths = await listUntrackedPaths(worktreePath);
@@ -15,14 +15,14 @@ import {
15
15
  pushTurnStderr,
16
16
  resolveQuotaFallbackAgent,
17
17
  summarizeTurnStderr
18
- } from "../chunk-RQI4TOXK.js";
19
- import "../chunk-E35APBHV.js";
18
+ } from "../chunk-7EUWSBWR.js";
19
+ import "../chunk-H6GGDLYS.js";
20
20
  import {
21
21
  addWorkspace,
22
22
  ensureWorkspace,
23
23
  removeWorkspace,
24
24
  syncWorkspacesFromThreads
25
- } from "../chunk-V4JRXYYU.js";
25
+ } from "../chunk-QN7XNQAT.js";
26
26
  import {
27
27
  childEnvWithAppSettings,
28
28
  getLinearApiKey,
@@ -41,7 +41,7 @@ import {
41
41
  isGlobalThread,
42
42
  isOrchestratorThread,
43
43
  orchestratorSessionPoisonedByBuiltins
44
- } from "../chunk-DF5VQQKA.js";
44
+ } from "../chunk-YFJ4FG2P.js";
45
45
  import {
46
46
  assertOrchestratorCapableAgent
47
47
  } from "../chunk-S2LL5HA4.js";
@@ -50,7 +50,7 @@ import {
50
50
  coordinatorTurnReminder,
51
51
  enrichWorkspacesWithGithub,
52
52
  ensureGlobalCoordinatorCwd
53
- } from "../chunk-GZXBYHJC.js";
53
+ } from "../chunk-F4Q3IM6V.js";
54
54
  import {
55
55
  allocateTeamName,
56
56
  allocateTeamSlug,
@@ -65,6 +65,7 @@ import {
65
65
  getPrMeta,
66
66
  isDirty,
67
67
  isPlaceholderBranch,
68
+ isSideboardScratchPath,
68
69
  listBranches,
69
70
  listPrs,
70
71
  listWorktrees,
@@ -81,7 +82,7 @@ import {
81
82
  takenSlugsFromThread,
82
83
  threadDisplayLabel,
83
84
  worktreeNameFromPath
84
- } from "../chunk-ZVV5EEQN.js";
85
+ } from "../chunk-XRSAGVRW.js";
85
86
  import {
86
87
  appendMessage,
87
88
  createEmptyThread,
@@ -99,7 +100,7 @@ import {
99
100
  gh,
100
101
  git,
101
102
  run
102
- } from "../chunk-ISY4EGF6.js";
103
+ } from "../chunk-ZNM4MAN4.js";
103
104
  import "../chunk-KGZBYWZ3.js";
104
105
  import {
105
106
  loadRepoSettings,
@@ -356,9 +357,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
356
357
  `Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
357
358
  );
358
359
  }
359
- const { isGlobalThread: isGlobalThread2 } = await import("../global-workspace-OJF4ENH4.js");
360
+ const { isGlobalThread: isGlobalThread2 } = await import("../global-workspace-OJEPGDXA.js");
360
361
  if (isGlobalThread2(thread)) {
361
- const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("../coordinator-prompt-VG4BZ5JL.js");
362
+ const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("../coordinator-prompt-7HHJRO7B.js");
362
363
  ensureGlobalCoordinatorCwd2();
363
364
  }
364
365
  if (isOrchestratorThread(thread)) {
@@ -1159,7 +1160,7 @@ async function createThread(input, onSetupLine) {
1159
1160
  return readThread(thread.id) ?? thread;
1160
1161
  }
1161
1162
  async function listLinearIssues(agent, repoPath) {
1162
- const { getAdapter: getAdapter2 } = await import("../agents-LUB3Q773.js");
1163
+ const { getAdapter: getAdapter2 } = await import("../agents-HIEJL3UV.js");
1163
1164
  await requireAgent(agent, { requireLinear: true });
1164
1165
  const adapter = getAdapter2(agent);
1165
1166
  if (!adapter.listLinearIssues) {
@@ -1997,7 +1998,7 @@ async function adoptThread(input) {
1997
1998
  throw new Error(`Worktree not found: ${input.worktreePath}`);
1998
1999
  }
1999
2000
  const repoPath = await resolveRepoRoot(input.worktreePath);
2000
- const { stdout: branch } = await import("../run-HMRSRG3U.js").then(
2001
+ const { stdout: branch } = await import("../run-H3IMNOYN.js").then(
2001
2002
  ({ git: git2 }) => git2(["rev-parse", "--abbrev-ref", "HEAD"], input.worktreePath)
2002
2003
  );
2003
2004
  const thread = createEmptyThread({
@@ -2012,7 +2013,7 @@ async function adoptThread(input) {
2012
2013
  messages: input.messages ?? []
2013
2014
  });
2014
2015
  writeThread(thread);
2015
- const { ensureWorkspace: ensureWorkspace2 } = await import("../workspaces-OZE7LRDO.js");
2016
+ const { ensureWorkspace: ensureWorkspace2 } = await import("../workspaces-MUU7RGVV.js");
2016
2017
  await ensureWorkspace2(repoPath);
2017
2018
  return thread;
2018
2019
  }
@@ -2294,6 +2295,15 @@ async function resolveMergeBase(worktreePath, base, repoPath) {
2294
2295
  return mb || baseRef;
2295
2296
  }
2296
2297
  async function countUnpushedCommits(worktreePath) {
2298
+ const head = await git(["rev-parse", "--abbrev-ref", "HEAD"], worktreePath, {
2299
+ reject: false
2300
+ });
2301
+ const branch = head.stdout.trim();
2302
+ if (branch && branch !== "HEAD") {
2303
+ await git(["fetch", "origin", branch, "--quiet"], worktreePath, {
2304
+ reject: false
2305
+ });
2306
+ }
2297
2307
  const upstream = await git(
2298
2308
  ["rev-list", "--count", "@{upstream}..HEAD"],
2299
2309
  worktreePath,
@@ -2303,10 +2313,6 @@ async function countUnpushedCommits(worktreePath) {
2303
2313
  const n2 = Number(upstream.stdout.trim());
2304
2314
  return Number.isFinite(n2) ? n2 : 0;
2305
2315
  }
2306
- const head = await git(["rev-parse", "--abbrev-ref", "HEAD"], worktreePath, {
2307
- reject: false
2308
- });
2309
- const branch = head.stdout.trim();
2310
2316
  if (!branch || branch === "HEAD") return 0;
2311
2317
  const remote = await git(
2312
2318
  ["rev-list", "--count", `origin/${branch}..HEAD`],
@@ -2352,7 +2358,7 @@ async function listUntrackedPaths(worktreePath) {
2352
2358
  worktreePath,
2353
2359
  { reject: false }
2354
2360
  );
2355
- return stdout.split("\0").filter(Boolean);
2361
+ return stdout.split("\0").filter(Boolean).filter((p) => !isSideboardScratchPath(p));
2356
2362
  }
2357
2363
  async function listUntrackedFiles(worktreePath, maxHunk) {
2358
2364
  const paths = await listUntrackedPaths(worktreePath);
@@ -2829,7 +2835,7 @@ async function previewLand(thread) {
2829
2835
  const target = await resolveDefaultBranch(thread.repoPath);
2830
2836
  if (thread.branchName === target || thread.branchName === "main" || thread.branchName === "master") {
2831
2837
  }
2832
- const { stdout: head } = await import("../run-HMRSRG3U.js").then(
2838
+ const { stdout: head } = await import("../run-H3IMNOYN.js").then(
2833
2839
  ({ git: git2 }) => git2(["rev-parse", "--abbrev-ref", "HEAD"], thread.worktreePath)
2834
2840
  );
2835
2841
  const current = head.trim();
@@ -2868,7 +2874,7 @@ async function confirmLand(thread, opts) {
2868
2874
  if (preview.dirty) {
2869
2875
  committed = await commitAll(thread.worktreePath, meta.commitMessage);
2870
2876
  }
2871
- const { git: git2 } = await import("../run-HMRSRG3U.js");
2877
+ const { git: git2 } = await import("../run-H3IMNOYN.js");
2872
2878
  const { stdout: headOut } = await git2(
2873
2879
  ["rev-parse", "--abbrev-ref", "HEAD"],
2874
2880
  thread.worktreePath,
@@ -4749,7 +4755,7 @@ var Orchestrator = class {
4749
4755
  return setStatus(thread.id, "idle");
4750
4756
  }
4751
4757
  if (!existsSync12(thread.worktreePath)) {
4752
- const { createThreadWorktree: createThreadWorktree2 } = await import("../worktree-XG5PCLZY.js");
4758
+ const { createThreadWorktree: createThreadWorktree2 } = await import("../worktree-DVNDMWZ7.js");
4753
4759
  const { execa: execa6 } = await import("execa");
4754
4760
  const slug = thread.worktreePath.split("/").pop();
4755
4761
  const dest = thread.worktreePath;
@@ -3,10 +3,12 @@
3
3
  import {
4
4
  gh,
5
5
  git,
6
+ resolveGhAuthToken,
6
7
  run
7
- } from "./chunk-ISY4EGF6.js";
8
+ } from "./chunk-ZNM4MAN4.js";
8
9
  export {
9
10
  gh,
10
11
  git,
12
+ resolveGhAuthToken,
11
13
  run
12
14
  };
@@ -0,0 +1,12 @@
1
+ import {
2
+ gh,
3
+ git,
4
+ resolveGhAuthToken,
5
+ run
6
+ } from "./chunk-7LNGIP3X.js";
7
+ export {
8
+ gh,
9
+ git,
10
+ resolveGhAuthToken,
11
+ run
12
+ };
@@ -6,13 +6,13 @@ import {
6
6
  listWorkspaces,
7
7
  removeWorkspace,
8
8
  syncWorkspacesFromThreads
9
- } from "./chunk-V4JRXYYU.js";
10
- import "./chunk-DF5VQQKA.js";
9
+ } from "./chunk-QN7XNQAT.js";
10
+ import "./chunk-YFJ4FG2P.js";
11
11
  import "./chunk-S2LL5HA4.js";
12
- import "./chunk-GZXBYHJC.js";
13
- import "./chunk-ZVV5EEQN.js";
12
+ import "./chunk-F4Q3IM6V.js";
13
+ import "./chunk-XRSAGVRW.js";
14
14
  import "./chunk-EOYDCKQC.js";
15
- import "./chunk-ISY4EGF6.js";
15
+ import "./chunk-ZNM4MAN4.js";
16
16
  import "./chunk-KGZBYWZ3.js";
17
17
  import "./chunk-7MV3RXSC.js";
18
18
  export {
@@ -4,15 +4,15 @@ import {
4
4
  listWorkspaces,
5
5
  removeWorkspace,
6
6
  syncWorkspacesFromThreads
7
- } from "./chunk-3NAS4MWH.js";
8
- import "./chunk-5WYEJ3F3.js";
7
+ } from "./chunk-E4VVEKAM.js";
8
+ import "./chunk-O5DOO7DP.js";
9
9
  import "./chunk-GI7E5733.js";
10
- import "./chunk-ZQCQIWIP.js";
11
- import "./chunk-FV6FN6V5.js";
10
+ import "./chunk-K3WMKGFY.js";
11
+ import "./chunk-ZH5QZ4CR.js";
12
12
  import "./chunk-O6W3P7V3.js";
13
13
  import "./chunk-77WWLBCI.js";
14
14
  import "./chunk-M37RITA6.js";
15
- import "./chunk-AJ6ROGD7.js";
15
+ import "./chunk-7LNGIP3X.js";
16
16
  export {
17
17
  addWorkspace,
18
18
  ensureWorkspace,
@@ -21,6 +21,7 @@ import {
21
21
  ghRepoSelectArgs,
22
22
  isDirty,
23
23
  isPlaceholderBranch,
24
+ isSideboardScratchPath,
24
25
  listBranches,
25
26
  listPrs,
26
27
  listWorktrees,
@@ -43,9 +44,9 @@ import {
43
44
  worktreeDisplayLabel,
44
45
  worktreeDisplayLabelForGroup,
45
46
  worktreeNameFromPath
46
- } from "./chunk-ZVV5EEQN.js";
47
+ } from "./chunk-XRSAGVRW.js";
47
48
  import "./chunk-EOYDCKQC.js";
48
- import "./chunk-ISY4EGF6.js";
49
+ import "./chunk-ZNM4MAN4.js";
49
50
  import "./chunk-KGZBYWZ3.js";
50
51
  import "./chunk-7MV3RXSC.js";
51
52
  export {
@@ -69,6 +70,7 @@ export {
69
70
  ghRepoSelectArgs,
70
71
  isDirty,
71
72
  isPlaceholderBranch,
73
+ isSideboardScratchPath,
72
74
  listBranches,
73
75
  listPrs,
74
76
  listWorktrees,
@@ -19,6 +19,7 @@ import {
19
19
  ghRepoSelectArgs,
20
20
  isDirty,
21
21
  isPlaceholderBranch,
22
+ isSideboardScratchPath,
22
23
  listBranches,
23
24
  listPrs,
24
25
  listWorktrees,
@@ -41,11 +42,11 @@ import {
41
42
  worktreeDisplayLabel,
42
43
  worktreeDisplayLabelForGroup,
43
44
  worktreeNameFromPath
44
- } from "./chunk-FV6FN6V5.js";
45
+ } from "./chunk-ZH5QZ4CR.js";
45
46
  import "./chunk-O6W3P7V3.js";
46
47
  import "./chunk-77WWLBCI.js";
47
48
  import "./chunk-M37RITA6.js";
48
- import "./chunk-AJ6ROGD7.js";
49
+ import "./chunk-7LNGIP3X.js";
49
50
  export {
50
51
  FAMOUS_SOCCER_TEAMS,
51
52
  allocateTeamName,
@@ -67,6 +68,7 @@ export {
67
68
  ghRepoSelectArgs,
68
69
  isDirty,
69
70
  isPlaceholderBranch,
71
+ isSideboardScratchPath,
70
72
  listBranches,
71
73
  listPrs,
72
74
  listWorktrees,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sideboard-ai/core",
3
- "version": "0.1.49",
3
+ "version": "0.1.51",
4
4
  "description": "Sideboard core — orchestration, agents, git worktrees, MCP server",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -1,10 +0,0 @@
1
- import {
2
- gh,
3
- git,
4
- run
5
- } from "./chunk-AJ6ROGD7.js";
6
- export {
7
- gh,
8
- git,
9
- run
10
- };