@sideboard-ai/core 0.1.107 → 0.1.110

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 (44) hide show
  1. package/dist/agents/cursor-runner.cjs +87 -12
  2. package/dist/agents/cursor-runner.js +38 -12
  3. package/dist/{agents-T4RHL5UX.js → agents-MQDW3YXL.js} +6 -6
  4. package/dist/{agents-4XQANGFO.js → agents-WK54VP7J.js} +8 -8
  5. package/dist/{app-settings-2WH6DVOW.js → app-settings-5XAGNDX7.js} +3 -1
  6. package/dist/{app-settings-6AXBWM3K.js → app-settings-J4LUWIRN.js} +4 -2
  7. package/dist/{chunk-HUKCGRAT.js → chunk-3UOKB6VQ.js} +47 -2
  8. package/dist/{chunk-SMWVSSE5.js → chunk-4EWPKYOU.js} +4 -4
  9. package/dist/{chunk-7ZTQHC2Q.js → chunk-4NR5FL46.js} +11 -1
  10. package/dist/{chunk-TLPJHLLM.js → chunk-4TR3HZFT.js} +1 -1
  11. package/dist/{chunk-VTTTV2LM.js → chunk-7KWYXGIU.js} +2 -2
  12. package/dist/{chunk-KGSVLZV6.js → chunk-A4VZXJEJ.js} +2 -0
  13. package/dist/{chunk-5XUKY2JY.js → chunk-AROMOP3C.js} +8 -16
  14. package/dist/{chunk-PZVA2VDF.js → chunk-C4KHDW3U.js} +2 -2
  15. package/dist/{chunk-3SIFRHJ3.js → chunk-EAAB4EK5.js} +1597 -1704
  16. package/dist/{chunk-GYFNFU62.js → chunk-KQBI5HNT.js} +8 -16
  17. package/dist/{chunk-P3BQ5DOL.js → chunk-KYOTBZ6S.js} +2 -0
  18. package/dist/{chunk-6HRR4T4P.js → chunk-RSIWPLRG.js} +483 -46
  19. package/dist/{chunk-EX4NZN3O.js → chunk-SGEVS5SY.js} +11 -1
  20. package/dist/{chunk-THXSFETX.js → chunk-VOD3HFLP.js} +4 -4
  21. package/dist/{chunk-XOYH3OMI.js → chunk-VOJSO3RM.js} +484 -55
  22. package/dist/{chunk-MMI4RJ5I.js → chunk-WIHKHR5R.js} +14 -3
  23. package/dist/{chunk-XEFHG6VG.js → chunk-XOZDAVOP.js} +1449 -1518
  24. package/dist/{chunk-LRO7YVLJ.js → chunk-YFAXVUY2.js} +2 -2
  25. package/dist/{chunk-6JJTMI7G.js → chunk-YXDR43ZC.js} +2 -2
  26. package/dist/{coordinator-prompt-4TUQUEHY.js → coordinator-prompt-AR66L3N4.js} +5 -5
  27. package/dist/{coordinator-prompt-YQWRXCPX.js → coordinator-prompt-BHMLWL64.js} +4 -4
  28. package/dist/{global-workspace-H37LFFXI.js → global-workspace-SKFODUQQ.js} +5 -5
  29. package/dist/{global-workspace-V6TMECDU.js → global-workspace-XSUFEIAQ.js} +6 -6
  30. package/dist/index.cjs +2388 -2006
  31. package/dist/index.d.cts +115 -26
  32. package/dist/index.d.ts +115 -26
  33. package/dist/index.js +141 -98
  34. package/dist/mcp/run-stdio.cjs +2354 -1988
  35. package/dist/mcp/run-stdio.js +90 -82
  36. package/dist/{orchestrator-DEHSKERK.js → orchestrator-FCZVCKBK.js} +11 -11
  37. package/dist/{orchestrator-2P7DX44Q.js → orchestrator-SCATSB3O.js} +8 -8
  38. package/dist/{thread-store-DQJGDKIJ.js → thread-store-LPTBVW5C.js} +1 -1
  39. package/dist/{thread-store-4OUEQ2DB.js → thread-store-OEALWU7Y.js} +1 -1
  40. package/dist/{workspaces-UPEVANU4.js → workspaces-HV3J4TTW.js} +7 -7
  41. package/dist/{workspaces-JU3P6FHB.js → workspaces-XAQVKTLO.js} +6 -6
  42. package/dist/{worktree-6MFKE465.js → worktree-N2EV24EE.js} +3 -3
  43. package/dist/{worktree-NR5YJG2E.js → worktree-XFJED3VU.js} +4 -4
  44. package/package.json +1 -1
