@sideboard-ai/core 0.1.274 → 0.1.275

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 +1695 -181
  37. package/dist/index.d.cts +99 -20
  38. package/dist/index.d.ts +99 -20
  39. package/dist/index.js +1583 -43
  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
@@ -3872,6 +3872,9 @@ function normalizeVault(raw) {
3872
3872
  if (typeof raw.remoteHostSecret === "string" && raw.remoteHostSecret.trim()) {
3873
3873
  out.remoteHostSecret = raw.remoteHostSecret.trim();
3874
3874
  }
3875
+ if (typeof raw.remoteAccountToken === "string" && raw.remoteAccountToken.trim()) {
3876
+ out.remoteAccountToken = raw.remoteAccountToken.trim();
3877
+ }
3875
3878
  if (typeof raw.githubPat === "string" && raw.githubPat.trim()) {
3876
3879
  out.githubPat = raw.githubPat.trim();
3877
3880
  }
@@ -4540,7 +4543,8 @@ function emptyPublicIntegrations() {
4540
4543
  hasVercelToken: false,
4541
4544
  hasSupabaseToken: false,
4542
4545
  hasPosthogToken: false,
4543
- hasSentryToken: false
4546
+ hasSentryToken: false,
4547
+ hasRemoteAccount: false
4544
4548
  };
4545
4549
  }
4546
4550
  function hasLinearOAuth(integrations) {
@@ -4557,29 +4561,7 @@ function toPublicAppSettings(settings) {
4557
4561
  if (key.trim()) environment[key] = "";
4558
4562
  }
4559
4563
  const integrations = { ...settings.integrations };
4560
- const slackClientSecret = integrations.slackClientSecret;
4561
- const slackAppToken = integrations.slackAppToken;
4562
- const githubPat = integrations.githubPat;
4563
- const abletimeAccessToken = integrations.abletimeAccessToken;
4564
- const abletimeRefreshToken = integrations.abletimeRefreshToken;
4565
- const vercelToken = integrations.vercelToken;
4566
- const supabaseAccessToken = integrations.supabaseAccessToken;
4567
- const posthogPersonalApiKey = integrations.posthogPersonalApiKey;
4568
- const sentryAuthToken = integrations.sentryAuthToken;
4569
- delete integrations.linearApiKey;
4570
- delete integrations.linearAccessToken;
4571
- delete integrations.linearRefreshToken;
4572
- delete integrations.linearClientSecret;
4573
- delete integrations.slackClientSecret;
4574
- delete integrations.slackAppToken;
4575
- delete integrations.remoteHostSecret;
4576
- delete integrations.githubPat;
4577
- delete integrations.abletimeAccessToken;
4578
- delete integrations.abletimeRefreshToken;
4579
- delete integrations.vercelToken;
4580
- delete integrations.supabaseAccessToken;
4581
- delete integrations.posthogPersonalApiKey;
4582
- delete integrations.sentryAuthToken;
4564
+ for (const key of INTEGRATION_VAULT_KEYS) delete integrations[key];
4583
4565
  return {
4584
4566
  ...settings,
4585
4567
  environment,
@@ -4587,15 +4569,18 @@ function toPublicAppSettings(settings) {
4587
4569
  ...integrations,
4588
4570
  hasLinearApiKey: hasLinearCredentials(settings.integrations),
4589
4571
  hasLinearOAuth: hasLinearOAuth(settings.integrations),
4590
- hasSlackClientSecret: Boolean(slackClientSecret?.trim()),
4591
- hasSlackAppToken: Boolean(slackAppToken?.trim()),
4592
- hasGithubPat: Boolean(githubPat?.trim()),
4593
- hasAbleTimeToken: Boolean(abletimeAccessToken?.trim() || abletimeRefreshToken?.trim()),
4594
- hasAbleTimeOAuth: Boolean(abletimeRefreshToken?.trim()),
4595
- hasVercelToken: Boolean(vercelToken?.trim()),
4596
- hasSupabaseToken: Boolean(supabaseAccessToken?.trim()),
4597
- hasPosthogToken: Boolean(posthogPersonalApiKey?.trim()),
4598
- hasSentryToken: Boolean(sentryAuthToken?.trim())
4572
+ hasSlackClientSecret: Boolean(settings.integrations.slackClientSecret?.trim()),
4573
+ hasSlackAppToken: Boolean(settings.integrations.slackAppToken?.trim()),
4574
+ hasGithubPat: Boolean(settings.integrations.githubPat?.trim()),
4575
+ hasAbleTimeToken: Boolean(
4576
+ settings.integrations.abletimeAccessToken?.trim() || settings.integrations.abletimeRefreshToken?.trim()
4577
+ ),
4578
+ hasAbleTimeOAuth: Boolean(settings.integrations.abletimeRefreshToken?.trim()),
4579
+ hasVercelToken: Boolean(settings.integrations.vercelToken?.trim()),
4580
+ hasSupabaseToken: Boolean(settings.integrations.supabaseAccessToken?.trim()),
4581
+ hasPosthogToken: Boolean(settings.integrations.posthogPersonalApiKey?.trim()),
4582
+ hasSentryToken: Boolean(settings.integrations.sentryAuthToken?.trim()),
4583
+ hasRemoteAccount: Boolean(settings.integrations.remoteAccountToken?.trim())
4599
4584
  }
4600
4585
  };
4601
4586
  }
