@sideboard-ai/core 0.1.193 → 0.1.194

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 (51) hide show
  1. package/dist/{abletime-UX53JTIH.js → abletime-HR6P4GJH.js} +3 -3
  2. package/dist/{abletime-QHKWGTBY.js → abletime-JINF5KJV.js} +3 -3
  3. package/dist/agents/cursor-runner.js +2 -2
  4. package/dist/{agents-MN4GSQTL.js → agents-OXDDPH2O.js} +16 -17
  5. package/dist/{agents-OK5VD25T.js → agents-WQL7SZY6.js} +6 -7
  6. package/dist/{app-settings-LO7UFHQ6.js → app-settings-5KHVKJKO.js} +2 -2
  7. package/dist/{app-settings-QYLNKRK4.js → app-settings-J775CYOO.js} +2 -2
  8. package/dist/{branch-prefix-EVW2KHGQ.js → branch-prefix-7DTIUJT2.js} +1 -1
  9. package/dist/{branch-prefix-7F37FIPX.js → branch-prefix-N3KTCRCE.js} +1 -1
  10. package/dist/{chunk-MQC2VA5U.js → chunk-2X6RGKLI.js} +13 -13
  11. package/dist/{chunk-EBPBGQ4P.js → chunk-6H2XPPPR.js} +9 -9
  12. package/dist/{chunk-HIX2VDRE.js → chunk-6YTI2HBG.js} +6 -8
  13. package/dist/{chunk-KORE4WOF.js → chunk-AH6WIBLY.js} +1 -1
  14. package/dist/{chunk-XPKKCFRT.js → chunk-DP4TKAMZ.js} +864 -7
  15. package/dist/{chunk-O4BMPY5Y.js → chunk-E37JHCO3.js} +1 -1
  16. package/dist/{chunk-JTWKGOFI.js → chunk-FJZWM2ON.js} +1 -1
  17. package/dist/{chunk-4OVCJPVI.js → chunk-HZTHWU6A.js} +6 -8
  18. package/dist/{chunk-4QJRH5DL.js → chunk-KTHRWHA3.js} +1 -1
  19. package/dist/{chunk-EQXXGOMD.js → chunk-NY366OEZ.js} +46 -58
  20. package/dist/{chunk-BIKCWYRP.js → chunk-S4QCBBXS.js} +873 -16
  21. package/dist/{chunk-BWRS6GAS.js → chunk-S5GLSRLP.js} +1 -1
  22. package/dist/{chunk-PE337IM2.js → chunk-SALM35KD.js} +7 -7
  23. package/dist/{chunk-3DX2T2KR.js → chunk-VRPPFKAO.js} +37 -49
  24. package/dist/{chunk-7SNJMKD6.js → chunk-WDRMZKVB.js} +1 -1
  25. package/dist/{connected-teams-SYQQGCXD.js → connected-teams-WK47ATT7.js} +2 -2
  26. package/dist/{coordinator-prompt-WB65HIZ3.js → coordinator-prompt-IX66YUJ2.js} +5 -6
  27. package/dist/{coordinator-prompt-GXJIPWNA.js → coordinator-prompt-LYKS3YNG.js} +4 -5
  28. package/dist/{global-workspace-MMK5UFUZ.js → global-workspace-4QX6UEOY.js} +5 -6
  29. package/dist/{global-workspace-BZ6V6TEX.js → global-workspace-SNJ2Z6SL.js} +4 -5
  30. package/dist/index.cjs +50 -84
  31. package/dist/index.d.cts +4 -5
  32. package/dist/index.d.ts +4 -5
  33. package/dist/index.js +95 -54
  34. package/dist/mcp/run-stdio.cjs +47 -83
  35. package/dist/mcp/run-stdio.js +67 -26
  36. package/dist/{orchestrator-SFOT6Q6F.js → orchestrator-A5KF2335.js} +8 -9
  37. package/dist/{orchestrator-4KI6VIFG.js → orchestrator-S3M2E7O6.js} +9 -10
  38. package/dist/{workspaces-KPJS7GLY.js → workspaces-URMUVGAQ.js} +5 -6
  39. package/dist/{workspaces-ACMZMKPD.js → workspaces-UTOYGBYB.js} +4 -5
  40. package/dist/{worktree-6IEVF3GN.js → worktree-R43JOR4V.js} +12 -14
  41. package/dist/{worktree-UW6DNBIE.js → worktree-RM6UWNGZ.js} +17 -19
  42. package/package.json +1 -1
  43. package/dist/chunk-64QSHOKV.js +0 -869
  44. package/dist/chunk-ILWQT2UN.js +0 -55
  45. package/dist/chunk-PBEPPXMY.js +0 -57
  46. package/dist/chunk-RCWHL4TK.js +0 -866
  47. package/dist/github-DWROJOB7.js +0 -11
  48. package/dist/github-IIF7AQNO.js +0 -9
  49. package/dist/worktree-labels-3XDS6O3U.js +0 -22
  50. package/dist/worktree-labels-PEDOJBMD.js +0 -24
  51. package/dist/{chunk-7AJ7OZZF.js → chunk-NLHFAMC2.js} +3 -3
