@sideboard-ai/core 0.1.192 → 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 (60) hide show
  1. package/dist/{abletime-53T7G667.js → abletime-HR6P4GJH.js} +4 -3
  2. package/dist/{abletime-JFMBCSIQ.js → abletime-JINF5KJV.js} +4 -3
  3. package/dist/agents/cursor-runner.js +3 -3
  4. package/dist/{agents-TXGQIK2E.js → agents-OXDDPH2O.js} +10 -9
  5. package/dist/{agents-T5VBB6X3.js → agents-WQL7SZY6.js} +8 -7
  6. package/dist/{app-settings-663VQWUV.js → app-settings-5KHVKJKO.js} +5 -2
  7. package/dist/{app-settings-74HBAAH7.js → app-settings-J775CYOO.js} +5 -2
  8. package/dist/branch-prefix-7DTIUJT2.js +12 -0
  9. package/dist/branch-prefix-N3KTCRCE.js +10 -0
  10. package/dist/{caffeinate-hold-SK2QISPE.js → caffeinate-hold-22VFDPSO.js} +2 -2
  11. package/dist/{caffeinate-hold-DBKMRZZO.js → caffeinate-hold-OK4JJ5PP.js} +2 -2
  12. package/dist/{chunk-TWSCTJCR.js → chunk-2X6RGKLI.js} +7 -7
  13. package/dist/{chunk-HVIEYTUK.js → chunk-3OHR73VK.js} +1 -1
  14. package/dist/{chunk-AO35MGOE.js → chunk-4TYXWPAJ.js} +1 -1
  15. package/dist/{chunk-WHD4JNTN.js → chunk-6H2XPPPR.js} +8 -8
  16. package/dist/{chunk-7NSXGL6L.js → chunk-6YTI2HBG.js} +5 -5
  17. package/dist/{chunk-WLPXZFRE.js → chunk-7J72QJOM.js} +1 -1
  18. package/dist/{chunk-OKZFTOM2.js → chunk-AH6WIBLY.js} +19 -1
  19. package/dist/{chunk-GOZ6T3AG.js → chunk-CJFBSQIB.js} +1 -1
  20. package/dist/{chunk-XBLN52RZ.js → chunk-DP4TKAMZ.js} +3 -3
  21. package/dist/{chunk-4M2AK3O5.js → chunk-E37JHCO3.js} +1 -1
  22. package/dist/{chunk-JTJHOYCU.js → chunk-EQNRWDLN.js} +10 -4
  23. package/dist/chunk-FJZWM2ON.js +23 -0
  24. package/dist/{chunk-VV7UT3E2.js → chunk-HZTHWU6A.js} +5 -5
  25. package/dist/{chunk-TCQAFTSV.js → chunk-KJBYIIJU.js} +1 -1
  26. package/dist/{chunk-UBQIELFS.js → chunk-KTHRWHA3.js} +1 -1
  27. package/dist/{chunk-FY64F2ZQ.js → chunk-NLHFAMC2.js} +1 -1
  28. package/dist/{chunk-NF6ENGHS.js → chunk-NY366OEZ.js} +151 -160
  29. package/dist/{chunk-WXKXSZN4.js → chunk-S4QCBBXS.js} +6 -6
  30. package/dist/{chunk-J7LQVLFQ.js → chunk-S5GLSRLP.js} +19 -1
  31. package/dist/{chunk-IEEAVWAP.js → chunk-SALM35KD.js} +5 -5
  32. package/dist/{chunk-FZ3G5TXM.js → chunk-VRPPFKAO.js} +152 -162
  33. package/dist/chunk-WDRMZKVB.js +20 -0
  34. package/dist/{chunk-EFVFB2AH.js → chunk-WFUDY6PC.js} +12 -5
  35. package/dist/{chunk-OCQPTUR7.js → chunk-YWI3IBP2.js} +1 -1
  36. package/dist/{connected-teams-WOYCH7FR.js → connected-teams-PU4AMFNA.js} +2 -2
  37. package/dist/{connected-teams-ON2KIKQX.js → connected-teams-WK47ATT7.js} +2 -2
  38. package/dist/{coordinator-prompt-S4HHFSLI.js → coordinator-prompt-IX66YUJ2.js} +7 -6
  39. package/dist/{coordinator-prompt-PNUDN4DW.js → coordinator-prompt-LYKS3YNG.js} +6 -5
  40. package/dist/{cursor-recover-NDMLLNYX.js → cursor-recover-DTQAUDGO.js} +2 -2
  41. package/dist/{cursor-recover-L5MD6MBO.js → cursor-recover-TXVTLAMA.js} +1 -1
  42. package/dist/{global-workspace-JTBBH2K5.js → global-workspace-4QX6UEOY.js} +7 -6
  43. package/dist/{global-workspace-2BVCJUAL.js → global-workspace-SNJ2Z6SL.js} +6 -5
  44. package/dist/index.cjs +192 -146
  45. package/dist/index.d.cts +46 -8
  46. package/dist/index.d.ts +46 -8
  47. package/dist/index.js +55 -43
  48. package/dist/mcp/run-stdio.cjs +179 -145
  49. package/dist/mcp/run-stdio.js +19 -18
  50. package/dist/{orchestrator-4G76BOHH.js → orchestrator-A5KF2335.js} +10 -9
  51. package/dist/{orchestrator-LWEZ74RK.js → orchestrator-S3M2E7O6.js} +12 -11
  52. package/dist/{paths-RRCLNSJB.js → paths-C2VERLAE.js} +1 -1
  53. package/dist/{paths-53TLA7VQ.js → paths-LOXCISLX.js} +1 -1
  54. package/dist/{thread-store-ZL6GDIDP.js → thread-store-CO77HV2K.js} +2 -2
  55. package/dist/{thread-store-RXXNSRVO.js → thread-store-M4B52FUS.js} +2 -2
  56. package/dist/{workspaces-ZYPME3YD.js → workspaces-URMUVGAQ.js} +7 -6
  57. package/dist/{workspaces-OY7D5RPU.js → workspaces-UTOYGBYB.js} +6 -5
  58. package/dist/{worktree-7LOSSD7G.js → worktree-R43JOR4V.js} +5 -4
  59. package/dist/{worktree-LPWTX2NA.js → worktree-RM6UWNGZ.js} +6 -5
  60. package/package.json +1 -1
