@sideboard-ai/core 0.1.274 → 0.1.276

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 (48) hide show
  1. package/dist/{abletime-4ZSDI4YP.js → abletime-VCVPSLSU.js} +4 -4
  2. package/dist/{abletime-JNQAHLHH.js → abletime-VRATUMDO.js} +4 -4
  3. package/dist/{abletime-oauth-4RXZH2KU.js → abletime-oauth-4C4G2J3R.js} +3 -3
  4. package/dist/{abletime-oauth-DCEIINYT.js → abletime-oauth-4K7MICAD.js} +3 -3
  5. package/dist/{abletime-rest-KVBJFVFD.js → abletime-rest-6N63ZVQ3.js} +3 -3
  6. package/dist/{abletime-rest-VN6PZ6P2.js → abletime-rest-PIBCNHF3.js} +3 -3
  7. package/dist/{agents-LAFFXBBZ.js → agents-2FOWVJCN.js} +4 -4
  8. package/dist/{agents-ZCO37SKG.js → agents-JBVJRDH3.js} +4 -4
  9. package/dist/{app-settings-RAC4PSSP.js → app-settings-EQQZQNYD.js} +1 -1
  10. package/dist/{app-settings-L5HGYXWJ.js → app-settings-NI4X5HW3.js} +1 -1
  11. package/dist/{chunk-UXI52MLJ.js → chunk-2J34G3WJ.js} +3 -3
  12. package/dist/{chunk-PTNGMA5C.js → chunk-A2G3ZBJS.js} +2 -2
  13. package/dist/{chunk-BJ5T22L5.js → chunk-FELFTNH2.js} +22 -21
  14. package/dist/{chunk-GCSG3OGV.js → chunk-HOMZKYHF.js} +29 -27
  15. package/dist/{chunk-GONPMH36.js → chunk-IJDQKC5A.js} +5 -5
  16. package/dist/{chunk-USBZ7PH4.js → chunk-IPPY3FG5.js} +1 -1
  17. package/dist/{chunk-NWE3NOWQ.js → chunk-K7MWJLR7.js} +1 -1
  18. package/dist/{chunk-DVTEC4BF.js → chunk-MGS5T2A3.js} +29 -27
  19. package/dist/{chunk-ADWNK2JH.js → chunk-NIB2IZ6J.js} +5 -5
  20. package/dist/{chunk-AGXZAMOF.js → chunk-NQ7JMVSU.js} +2 -2
  21. package/dist/{chunk-JLDJGGCL.js → chunk-NT7RIWRR.js} +5 -5
  22. package/dist/{chunk-L6CYOON4.js → chunk-PZURG3XN.js} +5 -5
  23. package/dist/{chunk-LAIBYKZS.js → chunk-QINJKNLR.js} +3 -3
  24. package/dist/{chunk-2QUILREI.js → chunk-QTZO4LPU.js} +2 -2
  25. package/dist/{chunk-KZ2CDZBZ.js → chunk-R7HLXD4I.js} +3 -3
  26. package/dist/{chunk-XIVM7K77.js → chunk-SQOAFR2U.js} +23 -22
  27. package/dist/{chunk-OIENQEGG.js → chunk-WRIMAEF2.js} +67 -122
  28. package/dist/{chunk-DBFAFI5A.js → chunk-XKZAVGTT.js} +2 -2
  29. package/dist/{chunk-PAH7KDL2.js → chunk-YNTXWFXT.js} +67 -122
  30. package/dist/{conductor-B2BXSA7N.js → conductor-GBCE37K4.js} +4 -4
  31. package/dist/{conductor-DXBLL23V.js → conductor-YYQKZAND.js} +4 -4
  32. package/dist/{coordinator-prompt-4KVA6XUX.js → coordinator-prompt-B3GLVXPP.js} +3 -3
  33. package/dist/{coordinator-prompt-MVUHFNSC.js → coordinator-prompt-SFZCZ3HR.js} +3 -3
  34. package/dist/{global-workspace-FR7QTLPK.js → global-workspace-7XEXTIHL.js} +3 -3
  35. package/dist/{global-workspace-34Z2IWYQ.js → global-workspace-N2YYJKA5.js} +3 -3
  36. package/dist/index.cjs +1989 -182
  37. package/dist/index.d.cts +121 -22
  38. package/dist/index.d.ts +121 -22
  39. package/dist/index.js +1872 -45
  40. package/dist/mcp/run-stdio.cjs +90 -136
  41. package/dist/mcp/run-stdio.js +11 -11
  42. package/dist/{orchestrator-6T35CJHB.js → orchestrator-6QJLM6Y4.js} +6 -6
  43. package/dist/{orchestrator-QRSEOHXI.js → orchestrator-QMKVXVUR.js} +6 -6
  44. package/dist/{workspaces-5GERYHDJ.js → workspaces-BJCHMGVG.js} +3 -3
  45. package/dist/{workspaces-2JBDUMM6.js → workspaces-PBB6HY2D.js} +3 -3
  46. package/dist/{worktree-ACW23KJ5.js → worktree-L57T3KH7.js} +2 -2
  47. package/dist/{worktree-C7RPVHZ7.js → worktree-Q6UJHG25.js} +2 -2
  48. package/package.json +1 -1
@@ -12,13 +12,13 @@ import {
12
12
  } from "./chunk-FAGK33E2.js";