@@ -4722,6 +4707,14 @@ function normalizeIntegrations(raw) {
4722
4707
  const secret = source.remoteHostSecret.trim();
4723
4708
  if (secret) out.remoteHostSecret = secret;
4724
4709
  }
4710
+ if (typeof source.remoteAccountToken === "string") {
4711
+ const token = source.remoteAccountToken.trim();
4712
+ if (token) out.remoteAccountToken = token;
4713
+ }
4714
+ if (typeof source.remoteAccountEmail === "string") {
4715
+ const email = source.remoteAccountEmail.trim().toLowerCase();
4716
+ if (email) out.remoteAccountEmail = email;
4717
+ }
4725
4718
  if (typeof source.githubGitAuthMode === "string" && GIT_AUTH_MODES.has(source.githubGitAuthMode)) {
4726
4719
  out.githubGitAuthMode = source.githubGitAuthMode;
4727
4720
  }
@@ -5065,110 +5058,31 @@ function readSettingsFile() {
5065
5058
  }
5066
5059
  }
5067
5060
  function diskHoldsSecrets(disk) {
5068
- return Boolean(
5069
- 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
5070
- );
5061
+ return INTEGRATION_VAULT_KEYS.some((key) => Boolean(disk.integrations[key])) || Object.keys(disk.environment).length > 0;
5071
5062
  }
