@sideboard-ai/core 0.1.314 → 0.1.315

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 (59) hide show
  1. package/dist/{abletime-SJUVZVRU.js → abletime-QK3KMRQD.js} +4 -4
  2. package/dist/{abletime-T5YSJLNZ.js → abletime-QQZWYJXC.js} +4 -4
  3. package/dist/{abletime-oauth-73TFJME4.js → abletime-oauth-CAHTMB4V.js} +3 -3
  4. package/dist/{abletime-oauth-2TOOZ2FN.js → abletime-oauth-I2RRPVKT.js} +3 -3
  5. package/dist/{abletime-rest-PNUGH2FS.js → abletime-rest-5V4KGMSY.js} +3 -3
  6. package/dist/{abletime-rest-5TDRIFEV.js → abletime-rest-W5TLQK7C.js} +3 -3
  7. package/dist/{agents-KIC6CNXF.js → agents-5XJ7EHGU.js} +6 -6
  8. package/dist/{agents-S7VBS5JL.js → agents-Y3M3EKLY.js} +6 -6
  9. package/dist/{app-settings-CC65VPBL.js → app-settings-CZVFMOI5.js} +3 -1
  10. package/dist/{app-settings-DZ5AY7N5.js → app-settings-RQAFJZCD.js} +3 -1
  11. package/dist/{chunk-EGTCXNQM.js → chunk-53OCOGND.js} +2 -2
  12. package/dist/{chunk-DLGGLV2M.js → chunk-5CTG5W7S.js} +2 -2
  13. package/dist/{chunk-JARCAPKL.js → chunk-72OWKHFJ.js} +3 -3
  14. package/dist/{chunk-CW4FIIDE.js → chunk-7J2KOIYD.js} +3 -3
  15. package/dist/{chunk-6EGQPMSR.js → chunk-BMORGDYI.js} +46 -26
  16. package/dist/{chunk-BIPXOHZI.js → chunk-BPBDGJ43.js} +2 -2
  17. package/dist/{chunk-HG25AYBV.js → chunk-CHUPIJP7.js} +14 -0
  18. package/dist/{chunk-YK77HB3W.js → chunk-CYPFOIUK.js} +45 -25
  19. package/dist/{chunk-JWW66PO3.js → chunk-DV6ID6CK.js} +5 -5
  20. package/dist/{chunk-A45QMSVB.js → chunk-FVTR54LY.js} +5 -5
  21. package/dist/{chunk-PHMFAU35.js → chunk-GCHSJCCX.js} +96 -64
  22. package/dist/{chunk-ZSVKUOFH.js → chunk-GFM63DTU.js} +8 -5
  23. package/dist/{chunk-7UP4D5XI.js → chunk-IODJCVMN.js} +5 -5
  24. package/dist/{chunk-CFTOKVQN.js → chunk-JRZTJ4F7.js} +5 -5
  25. package/dist/{chunk-TO5UL7VN.js → chunk-MBYGWNLQ.js} +1 -1
  26. package/dist/{chunk-OLSLE3LO.js → chunk-MKGSMPWB.js} +3 -3
  27. package/dist/{chunk-7DBL5AF4.js → chunk-NKVNHBDB.js} +4 -4
  28. package/dist/{chunk-U4WACWBC.js → chunk-NXNNYY3Q.js} +2 -2
  29. package/dist/{chunk-SZ3XS2WM.js → chunk-NZVD5EVX.js} +2 -2
  30. package/dist/{chunk-NMPQ7GIS.js → chunk-OLYNM52B.js} +2 -2
  31. package/dist/{chunk-S3KYDK6W.js → chunk-PN32Z4JL.js} +8 -5
  32. package/dist/{chunk-ZQLZ2A3I.js → chunk-S3U4HR5F.js} +2 -2
  33. package/dist/{chunk-3UDRWMIM.js → chunk-U35AHE2P.js} +14 -0
  34. package/dist/{chunk-A2YXQC65.js → chunk-U7PNCYNX.js} +96 -64
  35. package/dist/{chunk-6424BACS.js → chunk-Y4WARKPW.js} +2 -2
  36. package/dist/{chunk-5QYCCXXQ.js → chunk-YR7NZYUT.js} +5 -5
  37. package/dist/{conductor-IIDQ2U24.js → conductor-DKWTQADV.js} +5 -5
  38. package/dist/{conductor-G6TKCMIW.js → conductor-IMKNYQWZ.js} +5 -5
  39. package/dist/{coordinator-prompt-EXJSULAR.js → coordinator-prompt-HUZC4DZ2.js} +4 -4
  40. package/dist/{coordinator-prompt-5USNNCG6.js → coordinator-prompt-SPOYUZG5.js} +4 -4
  41. package/dist/{global-workspace-ZGPIGJ6J.js → global-workspace-3NNDDTFD.js} +4 -4
  42. package/dist/{global-workspace-UDRTONQE.js → global-workspace-SK4JQBPN.js} +4 -4
  43. package/dist/index.cjs +155 -65
  44. package/dist/index.d.cts +71 -51
  45. package/dist/index.d.ts +71 -51
  46. package/dist/index.js +25 -21
  47. package/dist/mcp/run-stdio.cjs +150 -63
  48. package/dist/mcp/run-stdio.js +15 -14
  49. package/dist/{optional-cli-MLZSE6KW.js → optional-cli-EMSZBYDE.js} +3 -3
  50. package/dist/{optional-cli-SI4BCPRH.js → optional-cli-LMSRZNH4.js} +4 -4
  51. package/dist/{orchestrator-V6NLIPLH.js → orchestrator-4XFRK57E.js} +9 -9
  52. package/dist/{orchestrator-AM7VT2BD.js → orchestrator-ZRMZ4TCL.js} +9 -9
  53. package/dist/{thread-store-HY22M5A7.js → thread-store-5OF6M6VZ.js} +1 -1
  54. package/dist/{thread-store-XMUQDO5O.js → thread-store-GOVVXQV2.js} +1 -1
  55. package/dist/{workspaces-3TTODHKN.js → workspaces-52L6NZ3P.js} +4 -4
  56. package/dist/{workspaces-TATO466L.js → workspaces-EYNZDL45.js} +4 -4
  57. package/dist/{worktree-C5VI46RZ.js → worktree-BP5ICYQ2.js} +3 -3
  58. package/dist/{worktree-FMK57ULT.js → worktree-UCOSAI7J.js} +3 -3
  59. package/package.json +1 -1
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  getAbleTimeHost,
8
8
  isAbleTimeConnected