@@ -17,12 +17,13 @@ import {
17
17
  toAbleTimeIssueInfo,
18
18
  updateAbleTimeTask,
19
19
  verifyAbleTimeConnection
20
- } from "./chunk-UBQIELFS.js";
20
+ } from "./chunk-KTHRWHA3.js";
21
21
  import "./chunk-VKQGAWHY.js";
22
- import "./chunk-OKZFTOM2.js";
22
+ import "./chunk-AH6WIBLY.js";
23
23
  import "./chunk-NSTQ6QKD.js";
24
24
  import "./chunk-KGZBYWZ3.js";
25
- import "./chunk-JTJHOYCU.js";
25
+ import "./chunk-EQNRWDLN.js";
26
+ import "./chunk-FJZWM2ON.js";
26
27
  export {
27
28
  ableTimeDependencyTarget,
28
29
  commentAbleTimeTask,
@@ -15,13 +15,14 @@ import {
15
15
  toAbleTimeIssueInfo,
16
16
  updateAbleTimeTask,
17
17
  verifyAbleTimeConnection
18
- } from "./chunk-4M2AK3O5.js";
18
+ } from "./chunk-E37JHCO3.js";
19
19
  import "./chunk-N7WZ6NIN.js";
20
- import "./chunk-J7LQVLFQ.js";
20
+ import "./chunk-S5GLSRLP.js";
21
21
  import "./chunk-4TR3HZFT.js";
22
+ import "./chunk-WDRMZKVB.js";
22
23
  import "./chunk-JT7R45JB.js";
23
24
  import "./chunk-77WWLBCI.js";
24
- import "./chunk-EFVFB2AH.js";
25
+ import "./chunk-WFUDY6PC.js";
25
26
  export {
26
27
  ableTimeDependencyTarget,
27
28
  commentAbleTimeTask,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  cursorSdkStoreDir
4
- } from "../chunk-WLPXZFRE.js";
4
+ } from "../chunk-7J72QJOM.js";
5
5
  import {
6
6
  createAgentStreamCoalescer
7
7
  } from "../chunk-AXQ4ZWHK.js";
@@ -12,11 +12,11 @@ import {
12
12
  ensureCursorRipgrepPath,
13
13
  fetchCursorTurnCostUsd,
14
14
  formatUnknownDetail
15
- } from "../chunk-FY64F2ZQ.js";
15
+ } from "../chunk-NLHFAMC2.js";
16
16
  import {
17
17
  dropNestedElectronEnvFromProcess
18
18
  } from "../chunk-4TR3HZFT.js";
19
- import "../chunk-EFVFB2AH.js";
19
+ import "../chunk-WFUDY6PC.js";
20
20
  import "../chunk-UFHNSFAS.js";
21
21
 
22
22
  // src/agents/cursor-runner.ts
@@ -32,11 +32,12 @@ import {
32
32
  resolveLoginCommand,
33
33
  resolveQuotaFallbackAgent,
34
34
  whichOnPath
35
- } from "./chunk-TWSCTJCR.js";
36
- import "./chunk-VV7UT3E2.js";
37
- import "./chunk-WXKXSZN4.js";
35
+ } from "./chunk-2X6RGKLI.js";
36
+ import "./chunk-HZTHWU6A.js";
37
+ import "./chunk-S4QCBBXS.js";
38
38
  import "./chunk-6K64FJDD.js";
39
- import "./chunk-IEEAVWAP.js";
39
+ import "./chunk-QQKDGPUI.js";
40
+ import "./chunk-SALM35KD.js";
40
41
  import "./chunk-AN3THU7F.js";
41
42
  import "./chunk-N7WZ6NIN.js";
