@sideboard-ai/core 0.1.206 → 0.1.207

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 (46) hide show
  1. package/dist/{abletime-TONBQP4O.js → abletime-I4IYZBKU.js} +4 -4
  2. package/dist/{abletime-S3UHQZVW.js → abletime-UWSSLXH3.js} +4 -4
  3. package/dist/{abletime-oauth-SD4SZY5U.js → abletime-oauth-C3BQXKW3.js} +5 -3
  4. package/dist/{abletime-oauth-AVCEO2DY.js → abletime-oauth-UZHPB3W2.js} +14 -4
  5. package/dist/{abletime-rest-J2OBB4VA.js → abletime-rest-5YPPEOKK.js} +3 -3
  6. package/dist/{abletime-rest-6ODSXV7G.js → abletime-rest-HYNYDYK3.js} +3 -3
  7. package/dist/agents/cursor-runner.js +1 -1
  8. package/dist/{agents-5SDF6KCI.js → agents-7MULGRPU.js} +4 -4
  9. package/dist/{agents-UW2BUEDH.js → agents-KCBCFMFW.js} +5 -5
  10. package/dist/{app-settings-YEPF46IJ.js → app-settings-GJ6KDYEF.js} +1 -1
  11. package/dist/{app-settings-LGHMNHSP.js → app-settings-R2KNCT37.js} +1 -1
  12. package/dist/{chunk-IQEBC3LD.js → chunk-2GPZ4BAU.js} +54 -27
  13. package/dist/{chunk-X743YN5Y.js → chunk-4EGK47WV.js} +1 -0
  14. package/dist/{chunk-SCIMSW7C.js → chunk-5UQTT4S7.js} +52 -25
  15. package/dist/{chunk-6Q7DFVDQ.js → chunk-6J4OQ6TF.js} +14 -4
  16. package/dist/{chunk-EJX62RSX.js → chunk-6KH4OBEW.js} +1 -1
  17. package/dist/{chunk-FO2NTJ7L.js → chunk-6YZLSZLK.js} +3 -3
  18. package/dist/{chunk-FX3P25X2.js → chunk-A2BRWIEM.js} +5 -5
  19. package/dist/{chunk-CYLDJWRK.js → chunk-F4LZUEIO.js} +37 -7
  20. package/dist/{chunk-4YXOCLJU.js → chunk-JZHRZ3DR.js} +1 -1
  21. package/dist/{chunk-6F2L3NTL.js → chunk-N4A4NWFO.js} +1 -1
  22. package/dist/{chunk-GD2WKFFA.js → chunk-PAQPT3JO.js} +2 -2
  23. package/dist/{chunk-R7QI3O74.js → chunk-QOJB5PC7.js} +2 -2
  24. package/dist/{chunk-3K257PCS.js → chunk-TEDEVD4O.js} +37 -7
  25. package/dist/{chunk-QAVWH2RQ.js → chunk-W6X4GZJG.js} +3 -3
  26. package/dist/{chunk-SGUVAK66.js → chunk-WXWJ5MJ4.js} +5 -5
  27. package/dist/{chunk-W6VM36YO.js → chunk-X45BV4VX.js} +5 -5
  28. package/dist/{chunk-QFBBUFD4.js → chunk-Y4CF7LHH.js} +1 -0
  29. package/dist/{chunk-64L62EZY.js → chunk-ZU7R35NY.js} +5 -5
  30. package/dist/{coordinator-prompt-6Q5NDWOC.js → coordinator-prompt-6A3D7BV3.js} +3 -3
  31. package/dist/{coordinator-prompt-EWHEK24X.js → coordinator-prompt-6NV2IHEX.js} +3 -3
  32. package/dist/{global-workspace-KHSZZKIH.js → global-workspace-I2X6UQMX.js} +3 -3
  33. package/dist/{global-workspace-2GMALKKE.js → global-workspace-VS6HZF2I.js} +3 -3
  34. package/dist/index.cjs +83 -13
  35. package/dist/index.d.cts +5 -3
  36. package/dist/index.d.ts +5 -3
  37. package/dist/index.js +14 -12
  38. package/dist/mcp/run-stdio.cjs +81 -13
  39. package/dist/mcp/run-stdio.js +10 -10
  40. package/dist/{orchestrator-WIL5WFBL.js → orchestrator-7WF32ZXJ.js} +5 -5
  41. package/dist/{orchestrator-NXZ5NDAM.js → orchestrator-CXQY5YRG.js} +6 -6
  42. package/dist/{workspaces-4CBMCP6N.js → workspaces-7PM7UGLG.js} +3 -3
  43. package/dist/{workspaces-6RGWGUFK.js → workspaces-CEU25ANO.js} +3 -3
  44. package/dist/{worktree-2U7SZBO2.js → worktree-T6PCOIHZ.js} +2 -2
  45. package/dist/{worktree-SPH7Q2S6.js → worktree-YD7Y6NRY.js} +2 -2
  46. package/package.json +1 -1
