@sideboard-ai/core 0.1.273 → 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-T47ARZ5Q.js → chunk-FELFTNH2.js} +25 -24
  14. package/dist/{chunk-OUBQH5GR.js → chunk-HOMZKYHF.js} +31 -29
  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-HO2T6BC3.js → chunk-MGS5T2A3.js} +31 -29
  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-N3LASDJM.js → chunk-SQOAFR2U.js} +26 -25
  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-3AQM67VK.js → conductor-GBCE37K4.js} +4 -4
  31. package/dist/{conductor-FLWACOVC.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 +1700 -186
  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 +95 -141
  41. package/dist/mcp/run-stdio.js +11 -11
  42. package/dist/{orchestrator-YKSDWR6C.js → orchestrator-6QJLM6Y4.js} +6 -6
  43. package/dist/{orchestrator-K42IBMBE.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
@@ -18,12 +18,12 @@ import {
18
18
  toAbleTimeIssueInfo,
19
19
  updateAbleTimeTask,
20
20
  verifyAbleTimeConnection
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 "./chunk-VKQGAWHY.js";
25
25
  import "./chunk-N2WW62LF.js";
26
- import "./chunk-OIENQEGG.js";
26
+ import "./chunk-WRIMAEF2.js";
27
27
  import "./chunk-NSTQ6QKD.js";
28
28
  import "./chunk-WWUABK6B.js";
29
29
  import "./chunk-FJZWM2ON.js";
@@ -16,12 +16,12 @@ import {
16
16
  toAbleTimeIssueInfo,
17
17
  updateAbleTimeTask,
18
18
  verifyAbleTimeConnection
19
- } from "./chunk-UXI52MLJ.js";
20
- import "./chunk-AGXZAMOF.js";
21
- import "./chunk-L6CYOON4.js";
19
+ } from "./chunk-2J34G3WJ.js";
20
+ import "./chunk-NQ7JMVSU.js";
21
+ import "./chunk-PZURG3XN.js";
22
22
  import "./chunk-N7WZ6NIN.js";
23
23
  import "./chunk-6K64FJDD.js";
24
- import "./chunk-PAH7KDL2.js";
24
+ import "./chunk-YNTXWFXT.js";
25
25
  import "./chunk-77WWLBCI.js";
26
26
  import "./chunk-4TR3HZFT.js";
27
27
  import "./chunk-WDRMZKVB.js";
@@ -20,10 +20,10 @@ import {
20
20
  parseAbleTimeOAuthCallbackUrl,
21
21
  resolveAbleTimeOAuthHost,
22
22
  startAbleTimeOAuth
23
- } from "./chunk-LAIBYKZS.js";
24
- import "./chunk-L6CYOON4.js";
23
+ } from "./chunk-QINJKNLR.js";
24
+ import "./chunk-PZURG3XN.js";
25
25
  import "./chunk-N7WZ6NIN.js";
26
- import "./chunk-PAH7KDL2.js";
26
+ import "./chunk-YNTXWFXT.js";
27
27
  import "./chunk-77WWLBCI.js";
28
28
  import "./chunk-4TR3HZFT.js";
29
29
  import "./chunk-WDRMZKVB.js";
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  DEFAULT_ABLETIME_HOST,
5
5
  normalizeAbleTimeHost
6
- } from "./chunk-GONPMH36.js";
6
+ } from "./chunk-IJDQKC5A.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-OIENQEGG.js";
15
+ } from "./chunk-WRIMAEF2.js";
16
16
  import "./chunk-NSTQ6QKD.js";
17
17
  import "./chunk-WWUABK6B.js";
18
18
  import "./chunk-FJZWM2ON.js";
