@sideboard-ai/core 0.1.73 → 0.1.74
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 +1 -1
- package/dist/agents/cursor-runner.js +1 -1
- package/dist/{agents-77GE7VRW.js → agents-2S2JVLZ6.js} +3 -3
- package/dist/{agents-GUFUYXKP.js → agents-H7M5CQY2.js} +4 -4
- package/dist/{chunk-POW7JCB5.js → chunk-2NKSHIRI.js} +1 -1
- package/dist/{chunk-WSFZPOPH.js → chunk-5KJMNNCB.js} +17 -11
- package/dist/{chunk-NF6Y4GTE.js → chunk-77W62MTX.js} +1 -1
- package/dist/{chunk-CYKPUTXN.js → chunk-DG3S2UXP.js} +1 -1
- package/dist/{chunk-CXT2PLO7.js → chunk-GJ2LZQJI.js} +1 -1
- package/dist/{chunk-V4ACEJX2.js → chunk-HCWAIEBU.js} +11 -10
- package/dist/{chunk-AFW3M6LU.js → chunk-KBKPVKYZ.js} +17 -11
- package/dist/{chunk-3WJAUKIL.js → chunk-SEOICVGB.js} +1 -1
- package/dist/{chunk-6RFPKZNC.js → chunk-XA2FQJTN.js} +11 -10
- package/dist/{coordinator-prompt-4U2QNHGT.js → coordinator-prompt-3XXSG7M2.js} +1 -1
- package/dist/{coordinator-prompt-ZHBDHMZB.js → coordinator-prompt-RTUCCPCI.js} +1 -1
- package/dist/{global-workspace-S3B6ESZS.js → global-workspace-CSIS62Z4.js} +2 -2
- package/dist/{global-workspace-VF56FTPY.js → global-workspace-PJU6HISJ.js} +2 -2
- package/dist/index.cjs +155 -32
- package/dist/index.d.cts +34 -3
- package/dist/index.d.ts +34 -3
- package/dist/index.js +134 -23
- package/dist/mcp/run-stdio.cjs +141 -32
- package/dist/mcp/run-stdio.js +124 -22
- package/dist/{workspaces-ZJ45O4CD.js → workspaces-L4TXMUNM.js} +3 -3
- package/dist/{workspaces-R66324S7.js → workspaces-W72KZL4B.js} +3 -3
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -4416,7 +4416,7 @@ function coordinatorGreenfieldPlaybook(reposDir) {
|
|
|
4416
4416
|
"- Examples:",
|
|
4417
4417
|
` - Clone: \`git clone <url> ${reposDir}/<name>\``,
|
|
4418
4418
|
` - New GitHub repo: \`gh repo create <owner>/<name> --private --clone -- ${reposDir}/<name>\` (or mkdir + git init + gh repo create + remote add + push)`,
|
|
4419
|
-
"- Then: add_workspace with that absolute path \u2192 create_thread (repoPath + parentThreadId) \u2192 send_to_thread (build) \u2192 wait_for_turn \u2192 send_to_thread
|
|
4419
|
+
"- Then: add_workspace with that absolute path \u2192 create_thread (repoPath + parentThreadId) \u2192 send_to_thread (build) \u2192 wait_for_turn \u2192 ask_git create-draft (or send_to_thread `gh pr create --draft -R <origin-owner/name>`).",
|
|
4420
4420
|
"- Always target the child worktree's **origin** (`github:` slug from list_workspaces / `git remote get-url origin` in that worktree). Never open PRs against `upstream`.",
|
|
4421
4421
|
"- Do coding work in the child worktree thread, not by editing files in this home cwd."
|
|
4422
4422
|
].join("\n");
|
|
@@ -4439,8 +4439,8 @@ function coordinatorTurnReminder(opts) {
|
|
|
4439
4439
|
goal ? `- Goal / title: ${goal}` : null,
|
|
4440
4440
|
accountDefaultsPlaybookLine(),
|
|
4441
4441
|
`- For "what's going on": call list_threads (and list_workspaces if needed). Summarize fleet status \u2014 do not ls/git-status this synthetic home.`,
|
|
4442
|
-
"- Existing repo: create_thread on a repoPath \u2192 send_to_thread \u2192 wait_for_turn.",
|
|
4443
|
-
"- New repo: Bash (clone or gh repo create under ~/sideboard/repos/<name>) \u2192 add_workspace \u2192 create_thread \u2192 send_to_thread \u2192 wait_for_turn \u2192 draft
|
|
4442
|
+
"- Existing repo: create_thread on a repoPath \u2192 send_to_thread \u2192 wait_for_turn. Land with ask_git (commit-push / create-draft / merge) on the child, then wait_for_turn \u2014 never git/gh from this cwd.",
|
|
4443
|
+
"- New repo: Bash (clone or gh repo create under ~/sideboard/repos/<name>) \u2192 add_workspace \u2192 create_thread \u2192 send_to_thread \u2192 wait_for_turn \u2192 ask_git create-draft.",
|
|
4444
4444
|
"- When naming threads for the user, link them as `[Title](sideboard://thread/<id>)`.",
|
|
4445
4445
|
"- If they will wait on Slack or leave the Mac, call set_caffeinate enabled=true. When they say they are done / wrapping up / going to sleep, call set_caffeinate enabled=false."
|
|
4446
4446
|
].filter(Boolean).join("\n");
|
|
@@ -4493,9 +4493,9 @@ function ensureGlobalCoordinatorCwd(opts) {
|
|
|
4493
4493
|
orchId ? `Pass parentThreadId="${orchId}" (or omit it). Never invent another parentThreadId.` : "Pass `parentThreadId` for children (this chat's id from the turn reminder).",
|
|
4494
4494
|
"Omit `agent` / `model` on `create_thread` unless you have a reason to override Account defaults.",
|
|
4495
4495
|
"Never pass `agent=codex` when you yourself are Codex \u2014 nested Codex deadlocks on shared ~/.codex locks. Omit agent (Account default) or use cursor/claude.",
|
|
4496
|
-
"Typical flow (existing): list_workspaces \u2192 list_branches|list_prs|list_issues \u2192 create_thread \u2192 send_to_thread \u2192 wait_for_turn.",
|
|
4497
|
-
"Typical flow (new app): Bash create/clone under repos dir \u2192 add_workspace \u2192 create_thread \u2192 send_to_thread (implement) \u2192 wait_for_turn \u2192 draft
|
|
4498
|
-
"Always ask worktree agents to open draft PRs (`
|
|
4496
|
+
"Typical flow (existing): list_workspaces \u2192 list_branches|list_prs|list_issues \u2192 create_thread \u2192 send_to_thread \u2192 wait_for_turn \u2192 ask_git create-draft \u2192 wait_for_turn \u2192 (when ready) ask_git merge \u2192 wait_for_turn.",
|
|
4497
|
+
"Typical flow (new app): Bash create/clone under repos dir \u2192 add_workspace \u2192 create_thread \u2192 send_to_thread (implement) \u2192 wait_for_turn \u2192 ask_git create-draft.",
|
|
4498
|
+
"Always ask worktree agents to commit, push, open draft PRs, and merge (`ask_git` / `send_to_thread`). The worktree agent runs git/gh; never merge from this orchestration cwd."
|
|
4499
4499
|
].join("\n");
|
|
4500
4500
|
try {
|
|
4501
4501
|
(0, import_node_fs10.writeFileSync)((0, import_node_path10.join)(dir, "CLAUDE.md"), `${body}
|
|
@@ -4532,8 +4532,8 @@ function coordinatorSystemPrompt(opts) {
|
|
|
4532
4532
|
"When creating threads, pass the correct repoPath for the target workspace.",
|
|
4533
4533
|
`YOUR orchestration thread id is ${opts.parentId} \u2014 pass parentThreadId="${opts.parentId}" on create_thread, or omit parentThreadId (Sideboard binds it). Never invent a uuid.`,
|
|
4534
4534
|
"Omit agent/model on create_thread unless you need to override Account defaults.",
|
|
4535
|
-
"Typical flow (existing): list_workspaces \u2192 list_branches|list_prs|list_issues \u2192 create_thread \u2192 send_to_thread (implement) \u2192 wait_for_turn \u2192
|
|
4536
|
-
"Typical flow (new app): Bash under repos dir (clone or gh repo create) \u2192 add_workspace \u2192 create_thread \u2192 send_to_thread \u2192 wait_for_turn \u2192 draft
|
|
4535
|
+
"Typical flow (existing): list_workspaces \u2192 list_branches|list_prs|list_issues \u2192 create_thread \u2192 send_to_thread (implement) \u2192 wait_for_turn \u2192 ask_git create-draft \u2192 wait_for_turn \u2192 (when ready) ask_git merge \u2192 wait_for_turn. Never target upstream. Never git/gh from this orchestration cwd.",
|
|
4536
|
+
"Typical flow (new app): Bash under repos dir (clone or gh repo create) \u2192 add_workspace \u2192 create_thread \u2192 send_to_thread \u2192 wait_for_turn \u2192 ask_git create-draft.",
|
|
4537
4537
|
`Goal: ${opts.goal}`,
|
|
4538
4538
|
"Registered workspaces:",
|
|
4539
4539
|
formatWorkspaceInventory(opts.workspaces)
|
|
@@ -4576,8 +4576,9 @@ var init_coordinator_prompt = __esm({
|
|
|
4576
4576
|
"Inspect / review / PRs:",
|
|
4577
4577
|
"- get_diff \u2014 compact diff summary",
|
|
4578
4578
|
'- request_review \u2014 open a Review chat tab on a worktree thread (attaches .sideboard/review.md when present, else local guidelines; sends "Review changes in this workspace."); then wait_for_turn / get_turn_result on the returned id',
|
|
4579
|
-
"-
|
|
4580
|
-
|
|
4579
|
+
"- ask_git \u2014 tell a worktree agent to commit & push, open a draft PR, resolve conflicts, or merge (`Merge PR.`). You only queue that prompt \u2014 the worktree agent runs git/gh (including `gh pr merge`). Then wait_for_turn. Prefer this over paraphrasing.",
|
|
4580
|
+
'- Or send_to_thread with those exact phrases: "Commit and push.", "Commit, push, and open a draft PR.", "Fix merge conflicts.", "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.',
|
|
4581
|
+
"Human-only (do not attempt): ready-for-review land (confirm_land), purge_thread.",
|
|
4581
4582
|
"Thread links in replies: when mentioning a chat/thread for the user, include a markdown link `[Title](sideboard://thread/<id>)` using the full id (or the link field from create_thread / list_threads). Sideboard renders these as clickable opens.",
|
|
4582
4583
|
"Bash / Read / etc: allowed for (1) inspecting target worktrees / registered repo paths from MCP, and (2) greenfield setup under ~/sideboard/repos (git clone, gh repo create, git init+remote). Never git init/clone *inside* this synthetic home cwd \u2014 emptiness here is expected, not a bug."
|
|
4583
4584
|
].join("\n");
|
|
@@ -6230,12 +6231,14 @@ function usageFromClaude(usage) {
|
|
|
6230
6231
|
if (!usage) return null;
|
|
6231
6232
|
const inputTokens = Number(usage.input_tokens ?? 0);
|
|
6232
6233
|
const outputTokens = Number(usage.output_tokens ?? 0);
|
|
6233
|
-
|
|
6234
|
+
const cacheReadTokens = Number(usage.cache_read_input_tokens ?? 0);
|
|
6235
|
+
const cacheWriteTokens = Number(usage.cache_creation_input_tokens ?? 0);
|
|
6236
|
+
if (!inputTokens && !outputTokens && !cacheReadTokens && !cacheWriteTokens) return null;
|
|
6234
6237
|
return {
|
|
6235
6238
|
inputTokens,
|
|
6236
6239
|
outputTokens,
|
|
6237
|
-
cacheReadTokens:
|
|
6238
|
-
cacheWriteTokens:
|
|
6240
|
+
cacheReadTokens: cacheReadTokens || void 0,
|
|
6241
|
+
cacheWriteTokens: cacheWriteTokens || void 0
|
|
6239
6242
|
};
|
|
6240
6243
|
}
|
|
6241
6244
|
function claudeResultErrorDetail(obj) {
|
|
@@ -6488,8 +6491,12 @@ var init_claude = __esm({
|
|
|
6488
6491
|
return { type: "session_id", data: obj.session_id };
|
|
6489
6492
|
}
|
|
6490
6493
|
if (obj.type === "assistant" || obj.type === "user") {
|
|
6491
|
-
const
|
|
6492
|
-
const events = eventsFromContentBlocks(content);
|
|
6494
|
+
const message = obj.message;
|
|
6495
|
+
const events = eventsFromContentBlocks(message?.content);
|
|
6496
|
+
if (obj.type === "assistant") {
|
|
6497
|
+
const usage = usageFromClaude(message?.usage);
|
|
6498
|
+
if (usage) events.push({ type: "usage", data: usage, scope: "request" });
|
|
6499
|
+
}
|
|
6493
6500
|
if (events.length === 0) return null;
|
|
6494
6501
|
return events.length === 1 ? events[0] : events;
|
|
6495
6502
|
}
|
|
@@ -6534,7 +6541,7 @@ var init_claude = __esm({
|
|
|
6534
6541
|
if (typeof text2 === "string" && text2) events.push({ type: "stdout", data: text2 });
|
|
6535
6542
|
}
|
|
6536
6543
|
const usage = usageFromClaude(obj.usage);
|
|
6537
|
-
if (usage) events.push({ type: "usage", data: usage });
|
|
6544
|
+
if (usage) events.push({ type: "usage", data: usage, scope: "turn" });
|
|
6538
6545
|
if (events.length === 0) return null;
|
|
6539
6546
|
return events.length === 1 ? events[0] : events;
|
|
6540
6547
|
}
|
|
@@ -6858,7 +6865,7 @@ var init_codex = __esm({
|
|
|
6858
6865
|
}
|
|
6859
6866
|
if (type === "turn.completed" || type === "turn_completed") {
|
|
6860
6867
|
const usage = usageFromCodex(obj.usage);
|
|
6861
|
-
return usage ? { type: "usage", data: usage } : null;
|
|
6868
|
+
return usage ? { type: "usage", data: usage, scope: "turn" } : null;
|
|
6862
6869
|
}
|
|
6863
6870
|
if (typeof obj.content === "string" && obj.content.trim()) {
|
|
6864
6871
|
return { type: "stdout", data: obj.content };
|
|
@@ -7057,7 +7064,7 @@ function cursorSdkMessageToEvents(msg) {
|
|
|
7057
7064
|
}
|
|
7058
7065
|
if (msg.type === "usage") {
|
|
7059
7066
|
const usage = usageFromCursor(msg.usage);
|
|
7060
|
-
if (usage) return [{ type: "usage", data: usage }];
|
|
7067
|
+
if (usage) return [{ type: "usage", data: usage, scope: "request" }];
|
|
7061
7068
|
}
|
|
7062
7069
|
if (msg.type === "status" && msg.status === "ERROR") {
|
|
7063
7070
|
const rawMessage = msg.message;
|
|
@@ -7479,7 +7486,7 @@ var init_opencode = __esm({
|
|
|
7479
7486
|
const usage = usageFromOpencode(
|
|
7480
7487
|
part?.tokens ?? obj.tokens
|
|
7481
7488
|
);
|
|
7482
|
-
return usage ? { type: "usage", data: usage } : null;
|
|
7489
|
+
return usage ? { type: "usage", data: usage, scope: "request" } : null;
|
|
7483
7490
|
}
|
|
7484
7491
|
return null;
|
|
7485
7492
|
} catch {
|
|
@@ -8270,6 +8277,7 @@ var init_title = __esm({
|
|
|
8270
8277
|
// src/index.ts
|
|
8271
8278
|
var index_exports = {};
|
|
8272
8279
|
__export(index_exports, {
|
|
8280
|
+
AGENT_GIT_ACTIONS: () => AGENT_GIT_ACTIONS,
|
|
8273
8281
|
ATTACHMENTS_DIR: () => ATTACHMENTS_DIR,
|
|
8274
8282
|
BAKED_SLACK_RELAY_URL: () => BAKED_SLACK_RELAY_URL,
|
|
8275
8283
|
BRIGHTSY_MCP_ALLOWED_TOOLS: () => BRIGHTSY_MCP_ALLOWED_TOOLS,
|
|
@@ -8328,6 +8336,7 @@ __export(index_exports, {
|
|
|
8328
8336
|
addStackLayerFromThread: () => addStackLayerFromThread,
|
|
8329
8337
|
addWorkspace: () => addWorkspace,
|
|
8330
8338
|
adoptThread: () => adoptThread,
|
|
8339
|
+
agentGitPrompt: () => agentGitPrompt,
|
|
8331
8340
|
allAdapters: () => allAdapters,
|
|
8332
8341
|
allocatePort: () => allocatePort,
|
|
8333
8342
|
allocatePortRange: () => allocatePortRange,
|
|
@@ -8340,6 +8349,7 @@ __export(index_exports, {
|
|
|
8340
8349
|
applyAppEnvironment: () => applyAppEnvironment,
|
|
8341
8350
|
applyCompaction: () => applyCompaction,
|
|
8342
8351
|
applyThreadIntoMain: () => applyThreadIntoMain,
|
|
8352
|
+
applyTurnUsage: () => applyTurnUsage,
|
|
8343
8353
|
assertOrchestratorCapableAgent: () => assertOrchestratorCapableAgent,
|
|
8344
8354
|
attachmentFromAbsolutePath: () => attachmentFromAbsolutePath,
|
|
8345
8355
|
attachmentsFromBuffers: () => attachmentsFromBuffers,
|
|
@@ -8387,6 +8397,7 @@ __export(index_exports, {
|
|
|
8387
8397
|
confirmLand: () => confirmLand,
|
|
8388
8398
|
connectBrightsyTeam: () => connectBrightsyTeam,
|
|
8389
8399
|
connectSlackToken: () => connectSlackToken,
|
|
8400
|
+
contextTokens: () => contextTokens,
|
|
8390
8401
|
coordinatorSystemPrompt: () => coordinatorSystemPrompt,
|
|
8391
8402
|
coordinatorTurnReminder: () => coordinatorTurnReminder,
|
|
8392
8403
|
copyConfiguredFiles: () => copyConfiguredFiles,
|
|
@@ -8630,6 +8641,7 @@ __export(index_exports, {
|
|
|
8630
8641
|
removeWorkspace: () => removeWorkspace,
|
|
8631
8642
|
removeWorktree: () => removeWorktree,
|
|
8632
8643
|
repoSlug: () => repoSlug,
|
|
8644
|
+
requestOccupancy: () => requestOccupancy,
|
|
8633
8645
|
requestReview: () => requestReview,
|
|
8634
8646
|
requireAgent: () => requireAgent,
|
|
8635
8647
|
resetGhStackDetectCache: () => resetGhStackDetectCache,
|
|
@@ -8762,6 +8774,31 @@ init_gh_errors();
|
|
|
8762
8774
|
init_worktree();
|
|
8763
8775
|
init_stack();
|
|
8764
8776
|
|
|
8777
|
+
// src/git/agent-git-actions.ts
|
|
8778
|
+
var AGENT_GIT_ACTIONS = [
|
|
8779
|
+
"commit-push",
|
|
8780
|
+
"create-draft",
|
|
8781
|
+
"create-web",
|
|
8782
|
+
"resolve-conflicts",
|
|
8783
|
+
"merge"
|
|
8784
|
+
];
|
|
8785
|
+
function agentGitPrompt(action, opts) {
|
|
8786
|
+
switch (action) {
|
|
8787
|
+
case "commit-push":
|
|
8788
|
+
return "Commit and push.";
|
|
8789
|
+
case "create-draft":
|
|
8790
|
+
return "Commit, push, and open a draft PR.";
|
|
8791
|
+
case "create-web":
|
|
8792
|
+
return "Commit, push, and open a PR in the browser.";
|
|
8793
|
+
case "resolve-conflicts": {
|
|
8794
|
+
const base = opts?.prBase?.trim().replace(/^refs\/heads\//, "");
|
|
8795
|
+
return base ? `Merge origin/${base} into this branch. Then push.` : "Fix merge conflicts.";
|
|
8796
|
+
}
|
|
8797
|
+
case "merge":
|
|
8798
|
+
return "Merge PR.";
|
|
8799
|
+
}
|
|
8800
|
+
}
|
|
8801
|
+
|
|
8765
8802
|
// src/integrations/github.ts
|
|
8766
8803
|
init_run();
|
|
8767
8804
|
async function getGitHubStatus() {
|
|
@@ -9457,17 +9494,35 @@ function sumOptional(a, b) {
|
|
|
9457
9494
|
if (a == null && b == null) return void 0;
|
|
9458
9495
|
return (a ?? 0) + (b ?? 0);
|
|
9459
9496
|
}
|
|
9497
|
+
function requestOccupancy(u) {
|
|
9498
|
+
return u.inputTokens + (u.cacheReadTokens ?? 0) + (u.cacheWriteTokens ?? 0);
|
|
9499
|
+
}
|
|
9460
9500
|
function mergeUsage(a, b) {
|
|
9461
9501
|
return {
|
|
9462
9502
|
inputTokens: (a?.inputTokens ?? 0) + b.inputTokens,
|
|
9463
9503
|
outputTokens: (a?.outputTokens ?? 0) + b.outputTokens,
|
|
9464
9504
|
cacheReadTokens: sumOptional(a?.cacheReadTokens, b.cacheReadTokens),
|
|
9465
|
-
cacheWriteTokens: sumOptional(a?.cacheWriteTokens, b.cacheWriteTokens)
|
|
9505
|
+
cacheWriteTokens: sumOptional(a?.cacheWriteTokens, b.cacheWriteTokens),
|
|
9506
|
+
lastRequestTokens: b.lastRequestTokens ?? a?.lastRequestTokens
|
|
9466
9507
|
};
|
|
9467
9508
|
}
|
|
9509
|
+
function applyTurnUsage(current, incoming, scope = "request") {
|
|
9510
|
+
if (scope === "turn") {
|
|
9511
|
+
return {
|
|
9512
|
+
...incoming,
|
|
9513
|
+
lastRequestTokens: current?.lastRequestTokens ?? requestOccupancy(incoming)
|
|
9514
|
+
};
|
|
9515
|
+
}
|
|
9516
|
+
const merged = mergeUsage(current, incoming);
|
|
9517
|
+
return { ...merged, lastRequestTokens: requestOccupancy(incoming) };
|
|
9518
|
+
}
|
|
9468
9519
|
function totalTokens(u) {
|
|
9469
9520
|
return u.inputTokens + u.outputTokens + (u.cacheReadTokens ?? 0) + (u.cacheWriteTokens ?? 0);
|
|
9470
9521
|
}
|
|
9522
|
+
function contextTokens(u) {
|
|
9523
|
+
if (u.lastRequestTokens != null && u.lastRequestTokens > 0) return u.lastRequestTokens;
|
|
9524
|
+
return requestOccupancy(u);
|
|
9525
|
+
}
|
|
9471
9526
|
|
|
9472
9527
|
// src/agents/spawn.ts
|
|
9473
9528
|
async function spawnAgentTurn(thread, input, onEvent) {
|
|
@@ -9541,7 +9596,7 @@ async function spawnAgentTurn(thread, input, onEvent) {
|
|
|
9541
9596
|
continue;
|
|
9542
9597
|
}
|
|
9543
9598
|
if (parsed.type === "usage") {
|
|
9544
|
-
usage =
|
|
9599
|
+
usage = applyTurnUsage(usage, parsed.data, parsed.scope ?? "request");
|
|
9545
9600
|
onEvent(parsed);
|
|
9546
9601
|
continue;
|
|
9547
9602
|
}
|
|
@@ -9600,7 +9655,7 @@ function formatRenameBranchDirective(thread, opts) {
|
|
|
9600
9655
|
"- Rename the git branch to a short kebab-case name that describes this task (what you are changing), e.g. `fix/panel-width` or `feat/dark-mode`:",
|
|
9601
9656
|
" `git branch -m <new-name>`",
|
|
9602
9657
|
"- Prefer Conventional Commits style prefixes when they fit (`fix/`, `feat/`, `chore/`, `docs/`).",
|
|
9603
|
-
"- Never push
|
|
9658
|
+
"- Never push this placeholder to main/master."
|
|
9604
9659
|
];
|
|
9605
9660
|
const custom = opts?.customPrompt?.trim();
|
|
9606
9661
|
if (custom) {
|
|
@@ -9643,7 +9698,7 @@ function formatWorktreeDirective(thread, opts) {
|
|
|
9643
9698
|
"- Prefer a concise imperative title (Conventional Commits style when it fits: feat:/fix:/chore:/docs:). Body should summarize intent, key changes, and test notes."
|
|
9644
9699
|
);
|
|
9645
9700
|
lines.push(
|
|
9646
|
-
"- Commit with messages that state the purpose of the change (same standard as the PR). Stay on this thread branch
|
|
9701
|
+
"- Commit with messages that state the purpose of the change (same standard as the PR). Stay on this thread branch. Never push directly to main/master or merge locally into the main checkout. When asked to merge the PR, use GitHub from this worktree (`gh pr merge` / `gh stack merge`)."
|
|
9647
9702
|
);
|
|
9648
9703
|
if (thread.prUrl) {
|
|
9649
9704
|
lines.push(
|
|
@@ -9675,13 +9730,13 @@ function formatWorktreeDirective(thread, opts) {
|
|
|
9675
9730
|
'- "Fix CI: <name>." \u2192 investigate that failing check, fix it, commit, and push.'
|
|
9676
9731
|
);
|
|
9677
9732
|
lines.push(
|
|
9678
|
-
'- "Update the branch." / "Fix merge conflicts." \u2192 sync with the PR base (merge or rebase), resolve conflicts carefully, commit, and push until the PR is mergeable.'
|
|
9733
|
+
'- "Update the branch." / "Fix merge conflicts." / "Merge origin/<base> into this branch. Then push." \u2192 sync with the PR base (merge or rebase), resolve conflicts carefully, commit, and push until the PR is mergeable.'
|
|
9679
9734
|
);
|
|
9680
9735
|
lines.push(
|
|
9681
9736
|
'- "Address review comments." \u2192 read PR review feedback, make the requested changes, commit, and push.'
|
|
9682
9737
|
);
|
|
9683
9738
|
lines.push(
|
|
9684
|
-
'- "Merge PR." \u2192 merge this thread\'s open pull request
|
|
9739
|
+
'- "Merge PR." \u2192 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.'
|
|
9685
9740
|
);
|
|
9686
9741
|
return lines.join("\n");
|
|
9687
9742
|
}
|
|
@@ -10717,10 +10772,10 @@ async function getDiff(worktreePath, repoPath, opts) {
|
|
|
10717
10772
|
listBranchCommits(worktreePath, repoPath, { base: baseLabel }),
|
|
10718
10773
|
isDirty(worktreePath),
|
|
10719
10774
|
countUnpushedCommits(worktreePath)
|
|
10720
|
-
]).then(([scopeStats, commits,
|
|
10775
|
+
]).then(([scopeStats, commits, dirty2, unpushed]) => ({
|
|
10721
10776
|
scopeStats,
|
|
10722
10777
|
commits,
|
|
10723
|
-
dirty,
|
|
10778
|
+
dirty: dirty2,
|
|
10724
10779
|
unpushed
|
|
10725
10780
|
})) : Promise.resolve({
|
|
10726
10781
|
scopeStats: emptyScopeStats(),
|
|
@@ -10797,13 +10852,14 @@ async function getDiff(worktreePath, repoPath, opts) {
|
|
|
10797
10852
|
}
|
|
10798
10853
|
}
|
|
10799
10854
|
const files = [...filesMap.values()].sort((a, b) => a.path.localeCompare(b.path));
|
|
10855
|
+
const dirty = includeMeta ? meta.dirty : scope === "commits" ? false : files.length > 0;
|
|
10800
10856
|
return {
|
|
10801
10857
|
scope,
|
|
10802
10858
|
commitSha: scope === "commits" ? commitSha : null,
|
|
10803
10859
|
base: labelBase,
|
|
10804
10860
|
files,
|
|
10805
10861
|
stat: formatStat(files),
|
|
10806
|
-
dirty
|
|
10862
|
+
dirty,
|
|
10807
10863
|
unpushed: meta.unpushed,
|
|
10808
10864
|
hasLastTurnBase,
|
|
10809
10865
|
commits: meta.commits,
|
|
@@ -15357,6 +15413,36 @@ var Orchestrator = class {
|
|
|
15357
15413
|
this.emit({ type: "status_changed", threadId: tab.id, status: tab.status });
|
|
15358
15414
|
return tab;
|
|
15359
15415
|
}
|
|
15416
|
+
/**
|
|
15417
|
+
* Queue a desktop-git-button prompt on a worktree agent (commit/push/PR/merge).
|
|
15418
|
+
* Orchestrators use this instead of running git/gh from the synthetic home.
|
|
15419
|
+
*/
|
|
15420
|
+
async askGit(threadRef, action) {
|
|
15421
|
+
if (!AGENT_GIT_ACTIONS.includes(action)) {
|
|
15422
|
+
throw new Error(`Unknown git action: ${action}`);
|
|
15423
|
+
}
|
|
15424
|
+
const thread = this.requireThread(threadRef);
|
|
15425
|
+
this.assertNotGlobal(thread, "ask_git");
|
|
15426
|
+
if (isOrchestratorThread(thread)) {
|
|
15427
|
+
throw new Error(
|
|
15428
|
+
"ask_git targets a worktree agent thread (not the orchestrator). Pass a child/worktree thread ref."
|
|
15429
|
+
);
|
|
15430
|
+
}
|
|
15431
|
+
if (action === "merge" && !thread.prUrl) {
|
|
15432
|
+
throw new Error(
|
|
15433
|
+
"No pull request linked. Ask the worktree agent to open a draft PR first (ask_git create-draft)."
|
|
15434
|
+
);
|
|
15435
|
+
}
|
|
15436
|
+
let prBase;
|
|
15437
|
+
if (action === "resolve-conflicts") {
|
|
15438
|
+
try {
|
|
15439
|
+
const details = await this.getPrDetails(threadRef);
|
|
15440
|
+
prBase = details?.baseRefName?.trim() || void 0;
|
|
15441
|
+
} catch {
|
|
15442
|
+
}
|
|
15443
|
+
}
|
|
15444
|
+
return this.send(threadRef, agentGitPrompt(action, { prBase }));
|
|
15445
|
+
}
|
|
15360
15446
|
setThreadOptions(threadRef, patch) {
|
|
15361
15447
|
const thread = this.requireThread(threadRef);
|
|
15362
15448
|
const next = {};
|
|
@@ -16640,7 +16726,7 @@ async function startMcpServer() {
|
|
|
16640
16726
|
);
|
|
16641
16727
|
server.tool(
|
|
16642
16728
|
"send_to_thread",
|
|
16643
|
-
"Queue a prompt on a worktree thread chat (runs under concurrency cap). Use after create_thread to start or continue a conversation. Set force_stop=true to interrupt an in-flight/queued turn (kill + clear queue) before queueing this prompt \u2014 use when the thread is mid-turn or has stale queued prompts you need to replace.",
|
|
16729
|
+
"Queue a prompt on a worktree thread chat (runs under concurrency cap). Use after create_thread to start or continue a conversation. For commit/push/PR/merge, prefer ask_git (canonical desktop-button phrases). Set force_stop=true to interrupt an in-flight/queued turn (kill + clear queue) before queueing this prompt \u2014 use when the thread is mid-turn or has stale queued prompts you need to replace.",
|
|
16644
16730
|
{
|
|
16645
16731
|
ref: import_zod2.z.string(),
|
|
16646
16732
|
prompt: import_zod2.z.string(),
|
|
@@ -16671,7 +16757,7 @@ async function startMcpServer() {
|
|
|
16671
16757
|
);
|
|
16672
16758
|
server.tool(
|
|
16673
16759
|
"wait_for_turn",
|
|
16674
|
-
"Block until the thread finishes its current/queued turn (avoids polling). Use after send_to_thread to read the agent reply.",
|
|
16760
|
+
"Block until the thread finishes its current/queued turn (avoids polling). Use after send_to_thread or ask_git to read the agent reply.",
|
|
16675
16761
|
{
|
|
16676
16762
|
ref: import_zod2.z.string(),
|
|
16677
16763
|
timeoutMs: import_zod2.z.number().optional()
|
|
@@ -16736,7 +16822,7 @@ async function startMcpServer() {
|
|
|
16736
16822
|
);
|
|
16737
16823
|
server.tool(
|
|
16738
16824
|
"archive_thread",
|
|
16739
|
-
"Archive a thread (stops agent/dev, runs archive script, removes worktree when last chat tab). Coordinators open PRs only by asking the worktree agent.",
|
|
16825
|
+
"Archive a thread (stops agent/dev, runs archive script, removes worktree when last chat tab). Coordinators commit, push, open PRs, and merge only by asking the worktree agent (ask_git).",
|
|
16740
16826
|
{ ref: import_zod2.z.string() },
|
|
16741
16827
|
async ({ ref }) => {
|
|
16742
16828
|
const t = orch.getThread(ref);
|
|
@@ -16842,6 +16928,38 @@ async function startMcpServer() {
|
|
|
16842
16928
|
}
|
|
16843
16929
|
}
|
|
16844
16930
|
);
|
|
16931
|
+
server.tool(
|
|
16932
|
+
"ask_git",
|
|
16933
|
+
"Tell a worktree agent to commit & push, open a draft PR, resolve conflicts, or merge the linked PR \u2014 same short prompts as the desktop git buttons. The worktree agent runs git/gh (`gh pr merge`); this only queues the prompt. Pass a worktree thread ref (not the orchestrator). Then wait_for_turn / get_turn_result. Do not run git or gh from the orchestration cwd.",
|
|
16934
|
+
{
|
|
16935
|
+
ref: import_zod2.z.string().describe("Worktree thread id/ref"),
|
|
16936
|
+
action: import_zod2.z.enum(AGENT_GIT_ACTIONS).describe(
|
|
16937
|
+
"commit-push | create-draft | create-web | resolve-conflicts | merge"
|
|
16938
|
+
)
|
|
16939
|
+
},
|
|
16940
|
+
async ({ ref, action }) => {
|
|
16941
|
+
try {
|
|
16942
|
+
const thread = await orch.askGit(ref, action);
|
|
16943
|
+
return {
|
|
16944
|
+
content: [
|
|
16945
|
+
{
|
|
16946
|
+
type: "text",
|
|
16947
|
+
text: JSON.stringify({
|
|
16948
|
+
id: thread.id,
|
|
16949
|
+
status: thread.status,
|
|
16950
|
+
queueLength: thread.queue.length,
|
|
16951
|
+
action,
|
|
16952
|
+
link: `sideboard://thread/${thread.id}`
|
|
16953
|
+
})
|
|
16954
|
+
}
|
|
16955
|
+
]
|
|
16956
|
+
};
|
|
16957
|
+
} catch (err) {
|
|
16958
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
16959
|
+
return { content: [{ type: "text", text: message }], isError: true };
|
|
16960
|
+
}
|
|
16961
|
+
}
|
|
16962
|
+
);
|
|
16845
16963
|
const agentEnum = import_zod2.z.enum(["claude", "codex", "opencode", "brightsy", "cursor"]);
|
|
16846
16964
|
server.tool(
|
|
16847
16965
|
"list_models",
|
|
@@ -17113,7 +17231,7 @@ async function startMcpServer() {
|
|
|
17113
17231
|
);
|
|
17114
17232
|
server.tool(
|
|
17115
17233
|
"get_pr_stack",
|
|
17116
|
-
"Load the GitHub PR stack for a thread worktree (`gh stack view --json`). Returns null JSON when the branch is not stacked. Prefer this before
|
|
17234
|
+
"Load the GitHub PR stack for a thread worktree (`gh stack view --json`). Returns null JSON when the branch is not stacked. Prefer this before ask_git merge on stacked PRs.",
|
|
17117
17235
|
{ ref: import_zod2.z.string() },
|
|
17118
17236
|
async ({ ref }) => {
|
|
17119
17237
|
const stack = await orch.getPrStack(ref);
|
|
@@ -18936,6 +19054,7 @@ async function startSlackRelayServer(opts) {
|
|
|
18936
19054
|
}
|
|
18937
19055
|
// Annotate the CommonJS export names for ESM import in node:
|
|
18938
19056
|
0 && (module.exports = {
|
|
19057
|
+
AGENT_GIT_ACTIONS,
|
|
18939
19058
|
ATTACHMENTS_DIR,
|
|
18940
19059
|
BAKED_SLACK_RELAY_URL,
|
|
18941
19060
|
BRIGHTSY_MCP_ALLOWED_TOOLS,
|
|
@@ -18994,6 +19113,7 @@ async function startSlackRelayServer(opts) {
|
|
|
18994
19113
|
addStackLayerFromThread,
|
|
18995
19114
|
addWorkspace,
|
|
18996
19115
|
adoptThread,
|
|
19116
|
+
agentGitPrompt,
|
|
18997
19117
|
allAdapters,
|
|
18998
19118
|
allocatePort,
|
|
18999
19119
|
allocatePortRange,
|
|
@@ -19006,6 +19126,7 @@ async function startSlackRelayServer(opts) {
|
|
|
19006
19126
|
applyAppEnvironment,
|
|
19007
19127
|
applyCompaction,
|
|
19008
19128
|
applyThreadIntoMain,
|
|
19129
|
+
applyTurnUsage,
|
|
19009
19130
|
assertOrchestratorCapableAgent,
|
|
19010
19131
|
attachmentFromAbsolutePath,
|
|
19011
19132
|
attachmentsFromBuffers,
|
|
@@ -19053,6 +19174,7 @@ async function startSlackRelayServer(opts) {
|
|
|
19053
19174
|
confirmLand,
|
|
19054
19175
|
connectBrightsyTeam,
|
|
19055
19176
|
connectSlackToken,
|
|
19177
|
+
contextTokens,
|
|
19056
19178
|
coordinatorSystemPrompt,
|
|
19057
19179
|
coordinatorTurnReminder,
|
|
19058
19180
|
copyConfiguredFiles,
|
|
@@ -19296,6 +19418,7 @@ async function startSlackRelayServer(opts) {
|
|
|
19296
19418
|
removeWorkspace,
|
|
19297
19419
|
removeWorktree,
|
|
19298
19420
|
repoSlug,
|
|
19421
|
+
requestOccupancy,
|
|
19299
19422
|
requestReview,
|
|
19300
19423
|
requireAgent,
|
|
19301
19424
|
resetGhStackDetectCache,
|
package/dist/index.d.cts
CHANGED
|
@@ -49,6 +49,11 @@ interface TokenUsage {
|
|
|
49
49
|
outputTokens: number;
|
|
50
50
|
cacheReadTokens?: number;
|
|
51
51
|
cacheWriteTokens?: number;
|
|
52
|
+
/**
|
|
53
|
+
* Tokens occupying the context window on the last API request of this turn
|
|
54
|
+
* (input + cache). Distinct from billed totals, which sum every tool round.
|
|
55
|
+
*/
|
|
56
|
+
lastRequestTokens?: number;
|
|
52
57
|
}
|
|
53
58
|
interface ThreadMessage {
|
|
54
59
|
role: 'user' | 'agent' | 'summary';
|
|
@@ -411,6 +416,8 @@ type AgentEvent = {
|
|
|
411
416
|
} | {
|
|
412
417
|
type: 'usage';
|
|
413
418
|
data: TokenUsage;
|
|
419
|
+
/** `request` = one API call; `turn` = billed total for the whole agent turn. */
|
|
420
|
+
scope?: 'request' | 'turn';
|
|
414
421
|
} | {
|
|
415
422
|
type: 'exit';
|
|
416
423
|
data: number | null;
|
|
@@ -1325,6 +1332,13 @@ declare function submitPrStack(cwd: string, opts?: {
|
|
|
1325
1332
|
/** Check out a stack layer by PR number, stack number, URL, or branch. */
|
|
1326
1333
|
declare function checkoutPrStackLayer(cwd: string, target: string | number): Promise<void>;
|
|
1327
1334
|
|
|
1335
|
+
/** Canonical git prompts the desktop buttons and orchestration `ask_git` send. */
|
|
1336
|
+
declare const AGENT_GIT_ACTIONS: readonly ["commit-push", "create-draft", "create-web", "resolve-conflicts", "merge"];
|
|
1337
|
+
type AgentGitAction = (typeof AGENT_GIT_ACTIONS)[number];
|
|
1338
|
+
declare function agentGitPrompt(action: AgentGitAction, opts?: {
|
|
1339
|
+
prBase?: string | null;
|
|
1340
|
+
}): string;
|
|
1341
|
+
|
|
1328
1342
|
interface GitHubStatus {
|
|
1329
1343
|
connected: boolean;
|
|
1330
1344
|
login: string | null;
|
|
@@ -1793,10 +1807,21 @@ declare function isBrightsyNdjsonLine(line: string): boolean;
|
|
|
1793
1807
|
declare function finalizeParts(parts: MessagePart[]): MessagePart[];
|
|
1794
1808
|
declare function normalizeParseResult(parsed: AgentEvent | AgentEvent[] | null): AgentEvent[];
|
|
1795
1809
|
|
|
1810
|
+
/** Prompt tokens occupying the context window for a single API call. */
|
|
1811
|
+
declare function requestOccupancy(u: TokenUsage): number;
|
|
1796
1812
|
/** Accumulate incremental usage (one CLI turn may report usage in several steps). */
|
|
1797
1813
|
declare function mergeUsage(a: TokenUsage | null, b: TokenUsage): TokenUsage;
|
|
1814
|
+
type UsageScope = 'request' | 'turn';
|
|
1815
|
+
/**
|
|
1816
|
+
* Fold a usage event into the turn total.
|
|
1817
|
+
* Request-scoped events are one API call (sum for billing; last occupancy for the meter).
|
|
1818
|
+
* Turn-scoped events replace billed totals (Claude/Codex result) without wiping last-request size.
|
|
1819
|
+
*/
|
|
1820
|
+
declare function applyTurnUsage(current: TokenUsage | null, incoming: TokenUsage, scope?: UsageScope): TokenUsage;
|
|
1798
1821
|
/** Total tokens processed for a turn (input + output + cache reads/writes). */
|
|
1799
1822
|
declare function totalTokens(u: TokenUsage): number;
|
|
1823
|
+
/** Context-window fill: last API request when known, else billed input + cache. */
|
|
1824
|
+
declare function contextTokens(u: TokenUsage): number;
|
|
1800
1825
|
|
|
1801
1826
|
interface McpServerStatus {
|
|
1802
1827
|
name: string;
|
|
@@ -2711,6 +2736,11 @@ declare class Orchestrator {
|
|
|
2711
2736
|
* and send the merge-readiness prefill.
|
|
2712
2737
|
*/
|
|
2713
2738
|
requestReview(threadRef: string): Promise<Thread>;
|
|
2739
|
+
/**
|
|
2740
|
+
* Queue a desktop-git-button prompt on a worktree agent (commit/push/PR/merge).
|
|
2741
|
+
* Orchestrators use this instead of running git/gh from the synthetic home.
|
|
2742
|
+
*/
|
|
2743
|
+
askGit(threadRef: string, action: AgentGitAction): Promise<Thread>;
|
|
2714
2744
|
setThreadOptions(threadRef: string, patch: ThreadOptionsPatch): Thread;
|
|
2715
2745
|
createChatTab(input: {
|
|
2716
2746
|
fromThreadId: string;
|
|
@@ -2986,8 +3016,9 @@ declare function cloneRepoIntoSideboard(opts: {
|
|
|
2986
3016
|
|
|
2987
3017
|
/**
|
|
2988
3018
|
* Sideboard MCP server — agent-facing judgment surface.
|
|
2989
|
-
* Deliberately excludes ready-for-review confirm_land
|
|
2990
|
-
*
|
|
3019
|
+
* Deliberately excludes ready-for-review confirm_land and purge_thread.
|
|
3020
|
+
* Orchestrators commit, push, open PRs, and merge by telling worktree agents
|
|
3021
|
+
* (`ask_git` / `send_to_thread`) — they do not run git/gh from the synthetic home.
|
|
2991
3022
|
*/
|
|
2992
3023
|
declare function startMcpServer(): Promise<void>;
|
|
2993
3024
|
|
|
@@ -4062,4 +4093,4 @@ interface SlackRelayClientOptions {
|
|
|
4062
4093
|
*/
|
|
4063
4094
|
declare function runSlackRelayClient(opts: SlackRelayClientOptions): Promise<void>;
|
|
4064
4095
|
|
|
4065
|
-
export { ATTACHMENTS_DIR, type ActiveRun, type AddStackLayerInput, type AdoptInput, type AdvancedAppSettings, type AgentAdapter, type AgentEvent, type AgentInstructionFile, type AgentKind, type AgentModelCatalog, type AgentModelInfo, type AgentSetupActionResult, type AgentSetupInfo, type AgentSetupKind, type AgentStatus, type AgentTurnInput, type AnthropicCacheControl, type AppSettings, type ApplyIntoMainResult, type AttachCommand, type Autonomy, BAKED_SLACK_RELAY_URL, BRIGHTSY_MCP_ALLOWED_TOOLS, type BranchInfo, type BrightsyAccount, type BrightsyChatTarget, type BrightsyChatTargets, type BrightsyCloudConnectAgent, type BrightsyHarnessSettings, type BrightsySession, BrightsySideboardApi, type BrightsyTeamTargets, CLAUDE_MODEL_CATALOG, CLOUD_COORDINATOR_BUSY_REPLY, CLOUD_COORDINATOR_STOPPED_REPLY, CLOUD_COORDINATOR_TIMEOUT_REPLY, CLOUD_ORCHESTRATOR_GOAL, CONTEXT_COMPACT_CHARS, CONTEXT_KEEP_RECENT_CHARS, CONTEXT_KEEP_RECENT_MESSAGES, CONTEXT_MIN_MESSAGES, COORDINATOR_TOOL_PLAYBOOK, type CaffeinateHoldState, type ClaudeHarnessSettings, type CleanupOrphansResult, type CliAgentKind, type CliExecutableSettings, type CloudConnectAgent, type CloudConnectOptions, type CloudConnectStatus, type CompactResult, type CompactThresholds, type ComposerFileBuffer, type ConductorSettings, type ConductorWorkspace, type ConnectedBrightsyTeamInfo, type CreateChatTabInput, type CreateGlobalChatOpts, type CreateStackInput, type CreateThreadInput, type CreateWorktreeResult, type CursorModelInfo, type CursorSdkStreamMessage, type CursorTurnRequest, type CursorWorktreesConfig, type DefaultsAppSettings, type DevServerHandle, type DiffCommentInput, type DiffCommentLine, type DiffCommit, type DiffFile, type DiffResult, type DiffScope, type DiffScopeStat, type ExpandResult, FAMOUS_SOCCER_TEAMS, type ForkChatTabInput, type ForkThreadWorktreeInput, type FormatGhLandErrorOptions, GLOBAL_WORKSPACE_ID, type GetDiffOptions, type GhStackStatus, type GitHubStatus, type GitWorktreeStatus, HARNESS_ENV_KEYS, type HarnessId, type InitStackFromThreadInput, type IntegrationsSettings, type IpcApi, type IssueInfo, type IssueSource, LEGACY_ATTACHMENTS_DIR, LEGACY_PLAN_FILE_REL, LEGACY_REVIEW_REQUEST_PATH, LINEAR_OAUTH_CANCELLED, LINEAR_OAUTH_PORT, LINEAR_OAUTH_REDIRECT, LINEAR_OAUTH_SCOPES, type LandPreview, type LandResult, LinearOAuthCancelledError, type ListIssuesResult, MAX_ANTHROPIC_CACHE_CONTROL_BLOCKS, type McpServerStatus, type MessagePart, ORCHESTRATOR_AGENT_KINDS, type OpenPrStackLayersInput, type OpenStackLayerInput, type OpenStackLayerResult, type OrchestrationQuotaOnLimit, Orchestrator, type OrchestratorAgentKind, type OrchestratorEvent, type OrchestratorRuntime, type OrphanWorktree, PASTE_ATTACH_MIN_CHARS, PASTE_ATTACH_MIN_LINES, PLAN_FILE_NAME, PLAN_FILE_REL, PLAN_MODE_INSTRUCTION, type PendingPlanQuestions, type PlanQuestion, type PlanQuestionAnswer, type PlanQuestionOption, type PlanToolPartLike, type PrActor, type PrCheckRun, type PrCommentInfo, type PrCommitInfo, type PrDetails, type PrInfo, type PrMeta, type PrReviewInfo, type PrStack, type PrStackLayer, type PresentedPlan, type PublicAppSettings, type PublicIntegrationsSettings, REPO_REVIEW_NAME, REPO_REVIEW_PATH, REVIEW_REQUEST_NAME, REVIEW_REQUEST_PATH, REVIEW_REQUEST_PREFILL, type RepoSettings, type RepoSetupInfo, type RequestReviewResult, type ResolvedReviewGuidelines, type ReviewGuidelinesSource, type RunMode, type RunScript, SIDEBOARD_FORCE_STOP, SIDEBOARD_MCP_ALLOWED_TOOLS, SIDEBOARD_MCP_PROFILE_ENV, SLACK_LISTEN_BUSY_REPLY, SLACK_LISTEN_STOPPED_REPLY, SLACK_LISTEN_TIMEOUT_REPLY, SLACK_OAUTH_CANCELLED, SLACK_OAUTH_LOCAL_CALLBACK, SLACK_OAUTH_PORT, SLACK_OAUTH_REDIRECT, SLACK_REPLY_FORMATTING, SLACK_SEEN_REACTION, type ScriptHandle, type SideboardMcpProfile, type SkillInfo, type SlackInboundMessage, type SlackListenOptions, type SlackListenStatus, SlackOAuthCancelledError, type SlackOutboundReply, type SlackOutboundWatch, type SlackRelayClientMessage, type SlackRelayClientOptions, SlackRelayHub, type SlackRelayServerHandle, type SlackRelayServerMessage, type SlackRelayServerOptions, type SlackReplyBadge, type SlackWorkspaceInfo, type SourceType, type SpawnTurnHandle, type SummarizeResult, THINKING_EFFORTS, type TeamName, type ThinkingEffort, type Thread, type ThreadAttachment, type ThreadMessage, type ThreadOptionsPatch, type ThreadStatus, type TokenUsage, type ToolPartLike, type TranscriptToolDetail, type TurnCommand, type Workspace, type WorkspaceInventoryEntry, type WorkspaceScriptEnvOpts, ackSlackInboundSeen, addPrStackLayer, addStackLayerFromThread, addWorkspace, adoptThread, allAdapters, allocatePort, allocatePortRange, allocateTeamName, allocateTeamSlug, appDataDir, appSettingsPath, appendMessage, applyAgentEvent, applyAppEnvironment, applyCompaction, applyThreadIntoMain, assertOrchestratorCapableAgent, attachmentFromAbsolutePath, attachmentsFromBuffers, attachmentsFromWorktreePaths, attachmentsGitignoreBody, autoArchiveOnMergeEnabled, autoCleanupOrphansEnabled, autoRenameBranchEnabled, autoRunAfterSetupEnabled, branchDisplayLabel, brightsyAdapter, brightsyCloudConnectAgent, brightsyCloudConnectEnabled, brightsyConfigPath, brightsyInjectWorktreeMcpEnabled, brightsyMcpAllowedTools, brightsyMcpServerName, buildCachedUserContent, buildClaudeStreamJsonUserMessage, buildDiffCommentAttachment, buildForkTranscriptAttachment, buildPastedTextAttachment, buildReviewRequestAttachment, buildSessionSeed, buildWorkspaceScriptEnv, caffeinateHoldPath, caffeinateWhileCloudConnectEnabled, caffeinateWhileRunningEnabled, caffeinateWhileSlackListenEnabled, captureLoginEnv, captureTurnBaseline, checkoutPrStackLayer, childEnvWithAppSettings, claudeAdapter, claudeChromeEnabled, claudeUserSettingsPath, cleanupOrphanWorktrees, cloneRepoIntoSideboard, codexAdapter, coerceOrchestratorAgent, collectTakenTeamSlugs, commitAll, conductorBundledBinDir, conductorDbPath, confirmLand, connectBrightsyTeam, connectSlackToken, coordinatorSystemPrompt, coordinatorTurnReminder, copyConfiguredFiles, countCacheControlBlocks, createChatTab, createEmptyThread, createExistingBranchWorktree, createGlobalChat, createLinearPkce, createOrUpdatePr, createPrStack, createThread, createThreadWorktree, currentBranch, cursorAdapter, cursorSdkMessageToEvents, decodeBrightsyTarget, deleteBranchOnPurgeEnabled, deleteThreadRecord, detectAgents, detectGhStack, detectLocalMergeConflicts, disconnectBrightsyTeam, disconnectLinear, disconnectLinearConnection, disconnectSlackWorkspace, discoverSkills, dismissSlackReplyBadge, dropCachedPrefixOnResume, encodeBrightsyTarget, enrichPathWithNpmGlobalBin, enrichWorkspacesWithGithub, ensureAgentPath, ensureCloudCoordinator, ensureGhPreferOrigin, ensureGlobalCoordinatorCwd, ensureReviewRequestFile, ensureSlackCoordinator, ensureSlackDeviceIdentity, ensureWorkspace, estimateMessageChars, estimateThreadChars, expandComposerPrompt, extractGhErrorDetail, extractPendingPlanQuestions, extractPresentedPlan, extractiveSummary, fetchPrHead, finalizeParts, findInvalidCacheControlTtlOrder, findOrphanWorktrees, findThreadByRef, findThreadForStackLayer, flattenTurnInput, forkChatTab, forkMessageSlice, forkThreadWorktree, formatAgentInstructions, formatArtifactDirective, formatBrightsyFetchError, formatGhLandError, formatIpcInvokeError, formatMessagesAsTranscript, formatPlanQuestionAnswers, formatPlanQuestionsForChat, formatRateLimitResetHint, formatRenameBranchDirective, formatSlackExternalReplyPrompt, formatSlackInboundPrompt, formatSlackRepliesForTurn, formatSlackSignedReply, formatTranscriptMarkdown, formatWorkspaceInventory, formatWorktreeDirective, formatWorktreeReminder, getAdapter, getAgentSetupInfo, getBrightsySession, getCaffeinateHold, getDefaultAgent, getDefaultEffort, getDefaultFast, getDefaultModel, getDefaultRunScript, getDiff, getDiffSummary, getGitHubStatus, getIssueSource, getLinearApiKey, getLinearAuthToken, getOrchestrator, getPr, getPrChecks, getPrDetails, getPrMeta, getPrStack, getRepoSetupInfo, getRunMode, getRunScript, getSlackWorkspace, gh, ghHeadRef, ghRepoSelectArgs, git, globalAgentCwd, handleSlackInbound, harnessEnvKey, hasBakedLinearOAuth, hasBakedSlackOAuth, hasConductorHook, hasCursorWorktreeSetup, hasRepoHook, hasWorkspaceHook, healOrchestrationSoccerTitles, importConductorWorkspace, importConductorWorkspaceAsync, initPrStack, initStackFromThread, initializeGitRepository, inspectGitWorktree, installAgent, isAskUserToolName, isBrightsyConnected, isBrightsyNdjsonLine, isCloudCoordinatorThread, isConductorBundledCli, isCursorAutoModel, isDirty, isGhRateLimitError, isGlobalRepoPath, isGlobalThread, isImageFilePath, isInPrStack, isInboundForThisDesktop, isLinearConnected, isLinearOAuthCancelled, isOrchestratorCapableAgent, isOrchestratorThread, isPidAlive, isPlaceholderBranch, isPresentPlanToolName, isSessionQuotaLimit, isSideboardScratchPath, isSlackCoordinatorThread, isSlackExternalReplyPrompt, isSlackOAuthCancelled, isThinkingEffort, isWorkspaceScratchPath, linearAuthorizationHeader, linearOAuthAuthorizeUrl, linearOAuthCredentials, listAgentSetupInfo, listBranchCommits, listBranches, listBrightsyAccounts, listBrightsyChatTargets, listCodexModels, listConductorWorkspaces, listConnectedBrightsyTeams, listCursorModels, listGitHubIssues, listGlobalThreads, listIssues, listLinearIssues, listLinearIssuesDirect, listModelsForAgent, listOpencodeModels, listPrs, listRunScripts, listSlackOutboundWatches, listSlackReplyBadges, listSlackWorkspaces, listThreads, listWorkspaces, listWorktreeFiles, listWorktrees, loadAgentInstructions, loadAppSettings, loadBrightsyConfig, loadConductorSettings, loadRepoSettings, loadWorkspaceSettings, locksDir, loginAgent, lookupSoccerTeam, maxConcurrentAgents, maybeCompactContext, mcpAllowTools, mcpAuthWarnings, mergePr, mergePrStack, mergeUsage, nextPastedTextName, nextThinkingEffort, normalizeParseResult, normalizeThinkingEffort, normalizeThread, normalizeTurnInput, normalizeWorktreePath, openInSystemTerminal, openPrStackLayers, openStackLayer, opencodeAdapter, orchestrationQuotaFallbackAgent, orchestrationQuotaOnLimit, orchestrationTitleNeedsSoccerNickname, orchestratorSessionPoisonedByBuiltins, originGhRepoEnv, parseCursorRunnerLine, parseForceStopMessage, parseGhStackViewJson, parseGithubSlugFromRemoteUrl, parseMcpList, parsePlanQuestionsInput, parseSessionQuotaResetAt, parseSlackRelayClientMessage, parseSlackRelayServerMessage, partsToAssistantText, pastedTextStats, pendingSlackExternalReplies, permalinkForSlackReplyBadge, permissionMode, persistVaultKeyInKeychain, planFileAbs, posixShellSingleQuote, prepareTerminalCommand, previewLand, promptMentionsBrightsy, pushBranch, readExistingReviewRequestFile, readKeychainVaultKey, readPlanFile, readSkillBody, readThread, readWorktreeFile, readWorktreeFileForUpload, readWorktreeInclude, recordSlackOutboundWatch, refreshGitHubAuth, refreshSlackReplyBadges, removeWorkspace, removeWorktree, repoSlug, requestReview, requireAgent, resetGhStackDetectCache, resolveAgentExecutable, resolveClaudeExecutable, resolveCommandBinarySync, resolveConductorCursorAgentId, resolveCursorModelId, resolveDefaultBranch, resolveDiffBaseRef, resolveEffectiveIssueSource, resolveFilesToCopy, resolveGhAuthToken, resolveGithubRepoSlug, resolveLoginCommand, resolveNewThreadOptions, resolvePlanMarkdown, resolvePrSelector, resolveQuotaFallbackAgent, resolveRepoRoot, resolveReviewGuidelines, resolveSlackListenMode, resolveThreadDefaults, resolveThreadEffort, resolveVaultKey, resolveWorktreeStartPoint, run, runArchiveScript, runCloudConnect, runCursorWorktreeSetup, runSetupScript, runSlackListen, runSlackRelayClient, sameWorktreePath, sanitizeMcpServerName, saveAppSettings, saveLinearOAuth, secureFileUnlocksWith, setCaffeinateHold, setStatus, setVaultMasterKey, settingsSourceLabel, shouldAttachPastedText, shouldCompactContext, shouldInjectBrightsyMcp, shouldRefreshReviewRequestTemplate, shouldRunWorktreeCleanup, sideboardHomeDir, sideboardMcpProfile, sideboardReposDir, sideboardWorkspacesDir, slackAppLevelToken, slackArchiveUrl, slackCoordinatorSourceRef, slackListenEnabled, slackOAuthCredentials, slackRelayUrl, slugify, spawnAgentTurn, splitForCompaction, stackAgentDefaultsFrom, stackIdFrom, stackMergeReadiness, stageAbsolutePathsAsAttachments, stageBuffersAsAttachments, startDevServer, startLinearOAuth, startMcpServer, startOrchestration, startSlackOAuth, startSlackRelayServer, stripBrightsyNdjsonNoise, submitPrStack, suggestSlug, summarizeConversation, switchBrightsyAccount, syncWorkspacesFromThreads, takenTeamSlugsForChatTab, takenTeamSlugsForOrchestration, taskMessageText, thinkingEffortBars, thinkingEffortLabel, threadDisplayLabel, threadFilePath, threadLockPath, threadRequestsBrightsyMcp, threadsDir, threadsSharingWorktree, toPublicAppSettings, toolDescription, toolDetail, toolFilePath, totalTokens, updateAdvancedSettings, updateAgentExecutable, updateAppEnvironment, updateBrightsySettings, updateClaudeSettings, updateCodexSettings, updateDefaultsSettings, updateIntegrationsSettings, updateOpencodeSettings, updateThread, validateLinearApiKey, withAgentInstructions, withExportedPath, withThreadLock, workspaceSettingsSourceLabel, worktreeCleanupSettings, worktreeDisplayLabel, worktreeDisplayLabelForGroup, worktreeNameFromPath, worktreesRoot, writeInjectedMcpConfig, writePlanFile, writeThread, writeWorktreeFile };
|
|
4096
|
+
export { AGENT_GIT_ACTIONS, ATTACHMENTS_DIR, type ActiveRun, type AddStackLayerInput, type AdoptInput, type AdvancedAppSettings, type AgentAdapter, type AgentEvent, type AgentGitAction, type AgentInstructionFile, type AgentKind, type AgentModelCatalog, type AgentModelInfo, type AgentSetupActionResult, type AgentSetupInfo, type AgentSetupKind, type AgentStatus, type AgentTurnInput, type AnthropicCacheControl, type AppSettings, type ApplyIntoMainResult, type AttachCommand, type Autonomy, BAKED_SLACK_RELAY_URL, BRIGHTSY_MCP_ALLOWED_TOOLS, type BranchInfo, type BrightsyAccount, type BrightsyChatTarget, type BrightsyChatTargets, type BrightsyCloudConnectAgent, type BrightsyHarnessSettings, type BrightsySession, BrightsySideboardApi, type BrightsyTeamTargets, CLAUDE_MODEL_CATALOG, CLOUD_COORDINATOR_BUSY_REPLY, CLOUD_COORDINATOR_STOPPED_REPLY, CLOUD_COORDINATOR_TIMEOUT_REPLY, CLOUD_ORCHESTRATOR_GOAL, CONTEXT_COMPACT_CHARS, CONTEXT_KEEP_RECENT_CHARS, CONTEXT_KEEP_RECENT_MESSAGES, CONTEXT_MIN_MESSAGES, COORDINATOR_TOOL_PLAYBOOK, type CaffeinateHoldState, type ClaudeHarnessSettings, type CleanupOrphansResult, type CliAgentKind, type CliExecutableSettings, type CloudConnectAgent, type CloudConnectOptions, type CloudConnectStatus, type CompactResult, type CompactThresholds, type ComposerFileBuffer, type ConductorSettings, type ConductorWorkspace, type ConnectedBrightsyTeamInfo, type CreateChatTabInput, type CreateGlobalChatOpts, type CreateStackInput, type CreateThreadInput, type CreateWorktreeResult, type CursorModelInfo, type CursorSdkStreamMessage, type CursorTurnRequest, type CursorWorktreesConfig, type DefaultsAppSettings, type DevServerHandle, type DiffCommentInput, type DiffCommentLine, type DiffCommit, type DiffFile, type DiffResult, type DiffScope, type DiffScopeStat, type ExpandResult, FAMOUS_SOCCER_TEAMS, type ForkChatTabInput, type ForkThreadWorktreeInput, type FormatGhLandErrorOptions, GLOBAL_WORKSPACE_ID, type GetDiffOptions, type GhStackStatus, type GitHubStatus, type GitWorktreeStatus, HARNESS_ENV_KEYS, type HarnessId, type InitStackFromThreadInput, type IntegrationsSettings, type IpcApi, type IssueInfo, type IssueSource, LEGACY_ATTACHMENTS_DIR, LEGACY_PLAN_FILE_REL, LEGACY_REVIEW_REQUEST_PATH, LINEAR_OAUTH_CANCELLED, LINEAR_OAUTH_PORT, LINEAR_OAUTH_REDIRECT, LINEAR_OAUTH_SCOPES, type LandPreview, type LandResult, LinearOAuthCancelledError, type ListIssuesResult, MAX_ANTHROPIC_CACHE_CONTROL_BLOCKS, type McpServerStatus, type MessagePart, ORCHESTRATOR_AGENT_KINDS, type OpenPrStackLayersInput, type OpenStackLayerInput, type OpenStackLayerResult, type OrchestrationQuotaOnLimit, Orchestrator, type OrchestratorAgentKind, type OrchestratorEvent, type OrchestratorRuntime, type OrphanWorktree, PASTE_ATTACH_MIN_CHARS, PASTE_ATTACH_MIN_LINES, PLAN_FILE_NAME, PLAN_FILE_REL, PLAN_MODE_INSTRUCTION, type PendingPlanQuestions, type PlanQuestion, type PlanQuestionAnswer, type PlanQuestionOption, type PlanToolPartLike, type PrActor, type PrCheckRun, type PrCommentInfo, type PrCommitInfo, type PrDetails, type PrInfo, type PrMeta, type PrReviewInfo, type PrStack, type PrStackLayer, type PresentedPlan, type PublicAppSettings, type PublicIntegrationsSettings, REPO_REVIEW_NAME, REPO_REVIEW_PATH, REVIEW_REQUEST_NAME, REVIEW_REQUEST_PATH, REVIEW_REQUEST_PREFILL, type RepoSettings, type RepoSetupInfo, type RequestReviewResult, type ResolvedReviewGuidelines, type ReviewGuidelinesSource, type RunMode, type RunScript, SIDEBOARD_FORCE_STOP, SIDEBOARD_MCP_ALLOWED_TOOLS, SIDEBOARD_MCP_PROFILE_ENV, SLACK_LISTEN_BUSY_REPLY, SLACK_LISTEN_STOPPED_REPLY, SLACK_LISTEN_TIMEOUT_REPLY, SLACK_OAUTH_CANCELLED, SLACK_OAUTH_LOCAL_CALLBACK, SLACK_OAUTH_PORT, SLACK_OAUTH_REDIRECT, SLACK_REPLY_FORMATTING, SLACK_SEEN_REACTION, type ScriptHandle, type SideboardMcpProfile, type SkillInfo, type SlackInboundMessage, type SlackListenOptions, type SlackListenStatus, SlackOAuthCancelledError, type SlackOutboundReply, type SlackOutboundWatch, type SlackRelayClientMessage, type SlackRelayClientOptions, SlackRelayHub, type SlackRelayServerHandle, type SlackRelayServerMessage, type SlackRelayServerOptions, type SlackReplyBadge, type SlackWorkspaceInfo, type SourceType, type SpawnTurnHandle, type SummarizeResult, THINKING_EFFORTS, type TeamName, type ThinkingEffort, type Thread, type ThreadAttachment, type ThreadMessage, type ThreadOptionsPatch, type ThreadStatus, type TokenUsage, type ToolPartLike, type TranscriptToolDetail, type TurnCommand, type UsageScope, type Workspace, type WorkspaceInventoryEntry, type WorkspaceScriptEnvOpts, ackSlackInboundSeen, addPrStackLayer, addStackLayerFromThread, addWorkspace, adoptThread, agentGitPrompt, allAdapters, allocatePort, allocatePortRange, allocateTeamName, allocateTeamSlug, appDataDir, appSettingsPath, appendMessage, applyAgentEvent, applyAppEnvironment, applyCompaction, applyThreadIntoMain, applyTurnUsage, assertOrchestratorCapableAgent, attachmentFromAbsolutePath, attachmentsFromBuffers, attachmentsFromWorktreePaths, attachmentsGitignoreBody, autoArchiveOnMergeEnabled, autoCleanupOrphansEnabled, autoRenameBranchEnabled, autoRunAfterSetupEnabled, branchDisplayLabel, brightsyAdapter, brightsyCloudConnectAgent, brightsyCloudConnectEnabled, brightsyConfigPath, brightsyInjectWorktreeMcpEnabled, brightsyMcpAllowedTools, brightsyMcpServerName, buildCachedUserContent, buildClaudeStreamJsonUserMessage, buildDiffCommentAttachment, buildForkTranscriptAttachment, buildPastedTextAttachment, buildReviewRequestAttachment, buildSessionSeed, buildWorkspaceScriptEnv, caffeinateHoldPath, caffeinateWhileCloudConnectEnabled, caffeinateWhileRunningEnabled, caffeinateWhileSlackListenEnabled, captureLoginEnv, captureTurnBaseline, checkoutPrStackLayer, childEnvWithAppSettings, claudeAdapter, claudeChromeEnabled, claudeUserSettingsPath, cleanupOrphanWorktrees, cloneRepoIntoSideboard, codexAdapter, coerceOrchestratorAgent, collectTakenTeamSlugs, commitAll, conductorBundledBinDir, conductorDbPath, confirmLand, connectBrightsyTeam, connectSlackToken, contextTokens, coordinatorSystemPrompt, coordinatorTurnReminder, copyConfiguredFiles, countCacheControlBlocks, createChatTab, createEmptyThread, createExistingBranchWorktree, createGlobalChat, createLinearPkce, createOrUpdatePr, createPrStack, createThread, createThreadWorktree, currentBranch, cursorAdapter, cursorSdkMessageToEvents, decodeBrightsyTarget, deleteBranchOnPurgeEnabled, deleteThreadRecord, detectAgents, detectGhStack, detectLocalMergeConflicts, disconnectBrightsyTeam, disconnectLinear, disconnectLinearConnection, disconnectSlackWorkspace, discoverSkills, dismissSlackReplyBadge, dropCachedPrefixOnResume, encodeBrightsyTarget, enrichPathWithNpmGlobalBin, enrichWorkspacesWithGithub, ensureAgentPath, ensureCloudCoordinator, ensureGhPreferOrigin, ensureGlobalCoordinatorCwd, ensureReviewRequestFile, ensureSlackCoordinator, ensureSlackDeviceIdentity, ensureWorkspace, estimateMessageChars, estimateThreadChars, expandComposerPrompt, extractGhErrorDetail, extractPendingPlanQuestions, extractPresentedPlan, extractiveSummary, fetchPrHead, finalizeParts, findInvalidCacheControlTtlOrder, findOrphanWorktrees, findThreadByRef, findThreadForStackLayer, flattenTurnInput, forkChatTab, forkMessageSlice, forkThreadWorktree, formatAgentInstructions, formatArtifactDirective, formatBrightsyFetchError, formatGhLandError, formatIpcInvokeError, formatMessagesAsTranscript, formatPlanQuestionAnswers, formatPlanQuestionsForChat, formatRateLimitResetHint, formatRenameBranchDirective, formatSlackExternalReplyPrompt, formatSlackInboundPrompt, formatSlackRepliesForTurn, formatSlackSignedReply, formatTranscriptMarkdown, formatWorkspaceInventory, formatWorktreeDirective, formatWorktreeReminder, getAdapter, getAgentSetupInfo, getBrightsySession, getCaffeinateHold, getDefaultAgent, getDefaultEffort, getDefaultFast, getDefaultModel, getDefaultRunScript, getDiff, getDiffSummary, getGitHubStatus, getIssueSource, getLinearApiKey, getLinearAuthToken, getOrchestrator, getPr, getPrChecks, getPrDetails, getPrMeta, getPrStack, getRepoSetupInfo, getRunMode, getRunScript, getSlackWorkspace, gh, ghHeadRef, ghRepoSelectArgs, git, globalAgentCwd, handleSlackInbound, harnessEnvKey, hasBakedLinearOAuth, hasBakedSlackOAuth, hasConductorHook, hasCursorWorktreeSetup, hasRepoHook, hasWorkspaceHook, healOrchestrationSoccerTitles, importConductorWorkspace, importConductorWorkspaceAsync, initPrStack, initStackFromThread, initializeGitRepository, inspectGitWorktree, installAgent, isAskUserToolName, isBrightsyConnected, isBrightsyNdjsonLine, isCloudCoordinatorThread, isConductorBundledCli, isCursorAutoModel, isDirty, isGhRateLimitError, isGlobalRepoPath, isGlobalThread, isImageFilePath, isInPrStack, isInboundForThisDesktop, isLinearConnected, isLinearOAuthCancelled, isOrchestratorCapableAgent, isOrchestratorThread, isPidAlive, isPlaceholderBranch, isPresentPlanToolName, isSessionQuotaLimit, isSideboardScratchPath, isSlackCoordinatorThread, isSlackExternalReplyPrompt, isSlackOAuthCancelled, isThinkingEffort, isWorkspaceScratchPath, linearAuthorizationHeader, linearOAuthAuthorizeUrl, linearOAuthCredentials, listAgentSetupInfo, listBranchCommits, listBranches, listBrightsyAccounts, listBrightsyChatTargets, listCodexModels, listConductorWorkspaces, listConnectedBrightsyTeams, listCursorModels, listGitHubIssues, listGlobalThreads, listIssues, listLinearIssues, listLinearIssuesDirect, listModelsForAgent, listOpencodeModels, listPrs, listRunScripts, listSlackOutboundWatches, listSlackReplyBadges, listSlackWorkspaces, listThreads, listWorkspaces, listWorktreeFiles, listWorktrees, loadAgentInstructions, loadAppSettings, loadBrightsyConfig, loadConductorSettings, loadRepoSettings, loadWorkspaceSettings, locksDir, loginAgent, lookupSoccerTeam, maxConcurrentAgents, maybeCompactContext, mcpAllowTools, mcpAuthWarnings, mergePr, mergePrStack, mergeUsage, nextPastedTextName, nextThinkingEffort, normalizeParseResult, normalizeThinkingEffort, normalizeThread, normalizeTurnInput, normalizeWorktreePath, openInSystemTerminal, openPrStackLayers, openStackLayer, opencodeAdapter, orchestrationQuotaFallbackAgent, orchestrationQuotaOnLimit, orchestrationTitleNeedsSoccerNickname, orchestratorSessionPoisonedByBuiltins, originGhRepoEnv, parseCursorRunnerLine, parseForceStopMessage, parseGhStackViewJson, parseGithubSlugFromRemoteUrl, parseMcpList, parsePlanQuestionsInput, parseSessionQuotaResetAt, parseSlackRelayClientMessage, parseSlackRelayServerMessage, partsToAssistantText, pastedTextStats, pendingSlackExternalReplies, permalinkForSlackReplyBadge, permissionMode, persistVaultKeyInKeychain, planFileAbs, posixShellSingleQuote, prepareTerminalCommand, previewLand, promptMentionsBrightsy, pushBranch, readExistingReviewRequestFile, readKeychainVaultKey, readPlanFile, readSkillBody, readThread, readWorktreeFile, readWorktreeFileForUpload, readWorktreeInclude, recordSlackOutboundWatch, refreshGitHubAuth, refreshSlackReplyBadges, removeWorkspace, removeWorktree, repoSlug, requestOccupancy, requestReview, requireAgent, resetGhStackDetectCache, resolveAgentExecutable, resolveClaudeExecutable, resolveCommandBinarySync, resolveConductorCursorAgentId, resolveCursorModelId, resolveDefaultBranch, resolveDiffBaseRef, resolveEffectiveIssueSource, resolveFilesToCopy, resolveGhAuthToken, resolveGithubRepoSlug, resolveLoginCommand, resolveNewThreadOptions, resolvePlanMarkdown, resolvePrSelector, resolveQuotaFallbackAgent, resolveRepoRoot, resolveReviewGuidelines, resolveSlackListenMode, resolveThreadDefaults, resolveThreadEffort, resolveVaultKey, resolveWorktreeStartPoint, run, runArchiveScript, runCloudConnect, runCursorWorktreeSetup, runSetupScript, runSlackListen, runSlackRelayClient, sameWorktreePath, sanitizeMcpServerName, saveAppSettings, saveLinearOAuth, secureFileUnlocksWith, setCaffeinateHold, setStatus, setVaultMasterKey, settingsSourceLabel, shouldAttachPastedText, shouldCompactContext, shouldInjectBrightsyMcp, shouldRefreshReviewRequestTemplate, shouldRunWorktreeCleanup, sideboardHomeDir, sideboardMcpProfile, sideboardReposDir, sideboardWorkspacesDir, slackAppLevelToken, slackArchiveUrl, slackCoordinatorSourceRef, slackListenEnabled, slackOAuthCredentials, slackRelayUrl, slugify, spawnAgentTurn, splitForCompaction, stackAgentDefaultsFrom, stackIdFrom, stackMergeReadiness, stageAbsolutePathsAsAttachments, stageBuffersAsAttachments, startDevServer, startLinearOAuth, startMcpServer, startOrchestration, startSlackOAuth, startSlackRelayServer, stripBrightsyNdjsonNoise, submitPrStack, suggestSlug, summarizeConversation, switchBrightsyAccount, syncWorkspacesFromThreads, takenTeamSlugsForChatTab, takenTeamSlugsForOrchestration, taskMessageText, thinkingEffortBars, thinkingEffortLabel, threadDisplayLabel, threadFilePath, threadLockPath, threadRequestsBrightsyMcp, threadsDir, threadsSharingWorktree, toPublicAppSettings, toolDescription, toolDetail, toolFilePath, totalTokens, updateAdvancedSettings, updateAgentExecutable, updateAppEnvironment, updateBrightsySettings, updateClaudeSettings, updateCodexSettings, updateDefaultsSettings, updateIntegrationsSettings, updateOpencodeSettings, updateThread, validateLinearApiKey, withAgentInstructions, withExportedPath, withThreadLock, workspaceSettingsSourceLabel, worktreeCleanupSettings, worktreeDisplayLabel, worktreeDisplayLabelForGroup, worktreeNameFromPath, worktreesRoot, writeInjectedMcpConfig, writePlanFile, writeThread, writeWorktreeFile };
|