@@ -15,11 +15,11 @@ import {
15
15
  toAbleTimeIssueInfo,
16
16
  updateAbleTimeTask,
17
17
  verifyAbleTimeConnection
18
- } from "./chunk-QAVWH2RQ.js";
19
- import "./chunk-CYLDJWRK.js";
20
- import "./chunk-W6VM36YO.js";
18
+ } from "./chunk-W6X4GZJG.js";
19
+ import "./chunk-F4LZUEIO.js";
20
+ import "./chunk-X45BV4VX.js";
21
21
  import "./chunk-N7WZ6NIN.js";
22
- import "./chunk-QFBBUFD4.js";
22
+ import "./chunk-Y4CF7LHH.js";
23
23
  import "./chunk-4TR3HZFT.js";
24
24
  import "./chunk-WDRMZKVB.js";
25
25
  import "./chunk-JT7R45JB.js";
@@ -17,11 +17,11 @@ import {
17
17
  toAbleTimeIssueInfo,
18
18
  updateAbleTimeTask,
19
19
  verifyAbleTimeConnection
20
- } from "./chunk-FO2NTJ7L.js";
21
- import "./chunk-3K257PCS.js";
22
- import "./chunk-SGUVAK66.js";
20
+ } from "./chunk-6YZLSZLK.js";
21
+ import "./chunk-TEDEVD4O.js";
22
+ import "./chunk-WXWJ5MJ4.js";
23
23
  import "./chunk-VKQGAWHY.js";
24
- import "./chunk-X743YN5Y.js";
24
+ import "./chunk-4EGK47WV.js";
25
25
  import "./chunk-NSTQ6QKD.js";
26
26
  import "./chunk-KGZBYWZ3.js";
27
27
  import "./chunk-EQNRWDLN.js";
@@ -18,11 +18,12 @@ import {
18
18
  hasBakedAbleTimeOAuth,
19
19
  isAbleTimeOAuthCancelled,
20
20
  parseAbleTimeOAuthCallbackUrl,
21
+ resolveAbleTimeOAuthHost,
21
22
  startAbleTimeOAuth
22
- } from "./chunk-6Q7DFVDQ.js";
23
- import "./chunk-W6VM36YO.js";
23
+ } from "./chunk-6J4OQ6TF.js";
24
+ import "./chunk-X45BV4VX.js";
24
25
  import "./chunk-N7WZ6NIN.js";
25
- import "./chunk-QFBBUFD4.js";
26
+ import "./chunk-Y4CF7LHH.js";
26
27
  import "./chunk-4TR3HZFT.js";
27
28
  import "./chunk-WDRMZKVB.js";
28
29
  import "./chunk-JT7R45JB.js";
@@ -48,5 +49,6 @@ export {
48
49
  hasBakedAbleTimeOAuth,
49
50
  isAbleTimeOAuthCancelled,
50
51
  parseAbleTimeOAuthCallbackUrl,
52
+ resolveAbleTimeOAuthHost,
51
53
  startAbleTimeOAuth
52
54
  };
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  DEFAULT_ABLETIME_HOST,
5
5
  normalizeAbleTimeHost