@@ -288,7 +288,7 @@ async function startAbleTimeOAuth(opts) {
288
288
  persistAbleTimeTokens(data, { host });
289
289
  const token = data.access_token.trim();
290
290
  try {
291
- const { getAbleTimeOrientation } = await import("./abletime-4ZSDI4YP.js");
291
+ const { getAbleTimeOrientation } = await import("./abletime-VCVPSLSU.js");
292
292
  const orientation = await getAbleTimeOrientation({ token, host });
293
293
  return saveAbleTimeConnection({
294
294
  accessToken: token,
@@ -5,10 +5,10 @@ import {
5
5
  callAbleTimeRestTool,
6
6
  looksLikeAbleTimeUlid,
7
7
  textFromAbleTimeDoc
8
- } from "./chunk-AGXZAMOF.js";
9
- import "./chunk-L6CYOON4.js";
8
+ } from "./chunk-NQ7JMVSU.js";
9
+ import "./chunk-PZURG3XN.js";
10
10
  import "./chunk-N7WZ6NIN.js";
11
- import "./chunk-PAH7KDL2.js";
11
+ import "./chunk-YNTXWFXT.js";
12
12
  import "./chunk-77WWLBCI.js";
13
13
  import "./chunk-4TR3HZFT.js";
14
14
  import "./chunk-WDRMZKVB.js";
@@ -7,10 +7,10 @@ import {
7
7
  callAbleTimeRestTool,
8
8
  looksLikeAbleTimeUlid,
9
9
  textFromAbleTimeDoc
10
- } from "./chunk-DBFAFI5A.js";
11
- import "./chunk-GONPMH36.js";
10
+ } from "./chunk-XKZAVGTT.js";
11
+ import "./chunk-IJDQKC5A.js";
12
12
  import "./chunk-VKQGAWHY.js";
13
- import "./chunk-OIENQEGG.js";
13
+ import "./chunk-WRIMAEF2.js";
14
14
  import "./chunk-NSTQ6QKD.js";
15
15
  import "./chunk-WWUABK6B.js";
16
16
  import "./chunk-FJZWM2ON.js";
@@ -47,11 +47,11 @@ import {
47
47
  resolveLoginCommand,
48
48
  resolveQuotaFallbackAgent,
49
49
  whichOnPath
50
- } from "./chunk-ADWNK2JH.js";
50
+ } from "./chunk-NIB2IZ6J.js";
51
51
  import "./chunk-GWFVCCJZ.js";
52
52
  import "./chunk-FAGK33E2.js";
53
- import "./chunk-PTNGMA5C.js";
54
- import "./chunk-USBZ7PH4.js";
53
+ import "./chunk-A2G3ZBJS.js";
54
+ import "./chunk-IPPY3FG5.js";
55
55
  import "./chunk-FWNL62VA.js";
56
56
  import "./chunk-2P4XKWV2.js";
57
57
  import "./chunk-ROPGQRPU.js";
@@ -85,7 +85,7 @@ import {
85
85
  assertOrchestratorCapableAgent,
86
86
  coerceOrchestratorAgent,
87
87
  isOrchestratorCapableAgent
88
- } from "./chunk-PAH7KDL2.js";
88
+ } from "./chunk-YNTXWFXT.js";
89
89
  import "./chunk-77WWLBCI.js";
90
90
  import "./chunk-4TR3HZFT.js";
91
91
  import "./chunk-WDRMZKVB.js";
@@ -56,13 +56,13 @@ import {
56
56
  resolveQuotaFallbackAgent,
57
57
  turnCostUsdFromCursorUsage,
58
58
  whichOnPath
59
- } from "./chunk-JLDJGGCL.js";
59
+ } from "./chunk-NT7RIWRR.js";
60
60
  import "./chunk-TQRSVE7D.js";
61
61
  import "./chunk-P2BSMNHB.js";
62
62
  import "./chunk-VKQGAWHY.js";
63
63
  import "./chunk-UKSJO36E.js";
64
- import "./chunk-2QUILREI.js";
65
- import "./chunk-NWE3NOWQ.js";
64
+ import "./chunk-QTZO4LPU.js";
65
+ import "./chunk-K7MWJLR7.js";
66
66
  import "./chunk-N2WW62LF.js";
67
67
  import "./chunk-DD67JWTN.js";
68
68
  import {
@@ -81,7 +81,7 @@ import {
81
81
  assertOrchestratorCapableAgent,
82
82
  coerceOrchestratorAgent,
83
83
  isOrchestratorCapableAgent
84
- } from "./chunk-OIENQEGG.js";
84
+ } from "./chunk-WRIMAEF2.js";
85
85
  import "./chunk-NSTQ6QKD.js";
86
86
  import "./chunk-WWUABK6B.js";
87
87
  import "./chunk-FJZWM2ON.js";
@@ -107,7 +107,7 @@ import {
107
107
  updateProjectProfileSettings,
108
108
  usageOnLimit,
109
109
  writeViewerContext
110
- } from "./chunk-OIENQEGG.js";
110
+ } from "./chunk-WRIMAEF2.js";
111
111
  import "./chunk-NSTQ6QKD.js";
112
112
  import "./chunk-WWUABK6B.js";
113
113
  import "./chunk-FJZWM2ON.js";
@@ -105,7 +105,7 @@ import {
105
105
  updateProjectProfileSettings,
106
106
  usageOnLimit,
107
107
  writeViewerContext
108
- } from "./chunk-PAH7KDL2.js";
108
+ } from "./chunk-YNTXWFXT.js";
109
109
  import "./chunk-77WWLBCI.js";
