@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
@@ -20,17 +20,17 @@ import {
20
20
  remoteCoordinatorSourceRef,
21
21
  slackCoordinatorSourceRef,
22
22
  takenTeamSlugsForOrchestration
23
- } from "./chunk-S3KYDK6W.js";
24
- import "./chunk-DLGGLV2M.js";
23
+ } from "./chunk-PN32Z4JL.js";
24
+ import "./chunk-5CTG5W7S.js";
25
25
  import "./chunk-N2WW62LF.js";
26
26
  import "./chunk-DD67JWTN.js";
27
27
  import "./chunk-2UG25RMK.js";
28
- import "./chunk-PHMFAU35.js";
28
+ import "./chunk-GCHSJCCX.js";
29
29
  import "./chunk-NSTQ6QKD.js";
30
30
  import "./chunk-WWUABK6B.js";
31
31
  import "./chunk-FJZWM2ON.js";
32
32
  import "./chunk-J2LNLI4S.js";
33
- import "./chunk-3UDRWMIM.js";
33
+ import "./chunk-U35AHE2P.js";
34
34
  import "./chunk-WMZIANPV.js";
35
35
  import "./chunk-KGZBYWZ3.js";
36
36
  import {
package/dist/index.cjs CHANGED
@@ -975,6 +975,81 @@ var init_orchestrator_capable = __esm({
975
975
  }
976
976
  });
977
977
 
978
+ // src/store/thread-option-defaults.ts
979
+ function normalizeAutonomy(value) {
980
+ return value === "default" || value === "full" ? value : void 0;
981
+ }
982
+ function getDefaultAgent(settings = loadAppSettings()) {
983
+ return settings.defaults.agent ?? "claude";
984
+ }
985
+ function getDefaultModel(settings = loadAppSettings()) {
986
+ const model = settings.defaults.model?.trim();
987
+ return model || null;
988
+ }
989
+ function getDefaultEffort(settings = loadAppSettings()) {
990
+ return normalizeThinkingEffort(settings.defaults.effort) ?? "high";
991
+ }
992
+ function getDefaultFast(settings = loadAppSettings()) {
993
+ return settings.defaults.fast === true;
994
+ }
995
+ function getDefaultAutonomy(settings = loadAppSettings()) {
996
+ return settings.defaults.autonomy === "default" ? "default" : "full";
997
+ }
998
+ function resolveThreadDefaults(settings = loadAppSettings()) {
999
+ return {
1000
+ agent: getDefaultAgent(settings),
1001
+ model: getDefaultModel(settings),
1002
+ effort: getDefaultEffort(settings),
1003
+ fast: getDefaultFast(settings),
1004
+ autonomy: getDefaultAutonomy(settings)
1005
+ };
1006
+ }
1007
+ function resolveOrchestratorDefaults(settings = loadAppSettings()) {
1008
+ const account = resolveThreadDefaults(settings);
1009
+ const orch = settings.defaults.orchestrator;
1010
+ const agent = coerceOrchestratorAgent(orch?.agent ?? account.agent);
1011
+ let model = orch ? orch.model?.trim() || null : account.model;
1012
+ if (model && agent !== "cursor" && /^(default|auto)$/i.test(model.trim())) {
1013
+ model = null;
1014
+ }
1015
+ return {
1016
+ agent,
1017
+ model,
1018
+ effort: orch?.effort ?? account.effort,
1019
+ fast: orch?.fast ?? account.fast,
1020
+ autonomy: orch?.autonomy ?? account.autonomy
1021
+ };
1022
+ }
1023
+ function mergeThreadOptionOverrides(defaults, overrides) {
1024
+ const effort = overrides.effort === void 0 || overrides.effort === null ? defaults.effort : normalizeThinkingEffort(overrides.effort) ?? defaults.effort;
1025
+ const agent = overrides.agent ?? defaults.agent;
1026
+ let model = overrides.model === void 0 ? defaults.model : overrides.model?.trim() || null;
1027
+ if (model && agent !== "cursor" && /^(default|auto)$/i.test(model.trim())) {
1028
+ model = null;
1029
+ }
1030
+ return {
1031
+ agent,
1032
+ model,
1033
+ effort,
1034
+ fast: overrides.fast === void 0 || overrides.fast === null ? defaults.fast : Boolean(overrides.fast),
1035
+ autonomy: overrides.autonomy == null ? defaults.autonomy : normalizeAutonomy(overrides.autonomy) ?? defaults.autonomy
1036
+ };
1037
+ }
1038
+ function resolveNewThreadOptions(overrides = {}, settings = loadAppSettings()) {
1039
+ return mergeThreadOptionOverrides(resolveThreadDefaults(settings), overrides);
1040
+ }
1041
+ function resolveNewOrchestratorOptions(overrides = {}, settings = loadAppSettings()) {
1042
+ return mergeThreadOptionOverrides(resolveOrchestratorDefaults(settings), overrides);
1043
+ }
1044
+ var init_thread_option_defaults = __esm({
1045
+ "src/store/thread-option-defaults.ts"() {
1046
+ "use strict";
1047
+ init_orchestrator_capable();
1048
+ init_thinking_effort();
1049
+ init_app_settings();
1050
+ }
1051
+ });
1052
+
978
1053
  // src/hook/nested-electron-env.ts