6
- } from "./chunk-SGUVAK66.js";
6
+ } from "./chunk-WXWJ5MJ4.js";
7
7
  import {
8
8
  httpFetch
9
9
  } from "./chunk-VKQGAWHY.js";
@@ -12,7 +12,7 @@ import {
12
12
  getAbleTimeHost,
13
13
  loadAppSettings,
14
14
  saveAbleTimeConnection
15
- } from "./chunk-X743YN5Y.js";
15
+ } from "./chunk-4EGK47WV.js";
16
16
  import "./chunk-NSTQ6QKD.js";
17
17
  import "./chunk-KGZBYWZ3.js";
18
18
  import "./chunk-EQNRWDLN.js";
@@ -78,6 +78,12 @@ function ableTimeOAuthClientId() {
78
78
  function ableTimeOAuthResource(host) {
79
79
  return `${normalizeAbleTimeHost(host)}/api/public/v2/mcp`;
80
80
  }
81
+ function resolveAbleTimeOAuthHost(requested, saved) {
82
+ const fromRequest = requested?.trim();
83
+ if (fromRequest) return fromRequest;
84
+ const fromSaved = saved?.trim();
85
+ return fromSaved || void 0;
86
+ }
81
87
  function createAbleTimePkce() {
82
88
  const verifier = randomBytes(32).toString("base64url");
83
89
  const challenge = createHash("sha256").update(verifier).digest("base64url");
@@ -189,7 +195,10 @@ async function startAbleTimeOAuth(opts) {
189
195
  `AbleTime browser sign-in needs a Client ID Metadata Document URL. Host ${BAKED_ABLETIME_OAUTH_CLIENT_ID} (see site/oauth/abletime-client.json), or set SIDEBOARD_ABLETIME_OAUTH_CLIENT_ID.`
190
196
  );
191
197
  }
192
- const host = opts?.host?.trim() || void 0;
198
+ const host = resolveAbleTimeOAuthHost(
199
+ opts?.host,
200
+ loadAppSettings().integrations.abletimeHost
201
+ );
193
202
  const state = randomBytes(16).toString("hex");
194
203
  const pkce = createAbleTimePkce();
195
204
  const authorizeUrl = ableTimeOAuthAuthorizeUrl(clientId, state, pkce.challenge, host);
@@ -277,7 +286,7 @@ async function startAbleTimeOAuth(opts) {
277
286
  persistAbleTimeTokens(data, { host });
278
287
  const token = data.access_token.trim();
279
288
  try {
280
- const { getAbleTimeOrientation } = await import("./abletime-S3UHQZVW.js");
289
+ const { getAbleTimeOrientation } = await import("./abletime-UWSSLXH3.js");
281
290
  const orientation = await getAbleTimeOrientation({ token, host });
282
291
  return saveAbleTimeConnection({
283
292
  accessToken: token,
@@ -310,5 +319,6 @@ export {
310
319
  hasBakedAbleTimeOAuth,
311
320
  isAbleTimeOAuthCancelled,
312
321
  parseAbleTimeOAuthCallbackUrl,
322
+ resolveAbleTimeOAuthHost,
313
323
  startAbleTimeOAuth
314
324
  };
@@ -5,10 +5,10 @@ import {
5
5
  callAbleTimeRestTool,
6
6
  looksLikeAbleTimeUlid,
7
7
  textFromAbleTimeDoc
8
- } from "./chunk-CYLDJWRK.js";
9
- import "./chunk-W6VM36YO.js";
8
+ } from "./chunk-F4LZUEIO.js";
9
+ import "./chunk-X45BV4VX.js";
10
10
  import "./chunk-N7WZ6NIN.js";
11
- import "./chunk-QFBBUFD4.js";
11
+ import "./chunk-Y4CF7LHH.js";
12
12
  import "./chunk-4TR3HZFT.js";
13
13
  import "./chunk-WDRMZKVB.js";
14
14
  import "./chunk-JT7R45JB.js";
@@ -7,10 +7,10 @@ import {
7
7
  callAbleTimeRestTool,
8
8
  looksLikeAbleTimeUlid,
9
9
  textFromAbleTimeDoc
10
- } from "./chunk-3K257PCS.js";
11
- import "./chunk-SGUVAK66.js";
10
+ } from "./chunk-TEDEVD4O.js";
11
+ import "./chunk-WXWJ5MJ4.js";
12
12
  import "./chunk-VKQGAWHY.js";
13
- import "./chunk-X743YN5Y.js";
13
+ import "./chunk-4EGK47WV.js";
14
14
  import "./chunk-NSTQ6QKD.js";
15
15
  import "./chunk-KGZBYWZ3.js";
16
16
  import "./chunk-EQNRWDLN.js";
@@ -13,7 +13,7 @@ import {
13
13
  fetchCursorTurnCostUsd,
14
14
  formatUnknownDetail,
15
15
  looksLikeCursorHttp2StreamClose
16
- } from "../chunk-4YXOCLJU.js";
16
+ } from "../chunk-JZHRZ3DR.js";
17
17
  import {
18
18
  dropNestedElectronEnvFromProcess
19
19
  } from "../chunk-4TR3HZFT.js";
@@ -50,12 +50,12 @@ import {
50
50
  resolveQuotaFallbackAgent,
51
51
  turnCostUsdFromCursorUsage,
52
52
  whichOnPath
53
- } from "./chunk-64L62EZY.js";
54
- import "./chunk-R7QI3O74.js";
53
+ } from "./chunk-ZU7R35NY.js";
54
+ import "./chunk-QOJB5PC7.js";
55
55
  import "./chunk-3OHR73VK.js";
56
56
  import "./chunk-Y4MIXGPA.js";
57
57
  import "./chunk-VKQGAWHY.js";
58
- import "./chunk-6F2L3NTL.js";
58
+ import "./chunk-N4A4NWFO.js";
59
59
  import "./chunk-D6JWYJ4P.js";
60
60
  import "./chunk-DWGEBZ3C.js";
61
61
  import "./chunk-SYFVUF2C.js";
@@ -73,7 +73,7 @@ import {
73
73
  assertOrchestratorCapableAgent,
74
74
  coerceOrchestratorAgent,
75
75
  isOrchestratorCapableAgent
76
- } from "./chunk-X743YN5Y.js";
76
+ } from "./chunk-4EGK47WV.js";
77
77
  import "./chunk-NSTQ6QKD.js";