13
13
  import {
14
14
  isOrchestratorThread
15
- } from "./chunk-PTNGMA5C.js";
15
+ } from "./chunk-A2G3ZBJS.js";
16
16
  import {
17
17
  codexUnattendedGitConfigArgs,
18
18
  mergeAgentGitAuthEnv,
19
19
  resolveAgentGitAuthEnv,
20
20
  resolveCodexGitWritableRoots
21
- } from "./chunk-USBZ7PH4.js";
21
+ } from "./chunk-IPPY3FG5.js";
22
22
  import {
23
23
  loadBrightsyConfig
24
24
  } from "./chunk-ROPGQRPU.js";
@@ -71,7 +71,7 @@ import {
71
71
  loadAppSettings,
72
72
  resolveAgentExecutable,
73
73
  resolveClaudeExecutable
74
- } from "./chunk-PAH7KDL2.js";
74
+ } from "./chunk-YNTXWFXT.js";
75
75
  import {
76
76
  isElectronLikeCommand,
77
77
  unwrapStrippedElectronLaunch
@@ -1745,7 +1745,7 @@ var claudeAdapter = {
1745
1745
  );
1746
1746
  }
1747
1747
  const mode = permissionMode(thread);
1748
- const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-34Z2IWYQ.js");
1748
+ const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-N2YYJKA5.js");
1749
1749
  const isOrchestrator = isOrchestratorThread2(thread);
1750
1750
  const rpc = worktreeAgentRpc(isOrchestrator);
1751
1751
  const injectedServers = await buildInjectedMcpServers({
@@ -3893,7 +3893,7 @@ async function loginAgent(agent) {
3893
3893
  };
3894
3894
  }
3895
3895
  async function loginManagedAccount(accountId) {
3896
- const { loadAppSettings: loadAppSettings2 } = await import("./app-settings-L5HGYXWJ.js");
3896
+ const { loadAppSettings: loadAppSettings2 } = await import("./app-settings-NI4X5HW3.js");
3897
3897
  const { loginEnvPrefix } = await import("./managed-accounts-2AK5RIAF.js");
3898
3898
  const account = loadAppSettings2().accounts.accounts.find((a) => a.id === accountId);
3899
3899
  if (!account) {
@@ -4,14 +4,14 @@ import {
4
4
  normalizeAbleTimeCredential,
5
5
  normalizeAbleTimeHost,
6
6
  rewriteAbleTimeError
7
- } from "./chunk-L6CYOON4.js";
7
+ } from "./chunk-PZURG3XN.js";
8
8
  import {
9
9
  httpFetch
10
10
  } from "./chunk-N7WZ6NIN.js";
11
11
  import {
12
12
  getAbleTimeAccessToken,
13
13
  getAbleTimeHost
14
- } from "./chunk-PAH7KDL2.js";
14
+ } from "./chunk-YNTXWFXT.js";
15
15
 
16
16
  // src/integrations/abletime-rest.ts
17
17
  var ABLETIME_REST_PREFIX = "/api/public/v2";
@@ -24,13 +24,13 @@ import {
24
24
  } from "./chunk-UKSJO36E.js";
25
25
  import {
26
26
  isOrchestratorThread
27
- } from "./chunk-2QUILREI.js";
27
+ } from "./chunk-QTZO4LPU.js";
28
28
  import {
29
29
  codexUnattendedGitConfigArgs,
30
30
  mergeAgentGitAuthEnv,
31
31
  resolveAgentGitAuthEnv,
32
32
  resolveCodexGitWritableRoots
33
- } from "./chunk-NWE3NOWQ.js";
33
+ } from "./chunk-K7MWJLR7.js";
34
34
  import {
35
35
  enrichPathWithNpmGlobalBin,
36
36
  isConductorBundledCli,
@@ -47,7 +47,7 @@ import {
47
47
  loadAppSettings,
48
48
  resolveAgentExecutable,
49
49
  resolveClaudeExecutable
50
- } from "./chunk-OIENQEGG.js";
50
+ } from "./chunk-WRIMAEF2.js";
51
51
  import {
52
52
  isElectronLikeCommand,
53
53
  unwrapStrippedElectronLaunch,
@@ -2010,7 +2010,7 @@ var claudeAdapter = {
2010
2010
  );
2011
2011
  }
2012
2012
  const mode = permissionMode(thread);
2013
- const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-FR7QTLPK.js");
2013
+ const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-7XEXTIHL.js");
2014
2014
  const isOrchestrator = isOrchestratorThread2(thread);
2015
2015
  const rpc = worktreeAgentRpc(isOrchestrator);