package/dist/index.d.ts CHANGED
@@ -975,7 +975,7 @@ interface AdvancedAppSettings {
975
975
  autoRenameBranch?: boolean;
976
976
  /**
977
977
  * First segment of renamed task branches (`matt/bb-1234-eng-fix-thing`).
978
- * Empty / omitted → connected GitHub username.
978
+ * Empty / omitted → no prefix.
979
979
  */
980
980
  branchPrefix?: string;
981
981
  /**
@@ -1307,7 +1307,7 @@ declare function brightsyCloudConnectAgent(settings?: AppSettings): BrightsyClou
1307
1307
  declare function updateAdvancedSettings(patch: Partial<AdvancedAppSettings>): AppSettings;
1308
1308
  /** Conductor default: on. */
1309
1309
  declare function autoRenameBranchEnabled(settings?: AppSettings): boolean;
1310
- /** Saved account prefix, or null to fall back to the GitHub username. */
1310
+ /** Saved account prefix, or null when empty (no default). */
1311
1311
  declare function gitBranchPrefixSetting(settings?: AppSettings): string | null;
1312
1312
  declare function autoRunAfterSetupEnabled(settings?: AppSettings): boolean;
1313
1313
  declare function caffeinateWhileRunningEnabled(settings?: AppSettings): boolean;
@@ -2089,13 +2089,12 @@ declare function checkoutPrStackLayer(cwd: string, target: string | number): Pro
2089
2089
 
2090
2090
  /**
2091
2091
  * Account git branch prefix (Settings → Git).
2092
- * Empty setting falls back to the connected GitHub username.
2092
+ * Empty / omitted means no prefix — do not invent a default.
2093
2093
  */
2094
2094
  declare function sanitizeGitBranchPrefix(raw: string | null | undefined): string | null;
2095
- /** Prefer the saved setting; otherwise the GitHub login. */
2095
+ /** Saved setting only. Empty does not fall back to the GitHub username. */
2096
2096
  declare function resolveGitBranchPrefix(opts: {
2097
2097
  setting?: string | null;
2098
- githubLogin?: string | null;
2099
2098
  }): string | null;
2100
2099
  /** Example branch for the rename-placeholder directive. */
2101
2100
  declare function examplePrefixedBranch(prefix: string | null | undefined, ticket?: string | null): string;
package/dist/index.js CHANGED
@@ -25,11 +25,7 @@ import {
25
25
  toAbleTimeIssueInfo,
26
26
  updateAbleTimeTask,
27
27
  verifyAbleTimeConnection
28
- } from "./chunk-O4BMPY5Y.js";
29
- import {
30
- getGitHubStatus,
31
- refreshGitHubAuth
32
- } from "./chunk-ILWQT2UN.js";
28
+ } from "./chunk-E37JHCO3.js";
33
29
  import {
34
30
  AGENT_GIT_ACTIONS,
35
31
  BOARD_COLUMN_DEFS,
@@ -272,7 +268,18 @@ import {
272
268
  worktreeCleanupSettings,
273
269
  wrapReviewSkillMarkdown,
274
270
  writeWorktreeFile
275
- } from "./chunk-EQXXGOMD.js";
271
+ } from "./chunk-NY366OEZ.js";
272
+ import {
273
+ LEGACY_PLAN_FILE_REL,
274
+ PLAN_FILE_NAME,
275
+ PLAN_FILE_REL,
276
+ extractPresentedPlan,
277
+ isPresentPlanToolName,
278
+ planFileAbs,
279
+ readPlanFile,
280
+ resolvePlanMarkdown,
281
+ writePlanFile
282
+ } from "./chunk-DJU54RYW.js";
276
283
  import {
277
284
  BRIGHTSY_MCP_ALLOWED_TOOLS,
278
285
  CLAUDE_MODEL_CATALOG,
@@ -367,18 +374,7 @@ import {
367
374
  withEventParentId,
368
375
  withEventsParentId,
369
376
  writeInjectedMcpConfig
370
- } from "./chunk-MQC2VA5U.js";
371
- import {
372
- LEGACY_PLAN_FILE_REL,
373
- PLAN_FILE_NAME,
374
- PLAN_FILE_REL,
375
- extractPresentedPlan,
376
- isPresentPlanToolName,
377
- planFileAbs,
378
- readPlanFile,
379
- resolvePlanMarkdown,
380
- writePlanFile
381
- } from "./chunk-DJU54RYW.js";
377
+ } from "./chunk-2X6RGKLI.js";
382
378
  import {
383
379
  CLOUD_COORDINATOR_BUSY_REPLY,
384
380
  CLOUD_COORDINATOR_STOPPED_REPLY,
@@ -421,15 +417,18 @@ import {
421
417
  stageBuffersAsAttachments,
422
418
  syncWorkspacesFromThreads,
423
419
  takenTeamSlugsForOrchestration
424
- } from "./chunk-4OVCJPVI.js";
420
+ } from "./chunk-HZTHWU6A.js";
425
421
  import {
422
+ FAMOUS_SOCCER_TEAMS,
426
423
  GITHUB_PR_BODY_MAX_CHARS,
427
424
  GITHUB_PR_BODY_SAFE_CHARS,
428
425
  PR_DETAILS_JSON_FIELDS,
429
426
  addPrStackLayer,
427
+ allocateTeamName,
430
428
  allocateTeamSlug,
431
429
  appendIndexedGitConfig,
432
430
  applyGithubGitAuthEnv,
431
+ branchDisplayLabel,
433
432
  canonicalizeRepoPath,
434
433
  checkoutPrStackLayer,
435
434
  clampGithubPrBody,
@@ -470,16 +469,19 @@ import {
470
469
  isGhPrBodyTooLongError,
471
470
  isGhRateLimitError,
472
471
  isInPrStack,
472
+ isPlaceholderBranch,
473
473
  isPrNotMergeableError,
474
474
  isSideboardScratchPath,
475
475
  listBranches,
476
476
  listPrs,
477
477
  listWorktrees,
478
+ lookupSoccerTeam,
478
479
  markPrReady,
479
480
  mergeAgentGitAuthEnv,
480
481
  mergePr,
481
482
  mergePrStack,
482
483
  nonInteractiveGitProcessEnv,
484
+ normalizeWorktreePath,
483
485
  originFetchBranch,
484
486
  originGhRepoEnv,
485
487
  parseGhStackViewJson,
@@ -505,8 +507,14 @@ import {
505
507
  stackMergeReadiness,
506
508
  submitPrStack,
507
509
  suggestSlug,
508
- warmGithubAgentAuth
509
- } from "./chunk-BIKCWYRP.js";
510
+ threadDisplayLabel,
511
+ ticketSlugForBranch,
512
+ warmGithubAgentAuth,
513
+ worktreeDisplayLabel,
514
+ worktreeDisplayLabelForGroup,
515
+ worktreeNameFromPath,
516
+ worktreeSlugForTicket
517
+ } from "./chunk-S4QCBBXS.js";
510
518
  import {
511
519
  ATTACHMENTS_DIR,
512
520
  CLI_DIR,
@@ -526,7 +534,7 @@ import {
526
534
  listBrightsyAccounts,
527
535
  listConnectedBrightsyTeams,
528
536
  switchBrightsyAccount
529
- } from "./chunk-PE337IM2.js";
537
+ } from "./chunk-SALM35KD.js";
530
538
  import {
531
539
  brightsyAccessTokenNeedsRefresh,
532
540
  brightsyConfigPath,
@@ -552,21 +560,7 @@ import {
552
560
  trustSystemCertificates,
553
561
  turnCostUsdFromCursorUsage,
554
562
  withMaxOldSpaceSize
555
- } from "./chunk-7AJ7OZZF.js";
556
- import {
557
- conductorBundledBinDir,
558
- enrichPathWithNpmGlobalBin,
559
- ensureAgentPath,
560
- gh,
561
- git,
562
- isConductorBundledCli,
563
- posixShellSingleQuote,
564
- resolveCommandBinarySync,
565
- resolveGhAuthToken,
566
- resolveGitDirsForLockRecovery,
567
- run,
568
- withExportedPath
569
- } from "./chunk-UFHNSFAS.js";
563
+ } from "./chunk-NLHFAMC2.js";
570
564
  import {
571
565
  FOLLOW_UP_BEHAVIORS,
572
566
  GITHUB_GIT_AUTH_MODES,
@@ -662,7 +656,7 @@ import {
662
656
  updateOpencodeSettings,
663
657
  updateProjectProfileSettings,
664
658
  writeViewerContext
665
- } from "./chunk-BWRS6GAS.js";
659
+ } from "./chunk-S5GLSRLP.js";
666
660
  import {
667
661
  stripNestedElectronEnv
668
662
  } from "./chunk-4TR3HZFT.js";
@@ -670,7 +664,7 @@ import {
670
664
  examplePrefixedBranch,
671
665
  resolveGitBranchPrefix,
672
666
  sanitizeGitBranchPrefix
673
- } from "./chunk-7SNJMKD6.js";
667
+ } from "./chunk-WDRMZKVB.js";
674
668
  import {
675
669
  caffeinateHoldPath,
676
670
  getCaffeinateHold,
@@ -732,19 +726,66 @@ import {
732
726
  worktreesRoot
733
727
  } from "./chunk-WFUDY6PC.js";
734
728
  import {
735
- FAMOUS_SOCCER_TEAMS,
736
- allocateTeamName,
737
- branchDisplayLabel,
738
- isPlaceholderBranch,
739
- lookupSoccerTeam,
740
- normalizeWorktreePath,
741
- threadDisplayLabel,
742
- ticketSlugForBranch,
743
- worktreeDisplayLabel,
744
- worktreeDisplayLabelForGroup,
745
- worktreeNameFromPath,
746
- worktreeSlugForTicket
747
- } from "./chunk-RCWHL4TK.js";
729
+ conductorBundledBinDir,
730
+ enrichPathWithNpmGlobalBin,
731
+ ensureAgentPath,
732
+ gh,
733
+ git,
734
+ isConductorBundledCli,
735
+ posixShellSingleQuote,
736
+ resolveCommandBinarySync,
737
+ resolveGhAuthToken,
738
+ resolveGitDirsForLockRecovery,
739
+ run,
740
+ withExportedPath
741
+ } from "./chunk-UFHNSFAS.js";
742
+
743
+ // src/integrations/github.ts
744
+ async function getGitHubStatus() {
745
+ const which = await run("which", ["gh"], { reject: false });
746
+ if (which.exitCode !== 0 || !which.stdout.trim()) {
747
+ return {
748
+ connected: false,
749
+ login: null,
750
+ hosts: [],
751
+ reason: "gh CLI not found on PATH"
752
+ };
753
+ }
754
+ const loginResult = await run(
755
+ "gh",
756
+ ["api", "user", "--jq", ".login"],
757
+ { reject: false }
758
+ );
759
+ if (loginResult.exitCode === 0 && loginResult.stdout.trim()) {
760
+ return {
761
+ connected: true,
762
+ login: loginResult.stdout.trim(),
763
+ hosts: ["github.com"],
764
+ reason: null
765
+ };
766
+ }
767
+ const status = await run("gh", ["auth", "status"], { reject: false });
768
+ const text7 = `${status.stdout}
769
+ ${status.stderr}`;
770
+ const loginMatch = text7.match(/Logged in to ([^\s]+) account (\S+)/i) ?? text7.match(/Logged in to ([^\s]+) as (\S+)/i);
771
+ if (loginMatch) {
772
+ return {
773
+ connected: true,
774
+ login: loginMatch[2].replace(/['"]/g, ""),
775
+ hosts: [loginMatch[1]],
776
+ reason: null
777
+ };
778
+ }
779
+ return {
780
+ connected: false,
781
+ login: null,
782
+ hosts: [],
783
+ reason: status.stderr.trim() || status.stdout.trim() || "Not logged in to GitHub (run: gh auth login)"
784
+ };
785
+ }
786
+ async function refreshGitHubAuth() {
787
+ return getGitHubStatus();
788
+ }
748
789
 
749
790
  // src/integrations/issue-since.ts
750
791
  var ISSUE_SINCE_ERROR = "updatedSince must be an ISO datetime, YYYY-MM-DD, or relative time (yesterday, 2d, 3 hours ago)";
@@ -5064,7 +5105,7 @@ async function startMcpServer() {
5064
5105
  );
5065
5106
  }
5066
5107
  try {
5067
- const { maxConcurrentAgents: maxConcurrentAgents2 } = await import("./app-settings-LO7UFHQ6.js");
5108
+ const { maxConcurrentAgents: maxConcurrentAgents2 } = await import("./app-settings-5KHVKJKO.js");
5068
5109
  orch.setMaxConcurrent(maxConcurrentAgents2());
5069
5110
  } catch {
5070
5111
  }
@@ -5379,7 +5420,7 @@ async function startMcpServer() {
5379
5420
  registerConnectedIssueVendorTools(server);
5380
5421
  registerScheduleTools(server);
5381
5422
  const { getCaffeinateHold: getCaffeinateHold2, setCaffeinateHold: setCaffeinateHold2 } = await import("./caffeinate-hold-22VFDPSO.js");
5382
- const { resolveNewThreadOptions: resolveNewThreadOptions2, resolveThreadDefaults: resolveThreadDefaults2 } = await import("./app-settings-LO7UFHQ6.js");
5423
+ const { resolveNewThreadOptions: resolveNewThreadOptions2, resolveThreadDefaults: resolveThreadDefaults2 } = await import("./app-settings-5KHVKJKO.js");
5383
5424
  const accountDefaults = resolveThreadDefaults2();
5384
5425
  const accountDefaultsHint = `Account defaults: agent=${accountDefaults.agent}, model=${accountDefaults.model?.trim() || "Auto"}, effort=${accountDefaults.effort}`;
5385
5426
  server.tool(
@@ -2986,18 +2986,6 @@ var init_teams = __esm({
2986
2986
  });
2987
2987
 
2988
2988
  // src/git/worktree-labels.ts
2989
- var worktree_labels_exports = {};
2990
- __export(worktree_labels_exports, {
2991
- branchDisplayLabel: () => branchDisplayLabel,
2992
- isPlaceholderBranch: () => isPlaceholderBranch,
2993
- normalizeWorktreePath: () => normalizeWorktreePath,
2994
- threadDisplayLabel: () => threadDisplayLabel,
2995
- ticketSlugForBranch: () => ticketSlugForBranch,
2996
- worktreeDisplayLabel: () => worktreeDisplayLabel,
2997
- worktreeDisplayLabelForGroup: () => worktreeDisplayLabelForGroup,
2998
- worktreeNameFromPath: () => worktreeNameFromPath,
2999
- worktreeSlugForTicket: () => worktreeSlugForTicket
3000
- });
3001
2989
  function normalizeWorktreePath(worktreePath) {
3002
2990
  const trimmed = (worktreePath ?? "").replace(/\/+$/, "") || "/";
3003
2991
  const absolute = trimmed.startsWith("/");
@@ -3465,7 +3453,7 @@ function sanitizeGitBranchPrefix(raw) {
3465
3453
  return slug || null;
3466
3454
  }
3467
3455
  function resolveGitBranchPrefix(opts) {
3468
- return sanitizeGitBranchPrefix(opts.setting) ?? sanitizeGitBranchPrefix(opts.githubLogin);
3456
+ return sanitizeGitBranchPrefix(opts.setting);
3469
3457
  }
3470
3458
  function examplePrefixedBranch(prefix, ticket) {
3471
3459
  const head = sanitizeGitBranchPrefix(prefix);
@@ -19412,64 +19400,6 @@ var init_schedule_runner = __esm({
19412
19400
  }
19413
19401
  });
19414
19402
 
19415
- // src/integrations/github.ts
19416
- var github_exports = {};
19417
- __export(github_exports, {
19418
- getGitHubStatus: () => getGitHubStatus,
19419
- refreshGitHubAuth: () => refreshGitHubAuth
19420
- });
19421
- async function getGitHubStatus() {
19422
- const which = await run("which", ["gh"], { reject: false });
19423
- if (which.exitCode !== 0 || !which.stdout.trim()) {
19424
- return {
19425
- connected: false,
19426
- login: null,
19427
- hosts: [],
19428
- reason: "gh CLI not found on PATH"
19429
- };
19430
- }
19431
- const loginResult = await run(
19432
- "gh",
19433
- ["api", "user", "--jq", ".login"],
19434
- { reject: false }
19435
- );
19436
- if (loginResult.exitCode === 0 && loginResult.stdout.trim()) {
19437
- return {
19438
- connected: true,
19439
- login: loginResult.stdout.trim(),
19440
- hosts: ["github.com"],
19441
- reason: null
19442
- };
19443
- }
19444
- const status = await run("gh", ["auth", "status"], { reject: false });
19445
- const text7 = `${status.stdout}
19446
- ${status.stderr}`;
19447
- const loginMatch = text7.match(/Logged in to ([^\s]+) account (\S+)/i) ?? text7.match(/Logged in to ([^\s]+) as (\S+)/i);
19448
- if (loginMatch) {
19449
- return {
19450
- connected: true,
19451
- login: loginMatch[2].replace(/['"]/g, ""),
19452
- hosts: [loginMatch[1]],
19453
- reason: null
19454
- };
19455
- }
19456
- return {
19457
- connected: false,
19458
- login: null,
19459
- hosts: [],
19460
- reason: status.stderr.trim() || status.stdout.trim() || "Not logged in to GitHub (run: gh auth login)"
19461
- };
19462
- }
19463
- async function refreshGitHubAuth() {
19464
- return getGitHubStatus();
19465
- }
19466
- var init_github = __esm({
19467
- "src/integrations/github.ts"() {
19468
- "use strict";
19469
- init_run();
19470
- }
19471
- });
19472
-
19473
19403
  // src/agents/cursor-store.ts
19474
19404
  function cursorSdkStoreDir(threadId) {
19475
19405
  const root = (0, import_node_path49.join)(appDataDir(), CURSOR_SDK_STORE_DIR);
@@ -20534,21 +20464,11 @@ var init_orchestrator = __esm({
20534
20464
  const settings = loadWorkspaceSettings(fresh.worktreePath, fresh.repoPath);
20535
20465
  let renameBranchDirective = null;
20536
20466
  if (!isBrightsy && !isOrchestration && autoRenameBranchEnabled2()) {
20537
- const { isPlaceholderBranch: isPlaceholderBranch2 } = await Promise.resolve().then(() => (init_worktree_labels(), worktree_labels_exports));
20538
- let githubLogin = null;
20539
- if (isPlaceholderBranch2(fresh.branchName, fresh.worktreePath) && !gitBranchPrefixSetting2()) {
20540
- try {
20541
- const { getGitHubStatus: getGitHubStatus2 } = await Promise.resolve().then(() => (init_github(), github_exports));
20542
- githubLogin = (await getGitHubStatus2()).login;
20543
- } catch {
20544
- }
20545
- }
20546
20467
  const { resolveGitBranchPrefix: resolveGitBranchPrefix2 } = await Promise.resolve().then(() => (init_branch_prefix(), branch_prefix_exports));
20547
20468
  renameBranchDirective = formatRenameBranchDirective(fresh, {
20548
20469
  customPrompt: settings?.prompts?.renameBranch,
20549
20470
  branchPrefix: resolveGitBranchPrefix2({
20550
- setting: gitBranchPrefixSetting2(),
20551
- githubLogin
20471
+ setting: gitBranchPrefixSetting2()
20552
20472
  })
20553
20473
  });
20554
20474
  }
@@ -25487,7 +25407,51 @@ async function getHomeBoardInputs(workspaces, opts) {
25487
25407
 
25488
25408
  // src/mcp/server.ts
25489
25409
  init_home_board();
25490
- init_github();
25410
+
25411
+ // src/integrations/github.ts
25412
+ init_run();
25413
+ async function getGitHubStatus() {
25414
+ const which = await run("which", ["gh"], { reject: false });
25415
+ if (which.exitCode !== 0 || !which.stdout.trim()) {
25416
+ return {
25417
+ connected: false,
25418
+ login: null,
25419
+ hosts: [],
25420
+ reason: "gh CLI not found on PATH"
25421
+ };
25422
+ }
25423
+ const loginResult = await run(
25424
+ "gh",
25425
+ ["api", "user", "--jq", ".login"],
25426
+ { reject: false }
25427
+ );
25428
+ if (loginResult.exitCode === 0 && loginResult.stdout.trim()) {
25429
+ return {
25430
+ connected: true,
25431
+ login: loginResult.stdout.trim(),
25432
+ hosts: ["github.com"],
25433
+ reason: null
25434
+ };
25435
+ }
25436
+ const status = await run("gh", ["auth", "status"], { reject: false });
25437
+ const text7 = `${status.stdout}
25438
+ ${status.stderr}`;
25439
+ const loginMatch = text7.match(/Logged in to ([^\s]+) account (\S+)/i) ?? text7.match(/Logged in to ([^\s]+) as (\S+)/i);
25440
+ if (loginMatch) {
25441
+ return {
25442
+ connected: true,
25443
+ login: loginMatch[2].replace(/['"]/g, ""),
25444
+ hosts: [loginMatch[1]],
25445
+ reason: null
25446
+ };
25447
+ }
25448
+ return {
25449
+ connected: false,
25450
+ login: null,
25451
+ hosts: [],
25452
+ reason: status.stderr.trim() || status.stdout.trim() || "Not logged in to GitHub (run: gh auth login)"
25453
+ };
25454
+ }
25491
25455
 
25492
25456
  // src/mcp/create-thread-agent.ts
25493
25457
  init_cursor();
@@ -1,8 +1,5 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import {
4
- getGitHubStatus
5
- } from "../chunk-PBEPPXMY.js";
6
3
  import {
7
4
  AGENT_GIT_ACTIONS,
8
5
  BOARD_COLUMN_DEFS,
@@ -41,8 +38,7 @@ import {
41
38
  syncBoardPins,
42
39
  updateSchedule,
43
40
  waitForDetachedJob
44
- } from "../chunk-3DX2T2KR.js";
45
- import "../chunk-JFOPOMK7.js";
41
+ } from "../chunk-VRPPFKAO.js";
46
42
  import "../chunk-YWI3IBP2.js";
47
43
  import {
48
44
  applySystemCaEnv,
@@ -52,24 +48,12 @@ import {
52
48
  materializeSystemCaBundle,
53
49
  sideboardMcpProfile,
54
50
  trustSystemCertificates
55
- } from "../chunk-EBPBGQ4P.js";
51
+ } from "../chunk-6H2XPPPR.js";
56
52
  import {
57
53
  GLOBAL_WORKSPACE_ID,
58
54
  isCloudCoordinatorThread,
59
55
  listWorkspaces
60
- } from "../chunk-HIX2VDRE.js";
61
- import {
62
- canonicalizeRepoPath,
63
- formatGhLandError,
64
- ghRepoSelectArgs,
65
- listBranches,
66
- listPrs,
67
- resolveGithubRepoSlug,
68
- resolveListPrsOptions,
69
- resolveRepoRoot,
70
- warmGithubAgentAuth
71
- } from "../chunk-XPKKCFRT.js";
72
- import "../chunk-D6JWYJ4P.js";
56
+ } from "../chunk-6YTI2HBG.js";
73
57
  import "../chunk-3OHR73VK.js";
74
58
  import "../chunk-Y4MIXGPA.js";
75
59
  import {
@@ -83,15 +67,28 @@ import {
83
67
  searchAbleTimeTasks,
84
68
  toAbleTimeIssueInfo,
85
69
  updateAbleTimeTask
86
- } from "../chunk-4QJRH5DL.js";
70
+ } from "../chunk-KTHRWHA3.js";
87
71
  import {
88
72
  httpFetch
89
73
  } from "../chunk-VKQGAWHY.js";
74
+ import "../chunk-JFOPOMK7.js";
75
+ import {
76
+ canonicalizeRepoPath,
77
+ formatGhLandError,
78
+ ghRepoSelectArgs,
79
+ listBranches,
80
+ listPrs,
81
+ resolveGithubRepoSlug,
82
+ resolveListPrsOptions,
83
+ resolveRepoRoot,
84
+ warmGithubAgentAuth
85
+ } from "../chunk-DP4TKAMZ.js";
86
+ import "../chunk-D6JWYJ4P.js";
90
87
  import "../chunk-CJFBSQIB.js";
91
- import "../chunk-64QSHOKV.js";
92
88
  import "../chunk-SYFVUF2C.js";
93
89
  import {
94
- gh
90
+ gh,
91
+ run
95
92
  } from "../chunk-FNQNJOHY.js";
96
93
  import {
97
94
  disconnectLinearConnection,
@@ -106,13 +103,13 @@ import {
106
103
  resolveViewerProfileForRepo,
107
104
  saveLinearOAuth,
108
105
  writeViewerContext
109
- } from "../chunk-KORE4WOF.js";
106
+ } from "../chunk-AH6WIBLY.js";
110
107
  import "../chunk-NSTQ6QKD.js";
111
108
  import "../chunk-KGZBYWZ3.js";
112
109
  import {
113
110
  appDataDir
114
111
  } from "../chunk-EQNRWDLN.js";
115
- import "../chunk-JTWKGOFI.js";
112
+ import "../chunk-FJZWM2ON.js";
116
113
 
117
114
  // src/mcp/server.ts
118
115
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
@@ -3680,6 +3677,50 @@ async function getHomeBoardInputs(workspaces, opts) {
3680
3677
  }
3681
3678
  }
3682
3679
 
3680
+ // src/integrations/github.ts
3681
+ async function getGitHubStatus() {
3682
+ const which = await run("which", ["gh"], { reject: false });
3683
+ if (which.exitCode !== 0 || !which.stdout.trim()) {
3684
+ return {
3685
+ connected: false,
3686
+ login: null,
3687
+ hosts: [],
3688
+ reason: "gh CLI not found on PATH"
3689
+ };
3690
+ }
3691
+ const loginResult = await run(
3692
+ "gh",
3693
+ ["api", "user", "--jq", ".login"],
3694
+ { reject: false }
3695
+ );
3696
+ if (loginResult.exitCode === 0 && loginResult.stdout.trim()) {
3697
+ return {
3698
+ connected: true,
3699
+ login: loginResult.stdout.trim(),
3700
+ hosts: ["github.com"],
3701
+ reason: null
3702
+ };
3703
+ }
3704
+ const status = await run("gh", ["auth", "status"], { reject: false });
3705
+ const text7 = `${status.stdout}
3706
+ ${status.stderr}`;
3707
+ const loginMatch = text7.match(/Logged in to ([^\s]+) account (\S+)/i) ?? text7.match(/Logged in to ([^\s]+) as (\S+)/i);
3708
+ if (loginMatch) {
3709
+ return {
3710
+ connected: true,
3711
+ login: loginMatch[2].replace(/['"]/g, ""),
3712
+ hosts: [loginMatch[1]],
3713
+ reason: null
3714
+ };
3715
+ }
3716
+ return {
3717
+ connected: false,
3718
+ login: null,
3719
+ hosts: [],
3720
+ reason: status.stderr.trim() || status.stdout.trim() || "Not logged in to GitHub (run: gh auth login)"
3721
+ };
3722
+ }
3723
+
3683
3724
  // src/mcp/create-thread-agent.ts
3684
3725
  function resolveOrchCreateThreadOptions(input) {
3685
3726
  const { resolveNewThreadOptions } = input;
@@ -3837,7 +3878,7 @@ async function startMcpServer() {
3837
3878
  );
3838
3879
  }
3839
3880
  try {
3840
- const { maxConcurrentAgents } = await import("../app-settings-QYLNKRK4.js");
3881
+ const { maxConcurrentAgents } = await import("../app-settings-J775CYOO.js");
3841
3882
  orch.setMaxConcurrent(maxConcurrentAgents());
3842
3883
  } catch {
3843
3884
  }
@@ -4152,7 +4193,7 @@ async function startMcpServer() {
4152
4193
  registerConnectedIssueVendorTools(server);
4153
4194
  registerScheduleTools(server);
4154
4195
  const { getCaffeinateHold, setCaffeinateHold } = await import("../caffeinate-hold-OK4JJ5PP.js");
4155
- const { resolveNewThreadOptions, resolveThreadDefaults } = await import("../app-settings-QYLNKRK4.js");
4196
+ const { resolveNewThreadOptions, resolveThreadDefaults } = await import("../app-settings-J775CYOO.js");
4156
4197
  const accountDefaults = resolveThreadDefaults();
4157
4198
  const accountDefaultsHint = `Account defaults: agent=${accountDefaults.agent}, model=${accountDefaults.model?.trim() || "Auto"}, effort=${accountDefaults.effort}`;
4158
4199
  server.tool(
@@ -9,25 +9,24 @@ import {
9
9
  resolveSendFollowUp,
10
10
  startOrchestration,
11
11
  waitForPidExit
12
- } from "./chunk-3DX2T2KR.js";
13
- import "./chunk-JFOPOMK7.js";
12
+ } from "./chunk-VRPPFKAO.js";
14
13
  import "./chunk-YWI3IBP2.js";
15
- import "./chunk-EBPBGQ4P.js";
16
- import "./chunk-HIX2VDRE.js";
17
- import "./chunk-XPKKCFRT.js";
18
- import "./chunk-D6JWYJ4P.js";
14
+ import "./chunk-6H2XPPPR.js";
15
+ import "./chunk-6YTI2HBG.js";
19
16
  import "./chunk-3OHR73VK.js";
20
17
  import "./chunk-Y4MIXGPA.js";
21
18
  import "./chunk-VKQGAWHY.js";
19
+ import "./chunk-JFOPOMK7.js";
20
+ import "./chunk-DP4TKAMZ.js";
21
+ import "./chunk-D6JWYJ4P.js";
22
22
  import "./chunk-CJFBSQIB.js";
23
- import "./chunk-64QSHOKV.js";
24
23
  import "./chunk-SYFVUF2C.js";
25
24
  import "./chunk-FNQNJOHY.js";
26
- import "./chunk-KORE4WOF.js";
25
+ import "./chunk-AH6WIBLY.js";
27
26
  import "./chunk-NSTQ6QKD.js";
28
27
  import "./chunk-KGZBYWZ3.js";
29
28
  import "./chunk-EQNRWDLN.js";
30
- import "./chunk-JTWKGOFI.js";
29
+ import "./chunk-FJZWM2ON.js";
31
30
  export {
32
31
  LIVE_TURN_SPAWN_GRACE_MS,
33
32
  Orchestrator,
@@ -7,28 +7,27 @@ import {
7
7
  resolveSendFollowUp,
8
8
  startOrchestration,
9
9
  waitForPidExit
10
- } from "./chunk-EQXXGOMD.js";
11
- import "./chunk-MQC2VA5U.js";
10
+ } from "./chunk-NY366OEZ.js";
12
11
  import "./chunk-DJU54RYW.js";
13
- import "./chunk-4OVCJPVI.js";
14
- import "./chunk-BIKCWYRP.js";
12
+ import "./chunk-2X6RGKLI.js";
13
+ import "./chunk-HZTHWU6A.js";
14
+ import "./chunk-S4QCBBXS.js";
15
15
  import "./chunk-6K64FJDD.js";
16
16
  import "./chunk-QQKDGPUI.js";
17
- import "./chunk-PE337IM2.js";
17
+ import "./chunk-SALM35KD.js";
18
18
  import "./chunk-AN3THU7F.js";
19
19
  import "./chunk-N7WZ6NIN.js";
20
20
  import "./chunk-AXQ4ZWHK.js";
21
- import "./chunk-7AJ7OZZF.js";
22
- import "./chunk-UFHNSFAS.js";
23
- import "./chunk-BWRS6GAS.js";
21
+ import "./chunk-NLHFAMC2.js";
22
+ import "./chunk-S5GLSRLP.js";
24
23
  import "./chunk-4TR3HZFT.js";
25
- import "./chunk-7SNJMKD6.js";
24
+ import "./chunk-WDRMZKVB.js";
26
25
  import "./chunk-4TYXWPAJ.js";
27
26
  import "./chunk-JT7R45JB.js";
28
27
  import "./chunk-KJBYIIJU.js";
29
28
  import "./chunk-77WWLBCI.js";
30
29
  import "./chunk-WFUDY6PC.js";
31
- import "./chunk-RCWHL4TK.js";
30
+ import "./chunk-UFHNSFAS.js";
32
31
  export {
33
32
  LIVE_TURN_SPAWN_GRACE_MS,
34
33
  Orchestrator,