110
110
  import "./chunk-4TR3HZFT.js";
111
111
  import "./chunk-WDRMZKVB.js";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  abletimeRestUrl,
3
3
  textFromAbleTimeDoc
4
- } from "./chunk-AGXZAMOF.js";
4
+ } from "./chunk-NQ7JMVSU.js";
5
5
  import {
6
6
  assertAbleTimeCredential,
7
7
  callAbleTimeTool,
8
8
  normalizeAbleTimeHost,
9
9
  rewriteAbleTimeError
10
- } from "./chunk-L6CYOON4.js";
10
+ } from "./chunk-PZURG3XN.js";
11
11
  import {
12
12
  httpFetch
13
13
  } from "./chunk-N7WZ6NIN.js";
@@ -20,7 +20,7 @@ import {
20
20
  getAbleTimeHost,
21
21
  isAbleTimeConnected,
22
22
  saveAbleTimeConnection
23
- } from "./chunk-PAH7KDL2.js";
23
+ } from "./chunk-YNTXWFXT.js";
24
24
 
25
25
  // src/integrations/issue-attachments.ts
26
26
  import { existsSync, mkdirSync, writeFileSync } from "fs";
@@ -6,7 +6,7 @@ import {
6
6
  resolveRepoRoot,
7
7
  takenSlugsFromThread,
8
8
  teamSlugFromName
9
- } from "./chunk-USBZ7PH4.js";
9
+ } from "./chunk-IPPY3FG5.js";
10
10
  import {
11
11
  createEmptyThread,
12
12
  listThreads,
@@ -29,7 +29,7 @@ import {
29
29
  resolveThreadDefaults,
30
30
  resolveViewerProfile,
31
31
  resolveViewerProfileForRepo
32
- } from "./chunk-PAH7KDL2.js";
32
+ } from "./chunk-YNTXWFXT.js";
33
33
  import {
34
34
  appDataDir,
35
35
  globalAgentCwd,
@@ -21,7 +21,7 @@ import {
21
21
  parseSessionQuotaResetAt,
22
22
  planModeTurnInstruction,
23
23
  resolveQuotaFallbackAgent
24
- } from "./chunk-JLDJGGCL.js";
24
+ } from "./chunk-NT7RIWRR.js";
25
25
  import {
26
26
  REVIEW_TAB_TITLE,
27
27
  applyWorktreePkgCacheEnv,
@@ -58,7 +58,7 @@ import {
58
58
  worktreeDevProcessKey,
59
59
  worktreeRunProcessKey,
60
60
  worktreeSetupProcessKey
61
- } from "./chunk-OUBQH5GR.js";
61
+ } from "./chunk-HOMZKYHF.js";
62
62
  import {
63
63
  applyAgentEvent,
64
64
  clipAgentEventForPaint,
@@ -105,7 +105,7 @@ import {
105
105
  stageAbsolutePathsAsAttachments,
106
106
  stageBuffersAsAttachments,
107
107
  syncWorkspacesFromThreads
108
- } from "./chunk-2QUILREI.js";
108
+ } from "./chunk-QTZO4LPU.js";
109
109
  import {
110
110
  addPrStackLayer,
111
111
  agentNicknameFromWorktreePath,
@@ -157,7 +157,7 @@ import {
157
157
  worktreeIdentityTitles,
158
158
  worktreeNameFromPath,
159
159
  worktreeSlugForTicket
160
- } from "./chunk-NWE3NOWQ.js";
160
+ } from "./chunk-K7MWJLR7.js";
161
161
  import {
162
162
  clearStaleIndexLocks,
163
163
  enrichPathWithNpmGlobalBin,
@@ -195,7 +195,7 @@ import {
195
195
  updateAdvancedSettings,
196
196
  usageOnLimit,
197
197
  withTurnScopedCost
198
- } from "./chunk-OIENQEGG.js";
198
+ } from "./chunk-WRIMAEF2.js";
199
199
  import {
200
200
  writePrivateFile
201
201
  } from "./chunk-NSTQ6QKD.js";