2016
2016
  const injectedServers = await buildInjectedMcpServers({
@@ -4541,7 +4541,7 @@ async function loginAgent(agent) {
4541
4541
  };
4542
4542
  }
4543
4543
  async function loginManagedAccount(accountId) {
4544
- const { loadAppSettings: loadAppSettings2 } = await import("./app-settings-RAC4PSSP.js");
4544
+ const { loadAppSettings: loadAppSettings2 } = await import("./app-settings-EQQZQNYD.js");
4545
4545
  const { loginEnvPrefix } = await import("./managed-accounts-46A4KRUE.js");
4546
4546
  const account = loadAppSettings2().accounts.accounts.find((a) => a.id === accountId);
4547
4547
  if (!account) {
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  getAbleTimeHost,
6
6
  isAbleTimeConnected
7
- } from "./chunk-PAH7KDL2.js";
7
+ } from "./chunk-YNTXWFXT.js";
8
8
 
9
9
  // src/integrations/abletime-mcp.ts
10
10
  var DEFAULT_ABLETIME_HOST = "https://track.abletime.com";
@@ -153,7 +153,7 @@ function textsFromUnknown(value) {
153
153
  return "";
154
154
  }
155
155
  async function abletimeMcpRequest(method, params, opts) {
156
- const rawToken = opts?.token ?? await import("./abletime-oauth-4RXZH2KU.js").then((m) => m.ensureAbleTimeAccessToken());
156
+ const rawToken = opts?.token ?? await import("./abletime-oauth-4C4G2J3R.js").then((m) => m.ensureAbleTimeAccessToken());
157
157
  if (!rawToken?.trim()) {
158
158
  throw new Error("AbleTime is not connected \u2014 paste a personal access token in Account settings");
159
159
  }
@@ -224,9 +224,9 @@ async function callAbleTimeTool(name, args = {}, opts) {
224
224
  if (!opts?.token && !isAbleTimeConnected()) {
225
225
  throw new Error("AbleTime is not connected \u2014 paste a personal access token in Account settings");
226
226
  }
227
- const rawToken = opts?.token ?? await import("./abletime-oauth-4RXZH2KU.js").then((m) => m.ensureAbleTimeAccessToken());
227
+ const rawToken = opts?.token ?? await import("./abletime-oauth-4C4G2J3R.js").then((m) => m.ensureAbleTimeAccessToken());
228
228
  if (rawToken && ableTimeUsesRest(rawToken)) {
229
- const { callAbleTimeRestTool } = await import("./abletime-rest-KVBJFVFD.js");
229
+ const { callAbleTimeRestTool } = await import("./abletime-rest-6N63ZVQ3.js");
230
230
  return callAbleTimeRestTool(name, args, { ...opts, token: rawToken });
231
231
  }
232
232
  const requestOpts = { ...opts, pm: opts?.pm ?? abletimeToolUsesPm(name) };
@@ -242,7 +242,7 @@ async function callAbleTimeTool(name, args = {}, opts) {
242
242
  return await call();
243
243
  }
244
244
  if (rawToken && ableTimeUsesRest(rawToken) && isAbleTimeRejectedCredential(message)) {
245
- const { callAbleTimeRestTool } = await import("./abletime-rest-KVBJFVFD.js");
245
+ const { callAbleTimeRestTool } = await import("./abletime-rest-6N63ZVQ3.js");
246
246
  return callAbleTimeRestTool(name, args, { ...opts, token: rawToken });
247
247
  }
248
248
  throw err instanceof Error ? new Error(rewriteAbleTimeError(err.message)) : err;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DEFAULT_ABLETIME_HOST,
3
3
  normalizeAbleTimeHost
4
- } from "./chunk-L6CYOON4.js";
4
+ } from "./chunk-PZURG3XN.js";
5
5
  import {
6
6
  httpFetch
7
7
  } from "./chunk-N7WZ6NIN.js";
@@ -10,7 +10,7 @@ import {
10
10
  getAbleTimeHost,
11
11
  loadAppSettings,
12
12
  saveAbleTimeConnection
13
- } from "./chunk-PAH7KDL2.js";
13
+ } from "./chunk-YNTXWFXT.js";
14
14
 
15
15
  // src/integrations/abletime-oauth.ts
16
16
  import { createHash, randomBytes } from "crypto";