42
43
  import {
@@ -44,19 +45,19 @@ import {
44
45
  parseCursorRunnerLine,
45
46
  preferredCursorCostCents,
46
47
  turnCostUsdFromCursorUsage
47
- } from "./chunk-FY64F2ZQ.js";
48
+ } from "./chunk-NLHFAMC2.js";
48
49
  import {
49
50
  ORCHESTRATOR_AGENT_KINDS,
50
51
  assertOrchestratorCapableAgent,
51
52
  coerceOrchestratorAgent,
52
53
  isOrchestratorCapableAgent
53
- } from "./chunk-J7LQVLFQ.js";
54
+ } from "./chunk-S5GLSRLP.js";
54
55
  import "./chunk-4TR3HZFT.js";
56
+ import "./chunk-WDRMZKVB.js";
55
57
  import "./chunk-JT7R45JB.js";
56
- import "./chunk-TCQAFTSV.js";
58
+ import "./chunk-KJBYIIJU.js";
57
59
  import "./chunk-77WWLBCI.js";
58
- import "./chunk-EFVFB2AH.js";
59
- import "./chunk-QQKDGPUI.js";
60
+ import "./chunk-WFUDY6PC.js";
60
61
  import {
61
62
  conductorBundledBinDir,
62
63
  enrichPathWithNpmGlobalBin,
@@ -38,14 +38,14 @@ import {
38
38
  resolveQuotaFallbackAgent,
39
39
  turnCostUsdFromCursorUsage,
40
40
  whichOnPath
41
- } from "./chunk-WHD4JNTN.js";
42
- import "./chunk-HVIEYTUK.js";
41
+ } from "./chunk-6H2XPPPR.js";
42
+ import "./chunk-6YTI2HBG.js";
43
+ import "./chunk-3OHR73VK.js";
43
44
  import "./chunk-Y4MIXGPA.js";
44
45
  import "./chunk-VKQGAWHY.js";
45
- import "./chunk-7NSXGL6L.js";
46
- import "./chunk-XBLN52RZ.js";
46
+ import "./chunk-DP4TKAMZ.js";
47
47
  import "./chunk-D6JWYJ4P.js";
48
- import "./chunk-GOZ6T3AG.js";
48
+ import "./chunk-CJFBSQIB.js";
49
49
  import "./chunk-SYFVUF2C.js";
50
50
  import {
51
51
  conductorBundledBinDir,
@@ -61,10 +61,11 @@ import {
61
61
  assertOrchestratorCapableAgent,
62
62
  coerceOrchestratorAgent,
63
63
  isOrchestratorCapableAgent
64
- } from "./chunk-OKZFTOM2.js";
64
+ } from "./chunk-AH6WIBLY.js";
65
65
  import "./chunk-NSTQ6QKD.js";
66
66
  import "./chunk-KGZBYWZ3.js";