78
78
  import "./chunk-KGZBYWZ3.js";
79
79
  import "./chunk-EQNRWDLN.js";
@@ -44,9 +44,9 @@ import {
44
44
  resolveLoginCommand,
45
45
  resolveQuotaFallbackAgent,
46
46
  whichOnPath
47
- } from "./chunk-FX3P25X2.js";
48
- import "./chunk-GD2WKFFA.js";
49
- import "./chunk-EJX62RSX.js";
47
+ } from "./chunk-A2BRWIEM.js";
48
+ import "./chunk-PAQPT3JO.js";
49
+ import "./chunk-6KH4OBEW.js";
50
50
  import "./chunk-6K64FJDD.js";
51
51
  import "./chunk-QQKDGPUI.js";
52
52
  import "./chunk-SALM35KD.js";
@@ -57,13 +57,13 @@ import {
57
57
  parseCursorRunnerLine,
58
58
  preferredCursorCostCents,
59
59
  turnCostUsdFromCursorUsage
60
- } from "./chunk-4YXOCLJU.js";
60
+ } from "./chunk-JZHRZ3DR.js";
61
61
  import {
62
62
  ORCHESTRATOR_AGENT_KINDS,
63
63
  assertOrchestratorCapableAgent,
64
64
  coerceOrchestratorAgent,
65
65
  isOrchestratorCapableAgent
66
- } from "./chunk-QFBBUFD4.js";
66
+ } from "./chunk-Y4CF7LHH.js";
67
67
  import "./chunk-4TR3HZFT.js";
68
68
  import "./chunk-WDRMZKVB.js";
69
69
  import "./chunk-JT7R45JB.js";
@@ -89,7 +89,7 @@ import {
89
89
  updateProjectProfileSettings,
90
90
  usageOnLimit,
91
91
  writeViewerContext
92
- } from "./chunk-QFBBUFD4.js";
92
+ } from "./chunk-Y4CF7LHH.js";
93
93
  import "./chunk-4TR3HZFT.js";
