@sideboard-ai/core 0.1.84 → 0.1.86

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 (37) hide show
  1. package/dist/agents/cursor-runner.cjs +54 -16
  2. package/dist/agents/cursor-runner.js +54 -16
  3. package/dist/{agents-JFXM66QA.js → agents-HJ3Y2JN5.js} +6 -6
  4. package/dist/{agents-OPTHS4IX.js → agents-NDHD3VOL.js} +10 -10
  5. package/dist/{chunk-AE5VBOFE.js → chunk-3KETJKYA.js} +9 -2
  6. package/dist/{chunk-UN3LVQB2.js → chunk-45U4RQ74.js} +2 -2
  7. package/dist/{chunk-R753UFSX.js → chunk-4Y745GLN.js} +14 -4
  8. package/dist/{chunk-VROPG6QF.js → chunk-6K5VAPVR.js} +3 -3
  9. package/dist/{chunk-CKBIQ54F.js → chunk-6ZGTM2E7.js} +88 -20
  10. package/dist/{chunk-WJ5TINR6.js → chunk-EWKHP6DD.js} +2 -2
  11. package/dist/{chunk-NW7MEJHO.js → chunk-HA2QTIWN.js} +1 -1
  12. package/dist/{chunk-BTL7EMGT.js → chunk-HHTHF5BQ.js} +4 -4
  13. package/dist/{chunk-ODZ2ZOA4.js → chunk-IGEL6M4G.js} +2 -2
  14. package/dist/{chunk-BBQ6HXKS.js → chunk-KE6QLNTJ.js} +19 -9
  15. package/dist/{chunk-D4DPQ552.js → chunk-LGXBYZZA.js} +9 -2
  16. package/dist/{chunk-XW47PL6A.js → chunk-OBHZKT2T.js} +86 -16
  17. package/dist/{chunk-OIEFHOP7.js → chunk-U4RZ3IQI.js} +2 -2
  18. package/dist/{chunk-JPHG2KCC.js → chunk-ZN4NDAHV.js} +1 -1
  19. package/dist/{connected-teams-ZRS53OAT.js → connected-teams-BNBM7OIC.js} +2 -2
  20. package/dist/{connected-teams-35EIRJCP.js → connected-teams-LSQ5TAZP.js} +2 -2
  21. package/dist/{coordinator-prompt-RCTIIZ6C.js → coordinator-prompt-HOMHBR2L.js} +3 -3
  22. package/dist/{coordinator-prompt-DOIOSLUN.js → coordinator-prompt-L65MIGCV.js} +3 -3
  23. package/dist/{global-workspace-33BIG7KK.js → global-workspace-MXOLTUAR.js} +4 -4
  24. package/dist/{global-workspace-73OAKD3C.js → global-workspace-VGKPYFE2.js} +4 -4
  25. package/dist/index.cjs +181 -82
  26. package/dist/index.d.cts +32 -6
  27. package/dist/index.d.ts +32 -6
  28. package/dist/index.js +36 -22
  29. package/dist/mcp/run-stdio.cjs +361 -270
  30. package/dist/mcp/run-stdio.js +34 -27
  31. package/dist/{run-V2WZUMJA.js → run-CFKZPY7F.js} +1 -1
  32. package/dist/{run-A4RHY7HH.js → run-XKTAJRWF.js} +1 -1
  33. package/dist/{workspaces-SRITISKA.js → workspaces-2GZ2VNNU.js} +5 -5
  34. package/dist/{workspaces-WDLY34MX.js → workspaces-VWQ5YSND.js} +5 -5
  35. package/dist/{worktree-TUAO74SI.js → worktree-RFCCG23P.js} +2 -2
  36. package/dist/{worktree-SGZVAWOQ.js → worktree-WZJ3CFEN.js} +2 -2
  37. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -2915,80 +2915,6 @@ var init_gh_errors = __esm({
2915
2915
  }
2916
2916
  });
2917
2917
 
2918
- // src/git/git-auth-mode.ts
2919
- function appendIndexedGitConfig(existing, entries) {
2920
- const start = Number.parseInt(String(existing?.GIT_CONFIG_COUNT ?? "0"), 10);
2921
- const count = Number.isFinite(start) && start > 0 ? start : 0;
2922
- const out = {};
2923
- entries.forEach((entry, i) => {
2924
- const n = count + i;
2925
- out[`GIT_CONFIG_KEY_${n}`] = entry.key;
2926
- out[`GIT_CONFIG_VALUE_${n}`] = entry.value;
2927
- });
2928
- out.GIT_CONFIG_COUNT = String(count + entries.length);
2929
- return out;
2930
- }
2931
- function githubAgentGitEnv(existing) {
2932
- return appendIndexedGitConfig(existing, HTTPS_REWRITE);
2933
- }
2934
- function applyGithubGitAuthEnv(existing, opts) {
2935
- const out = {};
2936
- if (opts.mode === "gh" || opts.mode === "token") {
2937
- Object.assign(out, githubAgentGitEnv(existing));
2938
- }
2939
- if (opts.mode === "token") {
2940
- const token = opts.token?.trim();
2941
- if (token && !existing?.GH_TOKEN?.trim()) {
2942
- out.GH_TOKEN = token;
2943
- }
2944
- }
2945
- return out;
2946
- }
2947
- function formatGitAuthModeDirective(mode) {
2948
- switch (mode) {
2949
- case "gh":
2950
- return [
2951
- "Git authentication (Account \u2192 GitHub mode: gh CLI):",
2952
- "- This process rewrites `git@github.com:` and `ssh://git@github.com/` to HTTPS.",
2953
- "- `gh` supplies credentials (`gh auth git-credential`). Do not switch remotes to SSH.",
2954
- "- Push with `git push -u origin HEAD`. Create/update PRs with `gh` as below."
2955
- ].join("\n");
2956
- case "ssh":
2957
- return [
2958
- "Git authentication (Account \u2192 GitHub mode: SSH):",
2959
- "- Keep SSH remotes (`git@github.com:\u2026`). Do not rewrite them to HTTPS.",
2960
- "- Use this Mac\u2019s SSH agent / keys. If push fails with `Permission denied (publickey)`, tell the user to start ssh-agent or switch Account \u2192 GitHub to Auto / gh CLI \u2014 do not rewrite remotes yourself.",
2961
- "- Push with `git push -u origin HEAD`. Create/update PRs with `gh` as below (API still uses `gh`)."
2962
- ].join("\n");
2963
- case "token":
2964
- return [
2965
- "Git authentication (Account \u2192 GitHub mode: personal access token):",
2966
- "- This process rewrites GitHub SSH remotes to HTTPS.",
2967
- "- `GH_TOKEN` is set in the environment. Use HTTPS git and `gh`; do not paste the token into commands or chat.",
2968
- "- Push with `git push -u origin HEAD`. Create/update PRs with `gh` as below."
2969
- ].join("\n");
2970
- case "auto":
2971
- default:
2972
- return [
2973
- "Git authentication (Account \u2192 GitHub mode: auto):",
2974
- "- Prefer the existing remote URL (SSH or HTTPS). Do not rewrite remotes unless a push/fetch fails.",
2975
- '- If `git push` fails with `Permission denied (publickey)`, this shell has no ssh-agent. Retry over HTTPS (do not stop): `git -c url.https://github.com/.insteadOf=git@github.com: -c http.extraHeader="AUTHORIZATION: bearer $(gh auth token)" push -u origin HEAD`.',
2976
- "- Then create/update the PR with `gh` as below."
2977
- ].join("\n");
2978
- }
2979
- }
2980
- var HTTPS_REWRITE;
2981
- var init_git_auth_mode = __esm({
2982
- "src/git/git-auth-mode.ts"() {
2983
- "use strict";
2984
- HTTPS_REWRITE = [
2985
- { key: "url.https://github.com/.insteadOf", value: "git@github.com:" },
2986
- { key: "url.https://github.com/.insteadOf", value: "ssh://git@github.com/" },
2987
- { key: "credential.https://github.com.helper", value: "!gh auth git-credential" }
2988
- ];
2989
- }
2990
- });
2991
-
2992
2918
  // src/agents/path.ts
