@sideboard-ai/core 0.1.273 → 0.1.274

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.
@@ -58,7 +58,7 @@ import {
58
58
  worktreeDevProcessKey,
59
59
  worktreeRunProcessKey,
60
60
  worktreeSetupProcessKey
61
- } from "./chunk-OUBQH5GR.js";
61
+ } from "./chunk-GCSG3OGV.js";
62
62
  import {
63
63
  applyAgentEvent,
64
64
  clipAgentEventForPaint,
@@ -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-6T35CJHB.js");
5275
5275
  const orch = getOrchestrator2();
5276
5276
  return {
5277
5277
  findThread: (id) => findThreadByRef(id),
@@ -1362,7 +1362,7 @@ function looksLikeDeferredDonePromise(text) {
1362
1362
  if (!t || t.length > DEFERRED_DONE_MAX_CHARS) return false;
1363
1363
  const unquoted = t.replace(/`[^`]*`/g, " ").replace(/["“”][^"“”]*["“”]/g, " ").replace(/\s+/g, " ").trim();
1364
1364
  if (!unquoted) return false;
1365
- 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(
1365
+ 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(
1366
1366
  unquoted
1367
1367
  ) || /\bi(?:['’]ll| will)\s+come back when\b/i.test(unquoted);
1368
1368
  }
@@ -1406,7 +1406,7 @@ function formatJobStillRunningContinuePrompt(jobIds) {
1406
1406
  function formatDeferredDoneContinuePrompt() {
1407
1407
  return [
1408
1408
  "You ended the turn after promising to report later, but no detached job is running.",
1409
- "A native background poll / Task / bash notify does not resume this chat (Claude, Cursor, Codex, OpenCode).",
1409
+ "A native CLI Task or bash notify does not resume this chat (Claude, Cursor, Codex, OpenCode).",
1410
1410
  "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).",
1411
1411
  "Do not say you will let the user know later."
1412
1412
  ].join(" ");
@@ -1631,7 +1631,7 @@ var PORT_RANGE_SIZE = 10;
1631
1631
  var RECLAIM_RETRY_DELAY_MS = 40;
1632
1632
  var RECLAIM_TRIES = 8;
1633
1633
  async function killReclaimable(ports, worktreePath, signal) {
1634
- const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-3AQM67VK.js");
1634
+ const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-B2BXSA7N.js");
1635
1635
  if (worktreePath) killStaleWorktreeListeners2(ports, worktreePath, signal);
1636
1636
  else killListenersOnPorts2(ports);
1637
1637
  }
@@ -1306,7 +1306,7 @@ function looksLikeDeferredDonePromise(text) {
1306
1306
  if (!t || t.length > DEFERRED_DONE_MAX_CHARS) return false;
1307
1307
  const unquoted = t.replace(/`[^`]*`/g, " ").replace(/["“”][^"“”]*["“”]/g, " ").replace(/\s+/g, " ").trim();
1308
1308
  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(
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) || /\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
1310
  unquoted
1311
1311
  ) || /\bi(?:['’]ll| will)\s+come back when\b/i.test(unquoted);
1312
1312
  }
@@ -1350,7 +1350,7 @@ function formatJobStillRunningContinuePrompt(jobIds) {
1350
1350
  function formatDeferredDoneContinuePrompt() {
1351
1351
  return [
1352
1352
  "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).",
1353
+ "A native CLI Task or bash notify does not resume this chat (Claude, Cursor, Codex, OpenCode).",
1354
1354
  "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
1355
  "Do not say you will let the user know later."
1356
1356
  ].join(" ");
@@ -1575,7 +1575,7 @@ var PORT_RANGE_SIZE = 10;
1575
1575
  var RECLAIM_RETRY_DELAY_MS = 40;
1576
1576
  var RECLAIM_TRIES = 8;
1577
1577
  async function killReclaimable(ports, worktreePath, signal) {
1578
- const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-FLWACOVC.js");
1578
+ const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-DXBLL23V.js");
1579
1579
  if (worktreePath) killStaleWorktreeListeners2(ports, worktreePath, signal);
1580
1580
  else killListenersOnPorts2(ports);
1581
1581
  }
@@ -44,7 +44,7 @@ import {
44
44
  worktreeDevProcessKey,
45
45
  worktreeRunProcessKey,
46
46
  worktreeSetupProcessKey
47
- } from "./chunk-HO2T6BC3.js";
47
+ } from "./chunk-DVTEC4BF.js";
48
48
  import {
49
49
  applyAgentEvent,
50
50
  clipAgentEventForPaint,
@@ -4374,7 +4374,7 @@ var LONG_RUNNING_SKILL_BODY = `# Long-running jobs
4374
4374
 
4375
4375
  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.
4376
4376
 
4377
- 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.
4377
+ 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).
4378
4378
 
4379
4379
  ## Tool
4380
4380
 
@@ -5017,7 +5017,7 @@ function formatPrGateDirective() {
5017
5017
  return [
5018
5018
  "If a goal is given (not after every push):",
5019
5019
  "- 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.",
5020
- "- 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.",
5020
+ "- 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.",
5021
5021
  "- 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."
5022
5022
  ].join("\n");
5023
5023
  }
@@ -5050,7 +5050,7 @@ function formatLongRunningDirective(opts) {
5050
5050
  }
5051
5051
  function formatLongRunningReminder(opts) {
5052
5052
  const invoke = formatDetachedJobInvoke(opts?.scriptPath);
5053
- 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)}`;
5053
+ 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)}`;
5054
5054
  }
5055
5055
  function formatArtifactDirective() {
5056
5056
  return [
@@ -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-K42IBMBE.js");
5613
+ const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-QRSEOHXI.js");
5614
5614
  const orch = getOrchestrator2();
5615
5615
  return {
5616
5616
  findThread: (id) => findThreadByRef(id),
@@ -31,7 +31,7 @@ import {
31
31
  tryReservePort,
32
32
  tryReservePorts,
33
33
  worktreeRunPortsPath
34
- } from "./chunk-HO2T6BC3.js";
34
+ } from "./chunk-DVTEC4BF.js";
35
35
  import "./chunk-FAGK33E2.js";
36
36
  import "./chunk-PTNGMA5C.js";
37
37
  import "./chunk-USBZ7PH4.js";
@@ -33,7 +33,7 @@ import {
33
33
  tryReservePort,
34
34
  tryReservePorts,
35
35
  worktreeRunPortsPath
36
- } from "./chunk-OUBQH5GR.js";
36
+ } from "./chunk-GCSG3OGV.js";
37
37
  import "./chunk-UKSJO36E.js";
38
38
  import "./chunk-2QUILREI.js";
39
39
  import "./chunk-NWE3NOWQ.js";
package/dist/index.cjs CHANGED
@@ -19287,7 +19287,7 @@ function looksLikeDeferredDonePromise(text6) {
19287
19287
  if (!t || t.length > DEFERRED_DONE_MAX_CHARS) return false;
19288
19288
  const unquoted = t.replace(/`[^`]*`/g, " ").replace(/["“”][^"“”]*["“”]/g, " ").replace(/\s+/g, " ").trim();
19289
19289
  if (!unquoted) return false;
19290
- 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(
19290
+ 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(
19291
19291
  unquoted
19292
19292
  ) || /\bi(?:['’]ll| will)\s+come back when\b/i.test(unquoted);
19293
19293
  }
@@ -19331,7 +19331,7 @@ function formatJobStillRunningContinuePrompt(jobIds) {
19331
19331
  function formatDeferredDoneContinuePrompt() {
19332
19332
  return [
19333
19333
  "You ended the turn after promising to report later, but no detached job is running.",
19334
- "A native background poll / Task / bash notify does not resume this chat (Claude, Cursor, Codex, OpenCode).",
19334
+ "A native CLI Task or bash notify does not resume this chat (Claude, Cursor, Codex, OpenCode).",
19335
19335
  "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).",
19336
19336
  "Do not say you will let the user know later."
19337
19337
  ].join(" ");
@@ -24865,7 +24865,7 @@ var init_long_running = __esm({
24865
24865
 
24866
24866
  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.
24867
24867
 
24868
- 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.
24868
+ 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).
24869
24869
 
24870
24870
  ## Tool
24871
24871
 
@@ -25534,7 +25534,7 @@ function formatPrGateDirective() {
25534
25534
  return [
25535
25535
  "If a goal is given (not after every push):",
25536
25536
  "- 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.",
25537
- "- 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.",
25537
+ "- 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.",
25538
25538
  "- 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."
25539
25539
  ].join("\n");
25540
25540
  }
@@ -25567,7 +25567,7 @@ function formatLongRunningDirective(opts) {
25567
25567
  }
25568
25568
  function formatLongRunningReminder(opts) {
25569
25569
  const invoke = formatDetachedJobInvoke(opts?.scriptPath);
25570
- 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)}`;
25570
+ 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)}`;
25571
25571
  }
25572
25572
  function formatArtifactDirective() {
25573
25573
  return [
package/dist/index.js CHANGED
@@ -173,7 +173,7 @@ import {
173
173
  worktreeBoardStatus,
174
174
  worktreeCleanupSettings,
175
175
  writeWorktreeFile
176
- } from "./chunk-N3LASDJM.js";
176
+ } from "./chunk-XIVM7K77.js";
177
177
  import {
178
178
  BASE_ALLOWED_TOOLS,
179
179
  BRIGHTSY_MCP_ALLOWED_TOOLS,
@@ -380,7 +380,7 @@ import {
380
380
  waitForTurnToolResult,
381
381
  worktreeRunPortsPath,
382
382
  wrapReviewSkillMarkdown
383
- } from "./chunk-HO2T6BC3.js";
383
+ } from "./chunk-DVTEC4BF.js";
384
384
  import {
385
385
  STDERR_EVENT_MAX_CHARS,
386
386
  STDOUT_EVENT_MAX_CHARS,
@@ -5139,7 +5139,7 @@ async function handleJobStop(params, _ctx) {
5139
5139
  return stopDetachedJob(jobCwd(rec), id, reason ? { reason } : void 0);
5140
5140
  }
5141
5141
  async function defaultTurnWait(ref, timeoutMs) {
5142
- const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-K42IBMBE.js");
5142
+ const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-QRSEOHXI.js");
5143
5143
  const orch = getOrchestrator2();
5144
5144
  const thread = await orch.waitForTurn(ref, timeoutMs, {
5145
5145
  resolveIfStillRunning: true
@@ -10469,7 +10469,7 @@ async function continueSourceThread(threadId, prompt) {
10469
10469
  await continueOnReply(threadId, prompt);
10470
10470
  return;
10471
10471
  }
10472
- const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-K42IBMBE.js");
10472
+ const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-QRSEOHXI.js");
10473
10473
  await getOrchestrator2().send(threadId, prompt);
10474
10474
  } catch {
10475
10475
  }
@@ -16138,7 +16138,7 @@ function looksLikeDeferredDonePromise(text6) {
16138
16138
  if (!t || t.length > DEFERRED_DONE_MAX_CHARS) return false;
16139
16139
  const unquoted = t.replace(/`[^`]*`/g, " ").replace(/["“”][^"“”]*["“”]/g, " ").replace(/\s+/g, " ").trim();
16140
16140
  if (!unquoted) return false;
16141
- 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(
16141
+ 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(
16142
16142
  unquoted
16143
16143
  ) || /\bi(?:['’]ll| will)\s+come back when\b/i.test(unquoted);
16144
16144
  }
@@ -16182,7 +16182,7 @@ function formatJobStillRunningContinuePrompt(jobIds) {
16182
16182
  function formatDeferredDoneContinuePrompt() {
16183
16183
  return [
16184
16184
  "You ended the turn after promising to report later, but no detached job is running.",
16185
- "A native background poll / Task / bash notify does not resume this chat (Claude, Cursor, Codex, OpenCode).",
16185
+ "A native CLI Task or bash notify does not resume this chat (Claude, Cursor, Codex, OpenCode).",
16186
16186
  "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).",
16187
16187
  "Do not say you will let the user know later."
16188
16188
  ].join(" ");
@@ -22534,7 +22534,7 @@ var init_long_running = __esm({
22534
22534
 
22535
22535
  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.
22536
22536
 
22537
- 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.
22537
+ 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).
22538
22538
 
22539
22539
  ## Tool
22540
22540
 
@@ -23181,7 +23181,7 @@ function formatPrGateDirective() {
23181
23181
  return [
23182
23182
  "If a goal is given (not after every push):",
23183
23183
  "- 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.",
23184
- "- 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.",
23184
+ "- 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.",
23185
23185
  "- 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."
23186
23186
  ].join("\n");
23187
23187
  }
@@ -23214,7 +23214,7 @@ function formatLongRunningDirective(opts) {
23214
23214
  }
23215
23215
  function formatLongRunningReminder(opts) {
23216
23216
  const invoke = formatDetachedJobInvoke(opts?.scriptPath);
23217
- 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)}`;
23217
+ 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)}`;
23218
23218
  }
23219
23219
  function formatArtifactDirective() {
23220
23220
  return [
@@ -52,7 +52,7 @@ import {
52
52
  sliceRunLogOutput,
53
53
  syncBoardPins,
54
54
  updateSchedule
55
- } from "../chunk-T47ARZ5Q.js";
55
+ } from "../chunk-BJ5T22L5.js";
56
56
  import "../chunk-LX5R5JOR.js";
57
57
  import {
58
58
  PRESENT_PLAN_REQUIRES_PLAN_MODE,
@@ -86,7 +86,7 @@ import {
86
86
  threadsSharingWorktree,
87
87
  waitForDetachedJob,
88
88
  waitForTurnToolResult
89
- } from "../chunk-OUBQH5GR.js";
89
+ } from "../chunk-GCSG3OGV.js";
90
90
  import {
91
91
  clipToolResultForStore,
92
92
  isInternalAgentStatusText,
@@ -11,7 +11,7 @@ import {
11
11
  resolveSendFollowUp,
12
12
  startOrchestration,
13
13
  waitForPidExit
14
- } from "./chunk-T47ARZ5Q.js";
14
+ } from "./chunk-BJ5T22L5.js";
15
15
  import "./chunk-LX5R5JOR.js";
16
16
  import "./chunk-4GK32AYX.js";
17
17
  import "./chunk-5DZUWGKV.js";
@@ -19,7 +19,7 @@ import "./chunk-JLDJGGCL.js";
19
19
  import "./chunk-TQRSVE7D.js";
20
20
  import "./chunk-P2BSMNHB.js";
21
21
  import "./chunk-VKQGAWHY.js";
22
- import "./chunk-OUBQH5GR.js";
22
+ import "./chunk-GCSG3OGV.js";
23
23
  import "./chunk-UKSJO36E.js";
24
24
  import "./chunk-2QUILREI.js";
25
25
  import "./chunk-NWE3NOWQ.js";
@@ -9,10 +9,10 @@ import {
9
9
  resolveSendFollowUp,
10
10
  startOrchestration,
11
11
  waitForPidExit
12
- } from "./chunk-N3LASDJM.js";
12
+ } from "./chunk-XIVM7K77.js";
13
13
  import "./chunk-ADWNK2JH.js";
14
14
  import "./chunk-GWFVCCJZ.js";
15
- import "./chunk-HO2T6BC3.js";
15
+ import "./chunk-DVTEC4BF.js";
16
16
  import "./chunk-FAGK33E2.js";
17
17
  import "./chunk-7H655NEW.js";
18
18
  import "./chunk-PGPSIEMW.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sideboard-ai/core",
3
- "version": "0.1.273",
3
+ "version": "0.1.274",
4
4
  "description": "Sideboard core — orchestration, agents, git worktrees, MCP server",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",