94
94
  import "./chunk-WDRMZKVB.js";
95
95
  import "./chunk-JT7R45JB.js";
@@ -91,7 +91,7 @@ import {
91
91
  updateProjectProfileSettings,
92
92
  usageOnLimit,
93
93
  writeViewerContext
94
- } from "./chunk-X743YN5Y.js";
94
+ } from "./chunk-4EGK47WV.js";
95
95
  import "./chunk-NSTQ6QKD.js";
96
96
  import "./chunk-KGZBYWZ3.js";
97
97
  import "./chunk-EQNRWDLN.js";
@@ -26,7 +26,7 @@ import {
26
26
  stripBrightsyNdjsonNoise,
27
27
  sumUsageList,
28
28
  toolDescription
29
- } from "./chunk-FX3P25X2.js";
29
+ } from "./chunk-A2BRWIEM.js";
30
30
  import {
31
31
  SLACK_REPLY_FORMATTING,
32
32
  addWorkspace,
@@ -49,7 +49,7 @@ import {
49
49
  stageAbsolutePathsAsAttachments,
50
50
  stageBuffersAsAttachments,
51
51
  syncWorkspacesFromThreads
52
- } from "./chunk-GD2WKFFA.js";
52
+ } from "./chunk-PAQPT3JO.js";
53
53
  import {
54
54
  addPrStackLayer,
55
55
  allocateTeamName,
@@ -99,7 +99,7 @@ import {
99
99
  worktreeDisplayLabelForGroup,
100
100
  worktreeNameFromPath,
101
101
  worktreeSlugForTicket
102
- } from "./chunk-EJX62RSX.js";
102
+ } from "./chunk-6KH4OBEW.js";
103
103
  import {
104
104
  ATTACHMENTS_DIR,
105
105
  DETACHED_JOBS_DIR,
@@ -131,7 +131,7 @@ import {
131
131
  shouldRetryFailedAgentTurn,
132
132
  summarizeTurnStderr,
133
133
  turnFailChatText
134
- } from "./chunk-4YXOCLJU.js";
134
+ } from "./chunk-JZHRZ3DR.js";
135
135
  import {
136
136
  assertOrchestratorCapableAgent,
137
137
  childEnvWithAppSettings,
@@ -156,7 +156,7 @@ import {
156
156
  updateAdvancedSettings,
157
157
  usageOnLimit,
158
158
  writeSecureJson
159
- } from "./chunk-QFBBUFD4.js";
159
+ } from "./chunk-Y4CF7LHH.js";
160
160
  import {
161
161
  stripNestedElectronEnv
162
162
  } from "./chunk-4TR3HZFT.js";
@@ -475,7 +475,7 @@ async function continueSourceThread(threadId, prompt) {
475
475
  await continueOnReply(threadId, prompt);
476
476
  return;
477
477
  }
478
- const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-NXZ5NDAM.js");
478
+ const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-CXQY5YRG.js");
479
479
  await getOrchestrator2().send(threadId, prompt);
480
480
  } catch {
481
481
  }