9
- } from "./chunk-PHMFAU35.js";
9
+ } from "./chunk-GCHSJCCX.js";
10
10
 
11
11
  // src/integrations/abletime-mcp.ts
12
12
  var DEFAULT_ABLETIME_HOST = "https://track.abletime.com";
@@ -155,7 +155,7 @@ function textsFromUnknown(value) {
155
155
  return "";
156
156
  }
157
157
  async function abletimeMcpRequest(method, params, opts) {
158
- const rawToken = opts?.token ?? await import("./abletime-oauth-2TOOZ2FN.js").then((m) => m.ensureAbleTimeAccessToken());
158
+ const rawToken = opts?.token ?? await import("./abletime-oauth-I2RRPVKT.js").then((m) => m.ensureAbleTimeAccessToken());
159
159
  if (!rawToken?.trim()) {
160
160
  throw new Error("AbleTime is not connected \u2014 paste a personal access token in Account settings");
161
161
  }
@@ -226,9 +226,9 @@ async function callAbleTimeTool(name, args = {}, opts) {
226
226
  if (!opts?.token && !isAbleTimeConnected()) {
227
227
  throw new Error("AbleTime is not connected \u2014 paste a personal access token in Account settings");
228
228
  }
229
- const rawToken = opts?.token ?? await import("./abletime-oauth-2TOOZ2FN.js").then((m) => m.ensureAbleTimeAccessToken());
229
+ const rawToken = opts?.token ?? await import("./abletime-oauth-I2RRPVKT.js").then((m) => m.ensureAbleTimeAccessToken());
230
230
  if (rawToken && ableTimeUsesRest(rawToken)) {
231
- const { callAbleTimeRestTool } = await import("./abletime-rest-5TDRIFEV.js");
231
+ const { callAbleTimeRestTool } = await import("./abletime-rest-W5TLQK7C.js");
232
232
  return callAbleTimeRestTool(name, args, { ...opts, token: rawToken });
233
233
  }
234
234
  const requestOpts = { ...opts, pm: opts?.pm ?? abletimeToolUsesPm(name) };
@@ -244,7 +244,7 @@ async function callAbleTimeTool(name, args = {}, opts) {
244
244
  return await call();
245
245
  }
246
246
  if (rawToken && ableTimeUsesRest(rawToken) && isAbleTimeRejectedCredential(message)) {
247
- const { callAbleTimeRestTool } = await import("./abletime-rest-5TDRIFEV.js");
247
+ const { callAbleTimeRestTool } = await import("./abletime-rest-W5TLQK7C.js");
248
248
  return callAbleTimeRestTool(name, args, { ...opts, token: rawToken });
249
249
  }
250
250
  throw err instanceof Error ? new Error(rewriteAbleTimeError(err.message)) : err;
@@ -125,7 +125,7 @@ async function connectedCliPresence(integrations) {
125
125
  const ids = connectedOptionalServices(integrations).filter((spec) => spec.cli).map((spec) => spec.id);
126
126
  if (ids.length === 0) return void 0;
127
127
  try {
128
- const { optionalCliPresence } = await import("./optional-cli-MLZSE6KW.js");
128
+ const { optionalCliPresence } = await import("./optional-cli-EMSZBYDE.js");
129
129
  return await optionalCliPresence(ids);
130
130
  } catch {
131
131
  return void 0;
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  abletimeRestUrl,
3
3
  textFromAbleTimeDoc
4
- } from "./chunk-SZ3XS2WM.js";
4
+ } from "./chunk-NZVD5EVX.js";
5
5
  import {
6
6
  assertAbleTimeCredential,
7
7
  callAbleTimeTool,
8
8
  normalizeAbleTimeHost,
9
9
  rewriteAbleTimeError
10
- } from "./chunk-JWW66PO3.js";
10
+ } from "./chunk-DV6ID6CK.js";
11
11
  import {
12
12
  httpFetch
13
13
  } from "./chunk-JAT3JFOS.js";
@@ -20,7 +20,7 @@ import {
20
20
  getAbleTimeHost,
21
21
  isAbleTimeConnected,
22
22
  saveAbleTimeConnection
23
- } from "./chunk-A2YXQC65.js";
23
+ } from "./chunk-U7PNCYNX.js";
24
24
 