@@ -19,29 +19,29 @@ import {
19
19
  slackApi,
20
20
  slackTokenFor,
21
21
  updateSchedule
22
- } from "../chunk-XEFHG6VG.js";
22
+ } from "../chunk-XOZDAVOP.js";
23
23
  import {
24
24
  listModelsForAgent,
25
25
  sideboardMcpProfile
26
- } from "../chunk-XOYH3OMI.js";
26
+ } from "../chunk-VOJSO3RM.js";
27
27
  import "../chunk-7YKXHBIW.js";
28
- import "../chunk-LRO7YVLJ.js";
28
+ import "../chunk-YFAXVUY2.js";
29
29
  import "../chunk-N5PM7HGQ.js";
30
30
  import "../chunk-KLBOWJ74.js";
31
31
  import {
32
32
  GLOBAL_WORKSPACE_ID,
33
33
  isCloudCoordinatorThread
34
- } from "../chunk-THXSFETX.js";
35
- import "../chunk-5XUKY2JY.js";
34
+ } from "../chunk-VOD3HFLP.js";
35
+ import "../chunk-AROMOP3C.js";
36
36
  import {
37
37
  listBranches,
38
38
  listPrs,
39
39
  resolveGithubRepoSlug,
40
40
  resolveRepoRoot,
41
41
  warmGithubAgentAuth
42
- } from "../chunk-6JJTMI7G.js";
42
+ } from "../chunk-YXDR43ZC.js";
43
43
  import "../chunk-B3SJXYIJ.js";
44
- import "../chunk-P3BQ5DOL.js";
44
+ import "../chunk-KYOTBZ6S.js";
45
45
  import {
46
46
  disconnectLinearConnection,
47
47
  dropNestedElectronEnvFromProcess,
@@ -49,7 +49,7 @@ import {
49
49
  loadAppSettings,
50
50
  resolveEffectiveIssueSource,
51
51
  saveLinearOAuth
52
- } from "../chunk-EX4NZN3O.js";
52
+ } from "../chunk-SGEVS5SY.js";
53
53
  import "../chunk-NSTQ6QKD.js";
54
54
  import "../chunk-KGZBYWZ3.js";
55
55
  import "../chunk-BD2ICC4D.js";
@@ -1342,7 +1342,7 @@ async function startMcpServer() {
1342
1342
  );
1343
1343
  }
1344
1344
  try {
1345
- const { maxConcurrentAgents } = await import("../app-settings-2WH6DVOW.js");
1345
+ const { maxConcurrentAgents } = await import("../app-settings-5XAGNDX7.js");
1346
1346
  orch.setMaxConcurrent(maxConcurrentAgents());
1347
1347
  } catch {
1348
1348
  }
@@ -1358,74 +1358,77 @@ async function startMcpServer() {
1358
1358
  name: "sideboard",
1359
1359
  version: "0.1.0"
1360
1360
  });