5072
5063
  function mergeVault(disk) {
5073
5064
  const vault = loadSecretVault();
5074
5065
  const environment = { ...vault.environment ?? {}, ...disk.environment };
5075
5066
  const integrations = { ...disk.integrations };
5076
- if (vault.linearApiKey && !integrations.linearApiKey) {
5077
- integrations.linearApiKey = vault.linearApiKey;
5078
- }
5079
- if (vault.linearAccessToken && !integrations.linearAccessToken) {
5080
- integrations.linearAccessToken = vault.linearAccessToken;
5081
- }
5082
- if (vault.linearRefreshToken && !integrations.linearRefreshToken) {
5083
- integrations.linearRefreshToken = vault.linearRefreshToken;
5084
- }
5085
- if (vault.linearClientSecret && !integrations.linearClientSecret) {
5086
- integrations.linearClientSecret = vault.linearClientSecret;
5087
- }
5088
- if (vault.slackClientSecret && !integrations.slackClientSecret) {
5089
- integrations.slackClientSecret = vault.slackClientSecret;
5090
- }
5091
- if (vault.slackAppToken && !integrations.slackAppToken) {
5092
- integrations.slackAppToken = vault.slackAppToken;
5093
- }
5094
- if (vault.remoteHostSecret && !integrations.remoteHostSecret) {
5095
- integrations.remoteHostSecret = vault.remoteHostSecret;
5096
- }
5097
- if (vault.githubPat && !integrations.githubPat) {
5098
- integrations.githubPat = vault.githubPat;
5099
- }
5100
- if (vault.abletimeAccessToken && !integrations.abletimeAccessToken) {
5101
- integrations.abletimeAccessToken = vault.abletimeAccessToken;
5102
- }
5103
- if (vault.abletimeRefreshToken && !integrations.abletimeRefreshToken) {
5104
- integrations.abletimeRefreshToken = vault.abletimeRefreshToken;
5105
- }
5106
- if (vault.vercelToken && !integrations.vercelToken) {
5107
- integrations.vercelToken = vault.vercelToken;
5108
- }
5109
- if (vault.supabaseAccessToken && !integrations.supabaseAccessToken) {
5110
- integrations.supabaseAccessToken = vault.supabaseAccessToken;
5111
- }
5112
- if (vault.posthogPersonalApiKey && !integrations.posthogPersonalApiKey) {
5113
- integrations.posthogPersonalApiKey = vault.posthogPersonalApiKey;
5114
- }
5115
- if (vault.sentryAuthToken && !integrations.sentryAuthToken) {
5116
- integrations.sentryAuthToken = vault.sentryAuthToken;
5067
+ for (const key of INTEGRATION_VAULT_KEYS) {
5068
+ const stored = vault[key];
5069
+ if (stored && !integrations[key]) integrations[key] = stored;
5117
5070
  }
5118
5071
  return { ...disk, environment, integrations };
5119
5072
  }
5120
5073
  function persistSplit(settings) {
5121
5074
  const integrations = { ...settings.integrations };
5122
- const linearApiKey = integrations.linearApiKey;
5123
- const linearAccessToken = integrations.linearAccessToken;
5124
- const linearRefreshToken = integrations.linearRefreshToken;
5125
- const linearClientSecret = integrations.linearClientSecret;
5126
- const slackClientSecret = integrations.slackClientSecret;
5127
- const slackAppToken = integrations.slackAppToken;
5128
- const remoteHostSecret = integrations.remoteHostSecret;
5129
- const githubPat = integrations.githubPat;
5130
- const abletimeAccessToken = integrations.abletimeAccessToken;
5131
- const abletimeRefreshToken = integrations.abletimeRefreshToken;
5132
- const vercelToken = integrations.vercelToken;
5133
- const supabaseAccessToken = integrations.supabaseAccessToken;
5134
- const posthogPersonalApiKey = integrations.posthogPersonalApiKey;
5135
- const sentryAuthToken = integrations.sentryAuthToken;
5136
- delete integrations.linearApiKey;
5137
- delete integrations.linearAccessToken;
5138
- delete integrations.linearRefreshToken;
5139
- delete integrations.linearClientSecret;
5140
- delete integrations.slackClientSecret;
5141
- delete integrations.slackAppToken;
5142
- delete integrations.remoteHostSecret;
5143
- delete integrations.githubPat;
5144
- delete integrations.abletimeAccessToken;
5145
- delete integrations.abletimeRefreshToken;
5146
- delete integrations.vercelToken;
5147
- delete integrations.supabaseAccessToken;
5148
- delete integrations.posthogPersonalApiKey;
5149
- delete integrations.sentryAuthToken;
5075
+ const vault = { environment: settings.environment };
5076
+ for (const key of INTEGRATION_VAULT_KEYS) {
5077
+ vault[key] = integrations[key];
5078
+ delete integrations[key];
5079
+ }
5150
5080
  writePrivateFile2(
5151
5081
  appSettingsPath(),
5152
5082
  `${JSON.stringify({ ...settings, environment: {}, integrations }, null, 2)}
5153
5083
  `
5154
5084
  );
5155
- saveSecretVault({
5156
- linearApiKey,
5157
- linearAccessToken,
5158
- linearRefreshToken,
5159
- linearClientSecret,
5160
- slackClientSecret,
5161
- slackAppToken,
5162
- remoteHostSecret,
5163
- githubPat,
5164
- abletimeAccessToken,
5165
- abletimeRefreshToken,
5166
- vercelToken,
5167
- supabaseAccessToken,
5168
- posthogPersonalApiKey,
5169
- sentryAuthToken,
5170
- environment: settings.environment
5171
- });
5085
+ saveSecretVault(vault);
5172
5086
  }
5173
5087
  function loadAppSettings() {
5174
5088
  const disk = readSettingsFile();
@@ -5379,6 +5293,20 @@ function updateIntegrationsSettings(patch) {
5379
5293
  integrations.remoteHostSecret = patch.remoteHostSecret.trim();
5380
5294
  }
5381
5295
  }
5296
+ if ("remoteAccountToken" in patch) {
5297
+ if (patch.remoteAccountToken == null || patch.remoteAccountToken.trim() === "") {
5298
+ delete integrations.remoteAccountToken;
5299
+ } else {
5300
+ integrations.remoteAccountToken = patch.remoteAccountToken.trim();
5301
+ }
5302
+ }
5303
+ if ("remoteAccountEmail" in patch) {
5304
+ if (patch.remoteAccountEmail == null || patch.remoteAccountEmail.trim() === "") {
5305
+ delete integrations.remoteAccountEmail;
5306
+ } else {
5307
+ integrations.remoteAccountEmail = patch.remoteAccountEmail.trim().toLowerCase();
5308
+ }
5309
+ }
5382
5310
  if ("githubGitAuthMode" in patch) {
5383
5311
  if (patch.githubGitAuthMode == null) {
5384
5312
  delete integrations.githubGitAuthMode;
@@ -6117,7 +6045,7 @@ function childEnvWithAppSettings(extra) {
6117
6045
  function harnessEnvKey(harness) {
6118
6046
  return HARNESS_ENV_KEYS[harness];
6119
6047
  }
6120
- var import_node_crypto2, import_node_fs15, import_node_os6, import_node_path16, HARNESS_ENV_KEYS, DEFAULT_AGENTS, GITHUB_GIT_AUTH_MODES, FOLLOW_UP_BEHAVIORS, AGENT_DONE_SOUNDS, CHAT_TEXT_SCALES, CHAT_TEXT_SCALE_DEFAULT, CLOUD_CONNECT_AGENTS, ISSUE_SOURCES, GIT_AUTH_MODES, REVIEW_LABEL_MAX, EMPTY_SETTINGS, CONFIRM_ACCOUNT, CONFIRM_PROJECT, DEFAULT_CLI_BIN;
6048
+ var import_node_crypto2, import_node_fs15, import_node_os6, import_node_path16, HARNESS_ENV_KEYS, DEFAULT_AGENTS, GITHUB_GIT_AUTH_MODES, FOLLOW_UP_BEHAVIORS, AGENT_DONE_SOUNDS, CHAT_TEXT_SCALES, CHAT_TEXT_SCALE_DEFAULT, INTEGRATION_VAULT_KEYS, CLOUD_CONNECT_AGENTS, ISSUE_SOURCES, GIT_AUTH_MODES, REVIEW_LABEL_MAX, EMPTY_SETTINGS, CONFIRM_ACCOUNT, CONFIRM_PROJECT, DEFAULT_CLI_BIN;
6121
6049
  var init_app_settings = __esm({
6122
6050
  "src/store/app-settings.ts"() {
6123
6051
  "use strict";
@@ -6170,6 +6098,23 @@ var init_app_settings = __esm({
6170
6098
  ];
6171
6099
  CHAT_TEXT_SCALES = [1.2, 1.4];
6172
6100
  CHAT_TEXT_SCALE_DEFAULT = 1.2;
6101
+ INTEGRATION_VAULT_KEYS = [
6102
+ "linearApiKey",
6103
+ "linearAccessToken",
6104
+ "linearRefreshToken",
6105
+ "linearClientSecret",
6106
+ "slackClientSecret",
6107
+ "slackAppToken",
6108
+ "remoteHostSecret",
6109
+ "remoteAccountToken",
6110
+ "githubPat",
6111
+ "abletimeAccessToken",
6112
+ "abletimeRefreshToken",
6113
+ "vercelToken",
6114
+ "supabaseAccessToken",
6115
+ "posthogPersonalApiKey",
6116
+ "sentryAuthToken"
6117
+ ];
6173
6118
  CLOUD_CONNECT_AGENTS = /* @__PURE__ */ new Set([
6174
6119
  "claude",
6175
6120
  "codex",
@@ -16064,17 +16009,7 @@ var init_worktree_run_ports = __esm({
16064
16009
  }
16065
16010
  });
16066
16011
 
16067
- // src/mcp/wait-for-job.ts
16068
- function mcpWaitForJobTimeoutMs(requested) {
16069
- return mcpWaitForTurnTimeoutMs(requested);
16070
- }
16071
- function sanitizeDetachedJobId(id) {
16072
- const s = id.trim();
16073
- if (!JOB_ID_RE.test(s)) {
16074
- throw new Error(`detached-job id must be 1\u201364 chars [A-Za-z0-9._-], got ${JSON.stringify(id)}`);
16075
- }
16076
- return s;
16077
- }
16012
+ // src/mcp/job-process.ts
16078
16013
  function jobAlive(pid) {
16079
16014
  if (!Number.isInteger(pid) || pid <= 0) return false;
16080
16015
  try {
@@ -16098,6 +16033,23 @@ function jobTreeAlive(pid) {
16098
16033
  if (pid == null) return false;
16099
16034
  return jobAlive(pid) || processGroupAlive(pid);
16100
16035
  }
16036
+ var init_job_process = __esm({
16037
+ "src/mcp/job-process.ts"() {
16038
+ "use strict";
16039
+ }
16040
+ });
16041
+
16042
+ // src/mcp/wait-for-job.ts
16043
+ function mcpWaitForJobTimeoutMs(requested) {
16044
+ return mcpWaitForTurnTimeoutMs(requested);
16045
+ }
16046
+ function sanitizeDetachedJobId(id) {
16047
+ const s = id.trim();
16048
+ if (!JOB_ID_RE.test(s)) {
16049
+ throw new Error(`detached-job id must be 1\u201364 chars [A-Za-z0-9._-], got ${JSON.stringify(id)}`);
16050
+ }
16051
+ return s;
16052
+ }
16101
16053
  function readIntFile(file) {
16102
16054
  if (!(0, import_node_fs45.existsSync)(file)) return null;
16103
16055
  const n = Number.parseInt((0, import_node_fs45.readFileSync)(file, "utf8").trim(), 10);
@@ -16407,6 +16359,7 @@ var init_wait_for_job = __esm({
16407
16359
  import_node_fs45 = require("fs");
16408
16360
  import_node_path45 = require("path");
16409
16361
  init_workspace_scratch();
16362
+ init_job_process();
16410
16363
  init_wait_for_turn();
16411
16364
  MAX_JOB_CONTINUES = 8;
16412
16365
  MAX_JOB_DELTA_LINES = 80;
@@ -24913,7 +24866,8 @@ var init_orchestrator = __esm({
24913
24866
  throw new Error(`Thread is archived: ${thread.id}`);
24914
24867
  }
24915
24868
  const followUp = resolveSendFollowUp(current, opts?.followUp);
24916
- const consumed = consumeComposerAttachments(current);
24869
+ const explicit = opts?.attachments;
24870
+ const consumed = explicit !== void 0 ? { attachments: current.attachments, consumed: explicit } : consumeComposerAttachments(current);
24917
24871
  const queued = appendQueuedItem(
24918
24872
  current.queue,
24919
24873
  current.queueAttachments,
@@ -24927,7 +24881,7 @@ var init_orchestrator = __esm({
24927
24881
  const inFlight = this.activeTurns.has(thread.id) || this.startingTurns.has(thread.id) || current.status === "running";
24928
24882
  shouldSteer = followUp === "steer" && (inFlight || current.queue.length > 0);
24929
24883
  const patch = queued;
24930
- if (consumed.consumed.length > 0) {
24884
+ if (explicit === void 0 && consumed.consumed.length > 0) {
24931
24885
  patch.attachments = consumed.attachments;
24932
24886
  }
24933
24887
  if (!inFlight) patch.status = "queued";
@@ -18,9 +18,9 @@ import {
18
18
  searchAbleTimeTasks,
19
19
  toAbleTimeIssueInfo,
20
20
  updateAbleTimeTask
21
- } from "../chunk-KZ2CDZBZ.js";
22
- import "../chunk-DBFAFI5A.js";
23
- import "../chunk-GONPMH36.js";
21
+ } from "../chunk-R7HLXD4I.js";
22
+ import "../chunk-XKZAVGTT.js";
23
+ import "../chunk-IJDQKC5A.js";
24
24
  import {
25
25
  AGENT_GIT_ACTIONS,
26
26
  BOARD_COLUMN_DEFS,
@@ -52,7 +52,7 @@ import {
52
52
  sliceRunLogOutput,
53
53
  syncBoardPins,
54
54
  updateSchedule
55
- } from "../chunk-BJ5T22L5.js";
55
+ } from "../chunk-FELFTNH2.js";
56
56
  import "../chunk-LX5R5JOR.js";
57
57
  import {
58
58
  PRESENT_PLAN_REQUIRES_PLAN_MODE,
@@ -71,7 +71,7 @@ import {
71
71
  sideboardMcpProfile,
72
72
  trustSystemCertificates,
73
73
  worktreeMcpToolNames
74
- } from "../chunk-JLDJGGCL.js";
74
+ } from "../chunk-NT7RIWRR.js";
75
75
  import "../chunk-TQRSVE7D.js";
76
76
  import "../chunk-P2BSMNHB.js";
77
77
  import {
@@ -86,7 +86,7 @@ import {
86
86
  threadsSharingWorktree,
87
87
  waitForDetachedJob,
88
88
  waitForTurnToolResult
89
- } from "../chunk-GCSG3OGV.js";
89
+ } from "../chunk-HOMZKYHF.js";
90
90
  import {
91
91
  clipToolResultForStore,
92
92
  isInternalAgentStatusText,
@@ -97,7 +97,7 @@ import {
97
97
  isCloudCoordinatorThread,
98
98
  isOrchestratorThread,
99
99
  listWorkspaces
100
- } from "../chunk-2QUILREI.js";
100
+ } from "../chunk-QTZO4LPU.js";
101
101
  import {
102
102
  canonicalizeRepoPath,
103
103
  formatGhLandError,
@@ -108,7 +108,7 @@ import {
108
108
  resolveListPrsOptions,
109
109
  resolveRepoRoot,
110
110
  warmGithubAgentAuth
111
- } from "../chunk-NWE3NOWQ.js";
111
+ } from "../chunk-K7MWJLR7.js";
112
112
  import {
113
113
  CLI_DIR
114
114
  } from "../chunk-N2WW62LF.js";
@@ -131,7 +131,7 @@ import {
131
131
  resolveViewerProfileForRepo,
132
132
  saveLinearOAuth,
133
133
  writeViewerContext
134
- } from "../chunk-OIENQEGG.js";
134
+ } from "../chunk-WRIMAEF2.js";
135
135
  import "../chunk-NSTQ6QKD.js";
136
136
  import {
137
137
  dropNestedElectronEnvFromProcess
@@ -3860,7 +3860,7 @@ async function startMcpServer() {
3860
3860
  );
3861
3861
  }
3862
3862
  try {
3863
- const { maxConcurrentAgents } = await import("../app-settings-RAC4PSSP.js");
3863
+ const { maxConcurrentAgents } = await import("../app-settings-EQQZQNYD.js");
3864
3864
  orch.setMaxConcurrent(maxConcurrentAgents());
3865
3865
  } catch {
3866
3866
  }
@@ -4348,7 +4348,7 @@ async function startMcpServer() {
4348
4348
  if (!worktreeProfile) {
4349
4349
  registerConnectedIssueVendorTools(server);
4350
4350
  const { getCaffeinateHold, setCaffeinateHold } = await import("../caffeinate-hold-7JM5H5P3.js");
4351
- const { resolveNewThreadOptions, resolveThreadDefaults } = await import("../app-settings-RAC4PSSP.js");
4351
+ const { resolveNewThreadOptions, resolveThreadDefaults } = await import("../app-settings-EQQZQNYD.js");
4352
4352
  const accountDefaults = resolveThreadDefaults();
4353
4353
  const accountDefaultsHint = `Account defaults: agent=${accountDefaults.agent}, model=${accountDefaults.model?.trim() || "Auto"}, effort=${accountDefaults.effort}`;
4354
4354
  server.tool(
@@ -11,22 +11,22 @@ import {
11
11
  resolveSendFollowUp,
12
12
  startOrchestration,
13
13
  waitForPidExit
14
- } from "./chunk-BJ5T22L5.js";
14
+ } from "./chunk-FELFTNH2.js";
15
15
  import "./chunk-LX5R5JOR.js";
16
16
  import "./chunk-4GK32AYX.js";
17
17
  import "./chunk-5DZUWGKV.js";
18
- import "./chunk-JLDJGGCL.js";
18
+ import "./chunk-NT7RIWRR.js";
19
19
  import "./chunk-TQRSVE7D.js";
20
20
  import "./chunk-P2BSMNHB.js";
21
21
  import "./chunk-VKQGAWHY.js";
22
- import "./chunk-GCSG3OGV.js";
22
+ import "./chunk-HOMZKYHF.js";
23
23
  import "./chunk-UKSJO36E.js";
24
- import "./chunk-2QUILREI.js";
25
- import "./chunk-NWE3NOWQ.js";
24
+ import "./chunk-QTZO4LPU.js";
25
+ import "./chunk-K7MWJLR7.js";
26
26
  import "./chunk-N2WW62LF.js";
27
27
  import "./chunk-DD67JWTN.js";
28
28
  import "./chunk-2UG25RMK.js";
29
- import "./chunk-OIENQEGG.js";
29
+ import "./chunk-WRIMAEF2.js";
30
30
  import "./chunk-NSTQ6QKD.js";
31
31
  import "./chunk-WWUABK6B.js";
32
32
  import "./chunk-FJZWM2ON.js";
@@ -9,15 +9,15 @@ import {
9
9
  resolveSendFollowUp,
10
10
  startOrchestration,
11
11
  waitForPidExit
12
- } from "./chunk-XIVM7K77.js";
13
- import "./chunk-ADWNK2JH.js";
12
+ } from "./chunk-SQOAFR2U.js";
13
+ import "./chunk-NIB2IZ6J.js";
14
14
  import "./chunk-GWFVCCJZ.js";
15
- import "./chunk-DVTEC4BF.js";
15
+ import "./chunk-MGS5T2A3.js";
16
16
  import "./chunk-FAGK33E2.js";
17
17
  import "./chunk-7H655NEW.js";
18
18
  import "./chunk-PGPSIEMW.js";
19
- import "./chunk-PTNGMA5C.js";
20
- import "./chunk-USBZ7PH4.js";
19
+ import "./chunk-A2G3ZBJS.js";
20
+ import "./chunk-IPPY3FG5.js";
21
21
  import "./chunk-FWNL62VA.js";
22
22
  import "./chunk-2P4XKWV2.js";
23
23
  import "./chunk-ROPGQRPU.js";
@@ -29,7 +29,7 @@ import "./chunk-6K64FJDD.js";
29
29
  import "./chunk-UWQ6UCIB.js";
30
30
  import "./chunk-QVN2WOKJ.js";
31
31
  import "./chunk-NYBFYFK7.js";
32
- import "./chunk-PAH7KDL2.js";
32
+ import "./chunk-YNTXWFXT.js";
33
33
  import "./chunk-77WWLBCI.js";
34
34
  import "./chunk-4TR3HZFT.js";
35
35
  import "./chunk-WDRMZKVB.js";
@@ -7,12 +7,12 @@ import {
7
7
  primaryCheckoutFromLinkedWorktree,
8
8
  removeWorkspace,
9
9
  syncWorkspacesFromThreads
10
- } from "./chunk-2QUILREI.js";
11
- import "./chunk-NWE3NOWQ.js";
10
+ } from "./chunk-QTZO4LPU.js";
11
+ import "./chunk-K7MWJLR7.js";
12
12
  import "./chunk-N2WW62LF.js";
13
13
  import "./chunk-DD67JWTN.js";
14
14
  import "./chunk-2UG25RMK.js";
15
- import "./chunk-OIENQEGG.js";
15
+ import "./chunk-WRIMAEF2.js";
16
16
  import "./chunk-NSTQ6QKD.js";
17
17
  import "./chunk-WWUABK6B.js";
18
18
  import "./chunk-FJZWM2ON.js";
@@ -5,14 +5,14 @@ import {
5
5
  primaryCheckoutFromLinkedWorktree,
6
6
  removeWorkspace,
7
7
  syncWorkspacesFromThreads
8
- } from "./chunk-PTNGMA5C.js";
9
- import "./chunk-USBZ7PH4.js";
8
+ } from "./chunk-A2G3ZBJS.js";
9
+ import "./chunk-IPPY3FG5.js";
10
10
  import "./chunk-FWNL62VA.js";
11
11
  import "./chunk-2P4XKWV2.js";
12
12
  import "./chunk-6K64FJDD.js";
13
13
  import "./chunk-UWQ6UCIB.js";
14
14
  import "./chunk-QVN2WOKJ.js";
15
- import "./chunk-PAH7KDL2.js";
15
+ import "./chunk-YNTXWFXT.js";
16
16
  import "./chunk-77WWLBCI.js";
17
17
  import "./chunk-4TR3HZFT.js";
18
18
  import "./chunk-WDRMZKVB.js";
@@ -62,11 +62,11 @@ import {
62
62
  worktreeDisplayLabelForGroup,
63
63
  worktreeNameFromPath,
64
64
  worktreeSlugForTicket
65
- } from "./chunk-NWE3NOWQ.js";
65
+ } from "./chunk-K7MWJLR7.js";
66
66
  import "./chunk-N2WW62LF.js";
67
67
  import "./chunk-DD67JWTN.js";
68
68
  import "./chunk-2UG25RMK.js";
69
- import "./chunk-OIENQEGG.js";
69
+ import "./chunk-WRIMAEF2.js";
70
70
  import "./chunk-NSTQ6QKD.js";
71
71
  import "./chunk-WWUABK6B.js";
72
72
  import "./chunk-FJZWM2ON.js";
@@ -60,13 +60,13 @@ import {
60
60
  worktreeDisplayLabelForGroup,
61
61
  worktreeNameFromPath,
62
62
  worktreeSlugForTicket
63
- } from "./chunk-USBZ7PH4.js";
63
+ } from "./chunk-IPPY3FG5.js";
64
64
  import "./chunk-FWNL62VA.js";
65
65
  import "./chunk-2P4XKWV2.js";
66
66
  import "./chunk-6K64FJDD.js";
67
67
  import "./chunk-UWQ6UCIB.js";
68
68
  import "./chunk-QVN2WOKJ.js";
69
- import "./chunk-PAH7KDL2.js";
69
+ import "./chunk-YNTXWFXT.js";
70
70
  import "./chunk-77WWLBCI.js";
71
71
  import "./chunk-4TR3HZFT.js";
72
72
  import "./chunk-WDRMZKVB.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sideboard-ai/core",
3
- "version": "0.1.274",
3
+ "version": "0.1.275",
4
4
  "description": "Sideboard core — orchestration, agents, git worktrees, MCP server",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",