25
25
  // src/integrations/issue-attachments.ts
26
26
  import { existsSync, mkdirSync, writeFileSync } from "fs";
@@ -12,13 +12,13 @@ import {
12
12
  } from "./chunk-7Q327QF2.js";
13
13
  import {
14
14
  isOrchestratorThread
15
- } from "./chunk-ZSVKUOFH.js";
15
+ } from "./chunk-GFM63DTU.js";
16
16
  import {
17
17
  codexUnattendedGitConfigArgs,
18
18
  mergeAgentGitAuthEnv,
19
19
  resolveAgentGitAuthEnv,
20
20
  resolveCodexGitWritableRoots
21
- } from "./chunk-BIPXOHZI.js";
21
+ } from "./chunk-BPBDGJ43.js";
22
22
  import {
23
23
  loadBrightsyConfig
24
24
  } from "./chunk-RSA47QYR.js";
@@ -76,7 +76,7 @@ import {
76
76
  loadAppSettings,
77
77
  resolveAgentExecutable,
78
78
  resolveClaudeExecutable
79
- } from "./chunk-A2YXQC65.js";
79
+ } from "./chunk-U7PNCYNX.js";
80
80
  import {
81
81
  isElectronLikeCommand,
82
82
  unwrapStrippedElectronLaunch
@@ -2609,7 +2609,7 @@ var claudeAdapter = {
2609
2609
  );
2610
2610
  }
2611
2611
  const mode = permissionMode(thread);
2612
- const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-ZGPIGJ6J.js");
2612
+ const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-3NNDDTFD.js");
2613
2613
  const isOrchestrator = isOrchestratorThread2(thread);
2614
2614
  const rpc = worktreeAgentRpc(isOrchestrator);
2615
2615
  const injectedServers = await buildInjectedMcpServers({
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-QVN2WOKJ.js";
8
8
  import {
9
9
  resolveAgentExecutable
10
- } from "./chunk-A2YXQC65.js";
10
+ } from "./chunk-U7PNCYNX.js";
11
11
 
12
12
  // src/agents/install.ts
13
13
  import { existsSync } from "fs";
@@ -265,7 +265,7 @@ async function loginAgent(agent) {
265
265
  };
266
266
  }
267
267
  async function loginManagedAccount(accountId) {
268
- const { loadAppSettings } = await import("./app-settings-DZ5AY7N5.js");
268
+ const { loadAppSettings } = await import("./app-settings-RQAFJZCD.js");
269
269
  const { loginEnvPrefix } = await import("./managed-accounts-JJTAKHMG.js");
270
270
  const account = loadAppSettings().accounts.accounts.find((a) => a.id === accountId);
271
271
  if (!account) {
@@ -4,14 +4,14 @@ import {
4
4
  normalizeAbleTimeCredential,
5
5
  normalizeAbleTimeHost,
6
6
  rewriteAbleTimeError
7
- } from "./chunk-JWW66PO3.js";
7
+ } from "./chunk-DV6ID6CK.js";
8
8
  import {
9
9
  httpFetch
10
10
  } from "./chunk-JAT3JFOS.js";
11
11
  import {
12
12
  getAbleTimeAccessToken,
13
13
  getAbleTimeHost
14
- } from "./chunk-A2YXQC65.js";
14
+ } from "./chunk-U7PNCYNX.js";
15
15
 
16
16
  // src/integrations/abletime-rest.ts
17
17
  var ABLETIME_REST_PREFIX = "/api/public/v2";
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  loadAppSettings,
6
6
  saveAppSettings
7
- } from "./chunk-A2YXQC65.js";
7
+ } from "./chunk-U7PNCYNX.js";
8
8
 
9
9
  // src/integrations/optional-services.ts
10
10
  var OPTIONAL_SERVICE_IDS = ["vercel", "supabase", "posthog", "sentry"];
