@sideboard-ai/core 0.1.175 → 0.1.177
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/{agents-AWSFDB47.js → agents-544IX5KA.js} +4 -2
- package/dist/{agents-2W7LP7JR.js → agents-UENEQ6J2.js} +4 -2
- package/dist/{chunk-NA7P3SZL.js → chunk-3ZFGZ7RT.js} +4 -4
- package/dist/{chunk-RCICB4OM.js → chunk-DJUDDKXM.js} +22 -11
- package/dist/{chunk-JIWRBNSO.js → chunk-DVYRABZC.js} +23 -12
- package/dist/{chunk-TNOLCU5B.js → chunk-FJWQCZ74.js} +4 -4
- package/dist/{chunk-QTJ2ERA6.js → chunk-NIB6BTC6.js} +6 -2
- package/dist/{chunk-ZXHV3NHY.js → chunk-W44EKPIR.js} +6 -2
- package/dist/{coordinator-prompt-XCQCGUED.js → coordinator-prompt-BE2FERYE.js} +1 -1
- package/dist/{coordinator-prompt-7OHKB5WV.js → coordinator-prompt-PRM5ARWG.js} +1 -1
- package/dist/{global-workspace-KPROJ54C.js → global-workspace-3HIWNQ3B.js} +1 -1
- package/dist/{global-workspace-WSQNEALF.js → global-workspace-J737XNUX.js} +1 -1
- package/dist/index.cjs +31 -11
- package/dist/index.d.cts +13 -3
- package/dist/index.d.ts +13 -3
- package/dist/index.js +12 -7
- package/dist/mcp/run-stdio.cjs +26 -11
- package/dist/mcp/run-stdio.js +9 -7
- package/dist/{orchestrator-PDEU75EE.js → orchestrator-FTGAFZMK.js} +5 -3
- package/dist/{orchestrator-QSNGJ2ER.js → orchestrator-XAJ3LREM.js} +5 -3
- package/dist/{workspaces-P66DGCZE.js → workspaces-DR4UNOQC.js} +1 -1
- package/dist/{workspaces-TEBTNS2M.js → workspaces-ULHYXM4Y.js} +1 -1
- package/package.json +1 -1
package/dist/mcp/run-stdio.cjs
CHANGED
|
@@ -7844,7 +7844,7 @@ function ensureGlobalCoordinatorCwd(opts) {
|
|
|
7844
7844
|
"When creating threads, pass `repoPath` from `list_workspaces` (or the path you just registered).",
|
|
7845
7845
|
orchId ? `Pass parentThreadId="${orchId}" (or omit it). Never invent another parentThreadId.` : "Pass `parentThreadId` for children (this chat's id from the turn reminder).",
|
|
7846
7846
|
"Omit `agent` / `model` on `create_thread`. Sideboard applies Settings \u2192 Default agent, model & effort. Do not pass your own agent or `agent=cursor` \u2014 those are ignored.",
|
|
7847
|
-
"Never pass `agent=codex` when you yourself are Codex \u2014 nested Codex
|
|
7847
|
+
"Never pass `agent=codex` when you yourself are Codex \u2014 nested Codex can deadlock on shared ~/.codex locks. Omit agent; Sideboard applies Account defaults, and switches that nested-Codex case to Cursor only when a CURSOR_API_KEY is configured.",
|
|
7848
7848
|
"Typical flow (Home board): list_board \u2192 create_thread (sourceType=ticket|pr|branch) \u2192 send_to_thread \u2192 wait_for_turn (loop while stillRunning) \u2192 ask_git create-draft \u2192 wait_for_turn. Merge only if the user explicitly asked (`ask_git` merge).",
|
|
7849
7849
|
"Typical flow (branch / explicit source): list_workspaces \u2192 list_branches|list_prs|list_issues \u2192 create_thread \u2192 send_to_thread \u2192 wait_for_turn (loop while stillRunning) \u2192 ask_git create-draft.",
|
|
7850
7850
|
"Typical flow (find work): list_workspaces \u2192 pick repo(s) matching account / project context \u2192 Sideboard list_issues / linear_* (tickets) or list_prs(queue=review) (reviews) \u2192 show the options. Never wait on Claude Linear MCP. Only create_thread + send_to_thread when they asked to start (e.g. \u201Cfind me work and start it\u201D) \u2014 then wait_for_turn (loop while stillRunning) \u2192 ask_git create-draft.",
|
|
@@ -7921,7 +7921,7 @@ var init_coordinator_prompt = __esm({
|
|
|
7921
7921
|
"Workspaces:",
|
|
7922
7922
|
"- add_workspace / remove_workspace \u2014 register or unregister a git repo",
|
|
7923
7923
|
"Worktree threads (chats):",
|
|
7924
|
-
"- create_thread \u2014 create a worktree + chat from branch | pr | ticket (appears on Home). Do not create a second worktree for a ticket, PR, or named branch that already has one \u2014 that call returns the live thread (alreadyStarted=true). Creating from the default branch still opens a new isolated worktree. Pass repoPath + parentThreadId; omit agent and model so Sideboard applies Settings \u2192 Default agent, model & effort (never pass your own agent or agent=cursor). If the repo has a setup script, Sideboard runs it in the background (does not block send_to_thread). Nested Codex (you are Codex and the child
|
|
7924
|
+
"- create_thread \u2014 create a worktree + chat from branch | pr | ticket (appears on Home). Do not create a second worktree for a ticket, PR, or named branch that already has one \u2014 that call returns the live thread (alreadyStarted=true). Creating from the default branch still opens a new isolated worktree. Pass repoPath + parentThreadId; omit agent and model so Sideboard applies Settings \u2192 Default agent, model & effort (never pass your own agent or agent=cursor). If the repo has a setup script, Sideboard runs it in the background (does not block send_to_thread). Nested Codex (you are Codex and the child would be Codex) can deadlock on ~/.codex locks \u2014 omit agent; Sideboard switches the child to Cursor when a CURSOR_API_KEY is set, otherwise keeps the Account default",
|
|
7925
7925
|
"- start_board_card \u2014 same as create_thread for a ticket/PR/named branch (attaches issue text when resolvable). Then send_to_thread.",
|
|
7926
7926
|
"- fork_worktree \u2014 fork a worktree chat into a NEW git worktree + chat (transcript attached); optional agent; leave model unset (Auto) unless you have a reason. Not for orchestration chats.",
|
|
7927
7927
|
"- fork_chat \u2014 fork a worktree chat (same worktree tab) OR a Global orchestration chat (new orchestration tab); optional agent; leave model unset (Auto) unless you have a reason. Remote coordinators: use this to continue another orchestration chat on a different agent after session limits.",
|
|
@@ -7936,9 +7936,9 @@ var init_coordinator_prompt = __esm({
|
|
|
7936
7936
|
"- get_diff \u2014 compact diff summary",
|
|
7937
7937
|
"- get_pr_checks \u2014 snapshot of a worktree thread's PR checks (null = no PR). Use this to inspect status. If the user gave a goal, the worktree agent watches with `gh pr checks --watch` \u2014 do not poll for the human.",
|
|
7938
7938
|
'- request_review \u2014 open a Review chat tab on a worktree thread (attaches .claude/skills/review/SKILL.md when present, else .context/review.md copied from .sideboard/review.md / stock; sends "Review changes in this workspace."); then wait_for_turn (loop while stillRunning) / get_turn_result on the returned id',
|
|
7939
|
-
"- ask_git \u2014 commit & push, open a draft PR, resolve conflicts, or merge. When the worktree is clean, Sideboard pushes / opens the PR itself. When dirty, it queues the worktree agent \u2014 then wait_for_turn (loop while stillRunning). Prefer this over paraphrasing. If ask_git / get_thread lastError says the GraphQL/PR body is too long, the branch is already pushed \u2014 send_to_thread so the worktree agent runs `gh pr create --body-file` with a short description. Do not invent SSH or auth failures from that error. If the user gave a goal (Greptile 5/5, CI green), send_to_thread that goal so the worktree agent enters the watch-fix-push loop \u2014 do not tell the human to poll.",
|
|
7939
|
+
"- ask_git \u2014 commit & push, open a draft PR, mark ready for review, resolve conflicts, or merge. When the worktree is clean, Sideboard pushes / opens the PR itself. When dirty, it queues the worktree agent \u2014 then wait_for_turn (loop while stillRunning). Prefer this over paraphrasing. If ask_git / get_thread lastError says the GraphQL/PR body is too long, the branch is already pushed \u2014 send_to_thread so the worktree agent runs `gh pr create --body-file` with a short description. Do not invent SSH or auth failures from that error. If the user gave a goal (Greptile 5/5, CI green), send_to_thread that goal so the worktree agent enters the watch-fix-push loop \u2014 do not tell the human to poll.",
|
|
7940
7940
|
'- Merge (`ask_git` action=merge / send_to_thread "Merge PR.") only when the user explicitly asked to merge that PR. Do not merge because the work looks done, CI is green, or a typical flow includes it.',
|
|
7941
|
-
'- Or send_to_thread with those exact phrases: "Commit and push.", "Commit, push, and open a draft PR.", "Merge the remote branch (main) into your branch and resolve conflicts. Then, commit and push your changes.", "Merge PR." (draft PRs: `gh pr create --draft -R <origin-owner/name>` using the workspace `github:` slug \u2014 never upstream). Never run git/gh from this orchestration cwd, and never merge the PR yourself.',
|
|
7941
|
+
'- Or send_to_thread with those exact phrases: "Commit and push.", "Commit, push, and open a draft PR.", "Ready for review.", "Merge the remote branch (main) into your branch and resolve conflicts. Then, commit and push your changes.", "Merge PR." (draft PRs: `gh pr create --draft -R <origin-owner/name>` using the workspace `github:` slug \u2014 never upstream). Never run git/gh from this orchestration cwd, and never merge the PR yourself.',
|
|
7942
7942
|
"Process guides:",
|
|
7943
7943
|
"- Long child jobs (pack, test, deploy, anything that may run more than ~30s): workers always have `/long-running` (Sideboard product skill). Tell them to detach and wait; they may `stop_job` if it hangs or is doing the wrong thing; do not ask the human to poll.",
|
|
7944
7944
|
"- Recurring multi-item / fan-out: if the child worktree has `.claude/skills/graph-engineering/SKILL.md`, tell the worker to follow it (`/graph-engineering`). Judge first; state on disk; grow the rulebook; do not patch three threads.",
|
|
@@ -11296,6 +11296,9 @@ function resolveCursorApiKey() {
|
|
|
11296
11296
|
if (fromEnv) return fromEnv;
|
|
11297
11297
|
return (loadAppSettings().environment.CURSOR_API_KEY || "").trim();
|
|
11298
11298
|
}
|
|
11299
|
+
function isCursorApiKeyConfigured() {
|
|
11300
|
+
return Boolean(resolveCursorApiKey());
|
|
11301
|
+
}
|
|
11299
11302
|
async function listCursorModels() {
|
|
11300
11303
|
const now = Date.now();
|
|
11301
11304
|
if (cachedModels && now - cachedModels.at < MODEL_CACHE_MS) {
|
|
@@ -12468,6 +12471,8 @@ function agentGitPrompt(action, opts) {
|
|
|
12468
12471
|
const named = base ? ` (${base})` : "";
|
|
12469
12472
|
return `Merge the remote branch${named} into your branch and resolve conflicts. Then, commit and push your changes.`;
|
|
12470
12473
|
}
|
|
12474
|
+
case "ready-for-review":
|
|
12475
|
+
return "Ready for review.";
|
|
12471
12476
|
case "merge":
|
|
12472
12477
|
return "Merge PR.";
|
|
12473
12478
|
}
|
|
@@ -12482,6 +12487,8 @@ function gitActionExpansion(action, base) {
|
|
|
12482
12487
|
return "Commit, push, then `gh pr create --web -R <origin-owner/name>`.";
|
|
12483
12488
|
case "resolve-conflicts":
|
|
12484
12489
|
return `Fetch the PR base${base ? ` (\`${base}\`)` : ""}, merge it into this branch, resolve conflicts carefully, then commit and push until the PR is mergeable.`;
|
|
12490
|
+
case "ready-for-review":
|
|
12491
|
+
return "This phrase is the explicit ask to mark this thread's draft pull request ready for review on GitHub (`gh pr ready -R <origin-owner/name>` or `gh pr ready`). Update title/body if the purpose drifted. Do not merge.";
|
|
12485
12492
|
case "merge":
|
|
12486
12493
|
return "This phrase is the explicit ask to merge this thread's open pull request on GitHub. If `gh stack view` shows a stack, use `gh stack merge`; otherwise `gh pr merge` (respect repo defaults / squash vs merge). Do not force-push main/master or merge locally into the main checkout.";
|
|
12487
12494
|
}
|
|
@@ -12524,6 +12531,7 @@ var init_agent_git_actions = __esm({
|
|
|
12524
12531
|
"create-draft",
|
|
12525
12532
|
"create-web",
|
|
12526
12533
|
"resolve-conflicts",
|
|
12534
|
+
"ready-for-review",
|
|
12527
12535
|
"merge"
|
|
12528
12536
|
];
|
|
12529
12537
|
RESOLVE_CONFLICTS_RE = /^Merge the remote branch(?: \(([^)]+)\))? into your branch and resolve conflicts\. Then, commit and push your changes\.$/;
|
|
@@ -18114,7 +18122,7 @@ function formatWorktreeDirective(thread, opts) {
|
|
|
18114
18122
|
);
|
|
18115
18123
|
}
|
|
18116
18124
|
lines.push(
|
|
18117
|
-
'- Sideboard git buttons send short phrases ("Commit and push.", "Merge PR.", \u2026) with their meaning attached \u2014 act on them without asking for clarification. If the user gives a goal (Greptile 5/5, CI green, until checks pass), you get the watch-fix-push playbook with that request.'
|
|
18125
|
+
'- Sideboard git buttons send short phrases ("Commit and push.", "Ready for review.", "Merge PR.", \u2026) with their meaning attached \u2014 act on them without asking for clarification. If the user gives a goal (Greptile 5/5, CI green, until checks pass), you get the watch-fix-push playbook with that request.'
|
|
18118
18126
|
);
|
|
18119
18127
|
lines.push("");
|
|
18120
18128
|
lines.push(formatProcessGuideDirective({ worktreePath: thread.worktreePath }));
|
|
@@ -19163,6 +19171,7 @@ __export(orchestrator_exports, {
|
|
|
19163
19171
|
Orchestrator: () => Orchestrator,
|
|
19164
19172
|
getOrchestrator: () => getOrchestrator,
|
|
19165
19173
|
isPidAlive: () => isPidAlive,
|
|
19174
|
+
resolveSendFollowUp: () => resolveSendFollowUp,
|
|
19166
19175
|
startOrchestration: () => startOrchestration,
|
|
19167
19176
|
waitForPidExit: () => waitForPidExit
|
|
19168
19177
|
});
|
|
@@ -19183,6 +19192,10 @@ async function waitForPidExit(pid, timeoutMs) {
|
|
|
19183
19192
|
}
|
|
19184
19193
|
return true;
|
|
19185
19194
|
}
|
|
19195
|
+
function resolveSendFollowUp(thread, requested) {
|
|
19196
|
+
if (requested === "steer" || requested === "queue") return requested;
|
|
19197
|
+
return isOrchestratorThread(thread) ? followUpBehavior() : "queue";
|
|
19198
|
+
}
|
|
19186
19199
|
function writeLiveStatus(threadId, status, lastError) {
|
|
19187
19200
|
const latest = readThread(threadId);
|
|
19188
19201
|
if (!latest || latest.status === "archived") return latest;
|
|
@@ -19775,13 +19788,13 @@ var init_orchestrator = __esm({
|
|
|
19775
19788
|
if (thread.status === "archived") {
|
|
19776
19789
|
throw new Error(`Thread is archived: ${thread.id}`);
|
|
19777
19790
|
}
|
|
19778
|
-
const followUp = opts?.followUp === "steer" ? "steer" : "queue";
|
|
19779
19791
|
let shouldSteer = false;
|
|
19780
19792
|
const sent = await withThreadLock(thread.id, async () => {
|
|
19781
19793
|
const current = this.requireThread(thread.id);
|
|
19782
19794
|
if (current.status === "archived") {
|
|
19783
19795
|
throw new Error(`Thread is archived: ${thread.id}`);
|
|
19784
19796
|
}
|
|
19797
|
+
const followUp = resolveSendFollowUp(current, opts?.followUp);
|
|
19785
19798
|
const queue = [...current.queue, prompt];
|
|
19786
19799
|
this.crashContinued.delete(thread.id);
|
|
19787
19800
|
this.jobContinueCount.delete(thread.id);
|
|
@@ -21106,7 +21119,7 @@ var init_orchestrator = __esm({
|
|
|
21106
21119
|
"ask_git targets a worktree agent thread (not the orchestrator). Pass a child/worktree thread ref."
|
|
21107
21120
|
);
|
|
21108
21121
|
}
|
|
21109
|
-
if (action === "merge" && !thread.prUrl) {
|
|
21122
|
+
if ((action === "merge" || action === "ready-for-review") && !thread.prUrl) {
|
|
21110
21123
|
throw new Error(
|
|
21111
21124
|
"No pull request linked. Ask the worktree agent to open a draft PR first (ask_git create-draft)."
|
|
21112
21125
|
);
|
|
@@ -24221,11 +24234,13 @@ async function getHomeBoardInputs(workspaces, opts) {
|
|
|
24221
24234
|
init_home_board();
|
|
24222
24235
|
|
|
24223
24236
|
// src/mcp/create-thread-agent.ts
|
|
24237
|
+
init_cursor();
|
|
24224
24238
|
function resolveOrchCreateThreadOptions(input) {
|
|
24225
24239
|
const { resolveNewThreadOptions: resolveNewThreadOptions2 } = input;
|
|
24226
24240
|
const account = resolveNewThreadOptions2({});
|
|
24227
24241
|
const requested = input.requestedAgent;
|
|
24228
24242
|
const parent = input.parentAgent ?? void 0;
|
|
24243
|
+
const cursorReady = input.cursorReady ?? isCursorApiKeyConfigured();
|
|
24229
24244
|
let agent = account.agent;
|
|
24230
24245
|
let ignoredAgent;
|
|
24231
24246
|
let honorRequestedModel = false;
|
|
@@ -24240,7 +24255,7 @@ function resolveOrchCreateThreadOptions(input) {
|
|
|
24240
24255
|
}
|
|
24241
24256
|
}
|
|
24242
24257
|
let coercedFrom;
|
|
24243
|
-
if (agent === "codex" && parent === "codex") {
|
|
24258
|
+
if (agent === "codex" && parent === "codex" && cursorReady) {
|
|
24244
24259
|
coercedFrom = requested ?? "codex";
|
|
24245
24260
|
agent = "cursor";
|
|
24246
24261
|
}
|
|
@@ -24256,7 +24271,7 @@ function resolveOrchCreateThreadOptions(input) {
|
|
|
24256
24271
|
}
|
|
24257
24272
|
function orchCreateThreadAgentNote(input) {
|
|
24258
24273
|
if (input.coercedFrom) {
|
|
24259
|
-
return `Avoid nested Codex under a Codex orchestrator \u2014 used
|
|
24274
|
+
return `Avoid nested Codex under a Codex orchestrator \u2014 used agent=${input.agent}`;
|
|
24260
24275
|
}
|
|
24261
24276
|
if (input.ignoredAgent) {
|
|
24262
24277
|
return `Ignored agent=${input.ignoredAgent} \u2014 used Account default agent=${input.agent}`;
|
|
@@ -25026,11 +25041,11 @@ async function startMcpServer() {
|
|
|
25026
25041
|
);
|
|
25027
25042
|
server.tool(
|
|
25028
25043
|
"ask_git",
|
|
25029
|
-
"Commit & push, open a draft PR, resolve conflicts, or merge \u2014 same actions as the desktop git buttons. When the worktree is clean, Sideboard pushes / opens the PR itself (HTTPS via `gh` even when origin is SSH / Settings \u2192 Git is SSH). When dirty, queues the worktree agent to commit; then wait_for_turn (loop while stillRunning). Do not start a checks loop on a plain push \u2014 only if the user gave a goal (Greptile 5/5, CI green). Pass a worktree thread ref (not the orchestrator). action=merge only when the user explicitly asked
|
|
25044
|
+
"Commit & push, open a draft PR, mark ready for review, resolve conflicts, or merge \u2014 same actions as the desktop git buttons. When the worktree is clean, Sideboard pushes / opens the PR itself (HTTPS via `gh` even when origin is SSH / Settings \u2192 Git is SSH). When dirty, queues the worktree agent to commit; then wait_for_turn (loop while stillRunning). Do not start a checks loop on a plain push \u2014 only if the user gave a goal (Greptile 5/5, CI green). Pass a worktree thread ref (not the orchestrator). action=ready-for-review and action=merge only when the user explicitly asked (or clicked the desktop button). Do not run git or gh from the orchestration cwd. If this tool errors that the GraphQL/PR body is too long, the branch is already pushed \u2014 have the worktree agent retry `gh pr create --body-file` with a short description (GitHub limit 65,536 characters). Do not invent SSH/auth failures from that error.",
|
|
25030
25045
|
{
|
|
25031
25046
|
ref: import_zod8.z.string().describe("Worktree thread id/ref"),
|
|
25032
25047
|
action: import_zod8.z.enum(AGENT_GIT_ACTIONS).describe(
|
|
25033
|
-
"commit-push | create-draft | create-web | resolve-conflicts | merge"
|
|
25048
|
+
"commit-push | create-draft | create-web | resolve-conflicts | ready-for-review | merge"
|
|
25034
25049
|
)
|
|
25035
25050
|
},
|
|
25036
25051
|
async ({ ref, action }) => {
|
package/dist/mcp/run-stdio.js
CHANGED
|
@@ -37,15 +37,16 @@ import {
|
|
|
37
37
|
syncBoardPins,
|
|
38
38
|
updateSchedule,
|
|
39
39
|
waitForDetachedJob
|
|
40
|
-
} from "../chunk-
|
|
40
|
+
} from "../chunk-DJUDDKXM.js";
|
|
41
41
|
import {
|
|
42
42
|
applySystemCaEnv,
|
|
43
|
+
isCursorApiKeyConfigured,
|
|
43
44
|
isInternalAgentStatusText,
|
|
44
45
|
listModelsForAgent,
|
|
45
46
|
materializeSystemCaBundle,
|
|
46
47
|
sideboardMcpProfile,
|
|
47
48
|
trustSystemCertificates
|
|
48
|
-
} from "../chunk-
|
|
49
|
+
} from "../chunk-W44EKPIR.js";
|
|
49
50
|
import "../chunk-HVIEYTUK.js";
|
|
50
51
|
import "../chunk-Y4MIXGPA.js";
|
|
51
52
|
import {
|
|
@@ -70,7 +71,7 @@ import {
|
|
|
70
71
|
GLOBAL_WORKSPACE_ID,
|
|
71
72
|
isCloudCoordinatorThread,
|
|
72
73
|
listWorkspaces
|
|
73
|
-
} from "../chunk-
|
|
74
|
+
} from "../chunk-FJWQCZ74.js";
|
|
74
75
|
import {
|
|
75
76
|
canonicalizeRepoPath,
|
|
76
77
|
formatGhLandError,
|
|
@@ -2872,6 +2873,7 @@ function resolveOrchCreateThreadOptions(input) {
|
|
|
2872
2873
|
const account = resolveNewThreadOptions({});
|
|
2873
2874
|
const requested = input.requestedAgent;
|
|
2874
2875
|
const parent = input.parentAgent ?? void 0;
|
|
2876
|
+
const cursorReady = input.cursorReady ?? isCursorApiKeyConfigured();
|
|
2875
2877
|
let agent = account.agent;
|
|
2876
2878
|
let ignoredAgent;
|
|
2877
2879
|
let honorRequestedModel = false;
|
|
@@ -2886,7 +2888,7 @@ function resolveOrchCreateThreadOptions(input) {
|
|
|
2886
2888
|
}
|
|
2887
2889
|
}
|
|
2888
2890
|
let coercedFrom;
|
|
2889
|
-
if (agent === "codex" && parent === "codex") {
|
|
2891
|
+
if (agent === "codex" && parent === "codex" && cursorReady) {
|
|
2890
2892
|
coercedFrom = requested ?? "codex";
|
|
2891
2893
|
agent = "cursor";
|
|
2892
2894
|
}
|
|
@@ -2902,7 +2904,7 @@ function resolveOrchCreateThreadOptions(input) {
|
|
|
2902
2904
|
}
|
|
2903
2905
|
function orchCreateThreadAgentNote(input) {
|
|
2904
2906
|
if (input.coercedFrom) {
|
|
2905
|
-
return `Avoid nested Codex under a Codex orchestrator \u2014 used
|
|
2907
|
+
return `Avoid nested Codex under a Codex orchestrator \u2014 used agent=${input.agent}`;
|
|
2906
2908
|
}
|
|
2907
2909
|
if (input.ignoredAgent) {
|
|
2908
2910
|
return `Ignored agent=${input.ignoredAgent} \u2014 used Account default agent=${input.agent}`;
|
|
@@ -3672,11 +3674,11 @@ async function startMcpServer() {
|
|
|
3672
3674
|
);
|
|
3673
3675
|
server.tool(
|
|
3674
3676
|
"ask_git",
|
|
3675
|
-
"Commit & push, open a draft PR, resolve conflicts, or merge \u2014 same actions as the desktop git buttons. When the worktree is clean, Sideboard pushes / opens the PR itself (HTTPS via `gh` even when origin is SSH / Settings \u2192 Git is SSH). When dirty, queues the worktree agent to commit; then wait_for_turn (loop while stillRunning). Do not start a checks loop on a plain push \u2014 only if the user gave a goal (Greptile 5/5, CI green). Pass a worktree thread ref (not the orchestrator). action=merge only when the user explicitly asked
|
|
3677
|
+
"Commit & push, open a draft PR, mark ready for review, resolve conflicts, or merge \u2014 same actions as the desktop git buttons. When the worktree is clean, Sideboard pushes / opens the PR itself (HTTPS via `gh` even when origin is SSH / Settings \u2192 Git is SSH). When dirty, queues the worktree agent to commit; then wait_for_turn (loop while stillRunning). Do not start a checks loop on a plain push \u2014 only if the user gave a goal (Greptile 5/5, CI green). Pass a worktree thread ref (not the orchestrator). action=ready-for-review and action=merge only when the user explicitly asked (or clicked the desktop button). Do not run git or gh from the orchestration cwd. If this tool errors that the GraphQL/PR body is too long, the branch is already pushed \u2014 have the worktree agent retry `gh pr create --body-file` with a short description (GitHub limit 65,536 characters). Do not invent SSH/auth failures from that error.",
|
|
3676
3678
|
{
|
|
3677
3679
|
ref: z8.string().describe("Worktree thread id/ref"),
|
|
3678
3680
|
action: z8.enum(AGENT_GIT_ACTIONS).describe(
|
|
3679
|
-
"commit-push | create-draft | create-web | resolve-conflicts | merge"
|
|
3681
|
+
"commit-push | create-draft | create-web | resolve-conflicts | ready-for-review | merge"
|
|
3680
3682
|
)
|
|
3681
3683
|
},
|
|
3682
3684
|
async ({ ref, action }) => {
|
|
@@ -3,12 +3,13 @@ import {
|
|
|
3
3
|
Orchestrator,
|
|
4
4
|
getOrchestrator,
|
|
5
5
|
isPidAlive,
|
|
6
|
+
resolveSendFollowUp,
|
|
6
7
|
startOrchestration,
|
|
7
8
|
waitForPidExit
|
|
8
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-DVYRABZC.js";
|
|
9
10
|
import "./chunk-DJU54RYW.js";
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-NIB6BTC6.js";
|
|
12
|
+
import "./chunk-3ZFGZ7RT.js";
|
|
12
13
|
import "./chunk-7JIYKYLL.js";
|
|
13
14
|
import "./chunk-6K64FJDD.js";
|
|
14
15
|
import "./chunk-IEEAVWAP.js";
|
|
@@ -30,6 +31,7 @@ export {
|
|
|
30
31
|
Orchestrator,
|
|
31
32
|
getOrchestrator,
|
|
32
33
|
isPidAlive,
|
|
34
|
+
resolveSendFollowUp,
|
|
33
35
|
startOrchestration,
|
|
34
36
|
waitForPidExit
|
|
35
37
|
};
|
|
@@ -5,16 +5,17 @@ import {
|
|
|
5
5
|
Orchestrator,
|
|
6
6
|
getOrchestrator,
|
|
7
7
|
isPidAlive,
|
|
8
|
+
resolveSendFollowUp,
|
|
8
9
|
startOrchestration,
|
|
9
10
|
waitForPidExit
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-DJUDDKXM.js";
|
|
12
|
+
import "./chunk-W44EKPIR.js";
|
|
12
13
|
import "./chunk-HVIEYTUK.js";
|
|
13
14
|
import "./chunk-Y4MIXGPA.js";
|
|
14
15
|
import "./chunk-VKQGAWHY.js";
|
|
15
16
|
import "./chunk-JFOPOMK7.js";
|
|
16
17
|
import "./chunk-OCQPTUR7.js";
|
|
17
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-FJWQCZ74.js";
|
|
18
19
|
import "./chunk-7O53GXTA.js";
|
|
19
20
|
import "./chunk-D6JWYJ4P.js";
|
|
20
21
|
import "./chunk-LZQULFIT.js";
|
|
@@ -29,6 +30,7 @@ export {
|
|
|
29
30
|
Orchestrator,
|
|
30
31
|
getOrchestrator,
|
|
31
32
|
isPidAlive,
|
|
33
|
+
resolveSendFollowUp,
|
|
32
34
|
startOrchestration,
|
|
33
35
|
waitForPidExit
|
|
34
36
|
};
|