@sideboard-ai/core 0.1.272 → 0.1.273
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.
- package/dist/{chunk-M7626KJO.js → chunk-HO2T6BC3.js} +5 -2
- package/dist/{chunk-SVXGDQAI.js → chunk-N3LASDJM.js} +5 -5
- package/dist/{chunk-RQR25LUB.js → chunk-OUBQH5GR.js} +5 -2
- package/dist/{chunk-ODC3Y4GQ.js → chunk-T47ARZ5Q.js} +5 -5
- package/dist/{conductor-POUIKR5A.js → conductor-3AQM67VK.js} +1 -1
- package/dist/{conductor-JA3A4NAI.js → conductor-FLWACOVC.js} +1 -1
- package/dist/index.cjs +7 -4
- package/dist/index.js +4 -4
- package/dist/mcp/run-stdio.cjs +7 -4
- package/dist/mcp/run-stdio.js +2 -2
- package/dist/{orchestrator-VF5PZMS3.js → orchestrator-K42IBMBE.js} +2 -2
- package/dist/{orchestrator-NLCTI3MC.js → orchestrator-YKSDWR6C.js} +2 -2
- package/package.json +1 -1
|
@@ -1362,7 +1362,9 @@ 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)
|
|
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(
|
|
1366
|
+
unquoted
|
|
1367
|
+
) || /\bi(?:['’]ll| will)\s+come back when\b/i.test(unquoted);
|
|
1366
1368
|
}
|
|
1367
1369
|
function isJobContinuePrompt(text) {
|
|
1368
1370
|
if (typeof text !== "string") return false;
|
|
@@ -1404,6 +1406,7 @@ function formatJobStillRunningContinuePrompt(jobIds) {
|
|
|
1404
1406
|
function formatDeferredDoneContinuePrompt() {
|
|
1405
1407
|
return [
|
|
1406
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).",
|
|
1407
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).",
|
|
1408
1411
|
"Do not say you will let the user know later."
|
|
1409
1412
|
].join(" ");
|
|
@@ -1628,7 +1631,7 @@ var PORT_RANGE_SIZE = 10;
|
|
|
1628
1631
|
var RECLAIM_RETRY_DELAY_MS = 40;
|
|
1629
1632
|
var RECLAIM_TRIES = 8;
|
|
1630
1633
|
async function killReclaimable(ports, worktreePath, signal) {
|
|
1631
|
-
const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-
|
|
1634
|
+
const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-3AQM67VK.js");
|
|
1632
1635
|
if (worktreePath) killStaleWorktreeListeners2(ports, worktreePath, signal);
|
|
1633
1636
|
else killListenersOnPorts2(ports);
|
|
1634
1637
|
}
|
|
@@ -44,7 +44,7 @@ import {
|
|
|
44
44
|
worktreeDevProcessKey,
|
|
45
45
|
worktreeRunProcessKey,
|
|
46
46
|
worktreeSetupProcessKey
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-HO2T6BC3.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
|
|
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.
|
|
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`: `gh pr checks --watch` (add `-R <origin>` when needed).
|
|
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.",
|
|
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. 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 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)}`;
|
|
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-
|
|
5613
|
+
const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-K42IBMBE.js");
|
|
5614
5614
|
const orch = getOrchestrator2();
|
|
5615
5615
|
return {
|
|
5616
5616
|
findThread: (id) => findThreadByRef(id),
|
|
@@ -1306,7 +1306,9 @@ 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)
|
|
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(
|
|
1310
|
+
unquoted
|
|
1311
|
+
) || /\bi(?:['’]ll| will)\s+come back when\b/i.test(unquoted);
|
|
1310
1312
|
}
|
|
1311
1313
|
function isJobContinuePrompt(text) {
|
|
1312
1314
|
if (typeof text !== "string") return false;
|
|
@@ -1348,6 +1350,7 @@ function formatJobStillRunningContinuePrompt(jobIds) {
|
|
|
1348
1350
|
function formatDeferredDoneContinuePrompt() {
|
|
1349
1351
|
return [
|
|
1350
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).",
|
|
1351
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).",
|
|
1352
1355
|
"Do not say you will let the user know later."
|
|
1353
1356
|
].join(" ");
|
|
@@ -1572,7 +1575,7 @@ var PORT_RANGE_SIZE = 10;
|
|
|
1572
1575
|
var RECLAIM_RETRY_DELAY_MS = 40;
|
|
1573
1576
|
var RECLAIM_TRIES = 8;
|
|
1574
1577
|
async function killReclaimable(ports, worktreePath, signal) {
|
|
1575
|
-
const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-
|
|
1578
|
+
const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-FLWACOVC.js");
|
|
1576
1579
|
if (worktreePath) killStaleWorktreeListeners2(ports, worktreePath, signal);
|
|
1577
1580
|
else killListenersOnPorts2(ports);
|
|
1578
1581
|
}
|
|
@@ -58,7 +58,7 @@ import {
|
|
|
58
58
|
worktreeDevProcessKey,
|
|
59
59
|
worktreeRunProcessKey,
|
|
60
60
|
worktreeSetupProcessKey
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-OUBQH5GR.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
|
|
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.
|
|
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`: `gh pr checks --watch` (add `-R <origin>` when needed).
|
|
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.",
|
|
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. 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 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)}`;
|
|
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-
|
|
5274
|
+
const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-YKSDWR6C.js");
|
|
5275
5275
|
const orch = getOrchestrator2();
|
|
5276
5276
|
return {
|
|
5277
5277
|
findThread: (id) => findThreadByRef(id),
|
package/dist/index.cjs
CHANGED
|
@@ -19287,7 +19287,9 @@ 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)
|
|
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(
|
|
19291
|
+
unquoted
|
|
19292
|
+
) || /\bi(?:['’]ll| will)\s+come back when\b/i.test(unquoted);
|
|
19291
19293
|
}
|
|
19292
19294
|
function isJobContinuePrompt(text6) {
|
|
19293
19295
|
if (typeof text6 !== "string") return false;
|
|
@@ -19329,6 +19331,7 @@ function formatJobStillRunningContinuePrompt(jobIds) {
|
|
|
19329
19331
|
function formatDeferredDoneContinuePrompt() {
|
|
19330
19332
|
return [
|
|
19331
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).",
|
|
19332
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).",
|
|
19333
19336
|
"Do not say you will let the user know later."
|
|
19334
19337
|
].join(" ");
|
|
@@ -24862,7 +24865,7 @@ var init_long_running = __esm({
|
|
|
24862
24865
|
|
|
24863
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.
|
|
24864
24867
|
|
|
24865
|
-
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
|
|
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.
|
|
24866
24869
|
|
|
24867
24870
|
## Tool
|
|
24868
24871
|
|
|
@@ -25531,7 +25534,7 @@ function formatPrGateDirective() {
|
|
|
25531
25534
|
return [
|
|
25532
25535
|
"If a goal is given (not after every push):",
|
|
25533
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.",
|
|
25534
|
-
"- Wait with `/long-running`: `gh pr checks --watch` (add `-R <origin>` when needed).
|
|
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.",
|
|
25535
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."
|
|
25536
25539
|
].join("\n");
|
|
25537
25540
|
}
|
|
@@ -25564,7 +25567,7 @@ function formatLongRunningDirective(opts) {
|
|
|
25564
25567
|
}
|
|
25565
25568
|
function formatLongRunningReminder(opts) {
|
|
25566
25569
|
const invoke = formatDetachedJobInvoke(opts?.scriptPath);
|
|
25567
|
-
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. 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 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)}`;
|
|
25568
25571
|
}
|
|
25569
25572
|
function formatArtifactDirective() {
|
|
25570
25573
|
return [
|
package/dist/index.js
CHANGED
|
@@ -173,7 +173,7 @@ import {
|
|
|
173
173
|
worktreeBoardStatus,
|
|
174
174
|
worktreeCleanupSettings,
|
|
175
175
|
writeWorktreeFile
|
|
176
|
-
} from "./chunk-
|
|
176
|
+
} from "./chunk-N3LASDJM.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-
|
|
383
|
+
} from "./chunk-HO2T6BC3.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-
|
|
5142
|
+
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-K42IBMBE.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-
|
|
10472
|
+
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-K42IBMBE.js");
|
|
10473
10473
|
await getOrchestrator2().send(threadId, prompt);
|
|
10474
10474
|
} catch {
|
|
10475
10475
|
}
|
package/dist/mcp/run-stdio.cjs
CHANGED
|
@@ -16138,7 +16138,9 @@ 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)
|
|
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(
|
|
16142
|
+
unquoted
|
|
16143
|
+
) || /\bi(?:['’]ll| will)\s+come back when\b/i.test(unquoted);
|
|
16142
16144
|
}
|
|
16143
16145
|
function isJobContinuePrompt(text6) {
|
|
16144
16146
|
if (typeof text6 !== "string") return false;
|
|
@@ -16180,6 +16182,7 @@ function formatJobStillRunningContinuePrompt(jobIds) {
|
|
|
16180
16182
|
function formatDeferredDoneContinuePrompt() {
|
|
16181
16183
|
return [
|
|
16182
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).",
|
|
16183
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).",
|
|
16184
16187
|
"Do not say you will let the user know later."
|
|
16185
16188
|
].join(" ");
|
|
@@ -22531,7 +22534,7 @@ var init_long_running = __esm({
|
|
|
22531
22534
|
|
|
22532
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.
|
|
22533
22536
|
|
|
22534
|
-
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
|
|
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.
|
|
22535
22538
|
|
|
22536
22539
|
## Tool
|
|
22537
22540
|
|
|
@@ -23178,7 +23181,7 @@ function formatPrGateDirective() {
|
|
|
23178
23181
|
return [
|
|
23179
23182
|
"If a goal is given (not after every push):",
|
|
23180
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.",
|
|
23181
|
-
"- Wait with `/long-running`: `gh pr checks --watch` (add `-R <origin>` when needed).
|
|
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.",
|
|
23182
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."
|
|
23183
23186
|
].join("\n");
|
|
23184
23187
|
}
|
|
@@ -23211,7 +23214,7 @@ function formatLongRunningDirective(opts) {
|
|
|
23211
23214
|
}
|
|
23212
23215
|
function formatLongRunningReminder(opts) {
|
|
23213
23216
|
const invoke = formatDetachedJobInvoke(opts?.scriptPath);
|
|
23214
|
-
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. 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 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)}`;
|
|
23215
23218
|
}
|
|
23216
23219
|
function formatArtifactDirective() {
|
|
23217
23220
|
return [
|
package/dist/mcp/run-stdio.js
CHANGED
|
@@ -52,7 +52,7 @@ import {
|
|
|
52
52
|
sliceRunLogOutput,
|
|
53
53
|
syncBoardPins,
|
|
54
54
|
updateSchedule
|
|
55
|
-
} from "../chunk-
|
|
55
|
+
} from "../chunk-T47ARZ5Q.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-
|
|
89
|
+
} from "../chunk-OUBQH5GR.js";
|
|
90
90
|
import {
|
|
91
91
|
clipToolResultForStore,
|
|
92
92
|
isInternalAgentStatusText,
|
|
@@ -9,10 +9,10 @@ import {
|
|
|
9
9
|
resolveSendFollowUp,
|
|
10
10
|
startOrchestration,
|
|
11
11
|
waitForPidExit
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-N3LASDJM.js";
|
|
13
13
|
import "./chunk-ADWNK2JH.js";
|
|
14
14
|
import "./chunk-GWFVCCJZ.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-HO2T6BC3.js";
|
|
16
16
|
import "./chunk-FAGK33E2.js";
|
|
17
17
|
import "./chunk-7H655NEW.js";
|
|
18
18
|
import "./chunk-PGPSIEMW.js";
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
resolveSendFollowUp,
|
|
12
12
|
startOrchestration,
|
|
13
13
|
waitForPidExit
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-T47ARZ5Q.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-
|
|
22
|
+
import "./chunk-OUBQH5GR.js";
|
|
23
23
|
import "./chunk-UKSJO36E.js";
|
|
24
24
|
import "./chunk-2QUILREI.js";
|
|
25
25
|
import "./chunk-NWE3NOWQ.js";
|