@@ -273,7 +273,7 @@ async function connectedCliPresence(integrations) {
273
273
  const ids = connectedOptionalServices(integrations).filter((spec) => spec.cli).map((spec) => spec.id);
274
274
  if (ids.length === 0) return void 0;
275
275
  try {
276
- const { optionalCliPresence } = await import("./optional-cli-SI4BCPRH.js");
276
+ const { optionalCliPresence } = await import("./optional-cli-LMSRZNH4.js");
277
277
  return await optionalCliPresence(ids);
278
278
  } catch {
279
279
  return void 0;
@@ -5,7 +5,7 @@ import {
5
5
  ensureGhPreferOrigin,
6
6
  resolveGithubRepoSlug,
7
7
  resolveRepoRoot
8
- } from "./chunk-DLGGLV2M.js";
8
+ } from "./chunk-5CTG5W7S.js";
9
9
  import {
10
10
  ATTACHMENTS_DIR,
11
11
  attachmentsGitignoreBody
@@ -22,7 +22,7 @@ import {
22
22
  resolveThreadDefaults,
23
23
  resolveViewerProfile,
24
24
  resolveViewerProfileForRepo
25
- } from "./chunk-PHMFAU35.js";
25
+ } from "./chunk-GCHSJCCX.js";
26
26
  import {
27
27
  allocateTeamName,
28
28
  createEmptyThread,
@@ -31,7 +31,7 @@ import {
31
31
  teamSlugFromName,
32
32
  updateThread,
33
33
  writeThread
34
- } from "./chunk-3UDRWMIM.js";
34
+ } from "./chunk-U35AHE2P.js";
35
35
  import {
36
36
  appDataDir,
37
37
  globalAgentCwd,
@@ -618,7 +618,8 @@ function createGlobalChat(opts) {
618
618
  agent: opts.agent,
619
619
  model: opts.model,
620
620
  effort: opts.effort,
621
- fast: opts.fast
621
+ fast: opts.fast,
622
+ autonomy: opts.autonomy
622
623
  });
623
624
  const agent = assertOrchestratorCapableAgent(resolved.agent);
624
625
  const worktreePath = globalAgentCwd();
@@ -632,7 +633,7 @@ function createGlobalChat(opts) {
632
633
  worktreePath,
633
634
  repoPath: GLOBAL_WORKSPACE_ID,
634
635
  agent,
635
- autonomy: opts.autonomy ?? "default",
636
+ autonomy: resolved.autonomy,
636
637
  model: resolved.model,
637
638
  effort: resolved.effort,
638
639
  fast: resolved.fast,
@@ -709,6 +710,7 @@ function ensureSlackCoordinator(teamId, userId, agent, opts) {
709
710
  if (existing.model !== defaults.model) patch.model = defaults.model;
710
711
  if (existing.effort !== defaults.effort) patch.effort = defaults.effort;
711
712
  if (existing.fast !== defaults.fast) patch.fast = defaults.fast;
713
+ if (existing.autonomy !== defaults.autonomy) patch.autonomy = defaults.autonomy;
712
714
  }
713
715
  if (Object.keys(patch).length > 0) {
714
716
  return updateThread(existing.id, patch);
@@ -767,6 +769,7 @@ function ensureCloudCoordinator(agent) {
767
769
  if (existing.model !== defaults.model) patch.model = defaults.model;
768
770
  if (existing.effort !== defaults.effort) patch.effort = defaults.effort;
769
771
  if (existing.fast !== defaults.fast) patch.fast = defaults.fast;
772
+ if (existing.autonomy !== defaults.autonomy) patch.autonomy = defaults.autonomy;
770
773
  }
771
774
  if (Object.keys(patch).length > 0) {
772
775
  return updateThread(existing.id, patch);
@@ -2,11 +2,11 @@ import {
2
2
  OPTIONAL_SERVICES,
3
3
  isOptionalServiceId,
4
4
  optionalServiceSpec
5
- } from "./chunk-NMPQ7GIS.js";
5
+ } from "./chunk-OLYNM52B.js";
6
6
  import {
7
7
  installNpmGlobalPackage,
8
8
  whichOnPath
9
- } from "./chunk-U4WACWBC.js";
9
+ } from "./chunk-NXNNYY3Q.js";
10
10
  import {
11
11
  enrichPathWithNpmGlobalBin
12
12
  } from "./chunk-QVN2WOKJ.js";
@@ -1029,6 +1029,19 @@ function normalizeRunScriptRequest(raw) {
1029
1029
  error: req.error ?? null
1030
1030
  };
1031
1031
  }
1032
+ function sanitizeIssueBlockedBy(value) {
1033
+ if (!Array.isArray(value)) return void 0;
1034
+ const out = [];
1035
+ const seen = /* @__PURE__ */ new Set();
1036
+ for (const item of value) {
1037
+ const id = String(item ?? "").trim();
1038
+ const key = id.toLowerCase();
1039
+ if (!id || seen.has(key)) continue;
1040
+ seen.add(key);
1041
+ out.push(id);
1042
+ }
1043
+ return out;
1044
+ }
1032
1045
  function normalizeThread(raw) {
1033
1046
  return {
1034
1047
  ...raw,
@@ -1053,6 +1066,7 @@ function normalizeThread(raw) {
1053
1066
  prIsInMergeQueue: Boolean(raw.prIsInMergeQueue),
1054
1067
  prLabels: Array.isArray(raw.prLabels) ? raw.prLabels : [],
1055
1068
  prChecksFailed: typeof raw.prChecksFailed === "boolean" ? raw.prChecksFailed : void 0,
1069
+ issueBlockedBy: sanitizeIssueBlockedBy(raw.issueBlockedBy),
1056
1070
  skipAutoArchiveOnMerge: Boolean(raw.skipAutoArchiveOnMerge),
1057
1071
  cowboy: Boolean(raw.cowboy),
1058
1072
  stackId: raw.stackId ?? null,
@@ -53,6 +53,73 @@ function coerceOrchestratorAgent(agent, fallback = "claude") {
53
53
  return isOrchestratorCapableAgent(agent) ? agent : fallback;
54
54
  }
55
55
 
56
+ // src/store/thread-option-defaults.ts
57
+ function normalizeAutonomy(value) {
58
+ return value === "default" || value === "full" ? value : void 0;
59
+ }
60
+ function getDefaultAgent(settings = loadAppSettings()) {
61
+ return settings.defaults.agent ?? "claude";
62
+ }
63
+ function getDefaultModel(settings = loadAppSettings()) {
64
+ const model = settings.defaults.model?.trim();
65
+ return model || null;
66
+ }
67
+ function getDefaultEffort(settings = loadAppSettings()) {
68
+ return normalizeThinkingEffort(settings.defaults.effort) ?? "high";
69
+ }
70
+ function getDefaultFast(settings = loadAppSettings()) {
71
+ return settings.defaults.fast === true;
72
+ }
73
+ function getDefaultAutonomy(settings = loadAppSettings()) {
74
+ return settings.defaults.autonomy === "default" ? "default" : "full";
75
+ }
76
+ function resolveThreadDefaults(settings = loadAppSettings()) {
77
+ return {
78
+ agent: getDefaultAgent(settings),
79
+ model: getDefaultModel(settings),
80
+ effort: getDefaultEffort(settings),
81
+ fast: getDefaultFast(settings),
82
+ autonomy: getDefaultAutonomy(settings)
83
+ };
84
+ }
85
+ function resolveOrchestratorDefaults(settings = loadAppSettings()) {
86
+ const account = resolveThreadDefaults(settings);
87
+ const orch = settings.defaults.orchestrator;
88
+ const agent = coerceOrchestratorAgent(orch?.agent ?? account.agent);
89
+ let model = orch ? orch.model?.trim() || null : account.model;
90
+ if (model && agent !== "cursor" && /^(default|auto)$/i.test(model.trim())) {
91
+ model = null;
92
+ }
93
+ return {
94
+ agent,
95
+ model,
96
+ effort: orch?.effort ?? account.effort,
97
+ fast: orch?.fast ?? account.fast,
98
+ autonomy: orch?.autonomy ?? account.autonomy
99
+ };
100
+ }
101
+ function mergeThreadOptionOverrides(defaults, overrides) {
102
+ const effort = overrides.effort === void 0 || overrides.effort === null ? defaults.effort : normalizeThinkingEffort(overrides.effort) ?? defaults.effort;
103
+ const agent = overrides.agent ?? defaults.agent;
104
+ let model = overrides.model === void 0 ? defaults.model : overrides.model?.trim() || null;
105
+ if (model && agent !== "cursor" && /^(default|auto)$/i.test(model.trim())) {
106
+ model = null;
107
+ }
108
+ return {
109
+ agent,
110
+ model,
111
+ effort,
112
+ fast: overrides.fast === void 0 || overrides.fast === null ? defaults.fast : Boolean(overrides.fast),
113
+ autonomy: overrides.autonomy == null ? defaults.autonomy : normalizeAutonomy(overrides.autonomy) ?? defaults.autonomy
114
+ };
115
+ }
116
+ function resolveNewThreadOptions(overrides = {}, settings = loadAppSettings()) {
117
+ return mergeThreadOptionOverrides(resolveThreadDefaults(settings), overrides);
118
+ }
119
+ function resolveNewOrchestratorOptions(overrides = {}, settings = loadAppSettings()) {
120
+ return mergeThreadOptionOverrides(resolveOrchestratorDefaults(settings), overrides);
121
+ }
122
+
56
123
  // src/store/account-profile.ts
57
124
  var PROFILE_NOTES_MAX = 2e3;
58
125
  var LEGACY_ROLE_LABELS = {
@@ -1239,6 +1306,8 @@ function normalizeOrchestratorDefaults(raw) {
1239
1306
  if (typeof source.fast === "boolean") {
1240
1307
  out.fast = source.fast;
1241
1308
  }
1309
+ const autonomy = normalizeAutonomy(source.autonomy);
1310
+ if (autonomy) out.autonomy = autonomy;
1242
1311
  return Object.keys(out).length > 0 ? out : void 0;
1243
1312
  }
1244
1313
  function normalizeDefaults(raw) {
@@ -1258,6 +1327,8 @@ function normalizeDefaults(raw) {
1258
1327
  if (typeof source.fast === "boolean") {
1259
1328
  out.fast = source.fast;
1260
1329
  }
1330
+ const autonomy = normalizeAutonomy(source.autonomy);
1331
+ if (autonomy) out.autonomy = autonomy;
1261
1332
  const notes = foldLegacyRolesIntoNotes(source.roles, source.role, source.notes);
1262
1333
  if (notes) out.notes = notes;
1263
1334
  const orchestrator = normalizeOrchestratorDefaults(source.orchestrator);
@@ -1923,6 +1994,14 @@ function applyOrchestratorDefaultsPatch(current, patch) {
1923
1994
  next.fast = Boolean(patch.fast);
1924
1995
  }
1925
1996
  }
1997
+ if ("autonomy" in patch) {
1998
+ if (patch.autonomy == null) {
1999
+ delete next.autonomy;
2000
+ } else {
2001
+ const autonomy = normalizeAutonomy(patch.autonomy);
2002
+ if (autonomy) next.autonomy = autonomy;
2003
+ }
2004
+ }
1926
2005
  return Object.keys(next).length > 0 ? next : void 0;
1927
2006
  }
1928
2007
  function updateDefaultsSettings(patch) {
@@ -1957,6 +2036,14 @@ function updateDefaultsSettings(patch) {
1957
2036
  defaults.fast = Boolean(patch.fast);
1958
2037
  }
1959
2038
  }
2039
+ if ("autonomy" in patch) {
2040
+ if (patch.autonomy == null) {
2041
+ delete defaults.autonomy;
2042
+ } else {
2043
+ const autonomy = normalizeAutonomy(patch.autonomy);
2044
+ if (autonomy) defaults.autonomy = autonomy;
2045
+ }
2046
+ }
1960
2047
  if ("notes" in patch) {
1961
2048
  const notes = normalizeProfileNotes(patch.notes);
1962
2049
  if (!notes) delete defaults.notes;
@@ -2006,19 +2093,6 @@ function resolveProjectReviewLabel(settings, repoPath) {
2006
2093
  if (!key) return "";
2007
2094
  return settings.projects[key]?.reviewLabel?.trim() || "";
2008
2095
  }
2009
- function getDefaultAgent(settings = loadAppSettings()) {
2010
- return settings.defaults.agent ?? "claude";
2011
- }
2012
- function getDefaultModel(settings = loadAppSettings()) {
2013
- const model = settings.defaults.model?.trim();
2014
- return model || null;
2015
- }
2016
- function getDefaultEffort(settings = loadAppSettings()) {
2017
- return normalizeThinkingEffort(settings.defaults.effort) ?? "high";
2018
- }
2019
- function getDefaultFast(settings = loadAppSettings()) {
2020
- return settings.defaults.fast === true;
2021
- }
2022
2096
  function resolveAccountProfileFromSettings(settings = loadAppSettings()) {
2023
2097
  return resolveViewerProfile(settings.defaults);
2024
2098
  }
@@ -2083,49 +2157,6 @@ function writeViewerContext(input) {
2083
2157
  updateDefaultsSettings({ notes: proposed || null });
2084
2158
  return { ok: true, scope: "account", context: proposed };
2085
2159
  }
2086
- function resolveThreadDefaults(settings = loadAppSettings()) {
2087
- return {
2088
- agent: getDefaultAgent(settings),
2089
- model: getDefaultModel(settings),
2090
- effort: getDefaultEffort(settings),
2091
- fast: getDefaultFast(settings)
2092
- };
2093
- }
2094
- function resolveOrchestratorDefaults(settings = loadAppSettings()) {
2095
- const account = resolveThreadDefaults(settings);
2096
- const orch = settings.defaults.orchestrator;
2097
- const agent = coerceOrchestratorAgent(orch?.agent ?? account.agent);
2098
- let model = orch ? orch.model?.trim() || null : account.model;
2099
- if (model && agent !== "cursor" && /^(default|auto)$/i.test(model.trim())) {
2100
- model = null;
2101
- }
2102
- return {
2103
- agent,
2104
- model,
2105
- effort: orch?.effort ?? account.effort,
2106
- fast: orch?.fast ?? account.fast
2107
- };
2108
- }
2109
- function mergeThreadOptionOverrides(defaults, overrides) {
2110
- const effort = overrides.effort === void 0 || overrides.effort === null ? defaults.effort : normalizeThinkingEffort(overrides.effort) ?? defaults.effort;
2111
- const agent = overrides.agent ?? defaults.agent;
2112
- let model = overrides.model === void 0 ? defaults.model : overrides.model?.trim() || null;
2113
- if (model && agent !== "cursor" && /^(default|auto)$/i.test(model.trim())) {
2114
- model = null;
2115
- }
2116
- return {
2117
- agent,
2118
- model,
2119
- effort,
2120
- fast: overrides.fast === void 0 || overrides.fast === null ? defaults.fast : Boolean(overrides.fast)
2121
- };
2122
- }
2123
- function resolveNewThreadOptions(overrides = {}, settings = loadAppSettings()) {
2124
- return mergeThreadOptionOverrides(resolveThreadDefaults(settings), overrides);
2125
- }
2126
- function resolveNewOrchestratorOptions(overrides = {}, settings = loadAppSettings()) {
2127
- return mergeThreadOptionOverrides(resolveOrchestratorDefaults(settings), overrides);
2128
- }
2129
2160
  function isLinearConnected(settings = loadAppSettings()) {
2130
2161
  return hasLinearCredentials(settings.integrations);
2131
2162
  }
@@ -2533,6 +2564,15 @@ export {
2533
2564
  isOrchestratorCapableAgent,
2534
2565
  assertOrchestratorCapableAgent,
2535
2566
  coerceOrchestratorAgent,
2567
+ getDefaultAgent,
2568
+ getDefaultModel,
2569
+ getDefaultEffort,
2570
+ getDefaultFast,
2571
+ getDefaultAutonomy,
2572
+ resolveThreadDefaults,
2573
+ resolveOrchestratorDefaults,
2574
+ resolveNewThreadOptions,
2575
+ resolveNewOrchestratorOptions,
2536
2576
  PROFILE_NOTES_MAX,
2537
2577
  foldLegacyRolesIntoNotes,
2538
2578
  resolveAccountProfile,
@@ -2625,18 +2665,10 @@ export {
2625
2665
  updateDefaultsSettings,
2626
2666
  updateProjectProfileSettings,
2627
2667
  resolveProjectReviewLabel,
2628
- getDefaultAgent,
2629
- getDefaultModel,
2630
- getDefaultEffort,
2631
- getDefaultFast,
2632
2668
  resolveAccountProfileFromSettings,
2633
2669
  resolveViewerProfileForRepo,
2634
2670
  readViewerContext,
2635
2671
  writeViewerContext,
2636
- resolveThreadDefaults,
2637
- resolveOrchestratorDefaults,
2638
- resolveNewThreadOptions,
2639
- resolveNewOrchestratorOptions,
2640
2672
  isLinearConnected,
2641
2673
  saveLinearOAuth,
2642
2674
  disconnectLinearConnection,
@@ -6,14 +6,14 @@ import {
6
6
  normalizeAbleTimeCredential,
7
7
  normalizeAbleTimeHost,
8
8
  rewriteAbleTimeError
9
- } from "./chunk-CFTOKVQN.js";
9
+ } from "./chunk-JRZTJ4F7.js";
10
10
  import {
11
11
  httpFetch
12
12
  } from "./chunk-2GPQZZLY.js";
13
13
  import {
14
14
  getAbleTimeAccessToken,
15
15
  getAbleTimeHost
16
- } from "./chunk-PHMFAU35.js";
16
+ } from "./chunk-GCHSJCCX.js";
17
17
 
18
18
  // src/integrations/abletime-rest.ts
19
19
  var ABLETIME_REST_PREFIX = "/api/public/v2";
@@ -11,11 +11,11 @@ import {
11
11
  isGlobalThread,
12
12
  isOrchestratorThread,
13
13
  isSlackCoordinatorThread
14
- } from "./chunk-S3KYDK6W.js";
14
+ } from "./chunk-PN32Z4JL.js";
15
15
  import {
16
16
  mergeAgentGitAuthEnv,
17
17
  resolveAgentGitAuthEnv
18
- } from "./chunk-DLGGLV2M.js";
18
+ } from "./chunk-5CTG5W7S.js";
19
19
  import {
20
20
  ATTACHMENTS_DIR,
21
21
  DETACHED_JOBS_DIR,
@@ -32,7 +32,7 @@ import {
32
32
  import {
33
33
  assertOrchestratorCapableAgent,
34
34
  contextTokens
35
- } from "./chunk-PHMFAU35.js";
35
+ } from "./chunk-GCHSJCCX.js";
36
36
  import {
37
37
  stripNestedElectronEnv
38
38
  } from "./chunk-WWUABK6B.js";
@@ -46,7 +46,7 @@ import {
46
46
  updateThread,
47
47
  worktreeNameFromPath,
48
48
  writeThread
49
- } from "./chunk-3UDRWMIM.js";
49
+ } from "./chunk-U35AHE2P.js";
50
50
  import {
51
51
  findConventionSetup,
52
52
  loadRepoSettings,
@@ -1702,7 +1702,7 @@ var PORT_RANGE_SIZE = 10;
1702
1702
  var RECLAIM_RETRY_DELAY_MS = 40;
1703
1703
  var RECLAIM_TRIES = 8;
1704
1704
  async function killReclaimable(ports, worktreePath, signal) {
1705
- const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-G6TKCMIW.js");
1705
+ const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-IMKNYQWZ.js");
1706
1706
  if (worktreePath) killStaleWorktreeListeners2(ports, worktreePath, signal);
1707
1707
  else killListenersOnPorts2(ports);
1708
1708
  }
@@ -32,18 +32,18 @@ import {
32
32
  tryReservePort,
33
33
  tryReservePorts,
34
34
  worktreeRunPortsPath
35
- } from "./chunk-7UP4D5XI.js";
35
+ } from "./chunk-IODJCVMN.js";
36
36
  import "./chunk-7Q327QF2.js";
37
- import "./chunk-ZSVKUOFH.js";
38
- import "./chunk-BIPXOHZI.js";
39
- import "./chunk-HG25AYBV.js";
37
+ import "./chunk-GFM63DTU.js";
38
+ import "./chunk-BPBDGJ43.js";
39
+ import "./chunk-CHUPIJP7.js";
40
40
  import "./chunk-2P4XKWV2.js";
41
41
  import "./chunk-F2PVRF3B.js";
42
42
  import "./chunk-5XNT6BCG.js";
43
43
  import "./chunk-6K64FJDD.js";
44
44
  import "./chunk-LG6RJBIY.js";
45
45
  import "./chunk-QVN2WOKJ.js";
46
- import "./chunk-A2YXQC65.js";
46
+ import "./chunk-U7PNCYNX.js";
47
47
  import "./chunk-77WWLBCI.js";
48
48
  import {
49
49
  stripNestedElectronEnv
@@ -34,21 +34,21 @@ import {
34
34
  tryReservePort,
35
35
  tryReservePorts,
36
36
  worktreeRunPortsPath
37
- } from "./chunk-5QYCCXXQ.js";
37
+ } from "./chunk-YR7NZYUT.js";
38
38
  import "./chunk-I5TESHDN.js";
39
- import "./chunk-S3KYDK6W.js";
40
- import "./chunk-DLGGLV2M.js";
39
+ import "./chunk-PN32Z4JL.js";
40
+ import "./chunk-5CTG5W7S.js";
41
41
  import "./chunk-N2WW62LF.js";
42
42
  import "./chunk-DD67JWTN.js";
43
43
  import "./chunk-2UG25RMK.js";
44
- import "./chunk-PHMFAU35.js";
44
+ import "./chunk-GCHSJCCX.js";
45
45
  import "./chunk-NSTQ6QKD.js";
46
46
  import {
47
47
  stripNestedElectronEnv
48
48
  } from "./chunk-WWUABK6B.js";
49
49
  import "./chunk-FJZWM2ON.js";
50
50
  import "./chunk-J2LNLI4S.js";
51
- import "./chunk-3UDRWMIM.js";
51
+ import "./chunk-U35AHE2P.js";
52
52
  import "./chunk-WMZIANPV.js";
53
53
  import "./chunk-KGZBYWZ3.js";
54
54
  import {
@@ -9,17 +9,17 @@ import {
9
9
  enrichWorkspacesWithGithub,
10
10
  ensureGlobalCoordinatorCwd,
11
11
  formatWorkspaceInventory
12
- } from "./chunk-S3KYDK6W.js";
13
- import "./chunk-DLGGLV2M.js";
12
+ } from "./chunk-PN32Z4JL.js";
13
+ import "./chunk-5CTG5W7S.js";
14
14
  import "./chunk-N2WW62LF.js";
15
15
  import "./chunk-DD67JWTN.js";
16
16
  import "./chunk-2UG25RMK.js";
17
- import "./chunk-PHMFAU35.js";
17
+ import "./chunk-GCHSJCCX.js";
18
18
  import "./chunk-NSTQ6QKD.js";
19
19
  import "./chunk-WWUABK6B.js";
20
20
  import "./chunk-FJZWM2ON.js";
21
21
  import "./chunk-J2LNLI4S.js";
22
- import "./chunk-3UDRWMIM.js";
22
+ import "./chunk-U35AHE2P.js";
23
23
  import "./chunk-WMZIANPV.js";
24
24
  import "./chunk-KGZBYWZ3.js";
25
25
  import "./chunk-WOU343SI.js";
@@ -7,15 +7,15 @@ import {
7
7
  enrichWorkspacesWithGithub,
8
8
  ensureGlobalCoordinatorCwd,
9
9
  formatWorkspaceInventory
10
- } from "./chunk-ZSVKUOFH.js";
11
- import "./chunk-BIPXOHZI.js";
12
- import "./chunk-HG25AYBV.js";
10
+ } from "./chunk-GFM63DTU.js";
11
+ import "./chunk-BPBDGJ43.js";
12
+ import "./chunk-CHUPIJP7.js";
13
13
  import "./chunk-2P4XKWV2.js";
14
14
  import "./chunk-F2PVRF3B.js";
15
15
  import "./chunk-6K64FJDD.js";
16
16
  import "./chunk-LG6RJBIY.js";
17
17
  import "./chunk-QVN2WOKJ.js";
18
- import "./chunk-A2YXQC65.js";
18
+ import "./chunk-U7PNCYNX.js";
19
19
  import "./chunk-77WWLBCI.js";
20
20
  import "./chunk-4TR3HZFT.js";
21
21
  import "./chunk-WDRMZKVB.js";
@@ -18,15 +18,15 @@ import {
18
18
  remoteCoordinatorSourceRef,
19
19
  slackCoordinatorSourceRef,
20
20
  takenTeamSlugsForOrchestration
21
- } from "./chunk-ZSVKUOFH.js";
22
- import "./chunk-BIPXOHZI.js";
23
- import "./chunk-HG25AYBV.js";
21
+ } from "./chunk-GFM63DTU.js";
22
+ import "./chunk-BPBDGJ43.js";
23
+ import "./chunk-CHUPIJP7.js";
24
24
  import "./chunk-2P4XKWV2.js";
25
25
  import "./chunk-F2PVRF3B.js";
26
26
  import "./chunk-6K64FJDD.js";
27
27
  import "./chunk-LG6RJBIY.js";
28
28
  import "./chunk-QVN2WOKJ.js";
29
- import "./chunk-A2YXQC65.js";
29
+ import "./chunk-U7PNCYNX.js";
30
30
  import "./chunk-77WWLBCI.js";
31
31
  import "./chunk-4TR3HZFT.js";
32
32
  import "./chunk-WDRMZKVB.js";