@@ -485,9 +485,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
485
485
  `Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
486
486
  );
487
487
  }
488
- const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-FR7QTLPK.js");
488
+ const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-7XEXTIHL.js");
489
489
  if (isGlobalThread2(thread)) {
490
- const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-MVUHFNSC.js");
490
+ const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-SFZCZ3HR.js");
491
491
  ensureGlobalCoordinatorCwd2(
492
492
  isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
493
493
  );
@@ -2117,7 +2117,7 @@ async function createThread(input, _onSetupLine) {
2117
2117
  });
2118
2118
  await requireAgent(resolved.agent);
2119
2119
  if (input.cowboy) {
2120
- const { cowboyModeEnabled } = await import("./app-settings-RAC4PSSP.js");
2120
+ const { cowboyModeEnabled } = await import("./app-settings-EQQZQNYD.js");
2121
2121
  if (!cowboyModeEnabled()) {
2122
2122
  throw new Error(
2123
2123
  "Cowboy mode is off. Enable it in Settings \u2192 Advanced."
@@ -2175,7 +2175,7 @@ async function createThread(input, _onSetupLine) {
2175
2175
  let sourceIsFork = false;
2176
2176
  if (!input.cowboy && sourceType === "branch" && (!sourceRef || sourceRef === "HEAD" || sourceRef === "default")) {
2177
2177
  if (isAbleTimeConnected() && getIssueSource() === "abletime") {
2178
- const { ensureAbleTimeTask, issueAttachmentForAbleTimeTask } = await import("./abletime-4ZSDI4YP.js");
2178
+ const { ensureAbleTimeTask, issueAttachmentForAbleTimeTask } = await import("./abletime-VCVPSLSU.js");
2179
2179
  const task = await ensureAbleTimeTask({
2180
2180
  title: title?.trim() || "Untitled work",
2181
2181
  description: input.prompt?.trim() || void 0
@@ -2780,7 +2780,7 @@ async function adoptThread(input) {
2780
2780
  messages: input.messages ?? []
2781
2781
  });
2782
2782
  writeThread(thread);
2783
- const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-5GERYHDJ.js");
2783
+ const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-BJCHMGVG.js");
2784
2784
  await ensureWorkspace2(repoPath);
2785
2785
  const { ensureWorktreeSideboardIgnored } = await import("./worktree-exclude-5N2KTYIT.js");
2786
2786
  await ensureWorktreeSideboardIgnored(input.worktreePath);
@@ -4228,7 +4228,7 @@ var LONG_RUNNING_SKILL_BODY = `# Long-running jobs
4228
4228
 
4229
4229
  A Sideboard or Cursor **worktree turn** SIGTERMs the agent shell (and its process group) when the user sends another message or the turn is interrupted. \`block_until_ms: 0\` is not enough \u2014 the child stays in that group.
4230
4230
 
4231
- Do **not** ask the human to check back. Detach, then **wait** in 45s slices (MCP \`wait_for_job\`, same idea as \`wait_for_turn\`) until \`stillRunning\` is false. Do not end the turn with \u201CI\u2019ll let you know\u201D or \u201Ca background poll will notify me.\u201D Native background bash/Task notify (Claude, Cursor, Codex, OpenCode) does **not** resume a Sideboard chat.
4231
+ Do **not** ask the human to check back. Detach, then **wait** in 45s slices (MCP \`wait_for_job\`, same idea as \`wait_for_turn\`) until \`stillRunning\` is false. Do not end the turn after starting a job \u2014 a native CLI Task or bash notify does **not** resume a Sideboard chat (Claude, Cursor, Codex, OpenCode).
4232
4232
 
4233
4233
  ## Tool
4234
4234
 
@@ -4849,7 +4849,7 @@ function formatPrGateDirective() {
4849
4849
  return [
4850
4850
  "If a goal is given (not after every push):",
4851
4851
  "- Enter a watch-fix-push loop and stay in it until that goal is met or you are blocked (examples: \u201CGreptile 5/5\u201D, \u201CCI green\u201D, \u201Cuntil checks pass\u201D). Do not stop after one red run or one review cycle.",
4852
- "- Wait with `/long-running`: detach `gh pr checks --watch` (add `-R <origin>` when needed), then loop `wait_for_job` until stillRunning is false. Do not end the turn \u2014 a background poll / Task notify does not resume this chat. Do not ask the human to poll.",
4852
+ "- Wait with `/long-running`: detach `gh pr checks --watch` (add `-R <origin>` when needed), then loop `wait_for_job` until stillRunning is false. Do not end the turn \u2014 a native CLI Task or bash notify does not resume this chat. Do not ask the human to poll.",
4853
4853
  "- Greptile 5/5: wait for the greptile check; read the latest `N/5` from the PR body or Greptile\u2019s most recently *updated* issue comment; also fetch unresolved review comments / the \u201CPrompt to fix all with AI\u201D block. Done = **5/5 and zero unresolved Greptile comments**. If Greptile is idle, comment `@greptile review`. Cap about 5 iterations, then report leftovers. Do not merge unless asked."
4854
4854
  ].join("\n");
4855
4855
  }
@@ -4882,7 +4882,7 @@ function formatLongRunningDirective(opts) {
4882
4882
  }
4883
4883
  function formatLongRunningReminder(opts) {
4884
4884
  const invoke = formatDetachedJobInvoke(opts?.scriptPath);
4885
- return `Long jobs: \`${invoke} start <id> -- <cmd>\`, loop wait_for_job (or detached-job wait). The log pane updates from wait JSON; present_artifact type=log is optional. stop_job if hanging or wrong. Do not say you will let the user know later \u2014 stay in the turn. A background poll / Task notify does not resume this chat. Project Dev button: list_run_scripts / run_dev_script / stop_dev_script / get_run_log (UI-connected \u2014 not detached-job). ${formatDevAccessHint(opts?.activeRuns)}`;
4885
+ return `Long jobs: \`${invoke} start <id> -- <cmd>\`, loop wait_for_job (or detached-job wait). The log pane updates from wait JSON; present_artifact type=log is optional. stop_job if hanging or wrong. Do not say you will let the user know later \u2014 stay in the turn. A native CLI Task or bash notify does not resume this chat. Project Dev button: list_run_scripts / run_dev_script / stop_dev_script / get_run_log (UI-connected \u2014 not detached-job). ${formatDevAccessHint(opts?.activeRuns)}`;
4886
4886
  }
