@sideboard-ai/core 0.1.312 → 0.1.314
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-XDI6QHBA.js → agents-KIC6CNXF.js} +4 -4
- package/dist/{agents-IOJRGGK3.js → agents-S7VBS5JL.js} +4 -4
- package/dist/{chunk-ZW7RSQHY.js → chunk-5QYCCXXQ.js} +2 -2
- package/dist/{chunk-VIVXKN5N.js → chunk-6EGQPMSR.js} +11 -11
- package/dist/{chunk-4FZUUH6W.js → chunk-7DBL5AF4.js} +119 -55
- package/dist/{chunk-QC2TQMPJ.js → chunk-7UP4D5XI.js} +2 -2
- package/dist/{chunk-2P2HYXA2.js → chunk-A45QMSVB.js} +119 -55
- package/dist/{chunk-PXMLMBMI.js → chunk-E63AM3PW.js} +29 -6
- package/dist/{chunk-VEVFHO6K.js → chunk-HH3VVTEC.js} +43 -11
- package/dist/{chunk-WRZRX4Q7.js → chunk-NMPQ7GIS.js} +3 -3
- package/dist/{chunk-33KDPEK4.js → chunk-RSA47QYR.js} +29 -6
- package/dist/{chunk-X3FSWWW2.js → chunk-S3KYDK6W.js} +4 -4
- package/dist/{chunk-62ESCTJ4.js → chunk-TO5UL7VN.js} +3 -3
- package/dist/{chunk-42JGPPVS.js → chunk-V5BTGQ6M.js} +38 -6
- package/dist/{chunk-LLTWP4PK.js → chunk-YK77HB3W.js} +10 -10
- package/dist/{chunk-RU6DTCCV.js → chunk-ZQLZ2A3I.js} +1 -1
- package/dist/{chunk-5QX2NYXL.js → chunk-ZSVKUOFH.js} +4 -4
- package/dist/{conductor-CTWR6NH4.js → conductor-G6TKCMIW.js} +2 -2
- package/dist/{conductor-YOBSYPLT.js → conductor-IIDQ2U24.js} +2 -2
- package/dist/{connected-teams-WLWIVYGD.js → connected-teams-IFW3NQ6G.js} +4 -2
- package/dist/{connected-teams-BBNYTR3I.js → connected-teams-IHK2WXUI.js} +4 -2
- package/dist/{coordinator-prompt-YAZRQ4BI.js → coordinator-prompt-5USNNCG6.js} +1 -1
- package/dist/{coordinator-prompt-GZCWQAAV.js → coordinator-prompt-EXJSULAR.js} +1 -1
- package/dist/{global-workspace-H6X32IJZ.js → global-workspace-UDRTONQE.js} +1 -1
- package/dist/{global-workspace-BZAVBOH3.js → global-workspace-ZGPIGJ6J.js} +1 -1
- package/dist/index.cjs +194 -67
- package/dist/index.d.cts +13 -8
- package/dist/index.d.ts +13 -8
- package/dist/index.js +11 -11
- package/dist/mcp/run-stdio.cjs +193 -67
- package/dist/mcp/run-stdio.js +7 -7
- package/dist/{oauth-WCUZ6Z5G.js → oauth-CI3U5ZAA.js} +1 -1
- package/dist/{oauth-DP4ZV2M2.js → oauth-CR5FY4CJ.js} +1 -1
- package/dist/{optional-cli-QDIT57VD.js → optional-cli-MLZSE6KW.js} +1 -1
- package/dist/{optional-cli-QY6V5S5N.js → optional-cli-SI4BCPRH.js} +2 -2
- package/dist/{orchestrator-S44BMNN7.js → orchestrator-AM7VT2BD.js} +7 -7
- package/dist/{orchestrator-BYTSILLH.js → orchestrator-V6NLIPLH.js} +7 -7
- package/dist/{workspaces-BQUDYTBX.js → workspaces-3TTODHKN.js} +1 -1
- package/dist/{workspaces-AGOLRBYZ.js → workspaces-TATO466L.js} +1 -1
- package/package.json +1 -1
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
remoteCoordinatorSourceRef,
|
|
21
21
|
slackCoordinatorSourceRef,
|
|
22
22
|
takenTeamSlugsForOrchestration
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-S3KYDK6W.js";
|
|
24
24
|
import "./chunk-DLGGLV2M.js";
|
|
25
25
|
import "./chunk-N2WW62LF.js";
|
|
26
26
|
import "./chunk-DD67JWTN.js";
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
remoteCoordinatorSourceRef,
|
|
19
19
|
slackCoordinatorSourceRef,
|
|
20
20
|
takenTeamSlugsForOrchestration
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-ZSVKUOFH.js";
|
|
22
22
|
import "./chunk-BIPXOHZI.js";
|
|
23
23
|
import "./chunk-HG25AYBV.js";
|
|
24
24
|
import "./chunk-2P4XKWV2.js";
|
package/dist/index.cjs
CHANGED
|
@@ -12400,12 +12400,12 @@ var init_coordinator_prompt = __esm({
|
|
|
12400
12400
|
"- list_projects \u2014 registered repos (path + github slug + project context when set). Use account / project context to pick the right repo for tickets or reviews.",
|
|
12401
12401
|
"- list_board \u2014 Home Kanban of workspaces (New / Draft / Review / Approved / Merged; one card per checkout). Sibling chats on a card are separate agents, not one agent. Path to merge: no PR \u2192 draft PR \u2192 open PR \u2192 approved \u2192 merged. Archive removes the card to Settings \u2192 History (list_archive to browse, restore_workspace to bring it back). Queued/running are activity on the card, not columns. Orchestration chats are not on the board. Filters: query, repoPath, kind, column, limit.",
|
|
12402
12402
|
`- list_branches / list_prs / list_issues \u2014 pass repoPath from list_projects. Review is PRs (the surface for assigned ticket work), not the tickets: "Get me N tickets to review" \u2192 list_prs(queue=review, limit=N) then create_workspace sourceType=pr. That is open non-draft PRs labeled with this project's ready-for-review GitHub label (Settings \u2192 Projects; default eng-review) with no individual user reviewer yet. A team request (engineering-team) is not a claim \u2014 the viewer is on that team and can pick it up; claimed means an individual account is the reviewer. Bots ignored. Use Settings \u2192 Agents / Projects context (roles, teams, labels \u2014 freeform text; project adds to account) to prefer the right queues. queue=mine is review-requested:@me; queue=approved|changes uses those labels. Also: state, label, reviewer=me|unassigned|login, query, limit default 40 max 250; raise limit or tighten when truncated. list_issues (query, assignee=me|unassigned|all|user, limit default 40 max 250) lists Linear, AbleTime, or GitHub tickets \u2014 do not use it for that review-inbox ask. When they ask for tickets to work on, follow their context (assignee=me or unassigned as it says).`,
|
|
12403
|
-
"- Find work: when they ask to find work, pick up tickets, or list reviews, use Settings \u2192 Agents (account) plus Settings \u2192 Projects (per-repo) context. Tickets \u2192 Sideboard list_issues / linear_* (Account Linear). Reviews \u2192 list_prs(queue=review). Do not call Claude Linear MCP or any other vendor Linear MCP \u2014 those HTTP connectors hang or flap on the first turn. If a vendor MCP is down or reconnecting, ignore it and keep going with Sideboard tools. Show the options \u2014 do not create_workspace or start unless they also asked to start (e.g. \u201Cfind me work and start it\u201D). Do not start this unprompted. To change that context, show the proposed text, ask_user (Save this context / Do not save), wait, then update_viewer_context with confirmed=true. Never write it without confirmation.",
|
|
12403
|
+
"- Find work: when they ask to find work, pick up tickets, or list reviews, use Settings \u2192 Agents (account) plus Settings \u2192 Projects (per-repo) context. Tickets \u2192 Sideboard list_issues / linear_* (Account Linear). Reviews \u2192 list_prs(queue=review). Do not call Claude Linear MCP or any other vendor Linear MCP \u2014 those HTTP connectors hang or flap on the first turn. If a vendor MCP is down or reconnecting, ignore it and keep going with Sideboard tools. A failed Claude connector is not a Sideboard outage \u2014 do not mention it when the Account connection works. Show the options \u2014 do not create_workspace or start unless they also asked to start (e.g. \u201Cfind me work and start it\u201D). Do not start this unprompted. To change that context, show the proposed text, ask_user (Save this context / Do not save), wait, then update_viewer_context with confirmed=true. Never write it without confirmation.",
|
|
12404
12404
|
"- Ticket updates: list_issues / linear_search_issues / github_search_issues with updatedSince (yesterday, 2d, or ISO). One call returns new assignments, ticket edits, and new comments \u2014 do not get_issue every ticket just to check for comments. kind=created vs updated distinguishes new tickets from existing ones.",
|
|
12405
|
-
"- linear_* (when Linear is connected) \u2014 list_teams for team key/states; linear_list_projects for project names; get/search include the project a ticket is on; get/create/update/comment with ENG-123. Worktree agents have the same Account tools \u2014 prefer they comment, update status, and create spin-offs (parent=) on their own ticket when they were asked to do the work. When reviewing a PR or ticket, do not comment or update until the user types a next step \u2014 they should work through the feedback in chat first. Do not tell the child to ask_user after the review. Scope errors: reconnect Linear in Account settings. Prefer these over any Linear MCP the CLI may still list.",
|
|
12406
|
-
"- github_* \u2014 get/comment/update/create GitHub issues via Account `gh` (#123). github_list_projects and get/search include GitHub Projects. projectsError or a missing read:project scope \u2192 `gh auth refresh -s read:project`. Worktree agents have these too. Prefer
|
|
12405
|
+
"- linear_* (when Linear is connected) \u2014 list_teams for team key/states; linear_list_projects for project names; get/search include the project a ticket is on; get/create/update/comment with ENG-123. Worktree agents have the same Account tools \u2014 prefer they comment, update status, and create spin-offs (parent=) on their own ticket when they were asked to do the work. When reviewing a PR or ticket, do not comment or update until the user types a next step \u2014 they should work through the feedback in chat first. Do not tell the child to ask_user after the review. Scope errors: reconnect Linear in Account settings. Prefer these over any Linear MCP the CLI may still list. Worktree agents use the Claude Linear connector only when Account Linear is not set or the Sideboard call fails, and they do not mention that connector startup failure when Sideboard works.",
|
|
12406
|
+
"- github_* \u2014 get/comment/update/create GitHub issues via Account `gh` (#123). github_list_projects and get/search include GitHub Projects. projectsError or a missing read:project scope \u2192 `gh auth refresh -s read:project`. Worktree agents have these too. Prefer Sideboard `github_*` while Account `gh` works. A failed Claude GitHub connector (`mcp_github_github`) is not a Sideboard outage \u2014 do not mention it. Use that connector only when `gh` is not set up or the Sideboard call fails. Pass parent= for spin-offs. When reviewing a PR or ticket, do not comment, submit `gh pr review`, or update the PR/ticket until the user types a next step.",
|
|
12407
12407
|
"- abletime_* (when AbleTime is connected) \u2014 orientation first; abletime_list_projects lists projects; get/list include the project a task is on; get/comment/update/create (parent= for spin-offs); ensure_task when work has no ticket (or create_workspace from the default branch auto-creates one). Worktree agents have the same Account tools. Same review-write gate as Linear/GitHub.",
|
|
12408
|
-
"- Optional connectors (Vercel, Supabase, Sentry) in Settings \u2192 Connectors inject tokens into worktree agent env when connected. Prefer official CLIs (`vercel`, `supabase`, `sentry-cli`). When Settings \u2192 Connectors has a PostHog personal API key, PostHog is the Sideboard tool `posthog_api` (GET by default; POST `/api/projects/:id/query/` or `/api/environments/:id/query/` is a read and does not need write=true; other POST and PATCH need write=true only when the user asked to change data). The PostHog key stays in the vault \u2014 do not read it from the environment, and do not sign in to a PostHog MCP. When no PostHog API key is set,
|
|
12408
|
+
"- Optional connectors (Vercel, Supabase, Sentry) in Settings \u2192 Connectors inject tokens into worktree agent env when connected. Prefer official CLIs (`vercel`, `supabase`, `sentry-cli`). When Settings \u2192 Connectors has a PostHog personal API key, PostHog is the Sideboard tool `posthog_api` (GET by default; POST `/api/projects/:id/query/` or `/api/environments/:id/query/` is a read and does not need write=true; other POST and PATCH need write=true only when the user asked to change data). The PostHog key stays in the vault \u2014 do not read it from the environment, and do not sign in to a PostHog MCP. When no PostHog API key is set, use the Claude PostHog connector. When a key is set, ignore a failed Claude PostHog connector and do not sign in to a PostHog MCP. If a Vercel, Supabase, or Sentry MCP needsAuth or is unauthorized while that Sideboard token is set, do not sign in \u2014 use the native CLI. When that token is not set or the CLI call fails, the Claude connector is the fallback. Do not mention a Claude connector startup failure when the Sideboard connection works. Tell any worktree agent (Claude / Cursor / Codex / OpenCode) to write CLI output to `.context/cli/` and read a slice. If a CLI is missing, the user presses Install CLI on that row. Do not add vendor MCPs. Git (`gh`) stays Settings \u2192 Git; issue tracking stays Settings \u2192 Issues. The phone remote is Settings \u2192 Remote \u2014 do not look up Slack users.",
|
|
12409
12409
|
"- get_pr_stack / open_pr_stack_layers / add_stack_layer / create_pr_stack \u2014 GitHub stacked PRs (`gh stack`); one worktree per layer",
|
|
12410
12410
|
"- list_models \u2014 only when you need a specific model (rare); otherwise omit model so Account defaults apply",
|
|
12411
12411
|
"- list_chats / get_chat \u2014 live thread list (parent id + last message preview). get_chat on this orchestration chat lists child worktree agents (status + lastText). blockedReason is why that agent is waiting on a person. Also includes usage / lastTurnUsage. Archived workspaces and agents are list_archive, not this list.",
|
|
@@ -12769,24 +12769,47 @@ var init_turn_trace = __esm({
|
|
|
12769
12769
|
});
|
|
12770
12770
|
|
|
12771
12771
|
// src/brightsy/config.ts
|
|
12772
|
+
function resolveBrightsyConfigFile(path2) {
|
|
12773
|
+
try {
|
|
12774
|
+
if ((0, import_node_fs27.existsSync)(path2) && (0, import_node_fs27.statSync)(path2).isDirectory()) {
|
|
12775
|
+
return (0, import_node_path31.join)(path2, "config.json");
|
|
12776
|
+
}
|
|
12777
|
+
} catch {
|
|
12778
|
+
}
|
|
12779
|
+
return path2;
|
|
12780
|
+
}
|
|
12772
12781
|
function brightsyConfigPath() {
|
|
12773
12782
|
const override = process.env.BRIGHTSY_CONFIG?.trim();
|
|
12774
|
-
|
|
12775
|
-
return (
|
|
12783
|
+
const raw = override || (0, import_node_path31.join)((0, import_node_os10.homedir)(), ".brightsy", "config.json");
|
|
12784
|
+
return resolveBrightsyConfigFile(raw);
|
|
12776
12785
|
}
|
|
12777
12786
|
function loadBrightsyConfig() {
|
|
12778
12787
|
const path2 = brightsyConfigPath();
|
|
12779
12788
|
if (!(0, import_node_fs27.existsSync)(path2)) {
|
|
12780
12789
|
throw new Error("Brightsy not logged in \u2014 run `brightsy login` first");
|
|
12781
12790
|
}
|
|
12782
|
-
|
|
12791
|
+
let text7;
|
|
12792
|
+
try {
|
|
12793
|
+
text7 = (0, import_node_fs27.readFileSync)(path2, "utf8");
|
|
12794
|
+
} catch (err) {
|
|
12795
|
+
const code = err && typeof err === "object" && "code" in err ? String(err.code) : "";
|
|
12796
|
+
if (code === "EISDIR") {
|
|
12797
|
+
throw new Error(
|
|
12798
|
+
`Brightsy config is a directory (${path2}) \u2014 expected ~/.brightsy/config.json`
|
|
12799
|
+
);
|
|
12800
|
+
}
|
|
12801
|
+
throw err;
|
|
12802
|
+
}
|
|
12803
|
+
const raw = JSON.parse(text7);
|
|
12783
12804
|
if (!raw.access_token || !raw.account_id) {
|
|
12784
12805
|
throw new Error("Brightsy config incomplete \u2014 run `brightsy login`");
|
|
12785
12806
|
}
|
|
12786
12807
|
return raw;
|
|
12787
12808
|
}
|
|
12788
12809
|
function saveBrightsyConfig(cfg) {
|
|
12789
|
-
|
|
12810
|
+
const path2 = brightsyConfigPath();
|
|
12811
|
+
(0, import_node_fs27.mkdirSync)((0, import_node_path31.dirname)(path2), { recursive: true });
|
|
12812
|
+
(0, import_node_fs27.writeFileSync)(path2, `${JSON.stringify(cfg, null, 2)}
|
|
12790
12813
|
`, {
|
|
12791
12814
|
mode: 384
|
|
12792
12815
|
});
|
|
@@ -13110,6 +13133,7 @@ var connected_teams_exports = {};
|
|
|
13110
13133
|
__export(connected_teams_exports, {
|
|
13111
13134
|
applyConnectedTeamToCli: () => applyConnectedTeamToCli,
|
|
13112
13135
|
brightsyMcpServerName: () => brightsyMcpServerName,
|
|
13136
|
+
brightsySessionShouldReplace: () => brightsySessionShouldReplace,
|
|
13113
13137
|
connectBrightsyTeam: () => connectBrightsyTeam,
|
|
13114
13138
|
disconnectBrightsyTeam: () => disconnectBrightsyTeam,
|
|
13115
13139
|
ensureCliTeamTracked: () => ensureCliTeamTracked,
|
|
@@ -13150,6 +13174,25 @@ function listConnectedBrightsyTeams() {
|
|
|
13150
13174
|
function getConnectedBrightsyTeamsRaw() {
|
|
13151
13175
|
return readStore();
|
|
13152
13176
|
}
|
|
13177
|
+
function teamFromCliSession(cfg, current) {
|
|
13178
|
+
return {
|
|
13179
|
+
...current,
|
|
13180
|
+
access_token: cfg.access_token,
|
|
13181
|
+
refresh_token: cfg.refresh_token ?? current.refresh_token,
|
|
13182
|
+
expires_at: cfg.expires_at ?? current.expires_at,
|
|
13183
|
+
endpoint: cfg.endpoint ?? current.endpoint,
|
|
13184
|
+
oauth_client_id: cfg.oauth_client_id ?? current.oauth_client_id,
|
|
13185
|
+
slug: cfg.account_slug || current.slug
|
|
13186
|
+
};
|
|
13187
|
+
}
|
|
13188
|
+
function brightsySessionShouldReplace(a, b) {
|
|
13189
|
+
if (!a.access_token) return false;
|
|
13190
|
+
const aStale = brightsyAccessTokenNeedsRefresh(a.expires_at);
|
|
13191
|
+
const bStale = !b.access_token || brightsyAccessTokenNeedsRefresh(b.expires_at);
|
|
13192
|
+
if (!aStale && bStale) return true;
|
|
13193
|
+
if (aStale) return false;
|
|
13194
|
+
return (a.expires_at ?? 0) > (b.expires_at ?? 0);
|
|
13195
|
+
}
|
|
13153
13196
|
function applyConnectedTeamToCli(team) {
|
|
13154
13197
|
let base = {};
|
|
13155
13198
|
try {
|
|
@@ -13236,22 +13279,34 @@ async function ensureConnectedBrightsyTeamTokens(opts) {
|
|
|
13236
13279
|
}
|
|
13237
13280
|
next.push(refreshed);
|
|
13238
13281
|
}
|
|
13239
|
-
if (changed) writeStore(next);
|
|
13240
13282
|
try {
|
|
13241
13283
|
const cfg2 = loadBrightsyConfig();
|
|
13242
|
-
const
|
|
13243
|
-
if (
|
|
13244
|
-
|
|
13284
|
+
const idx = next.findIndex((t) => t.id === cfg2.account_id);
|
|
13285
|
+
if (idx >= 0) {
|
|
13286
|
+
const active = next[idx];
|
|
13287
|
+
if (brightsySessionShouldReplace(cfg2, active)) {
|
|
13288
|
+
next[idx] = teamFromCliSession(cfg2, active);
|
|
13289
|
+
changed = true;
|
|
13290
|
+
} else if (active.access_token !== cfg2.access_token) {
|
|
13291
|
+
applyConnectedTeamToCli(active);
|
|
13292
|
+
}
|
|
13245
13293
|
}
|
|
13246
13294
|
} catch {
|
|
13247
13295
|
}
|
|
13296
|
+
if (changed) writeStore(next);
|
|
13248
13297
|
return next;
|
|
13249
13298
|
}
|
|
13250
13299
|
function ensureCliTeamTracked(meta) {
|
|
13251
13300
|
try {
|
|
13252
13301
|
const cfg = loadBrightsyConfig();
|
|
13253
13302
|
const existing = readStore();
|
|
13254
|
-
|
|
13303
|
+
const idx = existing.findIndex((t) => t.id === cfg.account_id);
|
|
13304
|
+
if (idx >= 0) {
|
|
13305
|
+
const current = existing[idx];
|
|
13306
|
+
if (brightsySessionShouldReplace(cfg, current)) {
|
|
13307
|
+
existing[idx] = teamFromCliSession(cfg, current);
|
|
13308
|
+
writeStore(existing);
|
|
13309
|
+
}
|
|
13255
13310
|
return listConnectedBrightsyTeams();
|
|
13256
13311
|
}
|
|
13257
13312
|
const team = {
|
|
@@ -13785,6 +13840,127 @@ var init_brightsy = __esm({
|
|
|
13785
13840
|
}
|
|
13786
13841
|
});
|
|
13787
13842
|
|
|
13843
|
+
// src/agents/claude-mcp-status.ts
|
|
13844
|
+
function mcpStatusThinkingFromClaudeInit(obj) {
|
|
13845
|
+
const raw = obj.mcp_servers ?? obj.mcpServers;
|
|
13846
|
+
const servers = [];
|
|
13847
|
+
if (Array.isArray(raw)) {
|
|
13848
|
+
for (const item of raw) {
|
|
13849
|
+
if (!item || typeof item !== "object" || Array.isArray(item)) continue;
|
|
13850
|
+
const rec = item;
|
|
13851
|
+
const name = typeof rec.name === "string" && rec.name.trim() || typeof rec.server === "string" && rec.server.trim() || "";
|
|
13852
|
+
const status = typeof rec.status === "string" && rec.status.trim() || typeof rec.state === "string" && rec.state.trim() || "";
|
|
13853
|
+
if (name) servers.push({ name, status: status || "unknown" });
|
|
13854
|
+
}
|
|
13855
|
+
} else if (raw && typeof raw === "object") {
|
|
13856
|
+
for (const [name, value] of Object.entries(raw)) {
|
|
13857
|
+
if (!name.trim()) continue;
|
|
13858
|
+
if (typeof value === "string" && value.trim()) {
|
|
13859
|
+
servers.push({ name, status: value.trim() });
|
|
13860
|
+
continue;
|
|
13861
|
+
}
|
|
13862
|
+
if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
13863
|
+
const rec = value;
|
|
13864
|
+
const status = typeof rec.status === "string" && rec.status.trim() || typeof rec.state === "string" && rec.state.trim() || "unknown";
|
|
13865
|
+
servers.push({ name, status });
|
|
13866
|
+
}
|
|
13867
|
+
}
|
|
13868
|
+
}
|
|
13869
|
+
const coverage = claudeConnectorCoverage();
|
|
13870
|
+
const sideboardOk = sideboardMcpOk(servers);
|
|
13871
|
+
const notable = servers.filter(
|
|
13872
|
+
(server) => isNotableMcpInitStatus(server, sideboardOk, coverage)
|
|
13873
|
+
);
|
|
13874
|
+
if (notable.length === 0) return null;
|
|
13875
|
+
return `MCP: ${notable.map((s) => `${s.name} ${s.status}`).join(", ")}`;
|
|
13876
|
+
}
|
|
13877
|
+
function isCleanMcpConnect(status) {
|
|
13878
|
+
return /^(connected|ok|ready|success)$/i.test(status.trim());
|
|
13879
|
+
}
|
|
13880
|
+
function isMcpAuthStatus(status) {
|
|
13881
|
+
return /needs[_-]?auth|needs authentication|unauthorized|not authenticated|authrequired/i.test(
|
|
13882
|
+
status
|
|
13883
|
+
);
|
|
13884
|
+
}
|
|
13885
|
+
function isSideboardMcpName(name) {
|
|
13886
|
+
return /^sideboard$/i.test(name.trim()) || /^mcp__sideboard$/i.test(name.trim());
|
|
13887
|
+
}
|
|
13888
|
+
function isVendorClaudeAiMcpName(name) {
|
|
13889
|
+
return /^claude\.ai\b/i.test(name.trim()) || /^mcp__claude_ai_/i.test(name.trim());
|
|
13890
|
+
}
|
|
13891
|
+
function sideboardMcpOk(servers) {
|
|
13892
|
+
const row2 = servers.find((server) => isSideboardMcpName(server.name));
|
|
13893
|
+
return Boolean(row2 && isCleanMcpConnect(row2.status));
|
|
13894
|
+
}
|
|
13895
|
+
function sideboardServiceForClaudeConnector(name) {
|
|
13896
|
+
const raw = name.trim();
|
|
13897
|
+
if (!raw || isSideboardMcpName(raw)) return null;
|
|
13898
|
+
const pluginLike = /^(?:plugin[:_]|mcp__plugin_|claude\.ai\s|(?:mcp__)?claude_ai_)/i.test(raw);
|
|
13899
|
+
const doubled = raw.match(/^mcp_([a-z0-9]+)_([a-z0-9]+)$/i);
|
|
13900
|
+
if (!pluginLike && !(doubled && doubled[1].toLowerCase() === doubled[2].toLowerCase())) {
|
|
13901
|
+
return null;
|
|
13902
|
+
}
|
|
13903
|
+
let body = raw;
|
|
13904
|
+
if (/^claude\.ai\s+/i.test(body)) body = body.replace(/^claude\.ai\s+/i, "");
|
|
13905
|
+
else if (/^(?:mcp__)?claude_ai_/i.test(body)) body = body.replace(/^(?:mcp__)?claude_ai_/i, "");
|
|
13906
|
+
else if (/^mcp__plugin_/i.test(body)) body = body.slice("mcp__plugin_".length);
|
|
13907
|
+
else if (/^plugin_/i.test(body)) body = body.slice("plugin_".length);
|
|
13908
|
+
else if (/^plugin:/i.test(body)) body = body.slice("plugin:".length);
|
|
13909
|
+
else if (/^mcp_/i.test(body)) body = body.slice("mcp_".length);
|
|
13910
|
+
const head = body.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)[0];
|
|
13911
|
+
if (!head || !SIDEBOARD_CONNECTOR_SERVICES.includes(head)) return null;
|
|
13912
|
+
return head;
|
|
13913
|
+
}
|
|
13914
|
+
function claudeConnectorCoverage() {
|
|
13915
|
+
let github = false;
|
|
13916
|
+
try {
|
|
13917
|
+
github = githubAgentAuthReady();
|
|
13918
|
+
} catch {
|
|
13919
|
+
github = false;
|
|
13920
|
+
}
|
|
13921
|
+
let linear = false;
|
|
13922
|
+
let posthog = false;
|
|
13923
|
+
let vercel = false;
|
|
13924
|
+
let supabase = false;
|
|
13925
|
+
let sentry = false;
|
|
13926
|
+
try {
|
|
13927
|
+
linear = isLinearConnected();
|
|
13928
|
+
posthog = isPosthogConnected();
|
|
13929
|
+
const integrations = loadAppSettings().integrations ?? {};
|
|
13930
|
+
if (integrations.githubPat?.trim()) github = true;
|
|
13931
|
+
vercel = Boolean(integrations.vercelToken?.trim());
|
|
13932
|
+
supabase = Boolean(integrations.supabaseAccessToken?.trim());
|
|
13933
|
+
sentry = Boolean(integrations.sentryAuthToken?.trim());
|
|
13934
|
+
} catch {
|
|
13935
|
+
}
|
|
13936
|
+
return { github, linear, posthog, vercel, supabase, sentry };
|
|
13937
|
+
}
|
|
13938
|
+
function isNotableMcpInitStatus(server, sideboardOk, coverage) {
|
|
13939
|
+
if (isCleanMcpConnect(server.status)) return false;
|
|
13940
|
+
if (isSideboardMcpName(server.name)) return true;
|
|
13941
|
+
if (isMcpAuthStatus(server.status)) return false;
|
|
13942
|
+
const service = sideboardServiceForClaudeConnector(server.name);
|
|
13943
|
+
if (service) return !(sideboardOk && coverage[service]);
|
|
13944
|
+
if (isVendorClaudeAiMcpName(server.name)) return false;
|
|
13945
|
+
return true;
|
|
13946
|
+
}
|
|
13947
|
+
var SIDEBOARD_CONNECTOR_SERVICES;
|
|
13948
|
+
var init_claude_mcp_status = __esm({
|
|
13949
|
+
"src/agents/claude-mcp-status.ts"() {
|
|
13950
|
+
"use strict";
|
|
13951
|
+
init_github_agent_auth();
|
|
13952
|
+
init_app_settings();
|
|
13953
|
+
SIDEBOARD_CONNECTOR_SERVICES = [
|
|
13954
|
+
"github",
|
|
13955
|
+
"linear",
|
|
13956
|
+
"posthog",
|
|
13957
|
+
"vercel",
|
|
13958
|
+
"supabase",
|
|
13959
|
+
"sentry"
|
|
13960
|
+
];
|
|
13961
|
+
}
|
|
13962
|
+
});
|
|
13963
|
+
|
|
13788
13964
|
// src/mcp-ui/meta.ts
|
|
13789
13965
|
function matchClaudeMcpTool(toolName, serverNames) {
|
|
13790
13966
|
const name = toolName.trim();
|
|
@@ -16269,56 +16445,6 @@ function claudeString(obj, key) {
|
|
|
16269
16445
|
const v = obj[key];
|
|
16270
16446
|
return typeof v === "string" && v.trim() ? v.trim() : void 0;
|
|
16271
16447
|
}
|
|
16272
|
-
function mcpStatusThinkingFromClaudeInit(obj) {
|
|
16273
|
-
const raw = obj.mcp_servers ?? obj.mcpServers;
|
|
16274
|
-
const servers = [];
|
|
16275
|
-
if (Array.isArray(raw)) {
|
|
16276
|
-
for (const item of raw) {
|
|
16277
|
-
if (!item || typeof item !== "object" || Array.isArray(item)) continue;
|
|
16278
|
-
const rec = item;
|
|
16279
|
-
const name = typeof rec.name === "string" && rec.name.trim() || typeof rec.server === "string" && rec.server.trim() || "";
|
|
16280
|
-
const status = typeof rec.status === "string" && rec.status.trim() || typeof rec.state === "string" && rec.state.trim() || "";
|
|
16281
|
-
if (name) servers.push({ name, status: status || "unknown" });
|
|
16282
|
-
}
|
|
16283
|
-
} else if (raw && typeof raw === "object") {
|
|
16284
|
-
for (const [name, value] of Object.entries(raw)) {
|
|
16285
|
-
if (!name.trim()) continue;
|
|
16286
|
-
if (typeof value === "string" && value.trim()) {
|
|
16287
|
-
servers.push({ name, status: value.trim() });
|
|
16288
|
-
continue;
|
|
16289
|
-
}
|
|
16290
|
-
if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
16291
|
-
const rec = value;
|
|
16292
|
-
const status = typeof rec.status === "string" && rec.status.trim() || typeof rec.state === "string" && rec.state.trim() || "unknown";
|
|
16293
|
-
servers.push({ name, status });
|
|
16294
|
-
}
|
|
16295
|
-
}
|
|
16296
|
-
}
|
|
16297
|
-
const notable = servers.filter(isNotableMcpInitStatus);
|
|
16298
|
-
if (notable.length === 0) return null;
|
|
16299
|
-
return `MCP: ${notable.map((s) => `${s.name} ${s.status}`).join(", ")}`;
|
|
16300
|
-
}
|
|
16301
|
-
function isCleanMcpConnect(status) {
|
|
16302
|
-
return /^(connected|ok|ready|success)$/i.test(status.trim());
|
|
16303
|
-
}
|
|
16304
|
-
function isMcpAuthStatus(status) {
|
|
16305
|
-
return /needs[_-]?auth|needs authentication|unauthorized|not authenticated|authrequired/i.test(
|
|
16306
|
-
status
|
|
16307
|
-
);
|
|
16308
|
-
}
|
|
16309
|
-
function isSideboardMcpName(name) {
|
|
16310
|
-
return /^sideboard$/i.test(name.trim()) || /^mcp__sideboard$/i.test(name.trim());
|
|
16311
|
-
}
|
|
16312
|
-
function isVendorClaudeAiMcpName(name) {
|
|
16313
|
-
return /^claude\.ai\b/i.test(name.trim()) || /^mcp__claude_ai_/i.test(name.trim());
|
|
16314
|
-
}
|
|
16315
|
-
function isNotableMcpInitStatus(server) {
|
|
16316
|
-
if (isCleanMcpConnect(server.status)) return false;
|
|
16317
|
-
if (isSideboardMcpName(server.name)) return true;
|
|
16318
|
-
if (isVendorClaudeAiMcpName(server.name)) return false;
|
|
16319
|
-
if (isMcpAuthStatus(server.status)) return false;
|
|
16320
|
-
return true;
|
|
16321
|
-
}
|
|
16322
16448
|
function eventsFromClaudeSystem(obj) {
|
|
16323
16449
|
const subtype = claudeString(obj, "subtype") ?? "";
|
|
16324
16450
|
const parentId = claudeParentToolUseId(obj);
|
|
@@ -16466,6 +16592,7 @@ var init_claude = __esm({
|
|
|
16466
16592
|
import_node_fs39 = require("fs");
|
|
16467
16593
|
init_run();
|
|
16468
16594
|
init_app_settings();
|
|
16595
|
+
init_claude_mcp_status();
|
|
16469
16596
|
init_claude_mcp();
|
|
16470
16597
|
init_host();
|
|
16471
16598
|
init_error_detail();
|
|
@@ -28356,7 +28483,7 @@ function formatIssueToolsDirective(opts) {
|
|
|
28356
28483
|
if (!opts.linear && !opts.abletime && !github) return null;
|
|
28357
28484
|
const lines = [
|
|
28358
28485
|
"Issue tracking (Settings \u2192 Issues / Git \u2014 already signed in):",
|
|
28359
|
-
"- Use Sideboard `linear_*` / `github_*` / `abletime_*`
|
|
28486
|
+
"- Use Sideboard `linear_*` / `github_*` / `abletime_*` when that Account connection is set and the call works. If it is not set, or the Sideboard call fails because the connection is down, use the Claude connector for that service. Do not mention a Claude connector that failed to start (for example `mcp_github_github` or `plugin:github:github`) when the Sideboard connection is working. A vendor issue MCP that only needsAuth is noise \u2014 do not sign in to it while Sideboard covers that service."
|
|
28360
28487
|
];
|
|
28361
28488
|
if (opts.linear) {
|
|
28362
28489
|
lines.push(
|
|
@@ -28405,7 +28532,7 @@ function formatIssueToolsReminder(opts) {
|
|
|
28405
28532
|
].filter(Boolean);
|
|
28406
28533
|
const ticket = opts.ticketId?.trim();
|
|
28407
28534
|
const ticketBit = ticket ? ` This ticket: ${ticket}${opts.ticketProvider ? ` (${opts.ticketProvider})` : ""} \u2014 get; comment/update review findings only after they ask. Spin-offs use parent=.` : " get/comment/update/create (parent= for spin-offs).";
|
|
28408
|
-
return `Issues: Sideboard ${names.join(" / ")}
|
|
28535
|
+
return `Issues: Sideboard ${names.join(" / ")} when that Account connection works. If it is not set or the call fails, use the Claude connector. Do not mention a Claude connector startup failure when Sideboard covers it.${ticketBit} Review stays in chat \u2014 do not ask_user after it; they type next steps. Authors see comments immediately.`;
|
|
28409
28536
|
}
|
|
28410
28537
|
function formatLinearReminder(opts) {
|
|
28411
28538
|
return formatIssueToolsReminder({
|
|
@@ -28758,7 +28885,7 @@ function connectorAuthCaution(posthog, cliConnected) {
|
|
|
28758
28885
|
const signIn = posthog ? "If a connector MCP is listed but needsAuth or returns unauthorized, do not sign in to that MCP." : "If a Vercel, Supabase, or Sentry MCP is listed but needsAuth or returns unauthorized, do not sign in to that MCP.";
|
|
28759
28886
|
const token = cliConnected ? " CLI tokens are already in this process." : "";
|
|
28760
28887
|
const key = posthog ? " Do not read a PostHog key from the environment." : "";
|
|
28761
|
-
return `${signIn}${token}${key}
|
|
28888
|
+
return `${signIn}${token}${key} When this Sideboard connection works, ignore a Claude connector that failed to start. Use the Claude connector only when this connection is not set or the CLI call fails.`;
|
|
28762
28889
|
}
|
|
28763
28890
|
function connectorReminderBit(spec, cli) {
|
|
28764
28891
|
if (!spec.cli) return `${spec.label}: \`posthog_api\``;
|
|
@@ -28785,7 +28912,7 @@ function formatOptionalServicesReminder(integrations, cli) {
|
|
|
28785
28912
|
const bits = connected.map((spec) => connectorReminderBit(spec, cli)).join(". ");
|
|
28786
28913
|
const tokenBit = connected.some((spec) => spec.cli) ? "CLI tokens are already in this process. " : "";
|
|
28787
28914
|
const posthog = connected.some((spec) => spec.id === "posthog");
|
|
28788
|
-
const auth = posthog ? "If a connector MCP needsAuth or is unauthorized, ignore it and use the CLI or `posthog_api
|
|
28915
|
+
const auth = posthog ? "If a connector MCP needsAuth or is unauthorized, ignore it and use the CLI or `posthog_api` while this Sideboard connection works. Use the Claude connector only when it is not set or the call fails. Do not read a PostHog key from the environment." : "If a Vercel, Supabase, or Sentry MCP needsAuth or is unauthorized, ignore it and use the CLI while this Sideboard connection works. Use the Claude connector only when it is not set or the CLI call fails.";
|
|
28789
28916
|
return `Settings \u2192 Connectors: ${tokenBit}${bits}. ${auth} Do not add vendor MCPs. Shell dumps from those CLIs go in \`.context/cli/\` \u2014 read a slice.`;
|
|
28790
28917
|
}
|
|
28791
28918
|
async function connectedCliPresence(integrations) {
|
package/dist/index.d.cts
CHANGED
|
@@ -3800,6 +3800,16 @@ declare function listBrightsyChatTargets(): Promise<BrightsyChatTargets>;
|
|
|
3800
3800
|
*/
|
|
3801
3801
|
declare const brightsyAdapter: AgentAdapter;
|
|
3802
3802
|
|
|
3803
|
+
/**
|
|
3804
|
+
* Claude Code `system/init` lists user + claude.ai MCP servers as `mcp_servers`
|
|
3805
|
+
* (array or map). Paint a thinking line for Sideboard not connected, or a user
|
|
3806
|
+
* stdio MCP that failed. A Claude connector that duplicates a working Sideboard
|
|
3807
|
+
* connection is noise. Mention that connector, including `claude.ai PostHog`,
|
|
3808
|
+
* when that Sideboard connection is unset or the Sideboard server failed.
|
|
3809
|
+
* Unrelated `claude.ai` servers (Slack, Gmail) stay off the line.
|
|
3810
|
+
*/
|
|
3811
|
+
declare function mcpStatusThinkingFromClaudeInit(obj: Record<string, unknown>): string | null;
|
|
3812
|
+
|
|
3803
3813
|
interface McpServerStatus {
|
|
3804
3814
|
name: string;
|
|
3805
3815
|
connected: boolean;
|
|
@@ -3874,13 +3884,6 @@ declare const CLAUDE_CHROME_ALLOWED_TOOLS: readonly ["mcp__claude-in-chrome", "m
|
|
|
3874
3884
|
*/
|
|
3875
3885
|
declare const CLAUDE_POSTHOG_CONNECTOR_ALLOWED_TOOLS: readonly ["mcp__claude_ai_PostHog", "mcp__claude_ai_PostHog__*"];
|
|
3876
3886
|
|
|
3877
|
-
/**
|
|
3878
|
-
* Claude Code `system/init` lists user + claude.ai MCP servers as `mcp_servers`
|
|
3879
|
-
* (array or map). Only paint a thinking line when it can hide a real hang:
|
|
3880
|
-
* Sideboard not connected, or a user stdio MCP that failed. Vendor / claude.ai
|
|
3881
|
-
* `needsAuth` is noise — agents ignore those and use Sideboard issue tools.
|
|
3882
|
-
*/
|
|
3883
|
-
declare function mcpStatusThinkingFromClaudeInit(obj: Record<string, unknown>): string | null;
|
|
3884
3887
|
declare const claudeAdapter: AgentAdapter;
|
|
3885
3888
|
|
|
3886
3889
|
/** Shared shape for composer agent model pickers. */
|
|
@@ -4501,7 +4504,9 @@ declare function issueTicketFromThread(thread?: Pick<Thread, 'sourceType' | 'sou
|
|
|
4501
4504
|
declare function linearTicketIdFromThread(thread?: Pick<Thread, 'sourceType' | 'sourceRef'> | null): string | null;
|
|
4502
4505
|
/**
|
|
4503
4506
|
* Fresh-session playbook: Account Linear / GitHub / AbleTime via Sideboard MCP.
|
|
4504
|
-
*
|
|
4507
|
+
* A Claude connector is the fallback when that Account connection is unset or
|
|
4508
|
+
* the Sideboard call fails. Do not narrate a connector startup failure while
|
|
4509
|
+
* Sideboard covers the service.
|
|
4505
4510
|
*/
|
|
4506
4511
|
declare function formatIssueToolsDirective(opts: {
|
|
4507
4512
|
linear: boolean;
|
package/dist/index.d.ts
CHANGED
|
@@ -3800,6 +3800,16 @@ declare function listBrightsyChatTargets(): Promise<BrightsyChatTargets>;
|
|
|
3800
3800
|
*/
|
|
3801
3801
|
declare const brightsyAdapter: AgentAdapter;
|
|
3802
3802
|
|
|
3803
|
+
/**
|
|
3804
|
+
* Claude Code `system/init` lists user + claude.ai MCP servers as `mcp_servers`
|
|
3805
|
+
* (array or map). Paint a thinking line for Sideboard not connected, or a user
|
|
3806
|
+
* stdio MCP that failed. A Claude connector that duplicates a working Sideboard
|
|
3807
|
+
* connection is noise. Mention that connector, including `claude.ai PostHog`,
|
|
3808
|
+
* when that Sideboard connection is unset or the Sideboard server failed.
|
|
3809
|
+
* Unrelated `claude.ai` servers (Slack, Gmail) stay off the line.
|
|
3810
|
+
*/
|
|
3811
|
+
declare function mcpStatusThinkingFromClaudeInit(obj: Record<string, unknown>): string | null;
|
|
3812
|
+
|
|
3803
3813
|
interface McpServerStatus {
|
|
3804
3814
|
name: string;
|
|
3805
3815
|
connected: boolean;
|
|
@@ -3874,13 +3884,6 @@ declare const CLAUDE_CHROME_ALLOWED_TOOLS: readonly ["mcp__claude-in-chrome", "m
|
|
|
3874
3884
|
*/
|
|
3875
3885
|
declare const CLAUDE_POSTHOG_CONNECTOR_ALLOWED_TOOLS: readonly ["mcp__claude_ai_PostHog", "mcp__claude_ai_PostHog__*"];
|
|
3876
3886
|
|
|
3877
|
-
/**
|
|
3878
|
-
* Claude Code `system/init` lists user + claude.ai MCP servers as `mcp_servers`
|
|
3879
|
-
* (array or map). Only paint a thinking line when it can hide a real hang:
|
|
3880
|
-
* Sideboard not connected, or a user stdio MCP that failed. Vendor / claude.ai
|
|
3881
|
-
* `needsAuth` is noise — agents ignore those and use Sideboard issue tools.
|
|
3882
|
-
*/
|
|
3883
|
-
declare function mcpStatusThinkingFromClaudeInit(obj: Record<string, unknown>): string | null;
|
|
3884
3887
|
declare const claudeAdapter: AgentAdapter;
|
|
3885
3888
|
|
|
3886
3889
|
/** Shared shape for composer agent model pickers. */
|
|
@@ -4501,7 +4504,9 @@ declare function issueTicketFromThread(thread?: Pick<Thread, 'sourceType' | 'sou
|
|
|
4501
4504
|
declare function linearTicketIdFromThread(thread?: Pick<Thread, 'sourceType' | 'sourceRef'> | null): string | null;
|
|
4502
4505
|
/**
|
|
4503
4506
|
* Fresh-session playbook: Account Linear / GitHub / AbleTime via Sideboard MCP.
|
|
4504
|
-
*
|
|
4507
|
+
* A Claude connector is the fallback when that Account connection is unset or
|
|
4508
|
+
* the Sideboard call fails. Do not narrate a connector startup failure while
|
|
4509
|
+
* Sideboard covers the service.
|
|
4505
4510
|
*/
|
|
4506
4511
|
declare function formatIssueToolsDirective(opts: {
|
|
4507
4512
|
linear: boolean;
|
package/dist/index.js
CHANGED
|
@@ -202,7 +202,7 @@ import {
|
|
|
202
202
|
worktreeCleanupSettings,
|
|
203
203
|
writeAgentBlock,
|
|
204
204
|
writeWorktreeFile
|
|
205
|
-
} from "./chunk-
|
|
205
|
+
} from "./chunk-6EGQPMSR.js";
|
|
206
206
|
import {
|
|
207
207
|
LEGACY_PLAN_FILE_REL,
|
|
208
208
|
PLAN_FILE_NAME,
|
|
@@ -292,7 +292,7 @@ import {
|
|
|
292
292
|
userMcpNamesToDisable,
|
|
293
293
|
worktreeMcpToolNames,
|
|
294
294
|
writeInjectedMcpConfig
|
|
295
|
-
} from "./chunk-
|
|
295
|
+
} from "./chunk-7DBL5AF4.js";
|
|
296
296
|
import {
|
|
297
297
|
brightsyMcpServerName,
|
|
298
298
|
connectBrightsyTeam,
|
|
@@ -302,7 +302,7 @@ import {
|
|
|
302
302
|
listBrightsyAccounts,
|
|
303
303
|
listConnectedBrightsyTeams,
|
|
304
304
|
switchBrightsyAccount
|
|
305
|
-
} from "./chunk-
|
|
305
|
+
} from "./chunk-HH3VVTEC.js";
|
|
306
306
|
import {
|
|
307
307
|
BRIGHTSY_SUMMARIZE_CONTEXT_TOOL,
|
|
308
308
|
CHARS_PER_CONTEXT_TOKEN,
|
|
@@ -423,7 +423,7 @@ import {
|
|
|
423
423
|
workspaceAgentChatSummaries,
|
|
424
424
|
worktreeRunPortsPath,
|
|
425
425
|
wrapReviewSkillMarkdown
|
|
426
|
-
} from "./chunk-
|
|
426
|
+
} from "./chunk-7UP4D5XI.js";
|
|
427
427
|
import {
|
|
428
428
|
STDERR_EVENT_MAX_CHARS,
|
|
429
429
|
STDOUT_EVENT_MAX_CHARS,
|
|
@@ -542,7 +542,7 @@ import {
|
|
|
542
542
|
detectOptionalServiceClis,
|
|
543
543
|
installOptionalServiceCli,
|
|
544
544
|
optionalCliPresence
|
|
545
|
-
} from "./chunk-
|
|
545
|
+
} from "./chunk-ZQLZ2A3I.js";
|
|
546
546
|
import {
|
|
547
547
|
OPTIONAL_SERVICES,
|
|
548
548
|
OPTIONAL_SERVICE_IDS,
|
|
@@ -558,7 +558,7 @@ import {
|
|
|
558
558
|
optionalServiceConnected,
|
|
559
559
|
optionalServiceSpec,
|
|
560
560
|
verifyOptionalService
|
|
561
|
-
} from "./chunk-
|
|
561
|
+
} from "./chunk-NMPQ7GIS.js";
|
|
562
562
|
import {
|
|
563
563
|
getAgentSetupInfo,
|
|
564
564
|
installAgent,
|
|
@@ -623,7 +623,7 @@ import {
|
|
|
623
623
|
stageBuffersAsAttachments,
|
|
624
624
|
syncWorkspacesFromThreads,
|
|
625
625
|
takenTeamSlugsForOrchestration
|
|
626
|
-
} from "./chunk-
|
|
626
|
+
} from "./chunk-ZSVKUOFH.js";
|
|
627
627
|
import {
|
|
628
628
|
GITHUB_PR_BODY_MAX_CHARS,
|
|
629
629
|
GITHUB_PR_BODY_SAFE_CHARS,
|
|
@@ -758,7 +758,7 @@ import {
|
|
|
758
758
|
refreshBrightsyAccessToken,
|
|
759
759
|
registerBrightsyOAuthClient,
|
|
760
760
|
saveBrightsyConfig
|
|
761
|
-
} from "./chunk-
|
|
761
|
+
} from "./chunk-RSA47QYR.js";
|
|
762
762
|
import {
|
|
763
763
|
currentHttpFetch,
|
|
764
764
|
formatFetchError,
|
|
@@ -8727,7 +8727,7 @@ async function startHeadlessHost(opts) {
|
|
|
8727
8727
|
};
|
|
8728
8728
|
const refreshRunning = async () => {
|
|
8729
8729
|
try {
|
|
8730
|
-
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-
|
|
8730
|
+
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-V6NLIPLH.js");
|
|
8731
8731
|
agentsRunning = getOrchestrator2().getRuntime().running;
|
|
8732
8732
|
} catch {
|
|
8733
8733
|
agentsRunning = 0;
|
|
@@ -10659,7 +10659,7 @@ async function handleJobStop(params, _ctx) {
|
|
|
10659
10659
|
return stopDetachedJob(jobCwd(rec), id, reason ? { reason } : void 0);
|
|
10660
10660
|
}
|
|
10661
10661
|
async function defaultTurnWait(ref, timeoutMs) {
|
|
10662
|
-
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-
|
|
10662
|
+
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-V6NLIPLH.js");
|
|
10663
10663
|
const orch = getOrchestrator2();
|
|
10664
10664
|
const thread = await orch.waitForTurn(ref, timeoutMs, {
|
|
10665
10665
|
resolveIfStillRunning: true
|
|
@@ -14035,7 +14035,7 @@ async function continueSourceThread(threadId, prompt) {
|
|
|
14035
14035
|
await continueOnReply(threadId, prompt);
|
|
14036
14036
|
return;
|
|
14037
14037
|
}
|
|
14038
|
-
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-
|
|
14038
|
+
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-V6NLIPLH.js");
|
|
14039
14039
|
await getOrchestrator2().send(threadId, prompt);
|
|
14040
14040
|
} catch {
|
|
14041
14041
|
}
|