2993
2919
  function prependPathDir(env, dir) {
2994
2920
  if (!dir || !(0, import_node_fs8.existsSync)(dir)) return;
@@ -3140,7 +3066,10 @@ async function git(args, cwd, opts) {
3140
3066
  env: {
3141
3067
  GIT_TERMINAL_PROMPT: "0",
3142
3068
  GIT_ASKPASS: process.env.GIT_ASKPASS || "echo",
3069
+ SSH_ASKPASS: process.env.SSH_ASKPASS || "echo",
3143
3070
  GIT_SSH_COMMAND: process.env.GIT_SSH_COMMAND || "ssh -o BatchMode=yes -o ConnectTimeout=15",
3071
+ GCM_INTERACTIVE: "never",
3072
+ GH_PROMPT_DISABLED: "1",
3144
3073
  ...opts?.env
3145
3074
  }
3146
3075
  });
@@ -3149,11 +3078,15 @@ async function gh(args, cwd, opts) {
3149
3078
  return run("gh", args, {
3150
3079
  cwd,
3151
3080
  reject: opts?.reject,
3152
- timeoutMs: opts?.timeoutMs
3081
+ timeoutMs: opts?.timeoutMs,
3082
+ env: {
3083
+ GH_PROMPT_DISABLED: "1",
3084
+ GIT_TERMINAL_PROMPT: "0"
3085
+ }
3153
3086
  });
3154
3087
  }
3155
3088
  async function resolveGhAuthToken(cwd) {
3156
- const result = await gh(["auth", "token"], cwd, { reject: false });
3089
+ const result = await gh(["auth", "token"], cwd, { reject: false, timeoutMs: 8e3 });
3157
3090
  if (result.exitCode !== 0) return null;
3158
3091
  const token = result.stdout.trim();
3159
3092
  return token || null;
@@ -3167,6 +3100,148 @@ var init_run = __esm({
3167
3100
  }
3168
3101
  });
3169
3102
 
3103
+ // src/git/git-auth-mode.ts
3104
+ function nonInteractiveGitProcessEnv() {
3105
+ return {
3106
+ GIT_TERMINAL_PROMPT: "0",
3107
+ GIT_ASKPASS: process.env.GIT_ASKPASS?.trim() || "echo",
3108
+ SSH_ASKPASS: process.env.SSH_ASKPASS?.trim() || "echo",
3109
+ GIT_SSH_COMMAND: process.env.GIT_SSH_COMMAND?.trim() || "ssh -o BatchMode=yes -o ConnectTimeout=15",
3110
+ GCM_INTERACTIVE: "never",
3111
+ GH_PROMPT_DISABLED: "1"
3112
+ };
3113
+ }
3114
+ function appendIndexedGitConfig(existing, entries) {
3115
+ const start = Number.parseInt(String(existing?.GIT_CONFIG_COUNT ?? "0"), 10);
3116
+ const count = Number.isFinite(start) && start > 0 ? start : 0;
3117
+ const out = {};
3118
+ entries.forEach((entry, i) => {
3119
+ const n = count + i;
3120
+ out[`GIT_CONFIG_KEY_${n}`] = entry.key;
3121
+ out[`GIT_CONFIG_VALUE_${n}`] = entry.value;
3122
+ });
3123
+ out.GIT_CONFIG_COUNT = String(count + entries.length);
3124
+ return out;
3125
+ }
3126
+ function githubAgentGitEnv(existing) {
3127
+ return appendIndexedGitConfig(existing, HTTPS_REWRITE);
3128
+ }
3129
+ function githubHttpsBearerEnv(existing, token) {
3130
+ const rewrite = githubAgentGitEnv(existing);
3131
+ const header = appendIndexedGitConfig(
3132
+ { ...existing, ...rewrite },
3133
+ [
3134
+ {
3135
+ key: "http.https://github.com/.extraHeader",
3136
+ value: `AUTHORIZATION: bearer ${token}`
3137
+ }
3138
+ ]
3139
+ );
3140
+ return { ...rewrite, ...header };
3141
+ }
3142
+ function applyGithubGitAuthEnv(existing, opts) {
3143
+ const out = { ...nonInteractiveGitProcessEnv() };
3144
+ if (opts.mode === "ssh") return out;
3145
+ const existingToken = existing?.GH_TOKEN?.trim() || "";
3146
+ const provided = existingToken ? "" : opts.token?.trim() || "";
3147
+ const token = existingToken || provided;
3148
+ Object.assign(
3149
+ out,
3150
+ token ? githubHttpsBearerEnv(existing, token) : githubAgentGitEnv(existing)
3151
+ );
3152
+ if (provided) out.GH_TOKEN = provided;
3153
+ return out;
3154
+ }
3155
+ async function resolveGithubAgentToken(mode, cwd) {
3156
+ if (mode === "ssh") return null;
3157
+ if (mode === "token") return getGithubPat();
3158
+ try {
3159
+ return await resolveGhAuthToken(cwd);
3160
+ } catch {
3161
+ return null;
3162
+ }
3163
+ }
3164
+ async function resolveAgentGitAuthEnv(existing, opts) {
3165
+ let mode = "auto";
3166
+ if (opts?.mode) {
3167
+ mode = opts.mode;
3168
+ } else {
3169
+ try {
3170
+ mode = getGithubGitAuthMode();
3171
+ } catch {
3172
+ mode = "auto";
3173
+ }
3174
+ }
3175
+ const cwd = opts?.cwd?.trim() || process.cwd();
3176
+ let token = null;
3177
+ try {
3178
+ token = await resolveGithubAgentToken(mode, cwd);
3179
+ } catch {
3180
+ token = null;
3181
+ }
3182
+ return applyGithubGitAuthEnv(existing, { mode, token });
3183
+ }
3184
+ function codexUnattendedGitConfigArgs(sandbox) {
3185
+ const args = [
3186
+ "-c",
3187
+ 'shell_environment_policy.inherit="all"',
3188
+ "-c",
3189
+ "shell_environment_policy.ignore_default_excludes=true"
3190
+ ];
3191
+ if (sandbox === "workspace-write") {
3192
+ args.push("-c", "sandbox_workspace_write.network_access=true");
3193
+ }
3194
+ return args;
3195
+ }
3196
+ function formatGitAuthModeDirective(mode) {
3197
+ switch (mode) {
3198
+ case "gh":
3199
+ return [
3200
+ "Git authentication (Account \u2192 GitHub mode: gh CLI):",
3201
+ "- This process rewrites `git@github.com:` and `ssh://git@github.com/` to HTTPS.",
3202
+ "- `GH_TOKEN` is injected from `gh auth token` (no macOS Keychain prompts). Do not switch remotes to SSH.",
3203
+ "- Push with `git push -u origin HEAD`. Create/update PRs with `gh` as below."
3204
+ ].join("\n");
3205
+ case "ssh":
3206
+ return [
3207
+ "Git authentication (Account \u2192 GitHub mode: SSH):",
3208
+ "- Keep SSH remotes (`git@github.com:\u2026`). Do not rewrite them to HTTPS.",
3209
+ "- SSH is batch-mode: it will not prompt for a Keychain password. If push fails with `Permission denied (publickey)`, tell the user to unlock ssh-agent or switch Account \u2192 GitHub to Auto / gh CLI \u2014 do not rewrite remotes yourself.",
3210
+ "- Push with `git push -u origin HEAD`. Create/update PRs with `gh` as below (API still uses `gh`)."
3211
+ ].join("\n");
3212
+ case "token":
3213
+ return [
3214
+ "Git authentication (Account \u2192 GitHub mode: personal access token):",
3215
+ "- This process rewrites GitHub SSH remotes to HTTPS.",
3216
+ "- `GH_TOKEN` is set in the environment. Use HTTPS git and `gh`; do not paste the token into commands or chat.",
3217
+ "- Push with `git push -u origin HEAD`. Create/update PRs with `gh` as below."
3218
+ ].join("\n");
3219
+ case "auto":
3220
+ default:
3221
+ return [
3222
+ "Git authentication (Account \u2192 GitHub mode: auto):",
3223
+ "- This process rewrites GitHub SSH remotes to HTTPS and authenticates with `GH_TOKEN` from `gh` so git/ssh never prompt the macOS Keychain (required for unattended orchestrator turns).",
3224
+ "- Do not switch remotes to SSH. Push with `git push -u origin HEAD`.",
3225
+ "- If HTTPS auth fails, tell the user to run `gh auth login` on this Mac or set Account \u2192 GitHub to a PAT \u2014 do not wait for a Keychain dialog."
3226
+ ].join("\n");
3227
+ }
3228
+ }
3229
+ var HTTPS_REWRITE;
3230
+ var init_git_auth_mode = __esm({
3231
+ "src/git/git-auth-mode.ts"() {
3232
+ "use strict";
3233
+ init_app_settings();
3234
+ init_run();
3235
+ HTTPS_REWRITE = [
3236
+ { key: "url.https://github.com/.insteadOf", value: "git@github.com:" },
3237
+ { key: "url.https://github.com/.insteadOf", value: "ssh://git@github.com/" },
3238
+ // Empty helper disables ~/.gitconfig osxkeychain so GUI agents cannot pop
3239
+ // "git-credential-osxkeychain wants to use the keychain".
3240
+ { key: "credential.helper", value: "" }
3241
+ ];
3242
+ }
3243
+ });
3244
+
3170
3245
  // src/git/pr-gates.ts