67
- import "./chunk-JTJHOYCU.js";
67
+ import "./chunk-EQNRWDLN.js";
68
+ import "./chunk-FJZWM2ON.js";
68
69
  export {
69
70
  CLAUDE_MODEL_CATALOG,
70
71
  ORCHESTRATOR_AGENT_KINDS,
@@ -44,6 +44,7 @@ import {
44
44
  getGithubPat,
45
45
  getIssueSource,
46
46
  getLinearApiKey,
47
+ gitBranchPrefixSetting,
47
48
  harnessEnvKey,
48
49
  isAbleTimeConnected,
49
50
  isIssueSourceConnected,
@@ -83,11 +84,12 @@ import {
83
84
  updateOpencodeSettings,
84
85
  updateProjectProfileSettings,
85
86
  writeViewerContext
86
- } from "./chunk-J7LQVLFQ.js";
87
+ } from "./chunk-S5GLSRLP.js";
87
88
  import "./chunk-4TR3HZFT.js";
89
+ import "./chunk-WDRMZKVB.js";
88
90
  import "./chunk-JT7R45JB.js";
89
91
  import "./chunk-77WWLBCI.js";
90
- import "./chunk-EFVFB2AH.js";
92
+ import "./chunk-WFUDY6PC.js";
91
93
  export {
92
94
  FOLLOW_UP_BEHAVIORS,
93
95
  GITHUB_GIT_AUTH_MODES,
@@ -134,6 +136,7 @@ export {
134
136
  getGithubPat,
135
137
  getIssueSource,
136
138
  getLinearApiKey,
139
+ gitBranchPrefixSetting,
137
140
  harnessEnvKey,
138
141
  isAbleTimeConnected,
139
142
  isIssueSourceConnected,
@@ -46,6 +46,7 @@ import {
46
46
  getGithubPat,
47
47
  getIssueSource,
48
48
  getLinearApiKey,
49
+ gitBranchPrefixSetting,
49
50
  harnessEnvKey,
50
51
  isAbleTimeConnected,
51
52
  isIssueSourceConnected,
@@ -85,10 +86,11 @@ import {
85
86
  updateOpencodeSettings,
86
87
  updateProjectProfileSettings,
87
88
  writeViewerContext
88
- } from "./chunk-OKZFTOM2.js";
89
+ } from "./chunk-AH6WIBLY.js";
89
90
  import "./chunk-NSTQ6QKD.js";
90
91
  import "./chunk-KGZBYWZ3.js";
91
- import "./chunk-JTJHOYCU.js";
92
+ import "./chunk-EQNRWDLN.js";
93
+ import "./chunk-FJZWM2ON.js";
92
94
  export {
93
95
  FOLLOW_UP_BEHAVIORS,
94
96
  GITHUB_GIT_AUTH_MODES,
@@ -135,6 +137,7 @@ export {
135
137
  getGithubPat,
136
138
  getIssueSource,
137
139
  getLinearApiKey,
140
+ gitBranchPrefixSetting,
138
141
  harnessEnvKey,
139
142
  isAbleTimeConnected,
140
143
  isIssueSourceConnected,
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+
3
+ import {
4
+ examplePrefixedBranch,
5
+ resolveGitBranchPrefix,
6
+ sanitizeGitBranchPrefix
7
+ } from "./chunk-FJZWM2ON.js";
8
+ export {
9
+ examplePrefixedBranch,
10
+ resolveGitBranchPrefix,
11
+ sanitizeGitBranchPrefix
12
+ };
@@ -0,0 +1,10 @@
1
+ import {
2
+ examplePrefixedBranch,
3
+ resolveGitBranchPrefix,
4
+ sanitizeGitBranchPrefix
5
+ } from "./chunk-WDRMZKVB.js";
6
+ export {
7
+ examplePrefixedBranch,
8
+ resolveGitBranchPrefix,
9
+ sanitizeGitBranchPrefix
10
+ };
@@ -5,9 +5,9 @@ import {
5
5
  releaseCaffeinateHoldForThread,
6
6
  setCaffeinateHold,
7
7
  setCaffeinateHoldHooks
8
- } from "./chunk-AO35MGOE.js";
8
+ } from "./chunk-4TYXWPAJ.js";
9
9
  import "./chunk-JT7R45JB.js";
10
- import "./chunk-EFVFB2AH.js";
10
+ import "./chunk-WFUDY6PC.js";
11
11
  export {
12
12
  caffeinateHoldPath,
13
13
  getCaffeinateHold,
@@ -7,9 +7,9 @@ import {
7
7
  releaseCaffeinateHoldForThread,
8
8
  setCaffeinateHold,
9
9
  setCaffeinateHoldHooks
10
- } from "./chunk-OCQPTUR7.js";
10
+ } from "./chunk-YWI3IBP2.js";
11
11
  import "./chunk-NSTQ6QKD.js";
12
- import "./chunk-JTJHOYCU.js";
12
+ import "./chunk-EQNRWDLN.js";
13
13
  export {
14
14
  caffeinateHoldPath,
15
15
  getCaffeinateHold,
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  isOrchestratorThread
3
- } from "./chunk-VV7UT3E2.js";
3
+ } from "./chunk-HZTHWU6A.js";
4
4
  import {
5
5
  codexUnattendedGitConfigArgs,
6
6
  mergeAgentGitAuthEnv,
7
7
  resolveAgentGitAuthEnv,
8
8
  resolveCodexGitWritableRoots
9
- } from "./chunk-WXKXSZN4.js";
9
+ } from "./chunk-S4QCBBXS.js";
10
10
  import {
11
11
  applyConnectedTeamToCli,
12
12
  brightsyMcpServerName,
13
13
  ensureCliTeamTracked,
14
14
  ensureConnectedBrightsyTeamTokens
15
- } from "./chunk-IEEAVWAP.js";
15
+ } from "./chunk-SALM35KD.js";
16
16
  import {
17
17
  loadBrightsyConfig
18
18
  } from "./chunk-AN3THU7F.js";
@@ -29,7 +29,7 @@ import {
29
29
  packagedMcpStdioPath,
30
30
  parseCursorRunnerLine,
31
31
  resolveNodeLaunch
32
- } from "./chunk-FY64F2ZQ.js";
32
+ } from "./chunk-NLHFAMC2.js";
33
33
  import {
34
34
  claudeChromeEnabled,
35
35
  isAbleTimeConnected,
@@ -37,14 +37,14 @@ import {
37
37
  loadAppSettings,
38
38
  resolveAgentExecutable,
39
39
  resolveClaudeExecutable
40
- } from "./chunk-J7LQVLFQ.js";
40
+ } from "./chunk-S5GLSRLP.js";
41
41
  import {
42
42
  isElectronLikeCommand,
43
43
  unwrapStrippedElectronLaunch
44
44
  } from "./chunk-4TR3HZFT.js";
45
45
  import {
46
46
  appDataDir
47
- } from "./chunk-EFVFB2AH.js";
47
+ } from "./chunk-WFUDY6PC.js";
48
48
  import {
49
49
  enrichPathWithNpmGlobalBin,
50
50
  isConductorBundledCli,
@@ -1908,7 +1908,7 @@ var claudeAdapter = {
1908
1908
  );
1909
1909
  }
1910
1910
  const mode = permissionMode(thread);
1911
- const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-JTBBH2K5.js");
1911
+ const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-4QX6UEOY.js");
1912
1912
  const isOrchestrator = isOrchestratorThread2(thread);