979
1054
  function isNestedElectronEnvKey(key) {
980
1055
  return NESTED_ELECTRON_ENV_PREFIXES.some((prefix) => key.startsWith(prefix));
@@ -2187,6 +2262,7 @@ __export(app_settings_exports, {
2187
2262
  getAbleTimeAccessToken: () => getAbleTimeAccessToken,
2188
2263
  getAbleTimeHost: () => getAbleTimeHost,
2189
2264
  getDefaultAgent: () => getDefaultAgent,
2265
+ getDefaultAutonomy: () => getDefaultAutonomy,
2190
2266
  getDefaultEffort: () => getDefaultEffort,
2191
2267
  getDefaultFast: () => getDefaultFast,
2192
2268
  getDefaultModel: () => getDefaultModel,
@@ -2530,6 +2606,8 @@ function normalizeOrchestratorDefaults(raw) {
2530
2606
  if (typeof source.fast === "boolean") {
2531
2607
  out.fast = source.fast;
2532
2608
  }
2609
+ const autonomy = normalizeAutonomy(source.autonomy);
2610
+ if (autonomy) out.autonomy = autonomy;
2533
2611
  return Object.keys(out).length > 0 ? out : void 0;
2534
2612
  }
2535
2613
  function normalizeDefaults(raw) {
@@ -2549,6 +2627,8 @@ function normalizeDefaults(raw) {
2549
2627
  if (typeof source.fast === "boolean") {
2550
2628
  out.fast = source.fast;
2551
2629
  }
2630
+ const autonomy = normalizeAutonomy(source.autonomy);
2631
+ if (autonomy) out.autonomy = autonomy;
2552
2632
  const notes = foldLegacyRolesIntoNotes(source.roles, source.role, source.notes);
2553
2633
  if (notes) out.notes = notes;
2554
2634
  const orchestrator = normalizeOrchestratorDefaults(source.orchestrator);
@@ -3201,6 +3281,14 @@ function applyOrchestratorDefaultsPatch(current, patch) {
3201
3281
  next.fast = Boolean(patch.fast);
3202
3282
  }
3203
3283
  }
3284
+ if ("autonomy" in patch) {
3285
+ if (patch.autonomy == null) {
3286
+ delete next.autonomy;
3287
+ } else {
3288
+ const autonomy = normalizeAutonomy(patch.autonomy);
3289
+ if (autonomy) next.autonomy = autonomy;
3290
+ }
3291
+ }
3204
3292
  return Object.keys(next).length > 0 ? next : void 0;
3205
3293
  }
3206
3294
  function updateDefaultsSettings(patch) {
@@ -3235,6 +3323,14 @@ function updateDefaultsSettings(patch) {
3235
3323
  defaults.fast = Boolean(patch.fast);
3236
3324
  }
3237
3325
  }
3326
+ if ("autonomy" in patch) {
3327
+ if (patch.autonomy == null) {
3328
+ delete defaults.autonomy;
3329
+ } else {
3330
+ const autonomy = normalizeAutonomy(patch.autonomy);
3331
+ if (autonomy) defaults.autonomy = autonomy;
3332
+ }
3333
+ }
3238
3334
  if ("notes" in patch) {
3239
3335
  const notes = normalizeProfileNotes(patch.notes);
3240
3336
  if (!notes) delete defaults.notes;
@@ -3284,19 +3380,6 @@ function resolveProjectReviewLabel(settings, repoPath) {
3284
3380
  if (!key) return "";
3285
3381
  return settings.projects[key]?.reviewLabel?.trim() || "";
3286
3382
  }
3287
- function getDefaultAgent(settings = loadAppSettings()) {
3288
- return settings.defaults.agent ?? "claude";
3289
- }
3290
- function getDefaultModel(settings = loadAppSettings()) {
3291
- const model = settings.defaults.model?.trim();
3292
- return model || null;
3293
- }
3294
- function getDefaultEffort(settings = loadAppSettings()) {
3295
- return normalizeThinkingEffort(settings.defaults.effort) ?? "high";
3296
- }
3297
- function getDefaultFast(settings = loadAppSettings()) {
3298
- return settings.defaults.fast === true;
3299
- }
3300
3383
  function resolveAccountProfileFromSettings(settings = loadAppSettings()) {
3301
3384
  return resolveViewerProfile(settings.defaults);
3302
3385
  }
@@ -3359,49 +3442,6 @@ function writeViewerContext(input) {
3359
3442
  updateDefaultsSettings({ notes: proposed || null });
3360
3443
  return { ok: true, scope: "account", context: proposed };
3361
3444
  }
3362
- function resolveThreadDefaults(settings = loadAppSettings()) {
3363
- return {
3364
- agent: getDefaultAgent(settings),
3365
- model: getDefaultModel(settings),
3366
- effort: getDefaultEffort(settings),
3367
- fast: getDefaultFast(settings)
3368
- };
3369
- }
3370
- function resolveOrchestratorDefaults(settings = loadAppSettings()) {
3371
- const account = resolveThreadDefaults(settings);
3372
- const orch = settings.defaults.orchestrator;
3373
- const agent = coerceOrchestratorAgent(orch?.agent ?? account.agent);
3374
- let model = orch ? orch.model?.trim() || null : account.model;
3375
- if (model && agent !== "cursor" && /^(default|auto)$/i.test(model.trim())) {
3376
- model = null;
3377
- }
3378
- return {
3379
- agent,
3380
- model,
3381
- effort: orch?.effort ?? account.effort,
3382
- fast: orch?.fast ?? account.fast
3383
- };
3384
- }
3385
- function mergeThreadOptionOverrides(defaults, overrides) {
3386
- const effort = overrides.effort === void 0 || overrides.effort === null ? defaults.effort : normalizeThinkingEffort(overrides.effort) ?? defaults.effort;
3387
- const agent = overrides.agent ?? defaults.agent;
3388
- let model = overrides.model === void 0 ? defaults.model : overrides.model?.trim() || null;
3389
- if (model && agent !== "cursor" && /^(default|auto)$/i.test(model.trim())) {
3390
- model = null;
3391
- }
3392
- return {
3393
- agent,
3394
- model,
3395
- effort,
3396
- fast: overrides.fast === void 0 || overrides.fast === null ? defaults.fast : Boolean(overrides.fast)
3397
- };
3398
- }
3399
- function resolveNewThreadOptions(overrides = {}, settings = loadAppSettings()) {
3400
- return mergeThreadOptionOverrides(resolveThreadDefaults(settings), overrides);
3401
- }
3402
- function resolveNewOrchestratorOptions(overrides = {}, settings = loadAppSettings()) {
3403
- return mergeThreadOptionOverrides(resolveOrchestratorDefaults(settings), overrides);
3404
- }
3405
3445
  function isLinearConnected(settings = loadAppSettings()) {
3406
3446
  return hasLinearCredentials(settings.integrations);
3407
3447
  }
@@ -3806,6 +3846,7 @@ var init_app_settings = __esm({
3806
3846
  import_node_os4 = require("os");
3807
3847
  import_node_path11 = require("path");
3808
3848
  init_orchestrator_capable();
3849
+ init_thread_option_defaults();
3809
3850
  init_thinking_effort();
3810
3851
  init_nested_electron_env();
3811
3852
  init_account_profile();
@@ -3820,6 +3861,7 @@ var init_app_settings = __esm({
3820
3861
  init_managed_accounts();
3821
3862
  init_usage_on_limit();
3822
3863
  init_issue_source_labels();
3864
+ init_thread_option_defaults();
3823
3865
  init_account_profile();
3824
3866
  HARNESS_ENV_KEYS = {
3825
3867
  claude: "ANTHROPIC_API_KEY",
@@ -5102,6 +5144,19 @@ function normalizeRunScriptRequest(raw) {
5102
5144
  error: req.error ?? null
5103
5145
  };
5104
5146
  }
5147
+ function sanitizeIssueBlockedBy(value) {
5148
+ if (!Array.isArray(value)) return void 0;
5149
+ const out = [];
5150
+ const seen = /* @__PURE__ */ new Set();
5151
+ for (const item of value) {
5152
+ const id = String(item ?? "").trim();
5153
+ const key = id.toLowerCase();
5154
+ if (!id || seen.has(key)) continue;
5155
+ seen.add(key);
5156
+ out.push(id);
5157
+ }
5158
+ return out;
5159
+ }
5105
5160
  function normalizeThread(raw) {
5106
5161
  return {
5107
5162
  ...raw,
@@ -5126,6 +5181,7 @@ function normalizeThread(raw) {
5126
5181
  prIsInMergeQueue: Boolean(raw.prIsInMergeQueue),
5127
5182
  prLabels: Array.isArray(raw.prLabels) ? raw.prLabels : [],
5128
5183
  prChecksFailed: typeof raw.prChecksFailed === "boolean" ? raw.prChecksFailed : void 0,
5184
+ issueBlockedBy: sanitizeIssueBlockedBy(raw.issueBlockedBy),
5129
5185
  skipAutoArchiveOnMerge: Boolean(raw.skipAutoArchiveOnMerge),
5130
5186
  cowboy: Boolean(raw.cowboy),
5131
5187
  stackId: raw.stackId ?? null,
@@ -6971,6 +7027,27 @@ var init_agent_block_view = __esm({
6971
7027
  }
6972
7028
  });
6973
7029
 
7030
+ // src/board/issue-blocked-view.ts
7031
+ function issueBlockedByIds(group) {
7032
+ const out = [];
7033
+ const seen = /* @__PURE__ */ new Set();
7034
+ for (const thread of group) {
7035
+ for (const raw of thread.issueBlockedBy ?? []) {
7036
+ const id = String(raw ?? "").trim();
7037
+ const key = id.toLowerCase();
7038
+ if (!id || seen.has(key)) continue;
7039
+ seen.add(key);
7040
+ out.push(id);
7041
+ }
7042
+ }
7043
+ return out;
7044
+ }
7045
+ var init_issue_blocked_view = __esm({
7046
+ "src/board/issue-blocked-view.ts"() {
7047
+ "use strict";
7048
+ }
7049
+ });
7050
+
6974
7051
  // src/board/pr-state.ts
6975
7052
  function isOpenPrState(prUrl, prState) {
6976
7053
  if (!prUrl?.trim()) return false;
@@ -7709,6 +7786,7 @@ function toThreadCard(group) {
7709
7786
  const thread = group[0];
7710
7787
  const withPr = group.find((t) => t.prUrl?.trim()) ?? thread;
7711
7788
  const tags = workspaceTagsFromGroup(group);
7789
+ const issueBlockedBy = issueBlockedByIds(group);
7712
7790
  return {
7713
7791
  kind: "thread",
7714
7792
  id: thread.id,
@@ -7722,6 +7800,7 @@ function toThreadCard(group) {
7722
7800
  link: `sideboard://chat/${thread.id}`,
7723
7801
  ...group.length > 1 ? { chatCount: group.length } : {},
7724
7802
  ...threadCardBlockFields(group) ?? {},
7803
+ ...issueBlockedBy.length > 0 ? { issueBlockedBy } : {},
7725
7804
  ...tags.length > 0 ? { tags } : {}
7726
7805
  };
7727
7806
  }
@@ -7805,9 +7884,11 @@ var init_home_board = __esm({
7805
7884
  init_message_parts();
7806
7885
  init_worktree_labels();
7807
7886
  init_agent_block_view();
7887
+ init_issue_blocked_view();
7808
7888
  init_pr_state();
7809
7889
  init_worktree_ownership();
7810
7890
  init_worktree_list_badges();
7891
+ init_issue_blocked_view();
7811
7892
  init_agent_block_view();
7812
7893
  GLOBAL_WORKSPACE_ID = "__global__";
7813
7894
  BOARD_COLUMN_DEFS = [
@@ -7821,7 +7902,7 @@ var init_home_board = __esm({
7821
7902
  DEFAULT_WORKTREE_SORT = "created";
7822
7903
  DEFAULTISH_BRANCH = /^(main|master|develop|development|trunk|default|head)$/;
7823
7904
  BOARD_PAGE_SIZE = 40;
7824
- HOME_BOARD_AGENT_HINT = "Home is a Kanban of workspaces (one card per checkout; sibling chats on a card are separate agents). Do not create a second workspace for a ticket, PR, or named branch that already has a live checkout \u2014 create_workspace / start_board_card return that checkout (alreadyStarted) and its chats. Add another agent with fork_chat. Creating from the default branch still opens a new isolated workspace. Columns are the path to merge: New (no PR) \u2192 Draft (draft PR) \u2192 Review (open PR) \u2192 Approved (approved, not merged) \u2192 Merged. ownership=mine is PRs you authored (or WIP with no PR); ownership=reviewing is someone else's PR (or a review-requested checkout). Viewer login comes from gh, not a setting. Archive removes the card to Settings \u2192 History (list_archive to browse, restore_workspace to bring it back). Queued/running are activity on the card, not columns. blockedReason means an agent on that card is waiting on a person (the question, plan approval, or a reported block) \u2014 read it and do not send_to_chat a check-in. Orchestration chats stay in the sidebar. Do not invent status.";
7905
+ HOME_BOARD_AGENT_HINT = "Home is a Kanban of workspaces (one card per checkout; sibling chats on a card are separate agents). Do not create a second workspace for a ticket, PR, or named branch that already has a live checkout \u2014 create_workspace / start_board_card return that checkout (alreadyStarted) and its chats. Add another agent with fork_chat. Creating from the default branch still opens a new isolated workspace. Columns are the path to merge: New (no PR) \u2192 Draft (draft PR) \u2192 Review (open PR) \u2192 Approved (approved, not merged) \u2192 Merged. ownership=mine is PRs you authored (or WIP with no PR); ownership=reviewing is someone else's PR (or a review-requested checkout). Viewer login comes from gh, not a setting. Archive removes the card to Settings \u2192 History (list_archive to browse, restore_workspace to bring it back). Queued/running are activity on the card, not columns. blockedReason means an agent on that card is waiting on a person (the question, plan approval, or a reported block) \u2014 read it and do not send_to_chat a check-in. issueBlockedBy, when present, lists issues blocking that workspace's source ticket (the tracker dependency, not a person). Orchestration chats stay in the sidebar. Do not invent status.";
7825
7906
  }
7826
7907
  });
7827
7908
 
@@ -12550,7 +12631,8 @@ function createGlobalChat(opts) {
12550
12631
  agent: opts.agent,
12551
12632
  model: opts.model,
12552
12633
  effort: opts.effort,
12553
- fast: opts.fast
12634
+ fast: opts.fast,
12635
+ autonomy: opts.autonomy
12554
12636
  });
12555
12637
  const agent = assertOrchestratorCapableAgent(resolved.agent);
12556
12638
  const worktreePath = globalAgentCwd();
@@ -12564,7 +12646,7 @@ function createGlobalChat(opts) {
12564
12646
  worktreePath,
12565
12647
  repoPath: GLOBAL_WORKSPACE_ID2,
12566
12648
  agent,
12567
- autonomy: opts.autonomy ?? "default",
12649
+ autonomy: resolved.autonomy,
12568
12650
  model: resolved.model,
12569
12651
  effort: resolved.effort,
12570
12652
  fast: resolved.fast,
@@ -12641,6 +12723,7 @@ function ensureSlackCoordinator(teamId, userId, agent, opts) {
12641
12723
  if (existing.model !== defaults.model) patch.model = defaults.model;
12642
12724
  if (existing.effort !== defaults.effort) patch.effort = defaults.effort;
12643
12725
  if (existing.fast !== defaults.fast) patch.fast = defaults.fast;
12726
+ if (existing.autonomy !== defaults.autonomy) patch.autonomy = defaults.autonomy;
12644
12727
  }
12645
12728
  if (Object.keys(patch).length > 0) {
12646
12729
  return updateThread(existing.id, patch);
@@ -12699,6 +12782,7 @@ function ensureCloudCoordinator(agent) {
12699
12782
  if (existing.model !== defaults.model) patch.model = defaults.model;
12700
12783
  if (existing.effort !== defaults.effort) patch.effort = defaults.effort;
12701
12784
  if (existing.fast !== defaults.fast) patch.fast = defaults.fast;
12785
+ if (existing.autonomy !== defaults.autonomy) patch.autonomy = defaults.autonomy;
12702
12786
  }
12703
12787
  if (Object.keys(patch).length > 0) {
12704
12788
  return updateThread(existing.id, patch);
@@ -25275,7 +25359,8 @@ async function createThread(input, _onSetupLine) {
25275
25359
  agent: input.agent,
25276
25360
  model: input.model,
25277
25361
  effort: input.effort,
25278
- fast: input.fast
25362
+ fast: input.fast,
25363
+ autonomy: input.autonomy
25279
25364
  });
25280
25365
  await requireAgent(resolved.agent);
25281
25366
  if (input.cowboy) {
@@ -25314,7 +25399,7 @@ async function createThread(input, _onSetupLine) {
25314
25399
  worktreePath: repoPath,
25315
25400
  repoPath,
25316
25401
  agent: resolved.agent,
25317
- autonomy: input.autonomy ?? "default",
25402
+ autonomy: resolved.autonomy,
25318
25403
  model: resolved.model,
25319
25404
  effort: resolved.effort,
25320
25405
  fast: resolved.fast,
@@ -25428,7 +25513,7 @@ async function createThread(input, _onSetupLine) {
25428
25513
  worktreePath,
25429
25514
  repoPath,
25430
25515
  agent: resolved.agent,
25431
- autonomy: input.autonomy ?? "default",
25516
+ autonomy: resolved.autonomy,
25432
25517
  model: resolved.model,
25433
25518
  effort: resolved.effort,
25434
25519
  fast: resolved.fast,
@@ -26607,7 +26692,7 @@ async function openStackLayer(input, _onSetupLine) {
26607
26692
  worktreePath,
26608
26693
  repoPath,
26609
26694
  agent: input.agent,
26610
- autonomy: input.autonomy ?? "default",
26695
+ autonomy: input.autonomy ?? getDefaultAutonomy(),
26611
26696
  model: input.model ?? null,
26612
26697
  effort: input.effort ?? "high",
26613
26698
  fast: Boolean(input.fast),
@@ -26816,6 +26901,7 @@ var init_stack_layers = __esm({
26816
26901
  init_worktree();
26817
26902
  init_conductor();
26818
26903
  init_thread_store();
26904
+ init_app_settings();
26819
26905
  init_workspaces();
26820
26906
  }
26821
26907
  });
@@ -33115,6 +33201,7 @@ __export(index_exports, {
33115
33201
  getCaffeinateHold: () => getCaffeinateHold,
33116
33202
  getClaudePlanUsage: () => getClaudePlanUsage,
33117
33203
  getDefaultAgent: () => getDefaultAgent,
33204
+ getDefaultAutonomy: () => getDefaultAutonomy,
33118
33205
  getDefaultEffort: () => getDefaultEffort,
33119
33206
  getDefaultFast: () => getDefaultFast,
33120
33207
  getDefaultModel: () => getDefaultModel,
@@ -34836,7 +34923,8 @@ function row(resolved) {
34836
34923
  agent: resolved.agent,
34837
34924
  model: resolved.model,
34838
34925
  effort: resolved.effort,
34839
- fast: resolved.fast
34926
+ fast: resolved.fast,
34927
+ autonomy: resolved.autonomy
34840
34928
  };
34841
34929
  }
34842
34930
  function phoneAccountDefaults() {
@@ -35507,7 +35595,7 @@ function draftAgentOptions(draft, defaults) {
35507
35595
  effort: draft?.effort ?? defaults.effort,
35508
35596
  fast: draft?.fast ?? defaults.fast,
35509
35597
  planMode: Boolean(draft?.planMode),
35510
- autonomy: draft?.autonomy
35598
+ autonomy: draft?.autonomy ?? defaults.autonomy
35511
35599
  };
35512
35600
  }
35513
35601
  function createPhoneChat(agent) {
@@ -42013,6 +42101,7 @@ async function createOrchChildThread(orch, args, resolveNewThreadOptions2) {
42013
42101
  model: opts.model,
42014
42102
  effort: opts.effort,
42015
42103
  fast: opts.fast,
42104
+ autonomy: opts.autonomy,
42016
42105
  repoPath: args.repoPath,
42017
42106
  title: args.title,
42018
42107
  parentThreadId: parentId || null,
@@ -47830,6 +47919,7 @@ async function pollSlackOutboundWatches(opts) {
47830
47919
  getCaffeinateHold,
47831
47920
  getClaudePlanUsage,
47832
47921
  getDefaultAgent,
47922
+ getDefaultAutonomy,
47833
47923
  getDefaultEffort,
47834
47924
  getDefaultFast,
47835
47925
  getDefaultModel,