3171
3246
  function prIsInMergeQueue(gate) {
3172
3247
  if (gate.isInMergeQueue) return true;
@@ -3652,7 +3727,7 @@ async function originGhRepoEnv(cwd, opts) {
3652
3727
  await ensureGhPreferOrigin(cwd);
3653
3728
  const slug = await resolveGithubRepoSlug(cwd);
3654
3729
  const mode = opts?.mode ?? getGithubGitAuthMode();
3655
- const token = mode === "token" ? getGithubPat() : null;
3730
+ const token = mode === "token" ? getGithubPat() : mode === "ssh" ? null : await resolveGhAuthToken(cwd);
3656
3731
  return {
3657
3732
  ...applyGithubGitAuthEnv(opts?.env, { mode, token }),
3658
3733
  ...slug ? { GH_REPO: slug } : {}
@@ -6418,6 +6493,10 @@ async function buildInjectedMcpServers(opts) {
6418
6493
  if (orchId) {
6419
6494
  sideboard.env.SIDEBOARD_ORCHESTRATOR_THREAD_ID = orchId;
6420
6495
  }
6496
+ try {
6497
+ Object.assign(sideboard.env, await resolveAgentGitAuthEnv(sideboard.env));
6498
+ } catch {
6499
+ }
6421
6500
  servers.push(sideboard);
6422
6501
  }
6423
6502
  if (opts.includeBrightsy && isBrightsyConnected()) {
@@ -6523,6 +6602,7 @@ var init_injected_mcp = __esm({
6523
6602
  init_paths();
6524
6603
  init_node_launch();
6525
6604
  init_nested_electron_env();
6605
+ init_git_auth_mode();
6526
6606
  import_meta = {};
6527
6607
  SIDEBOARD_MCP_ALLOWED_TOOLS = [
6528
6608
  "mcp__sideboard",
@@ -7066,6 +7146,7 @@ var init_codex = __esm({
7066
7146
  init_global_workspace();
7067
7147
  init_error_detail();
7068
7148
  init_usage();
7149
+ init_git_auth_mode();
7069
7150
  init_injected_mcp();
7070
7151
  init_turn_input();
7071
7152
  init_types();
@@ -7157,6 +7238,8 @@ var init_codex = __esm({
7157
7238
  // `codex exec` rejects `--ask-for-approval` (global-only on newer CLIs).
7158
7239
  "-c",
7159
7240
  'approval_policy="never"',
7241
+ // Seatbelt cannot use the login Keychain; default policy also strips GH_TOKEN.
7242
+ ...codexUnattendedGitConfigArgs(mode.codexSandbox),
7160
7243
  ...model ? ["--model", model] : [],
7161
7244
  ...mcpOverrides
7162
7245
  ];
@@ -8770,6 +8853,7 @@ __export(index_exports, {
8770
8853
  cleanupOrphanWorktrees: () => cleanupOrphanWorktrees,
8771
8854
  cloneRepoIntoSideboard: () => cloneRepoIntoSideboard,
8772
8855
  codexAdapter: () => codexAdapter,
8856
+ codexUnattendedGitConfigArgs: () => codexUnattendedGitConfigArgs,
8773
8857
  coerceOrchestratorAgent: () => coerceOrchestratorAgent,
8774
8858
  collectTakenTeamSlugs: () => collectTakenTeamSlugs,
8775
8859
  commentLinearIssue: () => commentLinearIssue,
@@ -8990,6 +9074,7 @@ __export(index_exports, {
8990
9074
  mergeUsage: () => mergeUsage,
8991
9075
  nextPastedTextName: () => nextPastedTextName,
8992
9076
  nextThinkingEffort: () => nextThinkingEffort,
9077
+ nonInteractiveGitProcessEnv: () => nonInteractiveGitProcessEnv,
8993
9078
  normalizeParseResult: () => normalizeParseResult,
8994
9079
  normalizeThinkingEffort: () => normalizeThinkingEffort,
8995
9080
  normalizeThread: () => normalizeThread,
@@ -9045,6 +9130,7 @@ __export(index_exports, {
9045
9130
  requireAgent: () => requireAgent,
9046
9131
  resetGhStackDetectCache: () => resetGhStackDetectCache,
9047
9132
  resolveAgentExecutable: () => resolveAgentExecutable,
9133
+ resolveAgentGitAuthEnv: () => resolveAgentGitAuthEnv,
9048
9134
  resolveClaudeExecutable: () => resolveClaudeExecutable,
9049
9135
  resolveCommandBinarySync: () => resolveCommandBinarySync,
9050
9136
  resolveConductorCursorAgentId: () => resolveConductorCursorAgentId,
@@ -9054,6 +9140,7 @@ __export(index_exports, {
9054
9140
  resolveEffectiveIssueSource: () => resolveEffectiveIssueSource,
9055
9141
  resolveFilesToCopy: () => resolveFilesToCopy,
9056
9142
  resolveGhAuthToken: () => resolveGhAuthToken,
9143
+ resolveGithubAgentToken: () => resolveGithubAgentToken,
9057
9144
  resolveGithubRepoSlug: () => resolveGithubRepoSlug,
9058
9145
  resolveLinearState: () => resolveLinearState,
9059
9146
  resolveLinearTeam: () => resolveLinearTeam,
@@ -9925,6 +10012,7 @@ init_agents();
9925
10012
  var import_node_readline = require("readline");
9926
10013
  var import_execa2 = require("execa");
9927
10014
  init_worktree();
10015
+ init_git_auth_mode();
9928
10016
  init_app_settings();
9929
10017
  init_global_workspace();
9930
10018
  init_brightsy();
@@ -10187,14 +10275,16 @@ async function spawnAgentTurn(thread, input, onEvent) {
10187
10275
  );
10188
10276
  }
10189
10277
  const env = childEnvWithAppSettings(cmd.env);
10190
- if (!isOrchestratorThread(thread)) {
10191
- try {
10278
+ try {
10279
+ if (isOrchestratorThread(thread)) {
10280
+ Object.assign(env, await resolveAgentGitAuthEnv(env));
10281
+ } else {
10192
10282
  const originEnv = await originGhRepoEnv(thread.worktreePath, { env });
10193
10283
  Object.assign(env, originEnv);
10194
- } catch (err) {
10195
- const detail = err instanceof Error ? err.message : String(err);
10196
- console.warn(`[sideboard] originGhRepoEnv failed (${thread.worktreePath}): ${detail}`);
10197
10284
  }
10285
+ } catch (err) {
10286
+ const detail = err instanceof Error ? err.message : String(err);
10287
+ console.warn(`[sideboard] git auth env failed (${thread.worktreePath}): ${detail}`);
10198
10288
  }
10199
10289
  const child = (0, import_execa2.execa)(cmd.file, cmd.args, {
10200
10290
  cwd: cmd.cwd,
@@ -10547,6 +10637,7 @@ var import_execa3 = require("execa");
10547
10637
  var import_node_readline2 = require("readline");
10548
10638
  init_settings();
10549
10639
  init_nested_electron_env();
10640
+ init_git_auth_mode();
10550
10641
  init_nested_electron_env();
10551
10642
  var PORT_RANGE_SIZE = 10;
10552
10643
  function matchSimpleGlob(pattern, name) {
@@ -10720,6 +10811,10 @@ async function spawnWorkspaceScript(command, opts) {
10720
10811
  },
10721
10812
  loginEnv
10722
10813
  );
10814
+ try {
10815
+ Object.assign(env, await resolveAgentGitAuthEnv(env, { cwd: opts.worktreePath }));
10816
+ } catch {
10817
+ }
10723
10818
  const shell = process.platform === "darwin" ? "zsh" : "bash";
10724
10819
  const child = (0, import_execa3.execa)(shell, ["-lc", command], {
10725
10820
  cwd: opts.worktreePath,
@@ -20234,6 +20329,7 @@ async function startSlackRelayServer(opts) {
20234
20329
  cleanupOrphanWorktrees,
20235
20330
  cloneRepoIntoSideboard,
20236
20331
  codexAdapter,
20332
+ codexUnattendedGitConfigArgs,
20237
20333
  coerceOrchestratorAgent,
20238
20334
  collectTakenTeamSlugs,
20239
20335
  commentLinearIssue,
@@ -20454,6 +20550,7 @@ async function startSlackRelayServer(opts) {
20454
20550
  mergeUsage,
20455
20551
  nextPastedTextName,
20456
20552
  nextThinkingEffort,
20553
+ nonInteractiveGitProcessEnv,
20457
20554
  normalizeParseResult,
20458
20555
  normalizeThinkingEffort,
20459
20556
  normalizeThread,
@@ -20509,6 +20606,7 @@ async function startSlackRelayServer(opts) {
20509
20606
  requireAgent,
20510
20607
  resetGhStackDetectCache,
20511
20608
  resolveAgentExecutable,
20609
+ resolveAgentGitAuthEnv,
20512
20610
  resolveClaudeExecutable,
20513
20611
  resolveCommandBinarySync,
20514
20612
  resolveConductorCursorAgentId,
@@ -20518,6 +20616,7 @@ async function startSlackRelayServer(opts) {
20518
20616
  resolveEffectiveIssueSource,
20519
20617
  resolveFilesToCopy,
20520
20618
  resolveGhAuthToken,
20619
+ resolveGithubAgentToken,
20521
20620
  resolveGithubRepoSlug,
20522
20621
  resolveLinearState,
20523
20622
  resolveLinearTeam,
package/dist/index.d.cts CHANGED
@@ -638,9 +638,9 @@ type IssueSource = 'linear' | 'github';
638
638
  * How Sideboard and worktree agents authenticate GitHub git operations.
639
639
  * A declared mode so the app and injected prompts agree. Sideboard never
640
640
  * uses a third-party GitHub App (including Conductor.build) for git auth.
641
- * - `auto` (default): keep remotes as-is (SSH first); prompt HTTPS/`gh` fallback
642
- * - `gh`: rewrite SSH remotes to HTTPS; `gh auth git-credential`
643
- * - `ssh`: keep `git@` remotes; use this Mac’s SSH agent
641
+ * - `auto` (default): HTTPS in the agent process with `gh`’s token (no Keychain prompts)
642
+ * - `gh`: same HTTPS rewrite; `GH_TOKEN` from `gh auth token`
643
+ * - `ssh`: keep `git@` remotes; batch-mode SSH (no Keychain dialog — fails if agent locked)
644
644
  * - `token`: stored PAT + HTTPS rewrite; `GH_TOKEN` in the agent env
645
645
  */
646
646
  type GithubGitAuthMode = 'auto' | 'gh' | 'ssh' | 'token';
@@ -1145,6 +1145,11 @@ declare function formatMergePrError(raw: string): string;
1145
1145
  declare function formatIpcInvokeError(err: unknown): string;
1146
1146
 
1147
1147
  type EnvLike = NodeJS.ProcessEnv | Record<string, string | undefined>;
1148
+ /**
1149
+ * Fail closed instead of a macOS Keychain / SSH passphrase dialog.
1150
+ * Orchestrator parents (desktop Global, MCP, Slack) cannot click those prompts.
1151
+ */
1152
+ declare function nonInteractiveGitProcessEnv(): Record<string, string>;
1148
1153
  /**
1149
1154
  * Append `GIT_CONFIG_KEY_n` / `VALUE_n` entries without clobbering inherited
1150
1155
  * command-scoped git config (enterprise insteadOf, custom certs, …).
@@ -1154,18 +1159,39 @@ declare function appendIndexedGitConfig(existing: EnvLike | undefined, entries:
1154
1159
  value: string;
1155
1160
  }>): Record<string, string>;
1156
1161
  /**
1157
- * Rewrite GitHub SSH remotes to HTTPS and let `gh` supply credentials.
1158
- * GUI / agent shells often have no ssh-agent; `gh` keyring still works.
1162
+ * Rewrite GitHub SSH remotes to HTTPS for this process only (does not edit
1163
+ * the stored remote). Credential helper is cleared so osxkeychain cannot prompt.
1159
1164
  */
1160
1165
  declare function githubAgentGitEnv(existing?: EnvLike): Record<string, string>;
1161
1166
  /**
1162
1167
  * Extra env for a worktree agent given Account → GitHub git-auth mode.
1163
1168
  * Does not set `GH_REPO` (caller adds that after resolving origin).
1169
+ *
1170
+ * `auto` and `gh` rewrite to HTTPS in-process and inject `GH_TOKEN` when
1171
+ * provided so unattended agents never talk to the login keychain.
1164
1172
  */
1165
1173
  declare function applyGithubGitAuthEnv(existing: EnvLike | undefined, opts: {
1166
1174
  mode: GithubGitAuthMode;
1167
1175
  token?: string | null;
1168
1176
  }): Record<string, string>;
1177
+ /** PAT or `gh auth token`, resolved in the Sideboard parent (not the agent). */
1178
+ declare function resolveGithubAgentToken(mode: GithubGitAuthMode, cwd: string): Promise<string | null>;
1179
+ /**
1180
+ * Non-interactive GitHub env for agent / MCP children (HTTPS + token when
1181
+ * possible). Safe to call without a git checkout (`cwd` only needed for `gh`).
1182
+ * Always returns at least {@link nonInteractiveGitProcessEnv} — settings/vault
1183
+ * failures must not skip Keychain suppression.
1184
+ */
1185
+ declare function resolveAgentGitAuthEnv(existing?: EnvLike, opts?: {
1186
+ cwd?: string;
1187
+ mode?: GithubGitAuthMode;
1188
+ }): Promise<Record<string, string>>;
1189
+ /**
1190
+ * Codex `exec -c` so sandboxed shells keep Sideboard’s git env.
1191
+ * Default `shell_environment_policy` drops `*TOKEN*` / `*KEY*` and
1192
+ * `workspace-write` has no network — both force `gh`/git onto Keychain or a hang.
1193
+ */
1194
+ declare function codexUnattendedGitConfigArgs(sandbox: 'read-only' | 'workspace-write' | 'danger-full-access' | string): string[];
1169
1195
  /** Injected prompt block so agents use the same git path as Sideboard. */
1170
1196
  declare function formatGitAuthModeDirective(mode: GithubGitAuthMode): string;
1171
1197
 
@@ -4332,4 +4358,4 @@ interface SlackRelayClientOptions {
4332
4358
  */
4333
4359
  declare function runSlackRelayClient(opts: SlackRelayClientOptions): Promise<void>;
4334
4360
 
4335
- export { AGENT_GIT_ACTIONS, ATTACHMENTS_DIR, type ActiveRun, type AddStackLayerInput, type AdoptInput, type AdvancedAppSettings, type AgentAdapter, type AgentEvent, type AgentGitAction, type AgentInstructionFile, type AgentKind, type AgentModelCatalog, type AgentModelInfo, type AgentSetupActionResult, type AgentSetupInfo, type AgentSetupKind, type AgentStatus, type AgentTurnInput, type AnthropicCacheControl, type AppSettings, type ApplyIntoMainResult, type AttachCommand, type Autonomy, BAKED_SLACK_RELAY_URL, BRIGHTSY_MCP_ALLOWED_TOOLS, type BranchInfo, type BrightsyAccount, type BrightsyChatTarget, type BrightsyChatTargets, type BrightsyCloudConnectAgent, type BrightsyHarnessSettings, type BrightsySession, BrightsySideboardApi, type BrightsyTeamTargets, CLAUDE_MODEL_CATALOG, CLOUD_COORDINATOR_BUSY_REPLY, CLOUD_COORDINATOR_STOPPED_REPLY, CLOUD_COORDINATOR_TIMEOUT_REPLY, CLOUD_ORCHESTRATOR_GOAL, CONTEXT_COMPACT_CHARS, CONTEXT_KEEP_RECENT_CHARS, CONTEXT_KEEP_RECENT_MESSAGES, CONTEXT_MIN_MESSAGES, COORDINATOR_TOOL_PLAYBOOK, type CaffeinateHoldState, type ClaudeHarnessSettings, type CleanupOrphansResult, type CliAgentKind, type CliExecutableSettings, type CloudConnectAgent, type CloudConnectOptions, type CloudConnectStatus, type CompactResult, type CompactThresholds, type ComposerFileBuffer, type ConductorSettings, type ConductorWorkspace, type ConnectedBrightsyTeamInfo, type CreateChatTabInput, type CreateGlobalChatOpts, type CreateStackInput, type CreateThreadInput, type CreateWorktreeResult, type CursorModelInfo, type CursorSdkStreamMessage, type CursorTurnRequest, type CursorWorktreesConfig, type DefaultsAppSettings, type DevServerHandle, type DiffCommentInput, type DiffCommentLine, type DiffCommit, type DiffFile, type DiffResult, type DiffScope, type DiffScopeStat, type ExpandResult, FAMOUS_SOCCER_TEAMS, type ForkChatTabInput, type ForkThreadWorktreeInput, type FormatGhLandErrorOptions, GITHUB_GIT_AUTH_MODES, GLOBAL_WORKSPACE_ID, type GetDiffOptions, type GhStackStatus, type GitHubStatus, type GitWorktreeStatus, type GithubGitAuthMode, HARNESS_ENV_KEYS, type HarnessId, type InitStackFromThreadInput, type IntegrationsSettings, type IpcApi, type IssueInfo, type IssueSource, LEGACY_ATTACHMENTS_DIR, LEGACY_PLAN_FILE_REL, LEGACY_REVIEW_REQUEST_PATH, LINEAR_OAUTH_CANCELLED, LINEAR_OAUTH_PORT, LINEAR_OAUTH_REDIRECT, LINEAR_OAUTH_SCOPES, type LandPreview, type LandResult, type LinearComment, type LinearIssue, LinearOAuthCancelledError, type LinearTeam, type LinearTeamsResult, type LinearWorkflowState, type ListIssuesResult, MAX_ANTHROPIC_CACHE_CONTROL_BLOCKS, type McpServerStatus, type MessagePart, ORCHESTRATOR_AGENT_KINDS, type OpenPrStackLayersInput, type OpenStackLayerInput, type OpenStackLayerResult, type OrchestrationQuotaOnLimit, Orchestrator, type OrchestratorAgentKind, type OrchestratorEvent, type OrchestratorRuntime, type OrphanWorktree, PASTE_ATTACH_MIN_CHARS, PASTE_ATTACH_MIN_LINES, PLAN_FILE_NAME, PLAN_FILE_REL, PLAN_MODE_INSTRUCTION, type PendingPlanQuestions, type PlanQuestion, type PlanQuestionAnswer, type PlanQuestionOption, type PlanToolPartLike, type PrActor, type PrCheckRun, type PrCommentInfo, type PrCommitInfo, type PrDetails, type PrInfo, type PrMeta, type PrReviewInfo, type PrStack, type PrStackLayer, type PresentedPlan, type PublicAppSettings, type PublicIntegrationsSettings, REPO_REVIEW_NAME, REPO_REVIEW_PATH, REVIEW_REQUEST_NAME, REVIEW_REQUEST_PATH, REVIEW_REQUEST_PREFILL, REVIEW_REQUEST_TEMPLATE, type RepoSettings, type RepoSetupInfo, type RequestReviewResult, type ResolvedReviewGuidelines, type ReviewGuidelinesSource, type RunMode, type RunScript, SIDEBOARD_FORCE_STOP, SIDEBOARD_MCP_ALLOWED_TOOLS, SIDEBOARD_MCP_PROFILE_ENV, SLACK_LISTEN_BUSY_REPLY, SLACK_LISTEN_STOPPED_REPLY, SLACK_LISTEN_TIMEOUT_REPLY, SLACK_OAUTH_CANCELLED, SLACK_OAUTH_REDIRECT, SLACK_REPLY_FORMATTING, SLACK_SEEN_REACTION, type ScriptHandle, type SideboardMcpProfile, type SkillInfo, type SlackInboundMessage, type SlackListenOptions, type SlackListenStatus, SlackOAuthCancelledError, type SlackOutboundReply, type SlackOutboundWatch, type SlackRelayClientMessage, type SlackRelayClientOptions, SlackRelayHub, type SlackRelayServerHandle, type SlackRelayServerMessage, type SlackRelayServerOptions, type SlackReplyBadge, type SlackWorkspaceInfo, type SourceType, type SpawnTurnHandle, type SummarizeResult, THINKING_EFFORTS, type TeamName, type ThinkingEffort, type Thread, type ThreadAttachment, type ThreadMessage, type ThreadOptionsPatch, type ThreadStatus, type TokenUsage, type ToolPartLike, type TranscriptToolDetail, type TurnCommand, type UsageScope, type Workspace, type WorkspaceInventoryEntry, type WorkspaceScriptEnvOpts, ackSlackInboundSeen, addPrStackLayer, addStackLayerFromThread, addWorkspace, adoptThread, agentGitPrompt, allAdapters, allocatePort, allocatePortRange, allocateTeamName, allocateTeamSlug, appDataDir, appSettingsPath, appendIndexedGitConfig, appendMessage, applyAgentEvent, applyAppEnvironment, applyCompaction, applyGithubGitAuthEnv, applyThreadIntoMain, applyTurnUsage, assertOrchestratorCapableAgent, attachmentFromAbsolutePath, attachmentsFromBuffers, attachmentsFromWorktreePaths, attachmentsGitignoreBody, autoArchiveOnMergeEnabled, autoCleanupOrphansEnabled, autoRenameBranchEnabled, autoRunAfterSetupEnabled, branchDisplayLabel, brightsyAdapter, brightsyCloudConnectAgent, brightsyCloudConnectEnabled, brightsyConfigPath, brightsyInjectWorktreeMcpEnabled, brightsyMcpAllowedTools, brightsyMcpServerName, buildCachedUserContent, buildClaudeStreamJsonUserMessage, buildDiffCommentAttachment, buildForkTranscriptAttachment, buildPastedTextAttachment, buildReviewRequestAttachment, buildSessionSeed, buildWorkspaceScriptEnv, caffeinateHoldPath, caffeinateWhileCloudConnectEnabled, caffeinateWhileRunningEnabled, caffeinateWhileSlackListenEnabled, captureLoginEnv, captureTurnBaseline, checkoutPrStackLayer, childEnvWithAppSettings, claudeAdapter, claudeChromeEnabled, claudeUserSettingsPath, cleanupOrphanWorktrees, cloneRepoIntoSideboard, codexAdapter, coerceOrchestratorAgent, collectTakenTeamSlugs, commentLinearIssue, commitAll, conductorBundledBinDir, conductorDbPath, confirmLand, connectBrightsyTeam, connectSlackToken, contextTokens, coordinatorSystemPrompt, coordinatorTurnReminder, copyConfiguredFiles, countCacheControlBlocks, createChatTab, createEmptyThread, createExistingBranchWorktree, createGlobalChat, createLinearIssue, createLinearPkce, createOrUpdatePr, createPrStack, createThread, createThreadWorktree, currentBranch, cursorAdapter, cursorSdkMessageToEvents, decodeBrightsyTarget, deleteBranchOnPurgeEnabled, deleteThreadRecord, detectAgents, detectGhStack, detectLocalMergeConflicts, disconnectBrightsyTeam, disconnectLinear, disconnectLinearConnection, disconnectSlackWorkspace, discoverSkills, dismissSlackReplyBadge, dropCachedPrefixOnResume, encodeBrightsyTarget, enrichPathWithNpmGlobalBin, enrichWorkspacesWithGithub, ensureAgentPath, ensureCloudCoordinator, ensureGhPreferOrigin, ensureGlobalCoordinatorCwd, ensureReviewRequestFile, ensureSlackCoordinator, ensureSlackDeviceIdentity, ensureWorkspace, estimateMessageChars, estimateThreadChars, expandComposerPrompt, extractGhErrorDetail, extractPendingPlanQuestions, extractPresentedPlan, extractiveSummary, fetchPrHead, finalizeParts, findInvalidCacheControlTtlOrder, findOrphanWorktrees, findThreadByRef, findThreadForStackLayer, flattenTurnInput, forkChatTab, forkMessageSlice, forkThreadWorktree, formatAgentInstructions, formatArtifactDirective, formatBrightsyFetchError, formatFetchError, formatGhLandError, formatGitAuthModeDirective, formatIpcInvokeError, formatMergePrError, formatMessagesAsTranscript, formatPlanQuestionAnswers, formatPlanQuestionsForChat, formatProcessGuideDirective, formatRateLimitResetHint, formatRenameBranchDirective, formatSlackExternalReplyPrompt, formatSlackInboundPrompt, formatSlackRepliesForTurn, formatSlackSignedReply, formatTranscriptMarkdown, formatUiReminder, formatWorkspaceInventory, formatWorktreeDirective, formatWorktreeReminder, fromInclusiveInputUsage, getAdapter, getAgentSetupInfo, getBrightsySession, getCaffeinateHold, getDefaultAgent, getDefaultEffort, getDefaultFast, getDefaultModel, getDefaultRunScript, getDiff, getDiffSummary, getGitHubStatus, getGithubGitAuthMode, getGithubPat, getIssueSource, getLinearApiKey, getLinearAuthToken, getLinearIssue, getOrchestrator, getPr, getPrChecks, getPrDetails, getPrMeta, getPrStack, getRepoSetupInfo, getRunMode, getRunScript, getSlackWorkspace, gh, ghHeadRef, ghRepoSelectArgs, git, githubAgentGitEnv, globalAgentCwd, handleSlackInbound, harnessEnvKey, hasBakedLinearOAuth, hasBakedSlackOAuth, hasConductorHook, hasCursorWorktreeSetup, hasRepoHook, hasWorkspaceHook, healOrchestrationSoccerTitles, httpFetch, importConductorWorkspace, importConductorWorkspaceAsync, initPrStack, initStackFromThread, initializeGitRepository, inspectGitWorktree, installAgent, isAskUserToolName, isBrightsyConnected, isBrightsyNdjsonLine, isCloudCoordinatorThread, isConductorBundledCli, isCursorAutoModel, isDirty, isGhRateLimitError, isGlobalRepoPath, isGlobalThread, isImageFilePath, isInPrStack, isInboundForThisDesktop, isLinearConnected, isLinearOAuthCancelled, isOrchestratorCapableAgent, isOrchestratorThread, isPidAlive, isPlaceholderBranch, isPrNotMergeableError, isPresentPlanToolName, isSessionQuotaLimit, isSideboardScratchPath, isSlackCoordinatorThread, isSlackExternalReplyPrompt, isSlackOAuthCancelled, isThinkingEffort, isThreadCaffeinated, isWorkspaceScratchPath, linearAuthorizationHeader, linearGraphql, linearOAuthAuthorizeUrl, linearOAuthCredentials, listAgentSetupInfo, listBranchCommits, listBranches, listBrightsyAccounts, listBrightsyChatTargets, listCodexModels, listConductorWorkspaces, listConnectedBrightsyTeams, listCursorModels, listGitHubIssues, listGlobalThreads, listIssues, listLinearIssues, listLinearIssuesDirect, listLinearTeams, listModelsForAgent, listOpencodeModels, listPrs, listRunScripts, listSlackOutboundWatches, listSlackReplyBadges, listSlackWorkspaces, listThreads, listWorkspaces, listWorktreeFiles, listWorktrees, loadAgentInstructions, loadAppSettings, loadBrightsyConfig, loadConductorSettings, loadRepoSettings, loadWorkspaceSettings, locksDir, loginAgent, lookupSoccerTeam, maxConcurrentAgents, maybeCompactContext, mcpAllowTools, mcpAuthWarnings, mergePr, mergePrStack, mergeUsage, nextPastedTextName, nextThinkingEffort, normalizeParseResult, normalizeThinkingEffort, normalizeThread, normalizeTurnInput, normalizeWorktreePath, openInSystemTerminal, openPrStackLayers, openStackLayer, opencodeAdapter, orchestrationQuotaFallbackAgent, orchestrationQuotaOnLimit, orchestrationTitleNeedsSoccerNickname, orchestratorSessionPoisonedByBuiltins, originGhRepoEnv, parseCursorRunnerLine, parseForceStopMessage, parseGhStackViewJson, parseGithubSlugFromRemoteUrl, parseMcpList, parsePlanQuestionsInput, parseSessionQuotaResetAt, parseSlackRelayClientMessage, parseSlackRelayServerMessage, partsToAssistantText, pastedTextStats, pendingSlackExternalReplies, permalinkForSlackReplyBadge, permissionMode, persistVaultKeyInKeychain, planFileAbs, posixShellSingleQuote, prepareTerminalCommand, previewLand, promptMentionsBrightsy, pushBranch, readExistingReviewRequestFile, readKeychainVaultKey, readPlanFile, readSkillBody, readThread, readWorktreeFile, readWorktreeFileForUpload, readWorktreeInclude, recordSlackOutboundWatch, refreshGitHubAuth, refreshSlackReplyBadges, releaseCaffeinateHoldForThread, removeWorkspace, removeWorktree, repoSlug, requestOccupancy, requestReview, requireAgent, resetGhStackDetectCache, resolveAgentExecutable, resolveClaudeExecutable, resolveCommandBinarySync, resolveConductorCursorAgentId, resolveCursorModelId, resolveDefaultBranch, resolveDiffBaseRef, resolveEffectiveIssueSource, resolveFilesToCopy, resolveGhAuthToken, resolveGithubRepoSlug, resolveLinearState, resolveLinearTeam, resolveLoginCommand, resolveNewThreadOptions, resolvePlanMarkdown, resolvePrSelector, resolveQuotaFallbackAgent, resolveRepoRoot, resolveReviewGuidelines, resolveSlackListenMode, resolveThreadDefaults, resolveThreadEffort, resolveVaultKey, resolveWorktreeStartPoint, rewriteLinearError, run, runArchiveScript, runCloudConnect, runCursorWorktreeSetup, runSetupScript, runSlackListen, runSlackRelayClient, sameWorktreePath, sanitizeMcpServerName, saveAppSettings, saveLinearOAuth, secureFileUnlocksWith, setCaffeinateHold, setHttpFetchImpl, setStatus, setVaultMasterKey, settingsSourceLabel, shouldAttachPastedText, shouldCompactContext, shouldInjectBrightsyMcp, shouldRefreshReviewRequestTemplate, shouldRunWorktreeCleanup, sideboardHomeDir, sideboardMcpProfile, sideboardReposDir, sideboardWorkspacesDir, slackAppLevelToken, slackArchiveUrl, slackCoordinatorSourceRef, slackListenEnabled, slackOAuthCredentials, slackOAuthResultUrl, slackRelayUrl, slugify, spawnAgentTurn, splitForCompaction, stackAgentDefaultsFrom, stackIdFrom, stackMergeReadiness, stageAbsolutePathsAsAttachments, stageBuffersAsAttachments, startDevServer, startLinearOAuth, startMcpServer, startOrchestration, startSlackOAuth, startSlackRelayServer, stripBrightsyNdjsonNoise, stripNestedElectronEnv, submitPrStack, suggestSlug, summarizeConversation, switchBrightsyAccount, syncWorkspacesFromThreads, takenTeamSlugsForChatTab, takenTeamSlugsForOrchestration, taskMessageText, thinkingEffortBars, thinkingEffortLabel, threadDisplayLabel, threadFilePath, threadLockPath, threadRequestsBrightsyMcp, threadsDir, threadsSharingWorktree, toPublicAppSettings, toolDescription, toolDetail, toolFilePath, totalTokens, updateAdvancedSettings, updateAgentExecutable, updateAppEnvironment, updateBrightsySettings, updateClaudeSettings, updateCodexSettings, updateDefaultsSettings, updateIntegrationsSettings, updateLinearIssue, updateOpencodeSettings, updateThread, validateLinearApiKey, withAgentInstructions, withExportedPath, withThreadLock, workspaceSettingsSourceLabel, worktreeCleanupSettings, worktreeDisplayLabel, worktreeDisplayLabelForGroup, worktreeNameFromPath, worktreesRoot, writeInjectedMcpConfig, writePlanFile, writeThread, writeWorktreeFile };
4361
+ export { AGENT_GIT_ACTIONS, ATTACHMENTS_DIR, type ActiveRun, type AddStackLayerInput, type AdoptInput, type AdvancedAppSettings, type AgentAdapter, type AgentEvent, type AgentGitAction, type AgentInstructionFile, type AgentKind, type AgentModelCatalog, type AgentModelInfo, type AgentSetupActionResult, type AgentSetupInfo, type AgentSetupKind, type AgentStatus, type AgentTurnInput, type AnthropicCacheControl, type AppSettings, type ApplyIntoMainResult, type AttachCommand, type Autonomy, BAKED_SLACK_RELAY_URL, BRIGHTSY_MCP_ALLOWED_TOOLS, type BranchInfo, type BrightsyAccount, type BrightsyChatTarget, type BrightsyChatTargets, type BrightsyCloudConnectAgent, type BrightsyHarnessSettings, type BrightsySession, BrightsySideboardApi, type BrightsyTeamTargets, CLAUDE_MODEL_CATALOG, CLOUD_COORDINATOR_BUSY_REPLY, CLOUD_COORDINATOR_STOPPED_REPLY, CLOUD_COORDINATOR_TIMEOUT_REPLY, CLOUD_ORCHESTRATOR_GOAL, CONTEXT_COMPACT_CHARS, CONTEXT_KEEP_RECENT_CHARS, CONTEXT_KEEP_RECENT_MESSAGES, CONTEXT_MIN_MESSAGES, COORDINATOR_TOOL_PLAYBOOK, type CaffeinateHoldState, type ClaudeHarnessSettings, type CleanupOrphansResult, type CliAgentKind, type CliExecutableSettings, type CloudConnectAgent, type CloudConnectOptions, type CloudConnectStatus, type CompactResult, type CompactThresholds, type ComposerFileBuffer, type ConductorSettings, type ConductorWorkspace, type ConnectedBrightsyTeamInfo, type CreateChatTabInput, type CreateGlobalChatOpts, type CreateStackInput, type CreateThreadInput, type CreateWorktreeResult, type CursorModelInfo, type CursorSdkStreamMessage, type CursorTurnRequest, type CursorWorktreesConfig, type DefaultsAppSettings, type DevServerHandle, type DiffCommentInput, type DiffCommentLine, type DiffCommit, type DiffFile, type DiffResult, type DiffScope, type DiffScopeStat, type ExpandResult, FAMOUS_SOCCER_TEAMS, type ForkChatTabInput, type ForkThreadWorktreeInput, type FormatGhLandErrorOptions, GITHUB_GIT_AUTH_MODES, GLOBAL_WORKSPACE_ID, type GetDiffOptions, type GhStackStatus, type GitHubStatus, type GitWorktreeStatus, type GithubGitAuthMode, HARNESS_ENV_KEYS, type HarnessId, type InitStackFromThreadInput, type IntegrationsSettings, type IpcApi, type IssueInfo, type IssueSource, LEGACY_ATTACHMENTS_DIR, LEGACY_PLAN_FILE_REL, LEGACY_REVIEW_REQUEST_PATH, LINEAR_OAUTH_CANCELLED, LINEAR_OAUTH_PORT, LINEAR_OAUTH_REDIRECT, LINEAR_OAUTH_SCOPES, type LandPreview, type LandResult, type LinearComment, type LinearIssue, LinearOAuthCancelledError, type LinearTeam, type LinearTeamsResult, type LinearWorkflowState, type ListIssuesResult, MAX_ANTHROPIC_CACHE_CONTROL_BLOCKS, type McpServerStatus, type MessagePart, ORCHESTRATOR_AGENT_KINDS, type OpenPrStackLayersInput, type OpenStackLayerInput, type OpenStackLayerResult, type OrchestrationQuotaOnLimit, Orchestrator, type OrchestratorAgentKind, type OrchestratorEvent, type OrchestratorRuntime, type OrphanWorktree, PASTE_ATTACH_MIN_CHARS, PASTE_ATTACH_MIN_LINES, PLAN_FILE_NAME, PLAN_FILE_REL, PLAN_MODE_INSTRUCTION, type PendingPlanQuestions, type PlanQuestion, type PlanQuestionAnswer, type PlanQuestionOption, type PlanToolPartLike, type PrActor, type PrCheckRun, type PrCommentInfo, type PrCommitInfo, type PrDetails, type PrInfo, type PrMeta, type PrReviewInfo, type PrStack, type PrStackLayer, type PresentedPlan, type PublicAppSettings, type PublicIntegrationsSettings, REPO_REVIEW_NAME, REPO_REVIEW_PATH, REVIEW_REQUEST_NAME, REVIEW_REQUEST_PATH, REVIEW_REQUEST_PREFILL, REVIEW_REQUEST_TEMPLATE, type RepoSettings, type RepoSetupInfo, type RequestReviewResult, type ResolvedReviewGuidelines, type ReviewGuidelinesSource, type RunMode, type RunScript, SIDEBOARD_FORCE_STOP, SIDEBOARD_MCP_ALLOWED_TOOLS, SIDEBOARD_MCP_PROFILE_ENV, SLACK_LISTEN_BUSY_REPLY, SLACK_LISTEN_STOPPED_REPLY, SLACK_LISTEN_TIMEOUT_REPLY, SLACK_OAUTH_CANCELLED, SLACK_OAUTH_REDIRECT, SLACK_REPLY_FORMATTING, SLACK_SEEN_REACTION, type ScriptHandle, type SideboardMcpProfile, type SkillInfo, type SlackInboundMessage, type SlackListenOptions, type SlackListenStatus, SlackOAuthCancelledError, type SlackOutboundReply, type SlackOutboundWatch, type SlackRelayClientMessage, type SlackRelayClientOptions, SlackRelayHub, type SlackRelayServerHandle, type SlackRelayServerMessage, type SlackRelayServerOptions, type SlackReplyBadge, type SlackWorkspaceInfo, type SourceType, type SpawnTurnHandle, type SummarizeResult, THINKING_EFFORTS, type TeamName, type ThinkingEffort, type Thread, type ThreadAttachment, type ThreadMessage, type ThreadOptionsPatch, type ThreadStatus, type TokenUsage, type ToolPartLike, type TranscriptToolDetail, type TurnCommand, type UsageScope, type Workspace, type WorkspaceInventoryEntry, type WorkspaceScriptEnvOpts, ackSlackInboundSeen, addPrStackLayer, addStackLayerFromThread, addWorkspace, adoptThread, agentGitPrompt, allAdapters, allocatePort, allocatePortRange, allocateTeamName, allocateTeamSlug, appDataDir, appSettingsPath, appendIndexedGitConfig, appendMessage, applyAgentEvent, applyAppEnvironment, applyCompaction, applyGithubGitAuthEnv, applyThreadIntoMain, applyTurnUsage, assertOrchestratorCapableAgent, attachmentFromAbsolutePath, attachmentsFromBuffers, attachmentsFromWorktreePaths, attachmentsGitignoreBody, autoArchiveOnMergeEnabled, autoCleanupOrphansEnabled, autoRenameBranchEnabled, autoRunAfterSetupEnabled, branchDisplayLabel, brightsyAdapter, brightsyCloudConnectAgent, brightsyCloudConnectEnabled, brightsyConfigPath, brightsyInjectWorktreeMcpEnabled, brightsyMcpAllowedTools, brightsyMcpServerName, buildCachedUserContent, buildClaudeStreamJsonUserMessage, buildDiffCommentAttachment, buildForkTranscriptAttachment, buildPastedTextAttachment, buildReviewRequestAttachment, buildSessionSeed, buildWorkspaceScriptEnv, caffeinateHoldPath, caffeinateWhileCloudConnectEnabled, caffeinateWhileRunningEnabled, caffeinateWhileSlackListenEnabled, captureLoginEnv, captureTurnBaseline, checkoutPrStackLayer, childEnvWithAppSettings, claudeAdapter, claudeChromeEnabled, claudeUserSettingsPath, cleanupOrphanWorktrees, cloneRepoIntoSideboard, codexAdapter, codexUnattendedGitConfigArgs, coerceOrchestratorAgent, collectTakenTeamSlugs, commentLinearIssue, commitAll, conductorBundledBinDir, conductorDbPath, confirmLand, connectBrightsyTeam, connectSlackToken, contextTokens, coordinatorSystemPrompt, coordinatorTurnReminder, copyConfiguredFiles, countCacheControlBlocks, createChatTab, createEmptyThread, createExistingBranchWorktree, createGlobalChat, createLinearIssue, createLinearPkce, createOrUpdatePr, createPrStack, createThread, createThreadWorktree, currentBranch, cursorAdapter, cursorSdkMessageToEvents, decodeBrightsyTarget, deleteBranchOnPurgeEnabled, deleteThreadRecord, detectAgents, detectGhStack, detectLocalMergeConflicts, disconnectBrightsyTeam, disconnectLinear, disconnectLinearConnection, disconnectSlackWorkspace, discoverSkills, dismissSlackReplyBadge, dropCachedPrefixOnResume, encodeBrightsyTarget, enrichPathWithNpmGlobalBin, enrichWorkspacesWithGithub, ensureAgentPath, ensureCloudCoordinator, ensureGhPreferOrigin, ensureGlobalCoordinatorCwd, ensureReviewRequestFile, ensureSlackCoordinator, ensureSlackDeviceIdentity, ensureWorkspace, estimateMessageChars, estimateThreadChars, expandComposerPrompt, extractGhErrorDetail, extractPendingPlanQuestions, extractPresentedPlan, extractiveSummary, fetchPrHead, finalizeParts, findInvalidCacheControlTtlOrder, findOrphanWorktrees, findThreadByRef, findThreadForStackLayer, flattenTurnInput, forkChatTab, forkMessageSlice, forkThreadWorktree, formatAgentInstructions, formatArtifactDirective, formatBrightsyFetchError, formatFetchError, formatGhLandError, formatGitAuthModeDirective, formatIpcInvokeError, formatMergePrError, formatMessagesAsTranscript, formatPlanQuestionAnswers, formatPlanQuestionsForChat, formatProcessGuideDirective, formatRateLimitResetHint, formatRenameBranchDirective, formatSlackExternalReplyPrompt, formatSlackInboundPrompt, formatSlackRepliesForTurn, formatSlackSignedReply, formatTranscriptMarkdown, formatUiReminder, formatWorkspaceInventory, formatWorktreeDirective, formatWorktreeReminder, fromInclusiveInputUsage, getAdapter, getAgentSetupInfo, getBrightsySession, getCaffeinateHold, getDefaultAgent, getDefaultEffort, getDefaultFast, getDefaultModel, getDefaultRunScript, getDiff, getDiffSummary, getGitHubStatus, getGithubGitAuthMode, getGithubPat, getIssueSource, getLinearApiKey, getLinearAuthToken, getLinearIssue, getOrchestrator, getPr, getPrChecks, getPrDetails, getPrMeta, getPrStack, getRepoSetupInfo, getRunMode, getRunScript, getSlackWorkspace, gh, ghHeadRef, ghRepoSelectArgs, git, githubAgentGitEnv, globalAgentCwd, handleSlackInbound, harnessEnvKey, hasBakedLinearOAuth, hasBakedSlackOAuth, hasConductorHook, hasCursorWorktreeSetup, hasRepoHook, hasWorkspaceHook, healOrchestrationSoccerTitles, httpFetch, importConductorWorkspace, importConductorWorkspaceAsync, initPrStack, initStackFromThread, initializeGitRepository, inspectGitWorktree, installAgent, isAskUserToolName, isBrightsyConnected, isBrightsyNdjsonLine, isCloudCoordinatorThread, isConductorBundledCli, isCursorAutoModel, isDirty, isGhRateLimitError, isGlobalRepoPath, isGlobalThread, isImageFilePath, isInPrStack, isInboundForThisDesktop, isLinearConnected, isLinearOAuthCancelled, isOrchestratorCapableAgent, isOrchestratorThread, isPidAlive, isPlaceholderBranch, isPrNotMergeableError, isPresentPlanToolName, isSessionQuotaLimit, isSideboardScratchPath, isSlackCoordinatorThread, isSlackExternalReplyPrompt, isSlackOAuthCancelled, isThinkingEffort, isThreadCaffeinated, isWorkspaceScratchPath, linearAuthorizationHeader, linearGraphql, linearOAuthAuthorizeUrl, linearOAuthCredentials, listAgentSetupInfo, listBranchCommits, listBranches, listBrightsyAccounts, listBrightsyChatTargets, listCodexModels, listConductorWorkspaces, listConnectedBrightsyTeams, listCursorModels, listGitHubIssues, listGlobalThreads, listIssues, listLinearIssues, listLinearIssuesDirect, listLinearTeams, listModelsForAgent, listOpencodeModels, listPrs, listRunScripts, listSlackOutboundWatches, listSlackReplyBadges, listSlackWorkspaces, listThreads, listWorkspaces, listWorktreeFiles, listWorktrees, loadAgentInstructions, loadAppSettings, loadBrightsyConfig, loadConductorSettings, loadRepoSettings, loadWorkspaceSettings, locksDir, loginAgent, lookupSoccerTeam, maxConcurrentAgents, maybeCompactContext, mcpAllowTools, mcpAuthWarnings, mergePr, mergePrStack, mergeUsage, nextPastedTextName, nextThinkingEffort, nonInteractiveGitProcessEnv, normalizeParseResult, normalizeThinkingEffort, normalizeThread, normalizeTurnInput, normalizeWorktreePath, openInSystemTerminal, openPrStackLayers, openStackLayer, opencodeAdapter, orchestrationQuotaFallbackAgent, orchestrationQuotaOnLimit, orchestrationTitleNeedsSoccerNickname, orchestratorSessionPoisonedByBuiltins, originGhRepoEnv, parseCursorRunnerLine, parseForceStopMessage, parseGhStackViewJson, parseGithubSlugFromRemoteUrl, parseMcpList, parsePlanQuestionsInput, parseSessionQuotaResetAt, parseSlackRelayClientMessage, parseSlackRelayServerMessage, partsToAssistantText, pastedTextStats, pendingSlackExternalReplies, permalinkForSlackReplyBadge, permissionMode, persistVaultKeyInKeychain, planFileAbs, posixShellSingleQuote, prepareTerminalCommand, previewLand, promptMentionsBrightsy, pushBranch, readExistingReviewRequestFile, readKeychainVaultKey, readPlanFile, readSkillBody, readThread, readWorktreeFile, readWorktreeFileForUpload, readWorktreeInclude, recordSlackOutboundWatch, refreshGitHubAuth, refreshSlackReplyBadges, releaseCaffeinateHoldForThread, removeWorkspace, removeWorktree, repoSlug, requestOccupancy, requestReview, requireAgent, resetGhStackDetectCache, resolveAgentExecutable, resolveAgentGitAuthEnv, resolveClaudeExecutable, resolveCommandBinarySync, resolveConductorCursorAgentId, resolveCursorModelId, resolveDefaultBranch, resolveDiffBaseRef, resolveEffectiveIssueSource, resolveFilesToCopy, resolveGhAuthToken, resolveGithubAgentToken, resolveGithubRepoSlug, resolveLinearState, resolveLinearTeam, resolveLoginCommand, resolveNewThreadOptions, resolvePlanMarkdown, resolvePrSelector, resolveQuotaFallbackAgent, resolveRepoRoot, resolveReviewGuidelines, resolveSlackListenMode, resolveThreadDefaults, resolveThreadEffort, resolveVaultKey, resolveWorktreeStartPoint, rewriteLinearError, run, runArchiveScript, runCloudConnect, runCursorWorktreeSetup, runSetupScript, runSlackListen, runSlackRelayClient, sameWorktreePath, sanitizeMcpServerName, saveAppSettings, saveLinearOAuth, secureFileUnlocksWith, setCaffeinateHold, setHttpFetchImpl, setStatus, setVaultMasterKey, settingsSourceLabel, shouldAttachPastedText, shouldCompactContext, shouldInjectBrightsyMcp, shouldRefreshReviewRequestTemplate, shouldRunWorktreeCleanup, sideboardHomeDir, sideboardMcpProfile, sideboardReposDir, sideboardWorkspacesDir, slackAppLevelToken, slackArchiveUrl, slackCoordinatorSourceRef, slackListenEnabled, slackOAuthCredentials, slackOAuthResultUrl, slackRelayUrl, slugify, spawnAgentTurn, splitForCompaction, stackAgentDefaultsFrom, stackIdFrom, stackMergeReadiness, stageAbsolutePathsAsAttachments, stageBuffersAsAttachments, startDevServer, startLinearOAuth, startMcpServer, startOrchestration, startSlackOAuth, startSlackRelayServer, stripBrightsyNdjsonNoise, stripNestedElectronEnv, submitPrStack, suggestSlug, summarizeConversation, switchBrightsyAccount, syncWorkspacesFromThreads, takenTeamSlugsForChatTab, takenTeamSlugsForOrchestration, taskMessageText, thinkingEffortBars, thinkingEffortLabel, threadDisplayLabel, threadFilePath, threadLockPath, threadRequestsBrightsyMcp, threadsDir, threadsSharingWorktree, toPublicAppSettings, toolDescription, toolDetail, toolFilePath, totalTokens, updateAdvancedSettings, updateAgentExecutable, updateAppEnvironment, updateBrightsySettings, updateClaudeSettings, updateCodexSettings, updateDefaultsSettings, updateIntegrationsSettings, updateLinearIssue, updateOpencodeSettings, updateThread, validateLinearApiKey, withAgentInstructions, withExportedPath, withThreadLock, workspaceSettingsSourceLabel, worktreeCleanupSettings, worktreeDisplayLabel, worktreeDisplayLabelForGroup, worktreeNameFromPath, worktreesRoot, writeInjectedMcpConfig, writePlanFile, writeThread, writeWorktreeFile };