1913
1913
  const injectedServers = await buildInjectedMcpServers({
1914
1914
  includeSideboard: true,
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-FNQNJOHY.js";
13
13
  import {
14
14
  appDataDir
15
- } from "./chunk-JTJHOYCU.js";
15
+ } from "./chunk-EQNRWDLN.js";
16
16
 
17
17
  // src/brightsy/connected-teams.ts
18
18
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-JT7R45JB.js";
4
4
  import {
5
5
  appDataDir
6
- } from "./chunk-EFVFB2AH.js";
6
+ } from "./chunk-WFUDY6PC.js";
7
7
 
8
8
  // src/store/caffeinate-hold.ts
9
9
  import { spawn } from "child_process";
@@ -1,23 +1,23 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ import {
4
+ isOrchestratorThread
5
+ } from "./chunk-6YTI2HBG.js";
3
6
  import {
4
7
  applyConnectedTeamToCli,
5
8
  brightsyMcpServerName,
6
9
  ensureCliTeamTracked,
7
10
  ensureConnectedBrightsyTeamTokens
8
- } from "./chunk-HVIEYTUK.js";
11
+ } from "./chunk-3OHR73VK.js";
9
12
  import {
10
13
  loadBrightsyConfig
11
14
  } from "./chunk-Y4MIXGPA.js";
12
- import {
13
- isOrchestratorThread
14
- } from "./chunk-7NSXGL6L.js";
15
15
  import {
16
16
  codexUnattendedGitConfigArgs,
17
17
  mergeAgentGitAuthEnv,
18
18
  resolveAgentGitAuthEnv,
19
19
  resolveCodexGitWritableRoots
20
- } from "./chunk-XBLN52RZ.js";
20
+ } from "./chunk-DP4TKAMZ.js";
21
21
  import {
22
22
  enrichPathWithNpmGlobalBin,
23
23
  isConductorBundledCli,
@@ -35,10 +35,10 @@ import {
35
35
  resolveClaudeExecutable,
36
36
  unwrapStrippedElectronLaunch,
37
37
  wrapElectronAsNodeLaunch
38
- } from "./chunk-OKZFTOM2.js";
38
+ } from "./chunk-AH6WIBLY.js";
39
39
  import {
40
40
  appDataDir
41
- } from "./chunk-JTJHOYCU.js";
41
+ } from "./chunk-EQNRWDLN.js";
42
42
 
43
43
  // src/agents/brightsy.ts
44
44
  import { existsSync } from "fs";
@@ -2390,7 +2390,7 @@ var claudeAdapter = {
2390
2390
  );
2391
2391
  }
2392
2392
  const mode = permissionMode(thread);
2393
- const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-2BVCJUAL.js");
2393
+ const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-SNJ2Z6SL.js");
2394
2394
  const isOrchestrator = isOrchestratorThread2(thread);
2395
2395
  const injectedServers = await buildInjectedMcpServers({
2396
2396
  includeSideboard: true,
@@ -7,7 +7,7 @@ import {
7
7
  resolveRepoRoot,
8
8
  takenSlugsFromThread,
9
9
  teamSlugFromName
10
- } from "./chunk-XBLN52RZ.js";
10
+ } from "./chunk-DP4TKAMZ.js";
11
11
  import {
12
12
  ATTACHMENTS_DIR,
13
13
  attachmentsGitignoreBody
@@ -17,7 +17,7 @@ import {
17
17
  listThreads,
18
18
  updateThread,
19
19
  writeThread
20
- } from "./chunk-GOZ6T3AG.js";
20
+ } from "./chunk-CJFBSQIB.js";
21
21
  import {
22
22
  assertOrchestratorCapableAgent,
23
23
  formatAccountProfilePlaybookLine,
@@ -30,12 +30,12 @@ import {
30
30
  resolveThreadDefaults,
31
31
  resolveViewerProfile,
32
32
  resolveViewerProfileForRepo
33
- } from "./chunk-OKZFTOM2.js";
33
+ } from "./chunk-AH6WIBLY.js";
34
34
  import {
35
35
  appDataDir,
36
36
  globalAgentCwd,
37
37
  sideboardReposDir
38
- } from "./chunk-JTJHOYCU.js";
38
+ } from "./chunk-EQNRWDLN.js";
39
39
 
40
40
  // src/store/workspaces.ts
41
41
  import { existsSync as existsSync2, mkdirSync as mkdirSync3, readFileSync as readFileSync3, writeFileSync as writeFileSync3 } from "fs";
