@sideboard-ai/core 0.1.81 → 0.1.83
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/cursor-runner.cjs +18 -0
- package/dist/agents/cursor-runner.js +4 -0
- package/dist/{agents-UQ7D6U6L.js → agents-3YPUZME7.js} +6 -5
- package/dist/{agents-EBKJ55PN.js → agents-4KRD46KG.js} +5 -5
- package/dist/{app-settings-NILNWNNQ.js → app-settings-GVSOIJLZ.js} +1 -1
- package/dist/{app-settings-6IOQYGBK.js → app-settings-MQXL7OUF.js} +2 -1
- package/dist/{chunk-P5VDPGAN.js → chunk-DJFGX4RT.js} +3 -3
- package/dist/{chunk-CQBQWX73.js → chunk-E2MIA7DO.js} +8 -3
- package/dist/{chunk-4HJK57XU.js → chunk-ERJS3ZDP.js} +8 -3
- package/dist/{chunk-YVVXWWCC.js → chunk-GD2FM6FN.js} +81 -49
- package/dist/{chunk-FUUVPN4A.js → chunk-HBBXS2FR.js} +78 -49
- package/dist/chunk-IZ7RPF54.js +36 -0
- package/dist/{chunk-4AVU4QXO.js → chunk-JMRJ4F5B.js} +19 -8
- package/dist/{chunk-XNECBC6T.js → chunk-JW6YFPQE.js} +20 -7
- package/dist/{chunk-K553XK7M.js → chunk-LVTNWH7B.js} +2 -2
- package/dist/{chunk-6F2TQFJE.js → chunk-NXXT5SE3.js} +3 -3
- package/dist/{chunk-TDJ43HUD.js → chunk-RS54WYYH.js} +2 -2
- package/dist/{chunk-XKNBSYA7.js → chunk-UHGN4KCL.js} +35 -1
- package/dist/{chunk-IFPN6TER.js → chunk-YO3CYL6B.js} +4 -1
- package/dist/{coordinator-prompt-JQF72JKX.js → coordinator-prompt-46JE4NQR.js} +4 -3
- package/dist/{coordinator-prompt-NYNEFKIV.js → coordinator-prompt-6ICA54JR.js} +3 -3
- package/dist/{global-workspace-DZM4ZFGU.js → global-workspace-GSLCEB5E.js} +5 -4
- package/dist/{global-workspace-NUMUJRWG.js → global-workspace-OBRWUPZG.js} +4 -4
- package/dist/index.cjs +182 -77
- package/dist/index.d.cts +36 -9
- package/dist/index.d.ts +36 -9
- package/dist/index.js +67 -43
- package/dist/mcp/run-stdio.cjs +180 -77
- package/dist/mcp/run-stdio.js +59 -42
- package/dist/{workspaces-QLRCOXAY.js → workspaces-7B3PTEF4.js} +6 -5
- package/dist/{workspaces-SUU2GO3A.js → workspaces-RJIWQB6J.js} +5 -5
- package/dist/{worktree-5VLLFI5W.js → worktree-HSN5LWY6.js} +3 -2
- package/dist/{worktree-UNSOCYZU.js → worktree-U3UIID2K.js} +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
listWorkspaces,
|
|
5
5
|
removeWorkspace,
|
|
6
6
|
syncWorkspacesFromThreads
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-LVTNWH7B.js";
|
|
8
8
|
import {
|
|
9
9
|
BRIGHTSY_MCP_ALLOWED_TOOLS,
|
|
10
10
|
CLAUDE_MODEL_CATALOG,
|
|
@@ -64,7 +64,7 @@ import {
|
|
|
64
64
|
threadRequestsBrightsyMcp,
|
|
65
65
|
totalTokens,
|
|
66
66
|
writeInjectedMcpConfig
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-JW6YFPQE.js";
|
|
68
68
|
import {
|
|
69
69
|
CLOUD_COORDINATOR_BUSY_REPLY,
|
|
70
70
|
CLOUD_COORDINATOR_STOPPED_REPLY,
|
|
@@ -91,7 +91,7 @@ import {
|
|
|
91
91
|
parseForceStopMessage,
|
|
92
92
|
slackCoordinatorSourceRef,
|
|
93
93
|
takenTeamSlugsForOrchestration
|
|
94
|
-
} from "./chunk-
|
|
94
|
+
} from "./chunk-NXXT5SE3.js";
|
|
95
95
|
import {
|
|
96
96
|
COORDINATOR_TOOL_PLAYBOOK,
|
|
97
97
|
SLACK_REPLY_FORMATTING,
|
|
@@ -100,7 +100,7 @@ import {
|
|
|
100
100
|
enrichWorkspacesWithGithub,
|
|
101
101
|
ensureGlobalCoordinatorCwd,
|
|
102
102
|
formatWorkspaceInventory
|
|
103
|
-
} from "./chunk-
|
|
103
|
+
} from "./chunk-E2MIA7DO.js";
|
|
104
104
|
import {
|
|
105
105
|
brightsyConfigPath,
|
|
106
106
|
brightsyMcpServerName,
|
|
@@ -165,6 +165,7 @@ import {
|
|
|
165
165
|
formatGhLandError,
|
|
166
166
|
formatGitAuthModeDirective,
|
|
167
167
|
formatIpcInvokeError,
|
|
168
|
+
formatMergePrError,
|
|
168
169
|
formatRateLimitResetHint,
|
|
169
170
|
getPr,
|
|
170
171
|
getPrChecks,
|
|
@@ -179,6 +180,7 @@ import {
|
|
|
179
180
|
isGhRateLimitError,
|
|
180
181
|
isInPrStack,
|
|
181
182
|
isPlaceholderBranch,
|
|
183
|
+
isPrNotMergeableError,
|
|
182
184
|
isSideboardScratchPath,
|
|
183
185
|
listBranches,
|
|
184
186
|
listPrs,
|
|
@@ -208,7 +210,7 @@ import {
|
|
|
208
210
|
worktreeDisplayLabel,
|
|
209
211
|
worktreeDisplayLabelForGroup,
|
|
210
212
|
worktreeNameFromPath
|
|
211
|
-
} from "./chunk-
|
|
213
|
+
} from "./chunk-GD2FM6FN.js";
|
|
212
214
|
import {
|
|
213
215
|
ATTACHMENTS_DIR,
|
|
214
216
|
LEGACY_ATTACHMENTS_DIR,
|
|
@@ -277,7 +279,10 @@ import {
|
|
|
277
279
|
updateIntegrationsSettings,
|
|
278
280
|
updateOpencodeSettings,
|
|
279
281
|
writeSecureJson
|
|
280
|
-
} from "./chunk-
|
|
282
|
+
} from "./chunk-YO3CYL6B.js";
|
|
283
|
+
import {
|
|
284
|
+
stripNestedElectronEnv
|
|
285
|
+
} from "./chunk-IZ7RPF54.js";
|
|
281
286
|
import {
|
|
282
287
|
writePrivateFile
|
|
283
288
|
} from "./chunk-JT7R45JB.js";
|
|
@@ -357,7 +362,8 @@ function agentGitPrompt(action, opts) {
|
|
|
357
362
|
return "Commit, push, and open a PR in the browser.";
|
|
358
363
|
case "resolve-conflicts": {
|
|
359
364
|
const base = opts?.prBase?.trim().replace(/^refs\/heads\//, "");
|
|
360
|
-
|
|
365
|
+
const named = base ? ` (${base})` : "";
|
|
366
|
+
return `Merge the remote branch${named} into your branch and resolve conflicts. Then, commit and push your changes.`;
|
|
361
367
|
}
|
|
362
368
|
case "merge":
|
|
363
369
|
return "Merge PR.";
|
|
@@ -1310,9 +1316,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
|
|
|
1310
1316
|
`Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
|
|
1311
1317
|
);
|
|
1312
1318
|
}
|
|
1313
|
-
const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-
|
|
1319
|
+
const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-GSLCEB5E.js");
|
|
1314
1320
|
if (isGlobalThread2(thread)) {
|
|
1315
|
-
const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-
|
|
1321
|
+
const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-46JE4NQR.js");
|
|
1316
1322
|
ensureGlobalCoordinatorCwd2(
|
|
1317
1323
|
isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
|
|
1318
1324
|
);
|
|
@@ -1511,7 +1517,7 @@ function formatWorktreeDirective(thread, opts) {
|
|
|
1511
1517
|
'- "Fix CI: <name>." \u2192 investigate that failing check, fix it, commit, and push.'
|
|
1512
1518
|
);
|
|
1513
1519
|
lines.push(
|
|
1514
|
-
'- "
|
|
1520
|
+
'- "Merge the remote branch (<base>) into your branch and resolve conflicts. Then, commit and push your changes." \u2192 fetch the PR base, merge it into this branch, resolve conflicts carefully, commit, and push until the PR is mergeable.'
|
|
1515
1521
|
);
|
|
1516
1522
|
lines.push(
|
|
1517
1523
|
'- "Address review comments." \u2192 read PR review feedback, make the requested changes, commit, and push.'
|
|
@@ -1519,11 +1525,22 @@ function formatWorktreeDirective(thread, opts) {
|
|
|
1519
1525
|
lines.push(
|
|
1520
1526
|
'- "Merge PR." \u2192 merge this thread\'s open pull request on GitHub (this phrase is the explicit ask). 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.'
|
|
1521
1527
|
);
|
|
1528
|
+
lines.push("");
|
|
1529
|
+
lines.push(formatProcessGuideDirective());
|
|
1522
1530
|
return lines.join("\n");
|
|
1523
1531
|
}
|
|
1524
1532
|
function formatWorktreeReminder() {
|
|
1525
1533
|
return "Sideboard worktree: stay in this cwd for all file and git work. Push and open PRs against origin, never upstream. Do not edit the main repo checkout.";
|
|
1526
1534
|
}
|
|
1535
|
+
function formatProcessGuideDirective() {
|
|
1536
|
+
return [
|
|
1537
|
+
"Process guides (recurring work only):",
|
|
1538
|
+
"- If `.claude/skills/graph-engineering/SKILL.md` exists, follow it (`/graph-engineering`) for migrations, ports, batch fixes, and other fan-out. Judge first; state on disk; grow the rulebook; do not patch around it.",
|
|
1539
|
+
"- If this same shape of work will happen again, write `.claude/skills/<kebab-name>/SKILL.md` in this worktree (Claude Code project skill). Sideboard `/name`, Claude Code, and `attach` all load that path. Do not leave the method only in chat.",
|
|
1540
|
+
"- Do not write new skills under `.sideboard/skills` \u2014 native agents do not scan it. Point Codex/OpenCode at the file from `AGENTS.md`. Optional: symlink `.cursor/skills/<name>` to the Claude skill.",
|
|
1541
|
+
"- Skip a guide for a one-off. If a matching skill exists, follow it. Same miss twice \u2192 edit the skill (or `.sideboard/review.md`), do not patch around it."
|
|
1542
|
+
].join("\n");
|
|
1543
|
+
}
|
|
1527
1544
|
function formatArtifactDirective() {
|
|
1528
1545
|
return [
|
|
1529
1546
|
"Sideboard side column (desktop UI):",
|
|
@@ -1541,9 +1558,22 @@ function formatArtifactDirective() {
|
|
|
1541
1558
|
"Files / media browser (CMS file manager column):",
|
|
1542
1559
|
"4) Call Sideboard MCP `present_files` with optional title, path, and datasource (brightsy|memory).",
|
|
1543
1560
|
" Opens the Files column for browse/upload/pick. Do NOT say a file manager UI is missing.",
|
|
1544
|
-
"
|
|
1561
|
+
"Multiple-choice questions (any mode \u2014 not only Plan):",
|
|
1562
|
+
"5) Call Sideboard MCP `ask_user` when the user should pick from predefined options (approach forks, requirements, which API). First write a short chat message that explains the decision and what each option means (tradeoffs, when to pick it). Include a description on every option. After calling, stop and wait for their next message with answers. Do not ask multiple-choice questions as plain chat bullets \u2014 use ask_user so Sideboard shows the composer picker.",
|
|
1563
|
+
"Never say artifacts, CMS UI, or the Files column are unavailable. Prefer present_schema for list/edit/publish; present_files for storage UI; html fences for standalone pages; ask_user for predefined-option questions."
|
|
1545
1564
|
].join("\n");
|
|
1546
1565
|
}
|
|
1566
|
+
function formatUiReminder() {
|
|
1567
|
+
return [
|
|
1568
|
+
"Sideboard side column (important):",
|
|
1569
|
+
"There is no claude.ai Artifact tool here \u2014 that is normal.",
|
|
1570
|
+
"HTML/SVG/markdown: ```html fence or MCP present_artifact.",
|
|
1571
|
+
"CMS forms/tables: MCP present_schema (Brightsy resource_id or inline schema+schemaUi).",
|
|
1572
|
+
"Files column: MCP present_files (brightsy account storage or memory).",
|
|
1573
|
+
"Do not say artifacts/CMS UI are unavailable.",
|
|
1574
|
+
"Multiple-choice questions: MCP ask_user (composer picker, any mode). Explain options in chat first, then wait for answers."
|
|
1575
|
+
].join(" ");
|
|
1576
|
+
}
|
|
1547
1577
|
var FILES_BY_AGENT = {
|
|
1548
1578
|
claude: [
|
|
1549
1579
|
"CLAUDE.md",
|
|
@@ -1738,16 +1768,6 @@ async function captureLoginEnv() {
|
|
|
1738
1768
|
cachedLoginEnv = { ...process.env };
|
|
1739
1769
|
return { ...cachedLoginEnv };
|
|
1740
1770
|
}
|
|
1741
|
-
var NESTED_ELECTRON_ENV_PREFIXES = ["ELECTRON_", "CHROME_"];
|
|
1742
|
-
function stripNestedElectronEnv(env) {
|
|
1743
|
-
const out = { ...env };
|
|
1744
|
-
for (const key of Object.keys(out)) {
|
|
1745
|
-
if (NESTED_ELECTRON_ENV_PREFIXES.some((prefix) => key.startsWith(prefix))) {
|
|
1746
|
-
delete out[key];
|
|
1747
|
-
}
|
|
1748
|
-
}
|
|
1749
|
-
return out;
|
|
1750
|
-
}
|
|
1751
1771
|
function buildWorkspaceScriptEnv(opts, baseEnv) {
|
|
1752
1772
|
const env = stripNestedElectronEnv({
|
|
1753
1773
|
...baseEnv ?? process.env
|
|
@@ -3813,7 +3833,7 @@ async function createThread(input, _onSetupLine) {
|
|
|
3813
3833
|
return readThread(thread.id) ?? thread;
|
|
3814
3834
|
}
|
|
3815
3835
|
async function listLinearIssues(agent, repoPath) {
|
|
3816
|
-
const { getAdapter: getAdapter2 } = await import("./agents-
|
|
3836
|
+
const { getAdapter: getAdapter2 } = await import("./agents-3YPUZME7.js");
|
|
3817
3837
|
await requireAgent(agent, { requireLinear: true });
|
|
3818
3838
|
const adapter = getAdapter2(agent);
|
|
3819
3839
|
if (!adapter.listLinearIssues) {
|
|
@@ -4356,7 +4376,7 @@ async function adoptThread(input) {
|
|
|
4356
4376
|
messages: input.messages ?? []
|
|
4357
4377
|
});
|
|
4358
4378
|
writeThread(thread);
|
|
4359
|
-
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-
|
|
4379
|
+
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-7B3PTEF4.js");
|
|
4360
4380
|
await ensureWorkspace2(repoPath);
|
|
4361
4381
|
return thread;
|
|
4362
4382
|
}
|
|
@@ -5489,6 +5509,10 @@ File: src/client/frontends/desktop/core/UserData.ts
|
|
|
5489
5509
|
|
|
5490
5510
|
**Approve** \u2014 Diff is scoped, behavior looks correct, and there are no blocking issues. Safe to merge.
|
|
5491
5511
|
</example>
|
|
5512
|
+
|
|
5513
|
+
## Growing the rules
|
|
5514
|
+
|
|
5515
|
+
If a blocking issue is a missing or ambiguous repo rule that will recur, say so and propose one sentence for \`.sideboard/review.md\` or a \`.claude/skills/<name>/SKILL.md\`. Do not only patch this diff when the same miss will happen again. New skills go under \`.claude/skills\` (Claude Code / attach) \u2014 not \`.sideboard/skills\`.
|
|
5492
5516
|
`;
|
|
5493
5517
|
|
|
5494
5518
|
// src/review/request-review.ts
|
|
@@ -5873,7 +5897,7 @@ var Orchestrator = class {
|
|
|
5873
5897
|
orphans: orphans.map((o) => ({ path: o.path, repoPath: o.repoPath }))
|
|
5874
5898
|
});
|
|
5875
5899
|
}
|
|
5876
|
-
const { autoCleanupOrphansEnabled: autoCleanupOrphansEnabled2 } = await import("./app-settings-
|
|
5900
|
+
const { autoCleanupOrphansEnabled: autoCleanupOrphansEnabled2 } = await import("./app-settings-MQXL7OUF.js");
|
|
5877
5901
|
if (autoCleanupOrphansEnabled2() && shouldRunWorktreeCleanup() && orphans.length > 0) {
|
|
5878
5902
|
await cleanupOrphanWorktrees({ repoPaths });
|
|
5879
5903
|
}
|
|
@@ -6030,7 +6054,7 @@ var Orchestrator = class {
|
|
|
6030
6054
|
}
|
|
6031
6055
|
async finishCreateThread(threadId, prompt) {
|
|
6032
6056
|
await this.runSetupAfterCreate(threadId);
|
|
6033
|
-
const { autoRunAfterSetupEnabled: autoRunAfterSetupEnabled2 } = await import("./app-settings-
|
|
6057
|
+
const { autoRunAfterSetupEnabled: autoRunAfterSetupEnabled2 } = await import("./app-settings-MQXL7OUF.js");
|
|
6034
6058
|
if (autoRunAfterSetupEnabled2()) {
|
|
6035
6059
|
try {
|
|
6036
6060
|
await this.startDev(threadId);
|
|
@@ -6272,14 +6296,7 @@ var Orchestrator = class {
|
|
|
6272
6296
|
SLACK_REPLY_FORMATTING
|
|
6273
6297
|
].join("\n") : null
|
|
6274
6298
|
].filter(Boolean).join("\n") : null;
|
|
6275
|
-
const artifactReminder = thread.agent !== "brightsy" ?
|
|
6276
|
-
"Sideboard side column (important):",
|
|
6277
|
-
"There is no claude.ai Artifact tool here \u2014 that is normal.",
|
|
6278
|
-
"HTML/SVG/markdown: ```html fence or MCP present_artifact.",
|
|
6279
|
-
"CMS forms/tables: MCP present_schema (Brightsy resource_id or inline schema+schemaUi).",
|
|
6280
|
-
"Files column: MCP present_files (brightsy account storage or memory).",
|
|
6281
|
-
"Do not say artifacts/CMS UI are unavailable."
|
|
6282
|
-
].join(" ") : null;
|
|
6299
|
+
const artifactReminder = thread.agent !== "brightsy" ? formatUiReminder() : null;
|
|
6283
6300
|
const worktreeReminder = thread.agent !== "brightsy" && !isOrchestratorThread(thread) ? formatWorktreeReminder() : null;
|
|
6284
6301
|
const slackReplyContext = formatSlackRepliesForTurn(
|
|
6285
6302
|
pendingSlackExternalReplies(thread.messages)
|
|
@@ -6308,7 +6325,7 @@ var Orchestrator = class {
|
|
|
6308
6325
|
}
|
|
6309
6326
|
const isBrightsy = fresh.agent === "brightsy";
|
|
6310
6327
|
const isOrchestration = isOrchestratorThread(fresh);
|
|
6311
|
-
const { autoRenameBranchEnabled: autoRenameBranchEnabled2, getGithubGitAuthMode: getGithubGitAuthMode2 } = await import("./app-settings-
|
|
6328
|
+
const { autoRenameBranchEnabled: autoRenameBranchEnabled2, getGithubGitAuthMode: getGithubGitAuthMode2 } = await import("./app-settings-MQXL7OUF.js");
|
|
6312
6329
|
const gitAuthMode = getGithubGitAuthMode2();
|
|
6313
6330
|
const worktreeDirective = isBrightsy || isOrchestration ? null : formatWorktreeDirective(fresh, {
|
|
6314
6331
|
githubSlug: await resolveGithubRepoSlug(fresh.worktreePath).catch(
|
|
@@ -6973,7 +6990,9 @@ var Orchestrator = class {
|
|
|
6973
6990
|
reviewDecision: null,
|
|
6974
6991
|
baseRefName: "",
|
|
6975
6992
|
headRefName: "",
|
|
6976
|
-
isInMergeQueue: false
|
|
6993
|
+
isInMergeQueue: false,
|
|
6994
|
+
mergeable: null,
|
|
6995
|
+
mergeStateStatus: null
|
|
6977
6996
|
};
|
|
6978
6997
|
await this.persistPrMetaAndMaybeArchive(thread, metaLike);
|
|
6979
6998
|
return { url: metaLike.url, state };
|
|
@@ -7023,7 +7042,7 @@ var Orchestrator = class {
|
|
|
7023
7042
|
updateThread(thread.id, { title: meta.title });
|
|
7024
7043
|
}
|
|
7025
7044
|
}
|
|
7026
|
-
const { autoArchiveOnMergeEnabled: autoArchiveOnMergeEnabled2 } = await import("./app-settings-
|
|
7045
|
+
const { autoArchiveOnMergeEnabled: autoArchiveOnMergeEnabled2 } = await import("./app-settings-MQXL7OUF.js");
|
|
7027
7046
|
const latest = this.requireThread(thread.id);
|
|
7028
7047
|
if (!shouldAutoArchiveOnPrMerge({
|
|
7029
7048
|
previousPrState: prevState || null,
|
|
@@ -7311,7 +7330,7 @@ var Orchestrator = class {
|
|
|
7311
7330
|
this.emit({ type: "status_changed", threadId: archived.id, status: "archived" });
|
|
7312
7331
|
if (thread.repoPath && !isGlobalRepoPath(thread.repoPath)) {
|
|
7313
7332
|
try {
|
|
7314
|
-
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-
|
|
7333
|
+
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-7B3PTEF4.js");
|
|
7315
7334
|
await ensureWorkspace2(thread.repoPath);
|
|
7316
7335
|
} catch {
|
|
7317
7336
|
}
|
|
@@ -7333,7 +7352,7 @@ var Orchestrator = class {
|
|
|
7333
7352
|
await runArchiveScript(thread.repoPath, thread.worktreePath);
|
|
7334
7353
|
} catch {
|
|
7335
7354
|
}
|
|
7336
|
-
const { deleteBranchOnPurgeEnabled: deleteBranchOnPurgeEnabled2 } = await import("./app-settings-
|
|
7355
|
+
const { deleteBranchOnPurgeEnabled: deleteBranchOnPurgeEnabled2 } = await import("./app-settings-MQXL7OUF.js");
|
|
7337
7356
|
const deleteBranch = opts?.deleteBranch ?? deleteBranchOnPurgeEnabled2();
|
|
7338
7357
|
await removeWorktree(thread.repoPath, thread.worktreePath, {
|
|
7339
7358
|
deleteBranch: deleteBranch ? thread.branchName : void 0
|
|
@@ -7354,7 +7373,7 @@ var Orchestrator = class {
|
|
|
7354
7373
|
return restored2;
|
|
7355
7374
|
}
|
|
7356
7375
|
if (!existsSync15(thread.worktreePath)) {
|
|
7357
|
-
const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-
|
|
7376
|
+
const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-HSN5LWY6.js");
|
|
7358
7377
|
const { execa: execa6 } = await import("execa");
|
|
7359
7378
|
const slug = thread.worktreePath.split("/").pop();
|
|
7360
7379
|
const dest = thread.worktreePath;
|
|
@@ -7463,7 +7482,7 @@ async function startOrchestration(opts) {
|
|
|
7463
7482
|
sourceRef: "default",
|
|
7464
7483
|
...createOpts
|
|
7465
7484
|
}).catch(async () => {
|
|
7466
|
-
const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-
|
|
7485
|
+
const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-HSN5LWY6.js");
|
|
7467
7486
|
const repo = await resolveRepoRoot2(repoPath);
|
|
7468
7487
|
const def = await resolveDefaultBranch2(repo);
|
|
7469
7488
|
return createThread({
|
|
@@ -8215,7 +8234,7 @@ function withTimeout(promise, ms, label) {
|
|
|
8215
8234
|
async function startMcpServer() {
|
|
8216
8235
|
const orch = getOrchestrator();
|
|
8217
8236
|
try {
|
|
8218
|
-
const { maxConcurrentAgents: maxConcurrentAgents2 } = await import("./app-settings-
|
|
8237
|
+
const { maxConcurrentAgents: maxConcurrentAgents2 } = await import("./app-settings-MQXL7OUF.js");
|
|
8219
8238
|
orch.setMaxConcurrent(maxConcurrentAgents2());
|
|
8220
8239
|
} catch {
|
|
8221
8240
|
}
|
|
@@ -8320,7 +8339,7 @@ async function startMcpServer() {
|
|
|
8320
8339
|
);
|
|
8321
8340
|
server.tool(
|
|
8322
8341
|
"ask_user",
|
|
8323
|
-
"Ask the user clarifying multiple-choice questions in Sideboard\u2019s composer (
|
|
8342
|
+
"Ask the user clarifying multiple-choice questions in Sideboard\u2019s composer (any mode \u2014 not only Plan). Before calling, write a short chat message explaining the decision and what each option means. Include a description on every option. Use when the user should pick from predefined options (approach forks, requirements, which API) \u2014 not for \u201Cis the plan ready?\u201D. After calling, stop and wait for their next message with answers.",
|
|
8324
8343
|
{
|
|
8325
8344
|
questions: z3.array(
|
|
8326
8345
|
z3.object({
|
|
@@ -8425,7 +8444,7 @@ async function startMcpServer() {
|
|
|
8425
8444
|
registerLinearTools(server);
|
|
8426
8445
|
if (sideboardMcpProfile() !== "worktree") {
|
|
8427
8446
|
const { getCaffeinateHold: getCaffeinateHold2, setCaffeinateHold: setCaffeinateHold2 } = await import("./caffeinate-hold-EAZNWJBE.js");
|
|
8428
|
-
const { resolveNewThreadOptions: resolveNewThreadOptions2, resolveThreadDefaults: resolveThreadDefaults2 } = await import("./app-settings-
|
|
8447
|
+
const { resolveNewThreadOptions: resolveNewThreadOptions2, resolveThreadDefaults: resolveThreadDefaults2 } = await import("./app-settings-MQXL7OUF.js");
|
|
8429
8448
|
const accountDefaults = resolveThreadDefaults2();
|
|
8430
8449
|
const accountDefaultsHint = `Account defaults: agent=${accountDefaults.agent}, model=${accountDefaults.model?.trim() || "Auto"}, effort=${accountDefaults.effort}`;
|
|
8431
8450
|
server.tool(
|
|
@@ -11172,6 +11191,7 @@ export {
|
|
|
11172
11191
|
REVIEW_REQUEST_NAME,
|
|
11173
11192
|
REVIEW_REQUEST_PATH,
|
|
11174
11193
|
REVIEW_REQUEST_PREFILL,
|
|
11194
|
+
REVIEW_REQUEST_TEMPLATE,
|
|
11175
11195
|
SIDEBOARD_FORCE_STOP,
|
|
11176
11196
|
SIDEBOARD_MCP_ALLOWED_TOOLS,
|
|
11177
11197
|
SIDEBOARD_MCP_PROFILE_ENV,
|
|
@@ -11320,9 +11340,11 @@ export {
|
|
|
11320
11340
|
formatGhLandError,
|
|
11321
11341
|
formatGitAuthModeDirective,
|
|
11322
11342
|
formatIpcInvokeError,
|
|
11343
|
+
formatMergePrError,
|
|
11323
11344
|
formatMessagesAsTranscript,
|
|
11324
11345
|
formatPlanQuestionAnswers,
|
|
11325
11346
|
formatPlanQuestionsForChat,
|
|
11347
|
+
formatProcessGuideDirective,
|
|
11326
11348
|
formatRateLimitResetHint,
|
|
11327
11349
|
formatRenameBranchDirective,
|
|
11328
11350
|
formatSlackExternalReplyPrompt,
|
|
@@ -11330,6 +11352,7 @@ export {
|
|
|
11330
11352
|
formatSlackRepliesForTurn,
|
|
11331
11353
|
formatSlackSignedReply,
|
|
11332
11354
|
formatTranscriptMarkdown,
|
|
11355
|
+
formatUiReminder,
|
|
11333
11356
|
formatWorkspaceInventory,
|
|
11334
11357
|
formatWorktreeDirective,
|
|
11335
11358
|
formatWorktreeReminder,
|
|
@@ -11404,6 +11427,7 @@ export {
|
|
|
11404
11427
|
isOrchestratorThread,
|
|
11405
11428
|
isPidAlive,
|
|
11406
11429
|
isPlaceholderBranch,
|
|
11430
|
+
isPrNotMergeableError,
|
|
11407
11431
|
isPresentPlanToolName,
|
|
11408
11432
|
isSessionQuotaLimit,
|
|
11409
11433
|
isSideboardScratchPath,
|