4887
4887
  function formatArtifactDirective() {
4888
4888
  return [
@@ -5271,7 +5271,7 @@ function formatScheduledPrompt(name, prompt) {
5271
5271
  ${prompt}`;
5272
5272
  }
5273
5273
  async function defaultDeps() {
5274
- const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-YKSDWR6C.js");
5274
+ const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-6QJLM6Y4.js");
5275
5275
  const orch = getOrchestrator2();
5276
5276
  return {
5277
5277
  findThread: (id) => findThreadByRef(id),
@@ -5589,7 +5589,7 @@ var Orchestrator = class {
5589
5589
  orphans: orphans.map((o) => ({ path: o.path, repoPath: o.repoPath }))
5590
5590
  });
5591
5591
  }
5592
- const { autoCleanupOrphansEnabled } = await import("./app-settings-RAC4PSSP.js");
5592
+ const { autoCleanupOrphansEnabled } = await import("./app-settings-EQQZQNYD.js");
5593
5593
  if (autoCleanupOrphansEnabled() && shouldRunWorktreeCleanup() && orphans.length > 0) {
5594
5594
  await cleanupOrphanWorktrees({ repoPaths });
5595
5595
  }
@@ -5978,7 +5978,7 @@ var Orchestrator = class {
5978
5978
  }
5979
5979
  await setup;
5980
5980
  if (skipSetup) return;
5981
- const { autoRunAfterSetupEnabled } = await import("./app-settings-RAC4PSSP.js");
5981
+ const { autoRunAfterSetupEnabled } = await import("./app-settings-EQQZQNYD.js");
5982
5982
  if (autoRunAfterSetupEnabled()) {
5983
5983
  try {
5984
5984
  await this.startDev(threadId);
@@ -6031,7 +6031,8 @@ var Orchestrator = class {
6031
6031
  throw new Error(`Thread is archived: ${thread.id}`);
6032
6032
  }
6033
6033
  const followUp = resolveSendFollowUp(current, opts?.followUp);
6034
- const consumed = consumeComposerAttachments(current);
6034
+ const explicit = opts?.attachments;
6035
+ const consumed = explicit !== void 0 ? { attachments: current.attachments, consumed: explicit } : consumeComposerAttachments(current);
6035
6036
  const queued = appendQueuedItem(
6036
6037
  current.queue,
6037
6038
  current.queueAttachments,
@@ -6045,7 +6046,7 @@ var Orchestrator = class {
6045
6046
  const inFlight = this.activeTurns.has(thread.id) || this.startingTurns.has(thread.id) || current.status === "running";
6046
6047
  shouldSteer = followUp === "steer" && (inFlight || current.queue.length > 0);
6047
6048
  const patch = queued;
6048
- if (consumed.consumed.length > 0) {
6049
+ if (explicit === void 0 && consumed.consumed.length > 0) {
6049
6050
  patch.attachments = consumed.attachments;
6050
6051
  }
6051
6052
  if (!inFlight) patch.status = "queued";
@@ -6357,7 +6358,7 @@ var Orchestrator = class {
6357
6358
  }
6358
6359
  const isBrightsy = fresh.agent === "brightsy";
6359
6360
  const isOrchestration = isOrchestratorThread(fresh);
6360
- const { autoRenameBranchEnabled, getGithubGitAuthMode, gitBranchPrefixSetting } = await import("./app-settings-RAC4PSSP.js");
6361
+ const { autoRenameBranchEnabled, getGithubGitAuthMode, gitBranchPrefixSetting } = await import("./app-settings-EQQZQNYD.js");
6361
6362
  const gitAuthMode = getGithubGitAuthMode();
6362
6363
  const worktreeDirective = isBrightsy || isOrchestration ? null : formatWorktreeDirective(fresh, {
6363
6364
  githubSlug: await withTimeout(
@@ -7667,7 +7668,7 @@ var Orchestrator = class {
7667
7668
  if (Object.keys(patch).length === 0) continue;
7668
7669
  updateThread(t.id, patch);
7669
7670
  }
7670
- const { autoArchiveOnMergeEnabled } = await import("./app-settings-RAC4PSSP.js");
7671
+ const { autoArchiveOnMergeEnabled } = await import("./app-settings-EQQZQNYD.js");
7671
7672
  const latest = this.requireThread(thread.id);
7672
7673
  if (!shouldAutoArchiveOnPrMerge({
7673
7674
  previousPrState: prevState || null,
@@ -7958,7 +7959,7 @@ var Orchestrator = class {
7958
7959
  this.enforceHistoryRetention();
7959
7960
  if (thread.repoPath && !isGlobalRepoPath(thread.repoPath)) {
7960
7961
  try {
7961
- const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-5GERYHDJ.js");
7962
+ const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-BJCHMGVG.js");
7962
7963
  await ensureWorkspace2(thread.repoPath);
7963
7964
  } catch {
7964
7965
  }
@@ -7985,7 +7986,7 @@ var Orchestrator = class {
7985
7986
  await runArchiveScript(thread.repoPath, thread.worktreePath);
7986
7987
  } catch {
7987
7988
  }
7988
- const { deleteBranchOnPurgeEnabled } = await import("./app-settings-RAC4PSSP.js");
7989
+ const { deleteBranchOnPurgeEnabled } = await import("./app-settings-EQQZQNYD.js");
7989
7990
  const deleteBranch = opts?.deleteBranch ?? deleteBranchOnPurgeEnabled();
7990
7991
  await removeWorktree(thread.repoPath, thread.worktreePath, {
7991
7992
  deleteBranch: deleteBranch ? thread.branchName : void 0
@@ -8012,7 +8013,7 @@ var Orchestrator = class {
8012
8013
  `Cowboy checkout missing: ${thread.worktreePath}. Re-add the project folder, then restore.`
8013
8014
  );
8014
8015
  }
8015
- const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-ACW23KJ5.js");
8016
+ const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-L57T3KH7.js");
8016
8017
  const slug = thread.worktreePath.split("/").pop();
8017
8018
  const dest = thread.worktreePath;
8018
8019
  await withRepoGitLock(thread.repoPath, async () => {
@@ -8122,7 +8123,7 @@ async function startOrchestration(opts) {
8122
8123
  sourceRef: "default",
8123
8124
  ...createOpts
8124
8125
  }).catch(async () => {
8125
- const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-ACW23KJ5.js");
8126
+ const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-L57T3KH7.js");
8126
8127
  const repo = await resolveRepoRoot2(repoPath);
8127
8128
  const def = await resolveDefaultBranch2(repo);
8128
8129
  return orch.createThread({
@@ -11,7 +11,7 @@ import {
11
11
  isGlobalThread,
12
12
  isOrchestratorThread,
13
13
  isSlackCoordinatorThread
14
- } from "./chunk-2QUILREI.js";
14
+ } from "./chunk-QTZO4LPU.js";
15
15
  import {
16
16
  allocateTeamName,
17
17
  mergeAgentGitAuthEnv,
@@ -19,7 +19,7 @@ import {
19
19
  resolveAgentGitAuthEnv,
20
20
  takenSlugsFromThread,
21
21
  worktreeNameFromPath
22
- } from "./chunk-NWE3NOWQ.js";
22
+ } from "./chunk-K7MWJLR7.js";
23
23
  import {
24
24
  ATTACHMENTS_DIR,
25
25
  DETACHED_JOBS_DIR,
@@ -36,7 +36,7 @@ import {
36
36
  import {
37
37
  assertOrchestratorCapableAgent,
38
38
  contextTokens
39
- } from "./chunk-OIENQEGG.js";
39
+ } from "./chunk-WRIMAEF2.js";
40
40
  import {
41
41
  stripNestedElectronEnv
42
42
  } from "./chunk-WWUABK6B.js";
@@ -1141,6 +1141,31 @@ import {
1141
1141
  } from "fs";
1142
1142
  import { dirname as dirname3, join as join4 } from "path";
1143
1143
 
1144
+ // src/mcp/job-process.ts
1145
+ function jobAlive(pid) {
1146
+ if (!Number.isInteger(pid) || pid <= 0) return false;
1147
+ try {
1148
+ process.kill(pid, 0);
1149
+ return true;
1150
+ } catch {
1151
+ return false;
1152
+ }
1153
+ }
1154
+ function processGroupAlive(pgid) {
1155
+ if (process.platform === "win32") return false;
1156
+ if (!Number.isInteger(pgid) || pgid <= 1) return false;
1157
+ try {
1158
+ process.kill(-pgid, 0);
1159
+ return true;
1160
+ } catch (err) {
1161
+ return Boolean(err && typeof err === "object" && "code" in err && err.code === "EPERM");
1162
+ }
1163
+ }
1164
+ function jobTreeAlive(pid) {
1165
+ if (pid == null) return false;
1166
+ return jobAlive(pid) || processGroupAlive(pid);
1167
+ }
1168
+
1144
1169
  // src/orchestrator/task-state.ts
1145
1170
  function isIncompleteTaskState(state) {
1146
1171
  return state === "failed" || state === "canceled";
@@ -1243,29 +1268,6 @@ function sanitizeDetachedJobId(id) {
1243
1268
  }
1244
1269
  return s;
1245
1270
  }
1246
- function jobAlive(pid) {
1247
- if (!Number.isInteger(pid) || pid <= 0) return false;
1248
- try {
1249
- process.kill(pid, 0);
1250
- return true;
1251
- } catch {
1252
- return false;
1253
- }
1254
- }
1255
- function processGroupAlive(pgid) {
1256
- if (process.platform === "win32") return false;
1257
- if (!Number.isInteger(pgid) || pgid <= 1) return false;
1258
- try {
1259
- process.kill(-pgid, 0);
1260
- return true;
1261
- } catch (err) {
1262
- return Boolean(err && typeof err === "object" && "code" in err && err.code === "EPERM");
1263
- }
1264
- }
1265
- function jobTreeAlive(pid) {
1266
- if (pid == null) return false;
1267
- return jobAlive(pid) || processGroupAlive(pid);
1268
- }
1269
1271
  function readIntFile(file) {
1270
1272
  if (!existsSync3(file)) return null;
1271
1273
  const n = Number.parseInt(readFileSync3(file, "utf8").trim(), 10);
@@ -1306,7 +1308,7 @@ function looksLikeDeferredDonePromise(text) {
1306
1308
  if (!t || t.length > DEFERRED_DONE_MAX_CHARS) return false;
1307
1309
  const unquoted = t.replace(/`[^`]*`/g, " ").replace(/["“”][^"“”]*["“”]/g, " ").replace(/\s+/g, " ").trim();
1308
1310
  if (!unquoted) return false;
1309
- return /\b(i['’]?ll|i will)\s+let you know\b/i.test(unquoted) || /\blet you know when\b/i.test(unquoted) || /\b(check back|ping me)\s+when\b/i.test(unquoted) || /\bi(?:['’]ll| will)\s+(report|update you)\s+when\b/i.test(unquoted) || /\bbackground poll\b/i.test(unquoted) || /\bwill notify (?:me|you) when\b/i.test(unquoted) || /\bi(?:['’]ll| will) be notified when\b/i.test(unquoted) || /\bi(?:['’]ll| will)\s+(?:keep|continue)\s+(?:watching|waiting|polling|checking)\b/i.test(
1311
+ return /\b(i['’]?ll|i will)\s+let you know\b/i.test(unquoted) || /\blet you know when\b/i.test(unquoted) || /\b(check back|ping me)\s+when\b/i.test(unquoted) || /\bi(?:['’]ll| will)\s+(report|update you)\s+when\b/i.test(unquoted) || /\bwill notify (?:me|you) when\b/i.test(unquoted) || /\bi(?:['’]ll| will) be notified when\b/i.test(unquoted) || /\bi(?:['’]ll| will)\s+(?:keep|continue)\s+(?:watching|waiting|polling|checking)\b/i.test(
1310
1312
  unquoted
1311
1313
  ) || /\bi(?:['’]ll| will)\s+come back when\b/i.test(unquoted);
1312
1314
  }
@@ -1350,7 +1352,7 @@ function formatJobStillRunningContinuePrompt(jobIds) {
1350
1352
  function formatDeferredDoneContinuePrompt() {
1351
1353
  return [
1352
1354
  "You ended the turn after promising to report later, but no detached job is running.",
1353
- "A native background poll / Task / bash notify does not resume this chat (Claude, Cursor, Codex, OpenCode).",
1355
+ "A native CLI Task or bash notify does not resume this chat (Claude, Cursor, Codex, OpenCode).",
1354
1356
  "If tests/pack/deploy still need to run: start once with detached-job.cjs, then loop wait_for_job until stillRunning is false (the log pane updates from wait JSON).",
1355
1357
  "Do not say you will let the user know later."
1356
1358
  ].join(" ");
@@ -1575,7 +1577,7 @@ var PORT_RANGE_SIZE = 10;
1575
1577
  var RECLAIM_RETRY_DELAY_MS = 40;
1576
1578
  var RECLAIM_TRIES = 8;
1577
1579
  async function killReclaimable(ports, worktreePath, signal) {
1578
- const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-FLWACOVC.js");
1580
+ const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-YYQKZAND.js");
1579
1581
  if (worktreePath) killStaleWorktreeListeners2(ports, worktreePath, signal);
1580
1582
  else killListenersOnPorts2(ports);
1581
1583
  }
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  getAbleTimeHost,
8
8
  isAbleTimeConnected
9
- } from "./chunk-OIENQEGG.js";
9
+ } from "./chunk-WRIMAEF2.js";
10
10
 
11
11
  // src/integrations/abletime-mcp.ts
12
12
  var DEFAULT_ABLETIME_HOST = "https://track.abletime.com";
@@ -155,7 +155,7 @@ function textsFromUnknown(value) {
155
155
  return "";
156
156
  }
157
157
  async function abletimeMcpRequest(method, params, opts) {
158
- const rawToken = opts?.token ?? await import("./abletime-oauth-DCEIINYT.js").then((m) => m.ensureAbleTimeAccessToken());
158
+ const rawToken = opts?.token ?? await import("./abletime-oauth-4K7MICAD.js").then((m) => m.ensureAbleTimeAccessToken());
159
159
  if (!rawToken?.trim()) {
160
160
  throw new Error("AbleTime is not connected \u2014 paste a personal access token in Account settings");
161
161
  }
@@ -226,9 +226,9 @@ async function callAbleTimeTool(name, args = {}, opts) {
226
226
  if (!opts?.token && !isAbleTimeConnected()) {
227
227
  throw new Error("AbleTime is not connected \u2014 paste a personal access token in Account settings");
228
228
  }
229
- const rawToken = opts?.token ?? await import("./abletime-oauth-DCEIINYT.js").then((m) => m.ensureAbleTimeAccessToken());
229
+ const rawToken = opts?.token ?? await import("./abletime-oauth-4K7MICAD.js").then((m) => m.ensureAbleTimeAccessToken());
230
230
  if (rawToken && ableTimeUsesRest(rawToken)) {
231
- const { callAbleTimeRestTool } = await import("./abletime-rest-VN6PZ6P2.js");
231
+ const { callAbleTimeRestTool } = await import("./abletime-rest-PIBCNHF3.js");
232
232
  return callAbleTimeRestTool(name, args, { ...opts, token: rawToken });
233
233
  }
234
234
  const requestOpts = { ...opts, pm: opts?.pm ?? abletimeToolUsesPm(name) };
@@ -244,7 +244,7 @@ async function callAbleTimeTool(name, args = {}, opts) {
244
244
  return await call();
245
245
  }
246
246
  if (rawToken && ableTimeUsesRest(rawToken) && isAbleTimeRejectedCredential(message)) {
247
- const { callAbleTimeRestTool } = await import("./abletime-rest-VN6PZ6P2.js");
247
+ const { callAbleTimeRestTool } = await import("./abletime-rest-PIBCNHF3.js");
248
248
  return callAbleTimeRestTool(name, args, { ...opts, token: rawToken });
249
249
  }
250
250
  throw err instanceof Error ? new Error(rewriteAbleTimeError(err.message)) : err;
@@ -20,7 +20,7 @@ import {
20
20
  import {
21
21
  getGithubGitAuthMode,
22
22
  getGithubPat
23
- } from "./chunk-PAH7KDL2.js";
23
+ } from "./chunk-YNTXWFXT.js";
24
24
  import {
25
25
  worktreesRoot
26
26
  } from "./chunk-EHT2DRT4.js";
@@ -19,7 +19,7 @@ import {
19
19
  import {
20
20
  getGithubGitAuthMode,
21
21
  getGithubPat
22
- } from "./chunk-OIENQEGG.js";
22
+ } from "./chunk-WRIMAEF2.js";
23
23
  import {
24
24
  listThreads
25
25
  } from "./chunk-JANCPF7Z.js";