1361
- server.tool(
1362
- "list_workspaces",
1363
- "List registered Sideboard workspaces (repos). Each line is name, path, and github:owner/repo when resolvable \u2014 use path as repoPath for list_branches/list_prs/list_issues/create_thread.",
1364
- {},
1365
- async () => {
1366
- const workspaces = orch.listWorkspaces();
1367
- const lines = await Promise.all(
1368
- workspaces.map(async (w) => {
1369
- const slug = await resolveGithubRepoSlug(w.path).catch(() => null);
1370
- return slug ? `${w.name} ${w.path} github:${slug}` : `${w.name} ${w.path}`;
1371
- })
1372
- );
1373
- return {
1374
- content: [
1375
- { type: "text", text: lines.join("\n") || "(no workspaces)" }
1376
- ]
1377
- };
1378
- }
1379
- );
1380
- server.tool(
1381
- "list_threads",
1382
- "List Sideboard threads across all workspaces (one summary line each \u2014 token-frugal). Each line ends with sideboard://thread/<id> \u2014 use that URL in markdown links so the UI can open the chat.",
1383
- {},
1384
- async () => {
1385
- const threads = orch.getThreads(true);
1386
- const lines = threads.map((t) => {
1387
- const repo = t.repoPath === GLOBAL_WORKSPACE_ID ? "Orchestration" : basename(t.repoPath) || t.repoPath;
1361
+ const worktreeProfile = sideboardMcpProfile() === "worktree";
1362
+ if (!worktreeProfile) {
1363
+ server.tool(
1364
+ "list_workspaces",
1365
+ "List registered Sideboard workspaces (repos). Each line is name, path, and github:owner/repo when resolvable \u2014 use path as repoPath for list_branches/list_prs/list_issues/create_thread.",
1366
+ {},
1367
+ async () => {
1368
+ const workspaces = orch.listWorkspaces();
1369
+ const lines = await Promise.all(
1370
+ workspaces.map(async (w) => {
1371
+ const slug = await resolveGithubRepoSlug(w.path).catch(() => null);
1372
+ return slug ? `${w.name} ${w.path} github:${slug}` : `${w.name} ${w.path}`;
1373
+ })
1374
+ );
1375
+ return {
1376
+ content: [
1377
+ { type: "text", text: lines.join("\n") || "(no workspaces)" }
1378
+ ]
1379
+ };
1380
+ }
1381
+ );
1382
+ server.tool(
1383
+ "list_threads",
1384
+ "List Sideboard threads across all workspaces (one summary line each \u2014 token-frugal). Each line ends with sideboard://thread/<id> \u2014 use that URL in markdown links so the UI can open the chat.",
1385
+ {},
1386
+ async () => {
1387
+ const threads = orch.getThreads(true);
1388
+ const lines = threads.map((t) => {
1389
+ const repo = t.repoPath === GLOBAL_WORKSPACE_ID ? "Orchestration" : basename(t.repoPath) || t.repoPath;
1390
+ const live = t.status === "running" || t.status === "queued" ? readTurnLive(t.id) : null;
1391
+ const progress = live?.summary ? ` ${live.summary}` : "";
1392
+ return `${t.id.slice(0, 8)} ${t.status.padEnd(9)} ${t.agent.padEnd(8)} ${repo} ${t.sourceType}:${t.sourceRef} ${t.title} sideboard://thread/${t.id}${t.devPort ? ` http://localhost:${t.devPort}` : ""}${progress}`;
1393
+ });
1394
+ return {
1395
+ content: [{ type: "text", text: lines.join("\n") || "(no threads)" }]
1396
+ };
1397
+ }
1398
+ );
1399
+ server.tool(
1400
+ "get_thread",
1401
+ "Get a compact thread summary by id/ref. While running, includes progress (last tool/thinking) and lastActivityAt.",
1402
+ { ref: z4.string() },
1403
+ async ({ ref }) => {
1404
+ const t = orch.getThread(ref);
1405
+ if (!t) {
1406
+ return { content: [{ type: "text", text: `Thread not found: ${ref}` }], isError: true };
1407
+ }
1388
1408
  const live = t.status === "running" || t.status === "queued" ? readTurnLive(t.id) : null;
1389
- const progress = live?.summary ? ` ${live.summary}` : "";
1390
- return `${t.id.slice(0, 8)} ${t.status.padEnd(9)} ${t.agent.padEnd(8)} ${repo} ${t.sourceType}:${t.sourceRef} ${t.title} sideboard://thread/${t.id}${t.devPort ? ` http://localhost:${t.devPort}` : ""}${progress}`;
1391
- });
1392
- return {
1393
- content: [{ type: "text", text: lines.join("\n") || "(no threads)" }]
1394
- };
1395
- }
1396
- );
1397
- server.tool(
1398
- "get_thread",
1399
- "Get a compact thread summary by id/ref. While running, includes progress (last tool/thinking) and lastActivityAt.",
1400
- { ref: z4.string() },
1401
- async ({ ref }) => {
1402
- const t = orch.getThread(ref);
1403
- if (!t) {
1404
- return { content: [{ type: "text", text: `Thread not found: ${ref}` }], isError: true };
1409
+ const summary = {
1410
+ id: t.id,
1411
+ title: t.title,
1412
+ status: t.status,
1413
+ agent: t.agent,
1414
+ sourceType: t.sourceType,
1415
+ sourceRef: t.sourceRef,
1416
+ branchName: t.branchName,
1417
+ worktreePath: t.worktreePath,
1418
+ sessionId: t.sessionId,
1419
+ queueLength: t.queue.length,
1420
+ messageCount: t.messages.length,
1421
+ devPort: t.devPort,
1422
+ prUrl: t.prUrl,
1423
+ lastError: t.lastError ?? null,
1424
+ stillRunning: t.status === "running" || t.status === "queued",
1425
+ progress: live?.summary ?? null,
1426
+ lastActivityAt: live?.updatedAt ?? null
1427
+ };
1428
+ return { content: [{ type: "text", text: JSON.stringify(summary, null, 2) }] };
1405
1429
  }
1406
- const live = t.status === "running" || t.status === "queued" ? readTurnLive(t.id) : null;
1407
- const summary = {
1408
- id: t.id,
1409
- title: t.title,
1410
- status: t.status,
1411
- agent: t.agent,
1412
- sourceType: t.sourceType,
1413
- sourceRef: t.sourceRef,
1414
- branchName: t.branchName,
1415
- worktreePath: t.worktreePath,
1416
- sessionId: t.sessionId,
1417
- queueLength: t.queue.length,
1418
- messageCount: t.messages.length,
1419
- devPort: t.devPort,
1420
- prUrl: t.prUrl,
1421
- lastError: t.lastError ?? null,
1422
- stillRunning: t.status === "running" || t.status === "queued",
1423
- progress: live?.summary ?? null,
1424
- lastActivityAt: live?.updatedAt ?? null
1425
- };
1426
- return { content: [{ type: "text", text: JSON.stringify(summary, null, 2) }] };
1427
- }
1428
- );
1430
+ );
1431
+ }
1429
1432
  server.tool(
1430
1433
  "present_artifact",
1431
1434
  "Show an HTML, SVG, markdown, or React document in Sideboard\u2019s Claude-style side column (desktop). Use instead of claude.ai\u2019s artifact tool \u2014 pass the full document content. Prefer type=html for interactive pages. For type=react, pass a single component module that `export default`s a component (JSX/TSX ok) \u2014 Sideboard bootstraps React/ReactDOM/Babel and renders it; only `react`/`react-dom` imports are available, no other npm packages.",
@@ -1554,12 +1557,12 @@ async function startMcpServer() {
1554
1557
  return { content: [{ type: "text", text: JSON.stringify(payload) }] };
1555
1558
  }
1556
1559
  );
1557
- registerSlackTools(server);
1558
- registerLinearTools(server);
1559
- if (sideboardMcpProfile() !== "worktree") {
1560
+ if (!worktreeProfile) {
1561
+ registerSlackTools(server);
1562
+ registerLinearTools(server);
1560
1563
  registerScheduleTools(server);
1561
1564
  const { getCaffeinateHold, setCaffeinateHold } = await import("../caffeinate-hold-NBRUWYXO.js");
1562
- const { resolveNewThreadOptions, resolveThreadDefaults } = await import("../app-settings-2WH6DVOW.js");
1565
+ const { resolveNewThreadOptions, resolveThreadDefaults } = await import("../app-settings-5XAGNDX7.js");
1563
1566
  const accountDefaults = resolveThreadDefaults();
1564
1567
  const accountDefaultsHint = `Account defaults: agent=${accountDefaults.agent}, model=${accountDefaults.model?.trim() || "Auto"}, effort=${accountDefaults.effort}`;
1565
1568
  server.tool(
@@ -1602,7 +1605,7 @@ async function startMcpServer() {
1602
1605
  );
1603
1606
  server.tool(
1604
1607
  "create_thread",
1605
- `Create a new worktree thread (chat) from branch, pr, or ticket. Pass repoPath from list_workspaces. From an orchestration chat, omit parentThreadId (Sideboard binds the child to this chat) or pass the exact id from the turn reminder \u2014 never invent a uuid. Prefer omitting agent/model so Sideboard applies ${accountDefaultsHint}. Setup (settings.toml, .cursor/worktrees.json, or script/setup) runs in the background in parallel with the first turn. Then use send_to_thread to chat.`,
1608
+ `Create a new worktree thread (chat) from branch, pr, or ticket. Pass repoPath from list_workspaces. cowboy=true uses the project folder on the default branch (no isolated worktree; land is commit+push). From an orchestration chat, omit parentThreadId (Sideboard binds the child to this chat) or pass the exact id from the turn reminder \u2014 never invent a uuid. Prefer omitting agent/model so Sideboard applies ${accountDefaultsHint}. Setup (settings.toml, .cursor/worktrees.json, or script/setup) runs in the background in parallel with the first turn (skipped for cowboy). Then use send_to_thread to chat.`,
1606
1609
  {
1607
1610
  sourceType: z4.enum(["branch", "pr", "ticket"]),
1608
1611
  sourceRef: z4.string(),
@@ -1612,6 +1615,9 @@ async function startMcpServer() {
1612
1615
  ),
1613
1616
  repoPath: z4.string(),
1614
1617
  title: z4.string().optional(),
1618
+ cowboy: z4.boolean().optional().describe(
1619
+ "If true, work in the project folder on the default branch (no thread/* worktree). Requires Settings \u2192 Advanced \u2192 Cowboy mode. Land is commit+push to that branch. Archive does not delete the folder."
1620
+ ),
1615
1621
  parentThreadId: z4.string().optional().describe(
1616
1622
  "Orchestration: omit (preferred) or pass YOUR chat id from the turn reminder / AGENTS.md. Do not invent uuids."
1617
1623
  )
@@ -1672,7 +1678,8 @@ async function startMcpServer() {
1672
1678
  fast: opts.fast,
1673
1679
  repoPath: args.repoPath,
1674
1680
  title: args.title,
1675
- parentThreadId: parentId || null
1681
+ parentThreadId: parentId || null,
1682
+ cowboy: args.cowboy || void 0
1676
1683
  }),
1677
1684
  CREATE_THREAD_TIMEOUT_MS,
1678
1685
  "create_thread"
@@ -1690,6 +1697,7 @@ async function startMcpServer() {
1690
1697
  agent: thread.agent,
1691
1698
  model: thread.model,
1692
1699
  status: thread.status,
1700
+ cowboy: Boolean(thread.cowboy),
1693
1701
  link: `sideboard://thread/${thread.id}`,
1694
1702
  parentThreadId: thread.parentThreadId,
1695
1703
  ...agentCoercedFrom ? {
@@ -1910,7 +1918,7 @@ async function startMcpServer() {
1910
1918
  );
1911
1919
  server.tool(
1912
1920
  "request_review",
1913
- 'Start a merge-readiness Review on a worktree agent thread (same as the desktop Review button). Opens a new Review chat tab, attaches .sideboard/review.md when present (else local Review request.md / stock template), and sends "Review changes in this workspace." Expect Approve / Approve with nits / Request changes / Needs more information. Pass a worktree thread ref \u2014 not the orchestrator. Then wait_for_turn (loop while stillRunning) / get_turn_result on the returned review tab id.',
1921
+ 'Start a merge-readiness Review on a worktree agent thread (same as the desktop Review button). Opens a new Review chat tab, attaches .claude/skills/review/SKILL.md when present (else seeds that skill from .sideboard/review.md or the stock template), and sends "Review changes in this workspace." Expect Approve / Approve with nits / Request changes / Needs more information. Pass a worktree thread ref \u2014 not the orchestrator. Then wait_for_turn (loop while stillRunning) / get_turn_result on the returned review tab id.',
1914
1922
  { ref: z4.string().describe("Worktree thread id/ref to review") },
1915
1923
  async ({ ref }) => {
1916
1924
  try {
@@ -4,22 +4,22 @@ import {
4
4
  isPidAlive,
5
5
  startOrchestration,
6
6
  waitForPidExit
7
- } from "./chunk-3SIFRHJ3.js";
8
- import "./chunk-6HRR4T4P.js";
7
+ } from "./chunk-EAAB4EK5.js";
8
+ import "./chunk-RSIWPLRG.js";
9
9
  import "./chunk-2GO3YKBA.js";
10
- import "./chunk-VTTTV2LM.js";
11
- import "./chunk-SMWVSSE5.js";
12
- import "./chunk-GYFNFU62.js";
10
+ import "./chunk-7KWYXGIU.js";
11
+ import "./chunk-4EWPKYOU.js";
12
+ import "./chunk-KQBI5HNT.js";
13
13
  import "./chunk-QTUESPAW.js";
14
- import "./chunk-MMI4RJ5I.js";
15
- import "./chunk-HUKCGRAT.js";
14
+ import "./chunk-WIHKHR5R.js";
15
+ import "./chunk-3UOKB6VQ.js";
16
16
  import "./chunk-DCOZABNT.js";
17
- import "./chunk-PZVA2VDF.js";
17
+ import "./chunk-C4KHDW3U.js";
18
18
  import "./chunk-FKOIHGKV.js";
19
- import "./chunk-7ZTQHC2Q.js";
20
- import "./chunk-TLPJHLLM.js";
19
+ import "./chunk-4NR5FL46.js";
20
+ import "./chunk-4TR3HZFT.js";
21
21
  import "./chunk-JT7R45JB.js";
22
- import "./chunk-KGSVLZV6.js";
22
+ import "./chunk-A4VZXJEJ.js";
23
23
  import "./chunk-77WWLBCI.js";
24
24
  import "./chunk-QZQEXME2.js";
25
25
  import "./chunk-LGXBYZZA.js";
@@ -6,18 +6,18 @@ import {
6
6
  isPidAlive,
7
7
  startOrchestration,
8
8
  waitForPidExit
9
- } from "./chunk-XEFHG6VG.js";
10
- import "./chunk-XOYH3OMI.js";
9
+ } from "./chunk-XOZDAVOP.js";
10
+ import "./chunk-VOJSO3RM.js";
11
11
  import "./chunk-7YKXHBIW.js";
12
- import "./chunk-LRO7YVLJ.js";
12
+ import "./chunk-YFAXVUY2.js";
13
13
  import "./chunk-N5PM7HGQ.js";
14
14
  import "./chunk-KLBOWJ74.js";
15
- import "./chunk-THXSFETX.js";
16
- import "./chunk-5XUKY2JY.js";
17
- import "./chunk-6JJTMI7G.js";
15
+ import "./chunk-VOD3HFLP.js";
16
+ import "./chunk-AROMOP3C.js";
17
+ import "./chunk-YXDR43ZC.js";
18
18
  import "./chunk-B3SJXYIJ.js";
19
- import "./chunk-P3BQ5DOL.js";
20
- import "./chunk-EX4NZN3O.js";
19
+ import "./chunk-KYOTBZ6S.js";
20
+ import "./chunk-SGEVS5SY.js";
21
21
  import "./chunk-NSTQ6QKD.js";
22
22
  import "./chunk-KGZBYWZ3.js";
23
23
  import "./chunk-BD2ICC4D.js";
@@ -13,7 +13,7 @@ import {
13
13
  updateThread,
14
14
  withThreadLock,
15
15
  writeThread
16
- } from "./chunk-P3BQ5DOL.js";
16
+ } from "./chunk-KYOTBZ6S.js";
17
17
  import "./chunk-KGZBYWZ3.js";
18
18
  import "./chunk-BD2ICC4D.js";
19
19
  export {
@@ -11,7 +11,7 @@ import {
11
11
  updateThread,
12
12
  withThreadLock,
13
13
  writeThread
14
- } from "./chunk-KGSVLZV6.js";
14
+ } from "./chunk-A4VZXJEJ.js";
15
15
  import "./chunk-77WWLBCI.js";
16
16
  import "./chunk-QZQEXME2.js";
17
17
  export {
@@ -4,15 +4,15 @@ import {
4
4
  listWorkspaces,
5
5
  removeWorkspace,
6
6
  syncWorkspacesFromThreads
7
- } from "./chunk-VTTTV2LM.js";
8
- import "./chunk-SMWVSSE5.js";
9
- import "./chunk-GYFNFU62.js";
10
- import "./chunk-PZVA2VDF.js";
7
+ } from "./chunk-7KWYXGIU.js";
8
+ import "./chunk-4EWPKYOU.js";
9
+ import "./chunk-KQBI5HNT.js";
10
+ import "./chunk-C4KHDW3U.js";
11
11
  import "./chunk-FKOIHGKV.js";
12
- import "./chunk-7ZTQHC2Q.js";
13
- import "./chunk-TLPJHLLM.js";
12
+ import "./chunk-4NR5FL46.js";
13
+ import "./chunk-4TR3HZFT.js";
14
14
  import "./chunk-JT7R45JB.js";
15
- import "./chunk-KGSVLZV6.js";
15
+ import "./chunk-A4VZXJEJ.js";
16
16
  import "./chunk-77WWLBCI.js";
17
17
  import "./chunk-QZQEXME2.js";
18
18
  import "./chunk-LGXBYZZA.js";
@@ -6,13 +6,13 @@ import {
6
6
  listWorkspaces,
7
7
  removeWorkspace,
8
8
  syncWorkspacesFromThreads
9
- } from "./chunk-LRO7YVLJ.js";
10
- import "./chunk-THXSFETX.js";
11
- import "./chunk-5XUKY2JY.js";
12
- import "./chunk-6JJTMI7G.js";
9
+ } from "./chunk-YFAXVUY2.js";
10
+ import "./chunk-VOD3HFLP.js";
11
+ import "./chunk-AROMOP3C.js";
12
+ import "./chunk-YXDR43ZC.js";
13
13
  import "./chunk-B3SJXYIJ.js";
14
- import "./chunk-P3BQ5DOL.js";
15
- import "./chunk-EX4NZN3O.js";
14
+ import "./chunk-KYOTBZ6S.js";
15
+ import "./chunk-SGEVS5SY.js";
16
16
  import "./chunk-NSTQ6QKD.js";
17
17
  import "./chunk-KGZBYWZ3.js";
18
18
  import "./chunk-BD2ICC4D.js";
@@ -49,10 +49,10 @@ import {
49
49
  worktreeDisplayLabel,
50
50
  worktreeDisplayLabelForGroup,
51
51
  worktreeNameFromPath
52
- } from "./chunk-6JJTMI7G.js";
52
+ } from "./chunk-YXDR43ZC.js";
53
53
  import "./chunk-B3SJXYIJ.js";
54
- import "./chunk-P3BQ5DOL.js";
55
- import "./chunk-EX4NZN3O.js";
54
+ import "./chunk-KYOTBZ6S.js";
55
+ import "./chunk-SGEVS5SY.js";
56
56
  import "./chunk-NSTQ6QKD.js";
57
57
  import "./chunk-KGZBYWZ3.js";
58
58
  import "./chunk-BD2ICC4D.js";
@@ -47,12 +47,12 @@ import {
47
47
  worktreeDisplayLabel,
48
48
  worktreeDisplayLabelForGroup,
49
49
  worktreeNameFromPath
50
- } from "./chunk-PZVA2VDF.js";
50
+ } from "./chunk-C4KHDW3U.js";
51
51
  import "./chunk-FKOIHGKV.js";
52
- import "./chunk-7ZTQHC2Q.js";
53
- import "./chunk-TLPJHLLM.js";
52
+ import "./chunk-4NR5FL46.js";
53
+ import "./chunk-4TR3HZFT.js";
54
54
  import "./chunk-JT7R45JB.js";
55
- import "./chunk-KGSVLZV6.js";
55
+ import "./chunk-A4VZXJEJ.js";
56
56
  import "./chunk-77WWLBCI.js";
57
57
  import "./chunk-QZQEXME2.js";
58
58
  import "./chunk-LGXBYZZA.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sideboard-ai/core",
3
- "version": "0.1.107",
3
+ "version": "0.1.110",
4
4
  "description": "Sideboard core — orchestration, agents, git worktrees, MCP server",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",