@@ -280,7 +280,7 @@ async function startAbleTimeOAuth(opts) {
280
280
  persistAbleTimeTokens(data, { host });
281
281
  const token = data.access_token.trim();
282
282
  try {
283
- const { getAbleTimeOrientation } = await import("./abletime-JNQAHLHH.js");
283
+ const { getAbleTimeOrientation } = await import("./abletime-VRATUMDO.js");
284
284
  const orientation = await getAbleTimeOrientation({ token, host });
285
285
  return saveAbleTimeConnection({
286
286
  accessToken: token,
@@ -8,7 +8,7 @@ import {
8
8
  resolveRepoRoot,
9
9
  takenSlugsFromThread,
10
10
  teamSlugFromName
11
- } from "./chunk-NWE3NOWQ.js";
11
+ } from "./chunk-K7MWJLR7.js";
12
12
  import {
13
13
  ATTACHMENTS_DIR,
14
14
  attachmentsGitignoreBody
@@ -25,7 +25,7 @@ import {
25
25
  resolveThreadDefaults,
26
26
  resolveViewerProfile,
27
27
  resolveViewerProfileForRepo
28
- } from "./chunk-OIENQEGG.js";
28
+ } from "./chunk-WRIMAEF2.js";
29
29
  import {
30
30
  createEmptyThread,
31
31
  listThreads,
@@ -3,13 +3,13 @@
3
3
  import {
4
4
  abletimeRestUrl,
5
5
  textFromAbleTimeDoc
6
- } from "./chunk-DBFAFI5A.js";
6
+ } from "./chunk-XKZAVGTT.js";
7
7
  import {
8
8
  assertAbleTimeCredential,
9
9
  callAbleTimeTool,
10
10
  normalizeAbleTimeHost,
11
11
  rewriteAbleTimeError
12
- } from "./chunk-GONPMH36.js";
12
+ } from "./chunk-IJDQKC5A.js";
13
13
  import {
14
14
  httpFetch
15
15
  } from "./chunk-VKQGAWHY.js";
@@ -22,7 +22,7 @@ import {
22
22
  getAbleTimeHost,
23
23
  isAbleTimeConnected,
24
24
  saveAbleTimeConnection
25
- } from "./chunk-OIENQEGG.js";
25
+ } from "./chunk-WRIMAEF2.js";
26
26
 
27
27
  // src/integrations/issue-attachments.ts
28
28
  import { existsSync, mkdirSync, writeFileSync } from "fs";
@@ -7,7 +7,7 @@ import {
7
7
  parseSessionQuotaResetAt,
8
8
  planModeTurnInstruction,
9
9
  resolveQuotaFallbackAgent
10
- } from "./chunk-ADWNK2JH.js";
10
+ } from "./chunk-NIB2IZ6J.js";
11
11
  import {
12
12
  REVIEW_TAB_TITLE,
13
13
  applyWorktreePkgCacheEnv,
@@ -44,7 +44,7 @@ import {
44
44
  worktreeDevProcessKey,
45
45
  worktreeRunProcessKey,
46
46
  worktreeSetupProcessKey
47
- } from "./chunk-DVTEC4BF.js";
47
+ } from "./chunk-MGS5T2A3.js";
48
48
  import {
49
49
  applyAgentEvent,
50
50
  clipAgentEventForPaint,
@@ -88,7 +88,7 @@ import {
88
88
  stageAbsolutePathsAsAttachments,
89
89
  stageBuffersAsAttachments,
90
90
  syncWorkspacesFromThreads
91
- } from "./chunk-PTNGMA5C.js";
91
+ } from "./chunk-A2G3ZBJS.js";
92
92
  import {
93
93
  addPrStackLayer,
94
94
  agentNicknameFromWorktreePath,
@@ -140,7 +140,7 @@ import {
140
140
  worktreeIdentityTitles,
141
141
  worktreeNameFromPath,
142
142
  worktreeSlugForTicket
143
- } from "./chunk-USBZ7PH4.js";
143
+ } from "./chunk-IPPY3FG5.js";
144
144
  import {
145
145
  appendMessage,
146
146
  createEmptyThread,
@@ -215,7 +215,7 @@ import {
215
215
  updateAdvancedSettings,
216
216
  usageOnLimit,
217
217
  withTurnScopedCost
218
- } from "./chunk-PAH7KDL2.js";
218
+ } from "./chunk-YNTXWFXT.js";
219
219
  import {
220
220
  examplePrefixedBranch,
221
221
  sanitizeGitBranchPrefix
@@ -437,9 +437,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
437
437
  `Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
438
438
  );
439
439
  }
440
- const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-34Z2IWYQ.js");
440
+ const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-N2YYJKA5.js");
441
441
  if (isGlobalThread2(thread)) {
442
- const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-4KVA6XUX.js");
442
+ const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-B3GLVXPP.js");
443
443
  ensureGlobalCoordinatorCwd2(
444
444
  isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
445
445
  );
@@ -2238,7 +2238,7 @@ async function createThread(input, _onSetupLine) {
2238
2238
  });
2239
2239
  await requireAgent(resolved.agent);
2240
2240
  if (input.cowboy) {
2241
- const { cowboyModeEnabled } = await import("./app-settings-L5HGYXWJ.js");
2241
+ const { cowboyModeEnabled } = await import("./app-settings-NI4X5HW3.js");
2242
2242
  if (!cowboyModeEnabled()) {
2243
2243
  throw new Error(
2244
2244
  "Cowboy mode is off. Enable it in Settings \u2192 Advanced."
@@ -2296,7 +2296,7 @@ async function createThread(input, _onSetupLine) {
2296
2296
  let sourceIsFork = false;
2297
2297
  if (!input.cowboy && sourceType === "branch" && (!sourceRef || sourceRef === "HEAD" || sourceRef === "default")) {
2298
2298
  if (isAbleTimeConnected() && getIssueSource() === "abletime") {
2299
- const { ensureAbleTimeTask, issueAttachmentForAbleTimeTask } = await import("./abletime-JNQAHLHH.js");
2299
+ const { ensureAbleTimeTask, issueAttachmentForAbleTimeTask } = await import("./abletime-VRATUMDO.js");
2300
2300
  const task = await ensureAbleTimeTask({
2301
2301
  title: title?.trim() || "Untitled work",
2302
2302
  description: input.prompt?.trim() || void 0
@@ -2406,7 +2406,7 @@ async function createThread(input, _onSetupLine) {
2406
2406
  return readThread(thread.id) ?? thread;
2407
2407
  }
2408
2408
  async function listLinearIssues(agent, repoPath) {
2409
- const { getAdapter: getAdapter2 } = await import("./agents-LAFFXBBZ.js");
2409
+ const { getAdapter: getAdapter2 } = await import("./agents-2FOWVJCN.js");
2410
2410
  await requireAgent(agent, { requireLinear: true });
2411
2411
  const adapter = getAdapter2(agent);
2412
2412
  if (!adapter.listLinearIssues) {
@@ -2913,7 +2913,7 @@ async function adoptThread(input) {
2913
2913
  messages: input.messages ?? []
2914
2914
  });
2915
2915
  writeThread(thread);
2916
- const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-2JBDUMM6.js");
2916
+ const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-PBB6HY2D.js");
2917
2917
  await ensureWorkspace2(repoPath);
2918
2918
  const { ensureWorktreeSideboardIgnored } = await import("./worktree-exclude-RXZPTCNH.js");
2919
2919
  await ensureWorktreeSideboardIgnored(input.worktreePath);
@@ -5610,7 +5610,7 @@ function formatScheduledPrompt(name, prompt) {
5610
5610
  ${prompt}`;
5611
5611
  }