@@ -809,9 +809,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
809
809
  `Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
810
810
  );
811
811
  }
812
- const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-2GMALKKE.js");
812
+ const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-VS6HZF2I.js");
813
813
  if (isGlobalThread2(thread)) {
814
- const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-6Q5NDWOC.js");
814
+ const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-6A3D7BV3.js");
815
815
  ensureGlobalCoordinatorCwd2(
816
816
  isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
817
817
  );
@@ -1019,6 +1019,24 @@ var FIX_CI_RE = /^Fix CI: .+\.$/;
1019
1019
  function normalizePrState(state) {
1020
1020
  return (state ?? "").trim().toUpperCase();
1021
1021
  }
1022
+ function samePrIdentity(a, b) {
1023
+ const left = (a ?? "").trim().replace(/\/+$/, "");
1024
+ const right = (b ?? "").trim().replace(/\/+$/, "");
1025
+ if (!left || !right) return false;
1026
+ if (left === right) return true;
1027
+ const ln = left.match(/\/pull\/(\d+)/i)?.[1];
1028
+ const rn = right.match(/\/pull\/(\d+)/i)?.[1];
1029
+ return Boolean(ln && rn && ln === rn);
1030
+ }
1031
+ function shouldPersistFetchedPrMeta(opts) {
1032
+ const meta = opts.metaUrl?.trim() || "";
1033
+ if (!meta) return false;
1034
+ const head = opts.headPrUrl?.trim() || "";
1035
+ if (head) return samePrIdentity(meta, head);
1036
+ const live = opts.livePrUrl?.trim() || "";
1037
+ if (live) return samePrIdentity(meta, live);
1038
+ return true;
1039
+ }
1022
1040
  function sameLoginList(a, b) {
1023
1041
  const left = [...a ?? []].map((s) => s.trim().toLowerCase()).filter(Boolean).sort();
1024
1042
  const right = [...b ?? []].map((s) => s.trim().toLowerCase()).filter(Boolean).sort();
@@ -3789,7 +3807,7 @@ async function createThread(input, _onSetupLine) {
3789
3807
  });
3790
3808
  await requireAgent(resolved.agent);
3791
3809
  if (input.cowboy) {
3792
- const { cowboyModeEnabled } = await import("./app-settings-YEPF46IJ.js");
3810
+ const { cowboyModeEnabled } = await import("./app-settings-GJ6KDYEF.js");
3793
3811
  if (!cowboyModeEnabled()) {
3794
3812
  throw new Error(
3795
3813
  "Cowboy mode is off. Enable it in Settings \u2192 Advanced."
@@ -3847,7 +3865,7 @@ async function createThread(input, _onSetupLine) {
3847
3865
  let sourceIsFork = false;
3848
3866
  if (!input.cowboy && sourceType === "branch" && (!sourceRef || sourceRef === "HEAD" || sourceRef === "default")) {
3849
3867
  if (isAbleTimeConnected() && getIssueSource() === "abletime") {
3850
- const { ensureAbleTimeTask, issueAttachmentForAbleTimeTask } = await import("./abletime-TONBQP4O.js");
3868
+ const { ensureAbleTimeTask, issueAttachmentForAbleTimeTask } = await import("./abletime-I4IYZBKU.js");
3851
3869
  const task = await ensureAbleTimeTask({
3852
3870
  title: title?.trim() || "Untitled work",
3853
3871
  description: input.prompt?.trim() || void 0
@@ -3949,7 +3967,7 @@ async function createThread(input, _onSetupLine) {
3949
3967
  return readThread(thread.id) ?? thread;
3950
3968
  }
3951
3969
  async function listLinearIssues(agent, repoPath) {
3952
- const { getAdapter: getAdapter2 } = await import("./agents-UW2BUEDH.js");
3970
+ const { getAdapter: getAdapter2 } = await import("./agents-KCBCFMFW.js");
3953
3971
  await requireAgent(agent, { requireLinear: true });
3954
3972
  const adapter = getAdapter2(agent);
3955
3973
  if (!adapter.listLinearIssues) {
@@ -4395,7 +4413,7 @@ async function adoptThread(input) {
4395
4413
  messages: input.messages ?? []
4396
4414
  });
4397
4415
  writeThread(thread);
4398
- const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-4CBMCP6N.js");
4416
+ const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-7PM7UGLG.js");
4399
4417
  await ensureWorkspace2(repoPath);
4400
4418
  const { ensureWorktreeSideboardIgnored: ensureWorktreeSideboardIgnored2 } = await import("./worktree-exclude-X54WSOXM.js");
4401
4419
  await ensureWorktreeSideboardIgnored2(input.worktreePath);
@@ -6979,7 +6997,7 @@ function formatScheduledPrompt(name, prompt) {
6979
6997
  ${prompt}`;
6980
6998
  }