@@ -361,7 +361,7 @@ var COORDINATOR_TOOL_PLAYBOOK = [
361
361
  "- get_diff \u2014 compact diff summary",
362
362
  "- get_pr_checks \u2014 snapshot of a worktree thread's PR checks (null = no PR). Use this to inspect status. If the user gave a goal, the worktree agent watches with `gh pr checks --watch` \u2014 do not poll for the human.",
363
363
  '- request_review \u2014 open a Review chat tab on a worktree thread (attaches .claude/skills/review/SKILL.md when present, else .context/review.md copied from .sideboard/review.md / stock; sends "Review changes in this workspace."); then wait_for_turn (loop while stillRunning) / get_turn_result on the returned id. The review stays in that chat so they can read it and type next steps \u2014 do not tell the child to comment or update the PR or ticket.',
364
- "- ask_git \u2014 commit & push, open a draft PR, mark ready for review, resolve conflicts, or merge. When the worktree is clean, Sideboard pushes / opens the PR itself. When dirty, it steers the worktree agent \u2014 then wait_for_turn (loop while stillRunning). Prefer this over paraphrasing. If ask_git / get_thread lastError says the GraphQL/PR body is too long, the branch is already pushed \u2014 send_to_thread so the worktree agent runs `gh pr create --body-file` with a short description. Do not invent SSH or auth failures from that error. If the user gave a goal (Greptile 5/5, CI green), send_to_thread that goal so the worktree agent enters the watch-fix-push loop \u2014 do not tell the human to poll.",
364
+ "- ask_git \u2014 commit & push, open a draft PR, mark ready for review, resolve conflicts, or merge \u2014 same prompts as the desktop git buttons (Resolve, Create PR, \u2026). Always steers the worktree agent; then wait_for_turn (loop while stillRunning). Prefer this over paraphrasing. If the user gave a goal (Greptile 5/5, CI green), send_to_thread that goal so the worktree agent enters the watch-fix-push loop \u2014 do not tell the human to poll.",
365
365
  '- Merge (`ask_git` action=merge / send_to_thread "Merge PR.") only when the user explicitly asked to merge that PR. Do not merge because the work looks done, CI is green, or a typical flow includes it.',
366
366
  '- Or send_to_thread with those exact phrases: "Commit and push.", "Commit, push, and open a draft PR.", "Ready for review.", "Merge the remote branch (main) into your branch and resolve conflicts. Then, commit and push your changes.", "Merge PR." (draft PRs: `gh pr create --draft -R <origin-owner/name>` using the workspace `github:` slug \u2014 never upstream). Never run git/gh from this orchestration cwd, and never merge the PR yourself.',
367
367
  "Process guides:",
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  appDataDir
3
- } from "./chunk-EFVFB2AH.js";
3
+ } from "./chunk-WFUDY6PC.js";
4
4
 
5
5
  // src/agents/cursor-store.ts
6
6
  import { join } from "path";
@@ -9,7 +9,10 @@ import {
9
9
  } from "./chunk-KGZBYWZ3.js";
10
10
  import {
11
11
  appDataDir
12
- } from "./chunk-JTJHOYCU.js";
12
+ } from "./chunk-EQNRWDLN.js";
13
+ import {
14
+ sanitizeGitBranchPrefix
15
+ } from "./chunk-FJZWM2ON.js";
13
16
 
14
17
  // src/store/app-settings.ts
15
18
  import { randomUUID } from "crypto";
@@ -751,6 +754,10 @@ function normalizeAdvanced(raw) {
751
754
  if (typeof source.autoRenameBranch === "boolean") {
752
755
  out.autoRenameBranch = source.autoRenameBranch;
753
756
  }
757
+ if (typeof source.branchPrefix === "string") {
758
+ const prefix = sanitizeGitBranchPrefix(source.branchPrefix);
759
+ if (prefix) out.branchPrefix = prefix;
760
+ }
754
761
  if (typeof source.autoRunAfterSetup === "boolean") {
755
762
  out.autoRunAfterSetup = source.autoRunAfterSetup;
756
763
  }
@@ -1617,6 +1624,13 @@ function updateAdvancedSettings(patch) {
1617
1624
  if (typeof patch.autoRenameBranch === "boolean") {
1618
1625
  advanced.autoRenameBranch = patch.autoRenameBranch;
1619
1626
  }
1627
+ if (patch.branchPrefix === null || patch.branchPrefix === "") {
1628
+ delete advanced.branchPrefix;
1629
+ } else if (typeof patch.branchPrefix === "string") {
1630
+ const prefix = sanitizeGitBranchPrefix(patch.branchPrefix);
1631
+ if (prefix) advanced.branchPrefix = prefix;
1632
+ else delete advanced.branchPrefix;
1633
+ }
1620
1634
  if (typeof patch.autoRunAfterSetup === "boolean") {
1621
1635
  advanced.autoRunAfterSetup = patch.autoRunAfterSetup;
1622
1636
  }
@@ -1677,6 +1691,9 @@ function updateAdvancedSettings(patch) {
1677
1691
  function autoRenameBranchEnabled(settings = loadAppSettings()) {
1678
1692
  return settings.advanced.autoRenameBranch !== false;
1679
1693
  }
1694
+ function gitBranchPrefixSetting(settings = loadAppSettings()) {
1695
+ return sanitizeGitBranchPrefix(settings.advanced.branchPrefix);
1696
+ }
1680
1697
  function autoRunAfterSetupEnabled(settings = loadAppSettings()) {
1681
1698
  return Boolean(settings.advanced.autoRunAfterSetup);
1682
1699
  }
@@ -1891,6 +1908,7 @@ export {
1891
1908
  brightsyCloudConnectAgent,
1892
1909
  updateAdvancedSettings,
1893
1910
  autoRenameBranchEnabled,
1911
+ gitBranchPrefixSetting,
1894
1912
  autoRunAfterSetupEnabled,
1895
1913
  caffeinateWhileRunningEnabled,
1896
1914
  caffeinateWhileSlackListenEnabled,
@@ -7,7 +7,7 @@ import {
7
7
  threadFilePath,
8
8
  threadLockPath,
9
9
  threadsDir
10
- } from "./chunk-JTJHOYCU.js";
10
+ } from "./chunk-EQNRWDLN.js";
11
11
 
12
12
  // src/store/thread-store.ts
13
13
  import { randomUUID } from "crypto";
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-D6JWYJ4P.js";
6
6
  import {
7
7
  listThreads
8
- } from "./chunk-GOZ6T3AG.js";
8
+ } from "./chunk-CJFBSQIB.js";
9
9
  import {
10
10
  ensureWorktreeSideboardIgnored
11
11
  } from "./chunk-SYFVUF2C.js";
@@ -22,10 +22,10 @@ import {
22
22
  import {
23
23
  getGithubGitAuthMode,
24
24
  getGithubPat
25
- } from "./chunk-OKZFTOM2.js";
25
+ } from "./chunk-AH6WIBLY.js";
26
26
  import {
27
27
  worktreesRoot
28
- } from "./chunk-JTJHOYCU.js";
28
+ } from "./chunk-EQNRWDLN.js";
29
29
 
30
30
  // src/git/worktree.ts
31
31
  import { randomBytes } from "crypto";
@@ -6,7 +6,7 @@ import {
6
6
  getAbleTimeHost,
7
7
  isAbleTimeConnected,
8
8
  saveAbleTimeConnection
9
- } from "./chunk-J7LQVLFQ.js";
9
+ } from "./chunk-S5GLSRLP.js";
10
10
 