5612
5612
  async function defaultDeps() {
5613
- const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-QRSEOHXI.js");
5613
+ const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-QMKVXVUR.js");
5614
5614
  const orch = getOrchestrator2();
5615
5615
  return {
5616
5616
  findThread: (id) => findThreadByRef(id),
@@ -5928,7 +5928,7 @@ var Orchestrator = class {
5928
5928
  orphans: orphans.map((o) => ({ path: o.path, repoPath: o.repoPath }))
5929
5929
  });
5930
5930
  }
5931
- const { autoCleanupOrphansEnabled } = await import("./app-settings-L5HGYXWJ.js");
5931
+ const { autoCleanupOrphansEnabled } = await import("./app-settings-NI4X5HW3.js");
5932
5932
  if (autoCleanupOrphansEnabled() && shouldRunWorktreeCleanup() && orphans.length > 0) {
5933
5933
  await cleanupOrphanWorktrees({ repoPaths });
5934
5934
  }
@@ -6317,7 +6317,7 @@ var Orchestrator = class {
6317
6317
  }
6318
6318
  await setup;
6319
6319
  if (skipSetup) return;
6320
- const { autoRunAfterSetupEnabled } = await import("./app-settings-L5HGYXWJ.js");
6320
+ const { autoRunAfterSetupEnabled } = await import("./app-settings-NI4X5HW3.js");
6321
6321
  if (autoRunAfterSetupEnabled()) {
6322
6322
  try {
6323
6323
  await this.startDev(threadId);
@@ -6370,7 +6370,8 @@ var Orchestrator = class {
6370
6370
  throw new Error(`Thread is archived: ${thread.id}`);
6371
6371
  }
6372
6372
  const followUp = resolveSendFollowUp(current, opts?.followUp);
6373
- const consumed = consumeComposerAttachments(current);
6373
+ const explicit = opts?.attachments;
6374
+ const consumed = explicit !== void 0 ? { attachments: current.attachments, consumed: explicit } : consumeComposerAttachments(current);
6374
6375
  const queued = appendQueuedItem(
6375
6376
  current.queue,
6376
6377
  current.queueAttachments,
@@ -6384,7 +6385,7 @@ var Orchestrator = class {
6384
6385
  const inFlight = this.activeTurns.has(thread.id) || this.startingTurns.has(thread.id) || current.status === "running";
6385
6386
  shouldSteer = followUp === "steer" && (inFlight || current.queue.length > 0);
6386
6387
  const patch = queued;
6387
- if (consumed.consumed.length > 0) {
6388
+ if (explicit === void 0 && consumed.consumed.length > 0) {
6388
6389
  patch.attachments = consumed.attachments;
6389
6390
  }
6390
6391
  if (!inFlight) patch.status = "queued";
@@ -6696,7 +6697,7 @@ var Orchestrator = class {
6696
6697
  }
6697
6698
  const isBrightsy = fresh.agent === "brightsy";
6698
6699
  const isOrchestration = isOrchestratorThread(fresh);
6699
- const { autoRenameBranchEnabled, getGithubGitAuthMode, gitBranchPrefixSetting } = await import("./app-settings-L5HGYXWJ.js");
6700
+ const { autoRenameBranchEnabled, getGithubGitAuthMode, gitBranchPrefixSetting } = await import("./app-settings-NI4X5HW3.js");
6700
6701
  const gitAuthMode = getGithubGitAuthMode();
6701
6702
  const worktreeDirective = isBrightsy || isOrchestration ? null : formatWorktreeDirective(fresh, {
6702
6703
  githubSlug: await withTimeout(
@@ -8006,7 +8007,7 @@ var Orchestrator = class {
8006
8007
  if (Object.keys(patch).length === 0) continue;
8007
8008
  updateThread(t.id, patch);
8008
8009
  }
8009
- const { autoArchiveOnMergeEnabled } = await import("./app-settings-L5HGYXWJ.js");
8010
+ const { autoArchiveOnMergeEnabled } = await import("./app-settings-NI4X5HW3.js");
8010
8011
  const latest = this.requireThread(thread.id);
8011
8012
  if (!shouldAutoArchiveOnPrMerge({
8012
8013
  previousPrState: prevState || null,
@@ -8297,7 +8298,7 @@ var Orchestrator = class {
8297
8298
  this.enforceHistoryRetention();
8298
8299
  if (thread.repoPath && !isGlobalRepoPath(thread.repoPath)) {
8299
8300
  try {
8300
- const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-2JBDUMM6.js");
8301
+ const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-PBB6HY2D.js");
8301
8302
  await ensureWorkspace2(thread.repoPath);
8302
8303
  } catch {
8303
8304
  }
@@ -8324,7 +8325,7 @@ var Orchestrator = class {
8324
8325
  await runArchiveScript(thread.repoPath, thread.worktreePath);
8325
8326
  } catch {
8326
8327
  }
8327
- const { deleteBranchOnPurgeEnabled } = await import("./app-settings-L5HGYXWJ.js");
8328
+ const { deleteBranchOnPurgeEnabled } = await import("./app-settings-NI4X5HW3.js");
8328
8329
  const deleteBranch = opts?.deleteBranch ?? deleteBranchOnPurgeEnabled();
8329
8330
  await removeWorktree(thread.repoPath, thread.worktreePath, {
8330
8331
  deleteBranch: deleteBranch ? thread.branchName : void 0
@@ -8351,7 +8352,7 @@ var Orchestrator = class {
8351
8352
  `Cowboy checkout missing: ${thread.worktreePath}. Re-add the project folder, then restore.`
8352
8353
  );
8353
8354
  }
8354
- const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-C7RPVHZ7.js");
8355
+ const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-Q6UJHG25.js");
8355
8356
  const slug = thread.worktreePath.split("/").pop();
8356
8357
  const dest = thread.worktreePath;
8357
8358
  await withRepoGitLock(thread.repoPath, async () => {
@@ -8461,7 +8462,7 @@ async function startOrchestration(opts) {
8461
8462
  sourceRef: "default",
8462
8463
  ...createOpts
8463
8464
  }).catch(async () => {
8464
- const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-C7RPVHZ7.js");
8465
+ const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-Q6UJHG25.js");
8465
8466
  const repo = await resolveRepoRoot2(repoPath);
8466
8467
  const def = await resolveDefaultBranch2(repo);
8467
8468
  return orch.createThread({
@@ -310,6 +310,9 @@ function normalizeVault(raw) {
310
310
  if (typeof raw.remoteHostSecret === "string" && raw.remoteHostSecret.trim()) {
311
311
  out.remoteHostSecret = raw.remoteHostSecret.trim();
312
312
  }
313
+ if (typeof raw.remoteAccountToken === "string" && raw.remoteAccountToken.trim()) {
314
+ out.remoteAccountToken = raw.remoteAccountToken.trim();
315
+ }
313
316
  if (typeof raw.githubPat === "string" && raw.githubPat.trim()) {
314
317
  out.githubPat = raw.githubPat.trim();
315
318
  }
@@ -695,9 +698,27 @@ function emptyPublicIntegrations() {
695
698
  hasVercelToken: false,
696
699
  hasSupabaseToken: false,
697
700
  hasPosthogToken: false,
698
- hasSentryToken: false
701
+ hasSentryToken: false,
702
+ hasRemoteAccount: false
699
703
  };
700
704
  }
705
+ var INTEGRATION_VAULT_KEYS = [
706
+ "linearApiKey",
707
+ "linearAccessToken",
708
+ "linearRefreshToken",
709
+ "linearClientSecret",
710
+ "slackClientSecret",
711
+ "slackAppToken",
712
+ "remoteHostSecret",
713
+ "remoteAccountToken",
714
+ "githubPat",
715
+ "abletimeAccessToken",
716
+ "abletimeRefreshToken",
717
+ "vercelToken",
718
+ "supabaseAccessToken",
719
+ "posthogPersonalApiKey",
720
+ "sentryAuthToken"
721
+ ];
701
722
  function hasLinearOAuth(integrations) {
702
723
  return Boolean(
703
724
  integrations.linearAccessToken?.trim() || integrations.linearRefreshToken?.trim()
@@ -712,29 +733,7 @@ function toPublicAppSettings(settings) {
712
733
  if (key.trim()) environment[key] = "";
713
734
  }
714
735
  const integrations = { ...settings.integrations };
715
- const slackClientSecret = integrations.slackClientSecret;
716
- const slackAppToken = integrations.slackAppToken;
717
- const githubPat = integrations.githubPat;
718
- const abletimeAccessToken = integrations.abletimeAccessToken;
719
- const abletimeRefreshToken = integrations.abletimeRefreshToken;
720
- const vercelToken = integrations.vercelToken;
721
- const supabaseAccessToken = integrations.supabaseAccessToken;
722
- const posthogPersonalApiKey = integrations.posthogPersonalApiKey;
723
- const sentryAuthToken = integrations.sentryAuthToken;
724
- delete integrations.linearApiKey;
725
- delete integrations.linearAccessToken;
726
- delete integrations.linearRefreshToken;
727
- delete integrations.linearClientSecret;
728
- delete integrations.slackClientSecret;
729
- delete integrations.slackAppToken;
730
- delete integrations.remoteHostSecret;
731
- delete integrations.githubPat;
732
- delete integrations.abletimeAccessToken;
733
- delete integrations.abletimeRefreshToken;
734
- delete integrations.vercelToken;
735
- delete integrations.supabaseAccessToken;
736
- delete integrations.posthogPersonalApiKey;
737
- delete integrations.sentryAuthToken;
736
+ for (const key of INTEGRATION_VAULT_KEYS) delete integrations[key];
738
737
  return {
739
738
  ...settings,
740
739
  environment,
@@ -742,15 +741,18 @@ function toPublicAppSettings(settings) {
742
741
  ...integrations,
743
742
  hasLinearApiKey: hasLinearCredentials(settings.integrations),
744
743
  hasLinearOAuth: hasLinearOAuth(settings.integrations),
745
- hasSlackClientSecret: Boolean(slackClientSecret?.trim()),
746
- hasSlackAppToken: Boolean(slackAppToken?.trim()),
747
- hasGithubPat: Boolean(githubPat?.trim()),
748
- hasAbleTimeToken: Boolean(abletimeAccessToken?.trim() || abletimeRefreshToken?.trim()),
749
- hasAbleTimeOAuth: Boolean(abletimeRefreshToken?.trim()),
750
- hasVercelToken: Boolean(vercelToken?.trim()),
751
- hasSupabaseToken: Boolean(supabaseAccessToken?.trim()),
752
- hasPosthogToken: Boolean(posthogPersonalApiKey?.trim()),
753
- hasSentryToken: Boolean(sentryAuthToken?.trim())
744
+ hasSlackClientSecret: Boolean(settings.integrations.slackClientSecret?.trim()),
745
+ hasSlackAppToken: Boolean(settings.integrations.slackAppToken?.trim()),
746
+ hasGithubPat: Boolean(settings.integrations.githubPat?.trim()),
747
+ hasAbleTimeToken: Boolean(
748
+ settings.integrations.abletimeAccessToken?.trim() || settings.integrations.abletimeRefreshToken?.trim()
749
+ ),
750
+ hasAbleTimeOAuth: Boolean(settings.integrations.abletimeRefreshToken?.trim()),
751
+ hasVercelToken: Boolean(settings.integrations.vercelToken?.trim()),
752
+ hasSupabaseToken: Boolean(settings.integrations.supabaseAccessToken?.trim()),
753
+ hasPosthogToken: Boolean(settings.integrations.posthogPersonalApiKey?.trim()),
754
+ hasSentryToken: Boolean(settings.integrations.sentryAuthToken?.trim()),
755
+ hasRemoteAccount: Boolean(settings.integrations.remoteAccountToken?.trim())
754
756
  }
755
757
  };
756
758
  }
@@ -885,6 +887,14 @@ function normalizeIntegrations(raw) {
885
887
  const secret = source.remoteHostSecret.trim();
886
888
  if (secret) out.remoteHostSecret = secret;
887
889
  }
890
+ if (typeof source.remoteAccountToken === "string") {
891
+ const token = source.remoteAccountToken.trim();
892
+ if (token) out.remoteAccountToken = token;
893
+ }
894
+ if (typeof source.remoteAccountEmail === "string") {
895
+ const email = source.remoteAccountEmail.trim().toLowerCase();
896
+ if (email) out.remoteAccountEmail = email;
897
+ }
888
898
  if (typeof source.githubGitAuthMode === "string" && GIT_AUTH_MODES.has(source.githubGitAuthMode)) {
889
899
  out.githubGitAuthMode = source.githubGitAuthMode;
890
900
  }
@@ -1241,110 +1251,31 @@ function readSettingsFile() {
1241
1251
  }
1242
1252
  }
1243
1253
  function diskHoldsSecrets(disk) {
1244
- return Boolean(
1245
- disk.integrations.linearApiKey || disk.integrations.linearAccessToken || disk.integrations.linearRefreshToken || disk.integrations.linearClientSecret || disk.integrations.slackClientSecret || disk.integrations.slackAppToken || disk.integrations.remoteHostSecret || disk.integrations.githubPat || disk.integrations.abletimeAccessToken || disk.integrations.abletimeRefreshToken || disk.integrations.vercelToken || disk.integrations.supabaseAccessToken || disk.integrations.posthogPersonalApiKey || disk.integrations.sentryAuthToken || Object.keys(disk.environment).length > 0
1246
- );
1254
+ return INTEGRATION_VAULT_KEYS.some((key) => Boolean(disk.integrations[key])) || Object.keys(disk.environment).length > 0;
1247
1255
  }
1248
1256
  function mergeVault(disk) {
1249
1257
  const vault = loadSecretVault();
1250
1258
  const environment = { ...vault.environment ?? {}, ...disk.environment };
1251
1259
  const integrations = { ...disk.integrations };
1252
- if (vault.linearApiKey && !integrations.linearApiKey) {
1253
- integrations.linearApiKey = vault.linearApiKey;
1254
- }
1255
- if (vault.linearAccessToken && !integrations.linearAccessToken) {
1256
- integrations.linearAccessToken = vault.linearAccessToken;
1257
- }
1258
- if (vault.linearRefreshToken && !integrations.linearRefreshToken) {
1259
- integrations.linearRefreshToken = vault.linearRefreshToken;
1260
- }
1261
- if (vault.linearClientSecret && !integrations.linearClientSecret) {
1262
- integrations.linearClientSecret = vault.linearClientSecret;
1263
- }
1264
- if (vault.slackClientSecret && !integrations.slackClientSecret) {
1265
- integrations.slackClientSecret = vault.slackClientSecret;
1266
- }
1267
- if (vault.slackAppToken && !integrations.slackAppToken) {
1268
- integrations.slackAppToken = vault.slackAppToken;
1269
- }
1270
- if (vault.remoteHostSecret && !integrations.remoteHostSecret) {
1271
- integrations.remoteHostSecret = vault.remoteHostSecret;
1272
- }
1273
- if (vault.githubPat && !integrations.githubPat) {
1274
- integrations.githubPat = vault.githubPat;
1275
- }
1276
- if (vault.abletimeAccessToken && !integrations.abletimeAccessToken) {
1277
- integrations.abletimeAccessToken = vault.abletimeAccessToken;
1278
- }
1279
- if (vault.abletimeRefreshToken && !integrations.abletimeRefreshToken) {
1280
- integrations.abletimeRefreshToken = vault.abletimeRefreshToken;
1281
- }
1282
- if (vault.vercelToken && !integrations.vercelToken) {
1283
- integrations.vercelToken = vault.vercelToken;
1284
- }
1285
- if (vault.supabaseAccessToken && !integrations.supabaseAccessToken) {
1286
- integrations.supabaseAccessToken = vault.supabaseAccessToken;
1287
- }
1288
- if (vault.posthogPersonalApiKey && !integrations.posthogPersonalApiKey) {
1289
- integrations.posthogPersonalApiKey = vault.posthogPersonalApiKey;
1290
- }
1291
- if (vault.sentryAuthToken && !integrations.sentryAuthToken) {
1292
- integrations.sentryAuthToken = vault.sentryAuthToken;
1260
+ for (const key of INTEGRATION_VAULT_KEYS) {
1261
+ const stored = vault[key];
1262
+ if (stored && !integrations[key]) integrations[key] = stored;
1293
1263
  }
1294
1264
  return { ...disk, environment, integrations };
1295
1265
  }
1296
1266
  function persistSplit(settings) {
1297
1267
  const integrations = { ...settings.integrations };
1298
- const linearApiKey = integrations.linearApiKey;
1299
- const linearAccessToken = integrations.linearAccessToken;
1300
- const linearRefreshToken = integrations.linearRefreshToken;
1301
- const linearClientSecret = integrations.linearClientSecret;
1302
- const slackClientSecret = integrations.slackClientSecret;
1303
- const slackAppToken = integrations.slackAppToken;
1304
- const remoteHostSecret = integrations.remoteHostSecret;
1305
- const githubPat = integrations.githubPat;
1306
- const abletimeAccessToken = integrations.abletimeAccessToken;
1307
- const abletimeRefreshToken = integrations.abletimeRefreshToken;
1308
- const vercelToken = integrations.vercelToken;
1309
- const supabaseAccessToken = integrations.supabaseAccessToken;
1310
- const posthogPersonalApiKey = integrations.posthogPersonalApiKey;
1311
- const sentryAuthToken = integrations.sentryAuthToken;
1312
- delete integrations.linearApiKey;
1313
- delete integrations.linearAccessToken;
1314
- delete integrations.linearRefreshToken;
1315
- delete integrations.linearClientSecret;
1316
- delete integrations.slackClientSecret;
1317
- delete integrations.slackAppToken;
1318
- delete integrations.remoteHostSecret;
1319
- delete integrations.githubPat;
1320
- delete integrations.abletimeAccessToken;
1321
- delete integrations.abletimeRefreshToken;
1322
- delete integrations.vercelToken;
1323
- delete integrations.supabaseAccessToken;
1324
- delete integrations.posthogPersonalApiKey;
1325
- delete integrations.sentryAuthToken;
1268
+ const vault = { environment: settings.environment };
1269
+ for (const key of INTEGRATION_VAULT_KEYS) {
1270
+ vault[key] = integrations[key];
1271
+ delete integrations[key];
1272
+ }
1326
1273
  writePrivateFile(
1327
1274
  appSettingsPath(),
1328
1275
  `${JSON.stringify({ ...settings, environment: {}, integrations }, null, 2)}
1329
1276
  `
1330
1277
  );
1331
- saveSecretVault({
1332
- linearApiKey,
1333
- linearAccessToken,
1334
- linearRefreshToken,
1335
- linearClientSecret,
1336
- slackClientSecret,
1337
- slackAppToken,
1338
- remoteHostSecret,
1339
- githubPat,
1340
- abletimeAccessToken,
1341
- abletimeRefreshToken,
1342
- vercelToken,
1343
- supabaseAccessToken,
1344
- posthogPersonalApiKey,
1345
- sentryAuthToken,
1346
- environment: settings.environment
1347
- });
1278
+ saveSecretVault(vault);
1348
1279
  }
1349
1280
  function loadAppSettings() {
1350
1281
  const disk = readSettingsFile();
@@ -1555,6 +1486,20 @@ function updateIntegrationsSettings(patch) {
1555
1486
  integrations.remoteHostSecret = patch.remoteHostSecret.trim();
1556
1487
  }
1557
1488
  }
1489
+ if ("remoteAccountToken" in patch) {
1490
+ if (patch.remoteAccountToken == null || patch.remoteAccountToken.trim() === "") {
1491
+ delete integrations.remoteAccountToken;
1492
+ } else {
1493
+ integrations.remoteAccountToken = patch.remoteAccountToken.trim();
1494
+ }
1495
+ }
1496
+ if ("remoteAccountEmail" in patch) {
1497
+ if (patch.remoteAccountEmail == null || patch.remoteAccountEmail.trim() === "") {
1498
+ delete integrations.remoteAccountEmail;
1499
+ } else {
1500
+ integrations.remoteAccountEmail = patch.remoteAccountEmail.trim().toLowerCase();
1501
+ }
1502
+ }
1558
1503
  if ("githubGitAuthMode" in patch) {
1559
1504
  if (patch.githubGitAuthMode == null) {
1560
1505
  delete integrations.githubGitAuthMode;
@@ -6,14 +6,14 @@ import {
6
6
  normalizeAbleTimeCredential,
7
7
  normalizeAbleTimeHost,
8
8
  rewriteAbleTimeError
9
- } from "./chunk-GONPMH36.js";
9
+ } from "./chunk-IJDQKC5A.js";
10
10
  import {
11
11
  httpFetch
12
12
  } from "./chunk-VKQGAWHY.js";
13
13
  import {
14
14
  getAbleTimeAccessToken,
15
15
  getAbleTimeHost
16
- } from "./chunk-OIENQEGG.js";
16
+ } from "./chunk-WRIMAEF2.js";
17
17
 
18
18
  // src/integrations/abletime-rest.ts
19
19
  var ABLETIME_REST_PREFIX = "/api/public/v2";