6981
6999
  async function defaultDeps() {
6982
- const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-NXZ5NDAM.js");
7000
+ const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-CXQY5YRG.js");
6983
7001
  const orch = getOrchestrator2();
6984
7002
  return {
6985
7003
  findThread: (id) => findThreadByRef(id),
@@ -7249,7 +7267,7 @@ var Orchestrator = class {
7249
7267
  orphans: orphans.map((o) => ({ path: o.path, repoPath: o.repoPath }))
7250
7268
  });
7251
7269
  }
7252
- const { autoCleanupOrphansEnabled } = await import("./app-settings-YEPF46IJ.js");
7270
+ const { autoCleanupOrphansEnabled } = await import("./app-settings-GJ6KDYEF.js");
7253
7271
  if (autoCleanupOrphansEnabled() && shouldRunWorktreeCleanup() && orphans.length > 0) {
7254
7272
  await cleanupOrphanWorktrees({ repoPaths });
7255
7273
  }
@@ -7541,7 +7559,7 @@ var Orchestrator = class {
7541
7559
  }
7542
7560
  await setup;
7543
7561
  if (skipSetup) return;
7544
- const { autoRunAfterSetupEnabled } = await import("./app-settings-YEPF46IJ.js");
7562
+ const { autoRunAfterSetupEnabled } = await import("./app-settings-GJ6KDYEF.js");
7545
7563
  if (autoRunAfterSetupEnabled()) {
7546
7564
  try {
7547
7565
  await this.startDev(threadId);
@@ -7865,7 +7883,7 @@ var Orchestrator = class {
7865
7883
  }
7866
7884
  const isBrightsy = fresh.agent === "brightsy";
7867
7885
  const isOrchestration = isOrchestratorThread(fresh);
7868
- const { autoRenameBranchEnabled, getGithubGitAuthMode, gitBranchPrefixSetting } = await import("./app-settings-YEPF46IJ.js");
7886
+ const { autoRenameBranchEnabled, getGithubGitAuthMode, gitBranchPrefixSetting } = await import("./app-settings-GJ6KDYEF.js");
7869
7887
  const gitAuthMode = getGithubGitAuthMode();
7870
7888
  const worktreeDirective = isBrightsy || isOrchestration ? null : formatWorktreeDirective(fresh, {
7871
7889
  githubSlug: await resolveGithubRepoSlug(fresh.worktreePath).catch(
@@ -8030,7 +8048,9 @@ var Orchestrator = class {
8030
8048
  let detail = lastStderr || (exitCode !== 0 ? fallbackTurnFailDetail(assistantText) : "");
8031
8049
  const liveThread = this.requireThread(threadId);
8032
8050
  const isolateCodexPluginRetry = liveThread.agent === "codex" && shouldRetryCodexPluginIsolate(detail, {
8033
- alreadyIsolated: liveThread.isolateCodexPlugins === true
8051
+ // Coordinators already pass toCodexUnattendedAppsArgs — a second
8052
+ // isolate exec keeps sessionId and burns the crash/OOM retry.
8053
+ alreadyIsolated: liveThread.isolateCodexPlugins === true || isOrchestratorThread(liveThread)
8034
8054
  });
8035
8055
  if (isolateCodexPluginRetry) {
8036
8056
  updateThread(threadId, { isolateCodexPlugins: true });
@@ -8833,7 +8853,7 @@ var Orchestrator = class {
8833
8853
  } catch {
8834
8854
  headUrl = null;
8835
8855
  }
8836
- return { thread, selectors: connectedPrSelectors(thread, headUrl), cwd };
8856
+ return { thread, selectors: connectedPrSelectors(thread, headUrl), cwd, headUrl };
8837
8857
  }
8838
8858
  async getPrChecks(threadRef) {
8839
8859
  const { selectors, cwd } = await this.withPrSelector(threadRef);
@@ -8844,13 +8864,20 @@ var Orchestrator = class {
8844
8864
  return null;
8845
8865
  }
8846
8866
  async getPrMeta(threadRef) {
8847
- const { thread, selectors, cwd } = await this.withPrSelector(threadRef);
8867
+ const { thread, selectors, cwd, headUrl } = await this.withPrSelector(threadRef);
8848
8868
  for (const selector of selectors) {
8849
8869
  const meta = await getPrMeta(cwd, selector);
8850
- if (meta) {
8851
- await this.persistPrMetaAndMaybeArchive(thread, meta);
8852
- return meta;
8870
+ if (!meta) continue;
8871
+ const live = this.requireThread(thread.id);
8872
+ if (!shouldPersistFetchedPrMeta({
8873
+ metaUrl: meta.url,
8874
+ livePrUrl: live.prUrl,
8875
+ headPrUrl: headUrl
8876
+ })) {
8877
+ continue;
8853
8878
  }
8879
+ await this.persistPrMetaAndMaybeArchive(live, meta);
8880
+ return meta;
8854
8881
  }
8855
8882
  return null;
8856
8883
  }
@@ -8872,7 +8899,7 @@ var Orchestrator = class {
8872
8899
  if (!titled.userSetTitle && meta.title && titled.title !== meta.title) {
8873
8900
  updateThread(thread.id, { title: meta.title });
8874
8901
  }
8875
- const { autoArchiveOnMergeEnabled } = await import("./app-settings-YEPF46IJ.js");
8902
+ const { autoArchiveOnMergeEnabled } = await import("./app-settings-GJ6KDYEF.js");
8876
8903
  const latest = this.requireThread(thread.id);
8877
8904
  if (!shouldAutoArchiveOnPrMerge({
8878
8905
  previousPrState: prevState || null,
@@ -9149,7 +9176,7 @@ var Orchestrator = class {
9149
9176
  this.emit({ type: "status_changed", threadId: archived.id, status: "archived" });
9150
9177
  if (thread.repoPath && !isGlobalRepoPath(thread.repoPath)) {
9151
9178
  try {
9152
- const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-4CBMCP6N.js");
9179
+ const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-7PM7UGLG.js");
9153
9180
  await ensureWorkspace2(thread.repoPath);
9154
9181
  } catch {
9155
9182
  }
@@ -9176,7 +9203,7 @@ var Orchestrator = class {
9176
9203
  await runArchiveScript(thread.repoPath, thread.worktreePath);
9177
9204
  } catch {
9178
9205
  }
9179
- const { deleteBranchOnPurgeEnabled } = await import("./app-settings-YEPF46IJ.js");
9206
+ const { deleteBranchOnPurgeEnabled } = await import("./app-settings-GJ6KDYEF.js");
9180
9207
  const deleteBranch = opts?.deleteBranch ?? deleteBranchOnPurgeEnabled();
9181
9208
  await removeWorktree(thread.repoPath, thread.worktreePath, {
9182
9209
  deleteBranch: deleteBranch ? thread.branchName : void 0
@@ -9203,7 +9230,7 @@ var Orchestrator = class {
9203
9230
  `Cowboy checkout missing: ${thread.worktreePath}. Re-add the project folder, then restore.`
9204
9231
  );
9205
9232
  }
9206
- const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-2U7SZBO2.js");
9233
+ const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-T6PCOIHZ.js");
9207
9234
  const slug = thread.worktreePath.split("/").pop();
9208
9235
  const dest = thread.worktreePath;
9209
9236
  await withRepoGitLock(thread.repoPath, async () => {
@@ -9313,7 +9340,7 @@ async function startOrchestration(opts) {
9313
9340
  sourceRef: "default",
9314
9341
  ...createOpts
9315
9342
  }).catch(async () => {
9316
- const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-2U7SZBO2.js");
9343
+ const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-T6PCOIHZ.js");
9317
9344
  const repo = await resolveRepoRoot2(repoPath);
9318
9345
  const def = await resolveDefaultBranch2(repo);
9319
9346
  return orch.createThread({
@@ -1605,6 +1605,7 @@ function disconnectAbleTimeConnection() {
1605
1605
  delete integrations.abletimeRefreshToken;
1606
1606
  delete integrations.abletimeTokenExpiresAt;
1607
1607
  delete integrations.abletimeViewerName;
1608
+ delete integrations.abletimeHost;
1608
1609
  return saveAppSettings({ ...current, integrations });
1609
1610
  }
1610
1611
  function getIssueSource(settings = loadAppSettings()) {