11
11
  // src/integrations/abletime-mcp.ts
12
12
  var DEFAULT_ABLETIME_HOST = "https://track.abletime.com";
@@ -187,9 +187,12 @@ function parseSettingsFile(path, source) {
187
187
  const prompts = {
188
188
  renameBranch: typeof promptsRaw.rename_branch === "string" ? promptsRaw.rename_branch : void 0,
189
189
  createPr: typeof promptsRaw.create_pr === "string" ? promptsRaw.create_pr : void 0,
190
- general: typeof promptsRaw.general === "string" ? promptsRaw.general : void 0
190
+ general: typeof promptsRaw.general === "string" ? promptsRaw.general : void 0,
191
+ resolveMergeConflicts: typeof promptsRaw.resolve_merge_conflicts === "string" ? promptsRaw.resolve_merge_conflicts : void 0
191
192
  };
192
- const hasPrompts = Boolean(prompts.renameBranch || prompts.createPr || prompts.general);
193
+ const hasPrompts = Boolean(
194
+ prompts.renameBranch || prompts.createPr || prompts.general || prompts.resolveMergeConflicts
195
+ );
193
196
  return {
194
197
  source,
195
198
  setup,
@@ -215,9 +218,12 @@ function mergeSettings(base, overlay) {
215
218
  const prompts = {
216
219
  renameBranch: overlay.prompts?.renameBranch ?? base.prompts?.renameBranch,
217
220
  createPr: overlay.prompts?.createPr ?? base.prompts?.createPr,
218
- general: overlay.prompts?.general ?? base.prompts?.general
221
+ general: overlay.prompts?.general ?? base.prompts?.general,
222
+ resolveMergeConflicts: overlay.prompts?.resolveMergeConflicts ?? base.prompts?.resolveMergeConflicts
219
223
  };
220
- const hasPrompts = Boolean(prompts.renameBranch || prompts.createPr || prompts.general);
224
+ const hasPrompts = Boolean(
225
+ prompts.renameBranch || prompts.createPr || prompts.general || prompts.resolveMergeConflicts
226
+ );
221
227
  return {
222
228
  source: overlay.source,
223
229
  setup: overlay.setup ?? base.setup,
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env node
2
+
3
+
4
+ // src/git/branch-prefix.ts
5
+ function sanitizeGitBranchPrefix(raw) {
6
+ const first = (raw ?? "").trim().replace(/^\/+|\/+$/g, "").split("/")[0] ?? "";
7
+ const slug = first.toLowerCase().replace(/[^a-z0-9._-]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 39);
8
+ return slug || null;
9
+ }
10
+ function resolveGitBranchPrefix(opts) {
11
+ return sanitizeGitBranchPrefix(opts.setting);
12
+ }
13
+ function examplePrefixedBranch(prefix, ticket) {
14
+ const head = sanitizeGitBranchPrefix(prefix);
15
+ const slug = ticket?.trim() ? `${ticket.trim()}-eng-fix-thing` : "bb-1234-eng-fix-thing";
16
+ return head ? `${head}/${slug}` : slug;
17
+ }
18
+
19
+ export {
20
+ sanitizeGitBranchPrefix,
21
+ resolveGitBranchPrefix,
22
+ examplePrefixedBranch
23
+ };
@@ -5,7 +5,7 @@ import {
5
5
  resolveRepoRoot,
6
6
  takenSlugsFromThread,
7
7
  teamSlugFromName
8
- } from "./chunk-WXKXSZN4.js";
8
+ } from "./chunk-S4QCBBXS.js";
9
9
  import {
10
10
  ATTACHMENTS_DIR,
11
11
  attachmentsGitignoreBody
@@ -22,18 +22,18 @@ import {
22
22
  resolveThreadDefaults,
23
23
  resolveViewerProfile,
24
24
  resolveViewerProfileForRepo
25
- } from "./chunk-J7LQVLFQ.js";
25
+ } from "./chunk-S5GLSRLP.js";
26
26
  import {
27
27
  createEmptyThread,
28
28
  listThreads,
29
29
  updateThread,
30
30
  writeThread
31
- } from "./chunk-TCQAFTSV.js";
31
+ } from "./chunk-KJBYIIJU.js";
32
32
  import {
33
33
  appDataDir,
34
34
  globalAgentCwd,
35
35
  sideboardReposDir
36
- } from "./chunk-EFVFB2AH.js";
36
+ } from "./chunk-WFUDY6PC.js";
37
37
 
38
38
  // src/store/workspaces.ts
39
39
  import { existsSync as existsSync2, mkdirSync as mkdirSync3, readFileSync as readFileSync3, writeFileSync as writeFileSync3 } from "fs";
@@ -406,7 +406,7 @@ var COORDINATOR_TOOL_PLAYBOOK = [
406
406
  "- get_diff \u2014 compact diff summary",
407
407
  "- get_pr_checks \u2014 snapshot of a worktree thread's PR checks (null = no PR). Use this to inspect status. If the user gave a goal, the worktree agent watches with `gh pr checks --watch` \u2014 do not poll for the human.",
408
408
  '- request_review \u2014 open a Review chat tab on a worktree thread (attaches .claude/skills/review/SKILL.md when present, else .context/review.md copied from .sideboard/review.md / stock; sends "Review changes in this workspace."); then wait_for_turn (loop while stillRunning) / get_turn_result on the returned id. The review stays in that chat so they can read it and type next steps \u2014 do not tell the child to comment or update the PR or ticket.',
409
- "- ask_git \u2014 commit & push, open a draft PR, mark ready for review, resolve conflicts, or merge. When the worktree is clean, Sideboard pushes / opens the PR itself. When dirty, it steers the worktree agent \u2014 then wait_for_turn (loop while stillRunning). Prefer this over paraphrasing. If ask_git / get_thread lastError says the GraphQL/PR body is too long, the branch is already pushed \u2014 send_to_thread so the worktree agent runs `gh pr create --body-file` with a short description. Do not invent SSH or auth failures from that error. If the user gave a goal (Greptile 5/5, CI green), send_to_thread that goal so the worktree agent enters the watch-fix-push loop \u2014 do not tell the human to poll.",
409
+ "- ask_git \u2014 commit & push, open a draft PR, mark ready for review, resolve conflicts, or merge \u2014 same prompts as the desktop git buttons (Resolve, Create PR, \u2026). Always steers the worktree agent; then wait_for_turn (loop while stillRunning). Prefer this over paraphrasing. If the user gave a goal (Greptile 5/5, CI green), send_to_thread that goal so the worktree agent enters the watch-fix-push loop \u2014 do not tell the human to poll.",
410
410
  '- Merge (`ask_git` action=merge / send_to_thread "Merge PR.") only when the user explicitly asked to merge that PR. Do not merge because the work looks done, CI is green, or a typical flow includes it.',
411
411
  '- Or send_to_thread with those exact phrases: "Commit and push.", "Commit, push, and open a draft PR.", "Ready for review.", "Merge the remote branch (main) into your branch and resolve conflicts. Then, commit and push your changes.", "Merge PR." (draft PRs: `gh pr create --draft -R <origin-owner/name>` using the workspace `github:` slug \u2014 never upstream). Never run git/gh from this orchestration cwd, and never merge the PR yourself.',
412
412
  "Process guides:",
@@ -5,7 +5,7 @@ import {
5
5
  threadFilePath,
6
6
  threadLockPath,
7
7
  threadsDir
8
- } from "./chunk-EFVFB2AH.js";
8
+ } from "./chunk-WFUDY6PC.js";
9
9
 
10
10
  // src/store/thread-store.ts
11
11
  import { randomUUID } from "crypto";
@@ -8,7 +8,7 @@ import {
8
8
  getAbleTimeHost,
9
9
  isAbleTimeConnected,
10
10
  saveAbleTimeConnection
11
- } from "./chunk-OKZFTOM2.js";
11
+ } from "./chunk-AH6WIBLY.js";
12
12
 
13
13
  // src/integrations/abletime-mcp.ts
14
14
  var DEFAULT_ABLETIME_HOST = "https://track.abletime.com";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-4TR3HZFT.js";
5
5
  import {
6
6
  appDataDir
7
- } from "./chunk-EFVFB2AH.js";
7
+ } from "./chunk-WFUDY6PC.js";
8
8
  import {
9
9
  run
10
10
  } from "./chunk-UFHNSFAS.js";