@sideboard-ai/core 0.1.298 → 0.1.300
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-GHZFY65E.js → agents-IVKPCK56.js} +3 -3
- package/dist/{agents-XL67HSZH.js → agents-JCCJJMA7.js} +2 -2
- package/dist/{chunk-RQMLJZ2V.js → chunk-EB3F5AWV.js} +2 -2
- package/dist/{chunk-IL77XODJ.js → chunk-EB7B4D2Z.js} +3 -3
- package/dist/{chunk-JM5P36PM.js → chunk-F3JYJ4UB.js} +2 -2
- package/dist/{chunk-BIMHIHX3.js → chunk-G52HLBQR.js} +21 -1
- package/dist/{chunk-KRGQWQME.js → chunk-GNX6YNNU.js} +164 -107
- package/dist/{chunk-4FWMUMXG.js → chunk-MMIDAD6J.js} +3 -3
- package/dist/{chunk-KMYCNSSI.js → chunk-QB4UQA5L.js} +3 -3
- package/dist/{chunk-5FMQU2RU.js → chunk-UMALFEDS.js} +2 -2
- package/dist/{chunk-2POLTCSC.js → chunk-YAILSKW3.js} +61 -47
- package/dist/{conductor-NGIEDMAB.js → conductor-JLHXMMKR.js} +2 -2
- package/dist/{conductor-HUITLA2M.js → conductor-UQDDDW35.js} +3 -3
- package/dist/{coordinator-prompt-JUN3IITF.js → coordinator-prompt-HKLVS26O.js} +2 -2
- package/dist/{coordinator-prompt-52T5A4SU.js → coordinator-prompt-SSUYZSJO.js} +1 -1
- package/dist/{global-workspace-VVUIFQ72.js → global-workspace-I32EWKX3.js} +2 -2
- package/dist/{global-workspace-Z5YRL67Y.js → global-workspace-MHE6FCUZ.js} +1 -1
- package/dist/index.cjs +317 -222
- package/dist/index.d.cts +40 -26
- package/dist/index.d.ts +40 -26
- package/dist/index.js +11 -11
- package/dist/mcp/run-stdio.cjs +81 -43
- package/dist/mcp/run-stdio.js +7 -7
- package/dist/{orchestrator-S7TKI6DR.js → orchestrator-FVVDOQVD.js} +5 -5
- package/dist/{orchestrator-JY4ZETFX.js → orchestrator-SX4SGZHF.js} +4 -4
- package/dist/{workspaces-OSF56FHS.js → workspaces-ATMIKXLK.js} +2 -2
- package/dist/{workspaces-7FVNGUBV.js → workspaces-O3L32CDO.js} +1 -1
- package/dist/{worktree-LFSBIUCN.js → worktree-RMYXBTJG.js} +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -6525,6 +6525,41 @@ declare function startAgentRpcServer(opts?: AgentRpcServerOptions): Promise<Agen
|
|
|
6525
6525
|
declare function stopAgentRpcServer(): Promise<void>;
|
|
6526
6526
|
declare function getAgentRpcServer(): AgentRpcServer | null;
|
|
6527
6527
|
|
|
6528
|
+
type WorktreeListBadgeId = 'new' | 'draft' | 'pending' | 'review' | 'approved' | 'merged';
|
|
6529
|
+
type WorktreeListBadge = {
|
|
6530
|
+
id: WorktreeListBadgeId;
|
|
6531
|
+
label: string;
|
|
6532
|
+
title: string;
|
|
6533
|
+
mod: string;
|
|
6534
|
+
/**
|
|
6535
|
+
* Red dot on the status pill. Merge conflicts, failing checks, or changes
|
|
6536
|
+
* requested. The title names which.
|
|
6537
|
+
*/
|
|
6538
|
+
conflict?: boolean;
|
|
6539
|
+
};
|
|
6540
|
+
type WorktreeListBadgeThread = Pick<Thread, 'prUrl' | 'prState' | 'prIsDraft' | 'prAuthorLogin' | 'prReviewerLogins' | 'sourceType' | 'cowboy' | 'prLabels' | 'prReviewDecision' | 'prMergeable' | 'prMergeStateStatus' | 'prIsInMergeQueue' | 'prChecksFailed'>;
|
|
6541
|
+
/**
|
|
6542
|
+
* Ready-for-review GitHub label for a repo from Settings → Projects
|
|
6543
|
+
* (`reviewLabel`), matching exact or descendant worktree paths.
|
|
6544
|
+
*/
|
|
6545
|
+
declare function reviewLabelForRepo(labelsByRepo: Record<string, string> | null | undefined, repoPath: string): string;
|
|
6546
|
+
/**
|
|
6547
|
+
* Sidebar / phone / board pills for where a checkout is on the path to merge.
|
|
6548
|
+
* Cowboy worktrees keep the separate cowboy badge. A closed PR stays unlabeled.
|
|
6549
|
+
*
|
|
6550
|
+
* New is no pull request. Draft is your draft. Pending is your published PR
|
|
6551
|
+
* waiting for review. Review is someone else's open PR, including their drafts.
|
|
6552
|
+
* Approved is an open non-draft PR GitHub has approved. Merged is merged.
|
|
6553
|
+
* A red dot on that pill means merge conflicts, failing checks, or changes
|
|
6554
|
+
* requested. The title says which. There is no second badge.
|
|
6555
|
+
*
|
|
6556
|
+
* Yours is pending when the project ready-for-review label (Settings →
|
|
6557
|
+
* Projects) is on the PR; if that label is unset, a published PR counts.
|
|
6558
|
+
* Without a viewer login, pending and review stay off so someone else's PR
|
|
6559
|
+
* is not labeled as yours. New, approved, and merged do not need the login.
|
|
6560
|
+
*/
|
|
6561
|
+
declare function classifyWorktreeListBadges(group: WorktreeListBadgeThread[], viewerLogin?: string, reviewLabel?: string): WorktreeListBadge[];
|
|
6562
|
+
|
|
6528
6563
|
/** Activity dot for a worktree: running / queued beat idle sibling tabs. */
|
|
6529
6564
|
declare function worktreeBoardStatus(group: Array<Pick<Thread, 'status'>>): Thread['status'];
|
|
6530
6565
|
/** Blocked highlight. Errors and archived chats keep their own status. */
|
|
@@ -6542,7 +6577,7 @@ declare function worktreeAgentBlock(group: Array<Pick<Thread, 'status' | 'agentB
|
|
|
6542
6577
|
* stay in the sidebar, not the board.
|
|
6543
6578
|
*/
|
|
6544
6579
|
declare function isHomeBoardThread(thread: Pick<Thread, 'sourceType' | 'repoPath'>): boolean;
|
|
6545
|
-
type BoardColumnId = 'backlog' | 'queued' | 'running' | 'new' | 'draft' | 'review' | 'done';
|
|
6580
|
+
type BoardColumnId = 'backlog' | 'queued' | 'running' | 'new' | 'draft' | 'review' | 'approved' | 'done';
|
|
6546
6581
|
/** Issue card on Home — `repoPath` is where Start will create the worktree. */
|
|
6547
6582
|
type BoardIssue = IssueInfo & {
|
|
6548
6583
|
repoPath: string;
|
|
@@ -6604,6 +6639,7 @@ type HomeBoardLoaded = HomeBoardRemoteData & {
|
|
|
6604
6639
|
fromCache: boolean;
|
|
6605
6640
|
pins: BoardPin[];
|
|
6606
6641
|
};
|
|
6642
|
+
|
|
6607
6643
|
/** How worktree rows/cards are ordered. Default `created` stays put while agents run. */
|
|
6608
6644
|
type WorktreeSortMode = 'created' | 'name' | 'activity';
|
|
6609
6645
|
declare const DEFAULT_WORKTREE_SORT: WorktreeSortMode;
|
|
@@ -6613,31 +6649,9 @@ declare const DEFAULT_WORKTREE_SORT: WorktreeSortMode;
|
|
|
6613
6649
|
* One card per group — extra chat tabs do not get their own column slot.
|
|
6614
6650
|
*/
|
|
6615
6651
|
declare function groupHomeBoardWorktrees<T extends Pick<Thread, 'worktreePath' | 'updatedAt' | 'createdAt' | 'id' | 'branchName' | 'title' | 'prTitle' | 'userSetTitle'>>(threads: T[], sort?: WorktreeSortMode, labelOf?: (group: T[]) => string): T[][];
|
|
6616
|
-
|
|
6617
|
-
|
|
6618
|
-
|
|
6619
|
-
type WorktreeListBadge = {
|
|
6620
|
-
id: WorktreeListBadgeId;
|
|
6621
|
-
label: string;
|
|
6622
|
-
title: string;
|
|
6623
|
-
mod: string;
|
|
6624
|
-
};
|
|
6625
|
-
type WorktreeListBadgeThread = Pick<Thread, 'prUrl' | 'prState' | 'prIsDraft' | 'prAuthorLogin' | 'prReviewerLogins' | 'sourceType' | 'cowboy' | 'prLabels'>;
|
|
6626
|
-
/**
|
|
6627
|
-
* Ready-for-review GitHub label for a repo from Settings → Projects
|
|
6628
|
-
* (`reviewLabel`), matching exact or descendant worktree paths.
|
|
6629
|
-
*/
|
|
6630
|
-
declare function reviewLabelForRepo(labelsByRepo: Record<string, string> | null | undefined, repoPath: string): string;
|
|
6631
|
-
/**
|
|
6632
|
-
* Sidebar / board badges only while a PR is in review — same as the old
|
|
6633
|
-
* "review" pill, plus "pending" for yours. Cowboy worktrees keep the
|
|
6634
|
-
* separate cowboy badge. Drafts of yours, merged, and closed stay unbadged.
|
|
6635
|
-
*
|
|
6636
|
-
* Yours is in review when the project ready-for-review label (Settings →
|
|
6637
|
-
* Projects) is on the PR; if that label is unset, a published (non-draft)
|
|
6638
|
-
* PR counts. Someone else's open PR is always "review", including drafts.
|
|
6639
|
-
*/
|
|
6640
|
-
declare function classifyWorktreeListBadges(group: WorktreeListBadgeThread[], viewerLogin?: string, reviewLabel?: string): WorktreeListBadge[];
|
|
6652
|
+
|
|
6653
|
+
/** Column for a worktree: merged → Merged, approved open PR → Approved, other open PR → Review, draft → Draft. */
|
|
6654
|
+
declare function classifyWorktreeColumn(group: Array<Pick<Thread, 'prUrl' | 'prState' | 'prIsDraft' | 'prReviewDecision'>>): BoardColumnId;
|
|
6641
6655
|
|
|
6642
6656
|
type LiveCreateMatchThread = Pick<Thread, 'id' | 'status' | 'sourceType' | 'sourceRef' | 'title' | 'prUrl' | 'branchName' | 'repoPath' | 'cowboy'>;
|
|
6643
6657
|
type FindLiveThreadForCreateInput = {
|
package/dist/index.d.ts
CHANGED
|
@@ -6525,6 +6525,41 @@ declare function startAgentRpcServer(opts?: AgentRpcServerOptions): Promise<Agen
|
|
|
6525
6525
|
declare function stopAgentRpcServer(): Promise<void>;
|
|
6526
6526
|
declare function getAgentRpcServer(): AgentRpcServer | null;
|
|
6527
6527
|
|
|
6528
|
+
type WorktreeListBadgeId = 'new' | 'draft' | 'pending' | 'review' | 'approved' | 'merged';
|
|
6529
|
+
type WorktreeListBadge = {
|
|
6530
|
+
id: WorktreeListBadgeId;
|
|
6531
|
+
label: string;
|
|
6532
|
+
title: string;
|
|
6533
|
+
mod: string;
|
|
6534
|
+
/**
|
|
6535
|
+
* Red dot on the status pill. Merge conflicts, failing checks, or changes
|
|
6536
|
+
* requested. The title names which.
|
|
6537
|
+
*/
|
|
6538
|
+
conflict?: boolean;
|
|
6539
|
+
};
|
|
6540
|
+
type WorktreeListBadgeThread = Pick<Thread, 'prUrl' | 'prState' | 'prIsDraft' | 'prAuthorLogin' | 'prReviewerLogins' | 'sourceType' | 'cowboy' | 'prLabels' | 'prReviewDecision' | 'prMergeable' | 'prMergeStateStatus' | 'prIsInMergeQueue' | 'prChecksFailed'>;
|
|
6541
|
+
/**
|
|
6542
|
+
* Ready-for-review GitHub label for a repo from Settings → Projects
|
|
6543
|
+
* (`reviewLabel`), matching exact or descendant worktree paths.
|
|
6544
|
+
*/
|
|
6545
|
+
declare function reviewLabelForRepo(labelsByRepo: Record<string, string> | null | undefined, repoPath: string): string;
|
|
6546
|
+
/**
|
|
6547
|
+
* Sidebar / phone / board pills for where a checkout is on the path to merge.
|
|
6548
|
+
* Cowboy worktrees keep the separate cowboy badge. A closed PR stays unlabeled.
|
|
6549
|
+
*
|
|
6550
|
+
* New is no pull request. Draft is your draft. Pending is your published PR
|
|
6551
|
+
* waiting for review. Review is someone else's open PR, including their drafts.
|
|
6552
|
+
* Approved is an open non-draft PR GitHub has approved. Merged is merged.
|
|
6553
|
+
* A red dot on that pill means merge conflicts, failing checks, or changes
|
|
6554
|
+
* requested. The title says which. There is no second badge.
|
|
6555
|
+
*
|
|
6556
|
+
* Yours is pending when the project ready-for-review label (Settings →
|
|
6557
|
+
* Projects) is on the PR; if that label is unset, a published PR counts.
|
|
6558
|
+
* Without a viewer login, pending and review stay off so someone else's PR
|
|
6559
|
+
* is not labeled as yours. New, approved, and merged do not need the login.
|
|
6560
|
+
*/
|
|
6561
|
+
declare function classifyWorktreeListBadges(group: WorktreeListBadgeThread[], viewerLogin?: string, reviewLabel?: string): WorktreeListBadge[];
|
|
6562
|
+
|
|
6528
6563
|
/** Activity dot for a worktree: running / queued beat idle sibling tabs. */
|
|
6529
6564
|
declare function worktreeBoardStatus(group: Array<Pick<Thread, 'status'>>): Thread['status'];
|
|
6530
6565
|
/** Blocked highlight. Errors and archived chats keep their own status. */
|
|
@@ -6542,7 +6577,7 @@ declare function worktreeAgentBlock(group: Array<Pick<Thread, 'status' | 'agentB
|
|
|
6542
6577
|
* stay in the sidebar, not the board.
|
|
6543
6578
|
*/
|
|
6544
6579
|
declare function isHomeBoardThread(thread: Pick<Thread, 'sourceType' | 'repoPath'>): boolean;
|
|
6545
|
-
type BoardColumnId = 'backlog' | 'queued' | 'running' | 'new' | 'draft' | 'review' | 'done';
|
|
6580
|
+
type BoardColumnId = 'backlog' | 'queued' | 'running' | 'new' | 'draft' | 'review' | 'approved' | 'done';
|
|
6546
6581
|
/** Issue card on Home — `repoPath` is where Start will create the worktree. */
|
|
6547
6582
|
type BoardIssue = IssueInfo & {
|
|
6548
6583
|
repoPath: string;
|
|
@@ -6604,6 +6639,7 @@ type HomeBoardLoaded = HomeBoardRemoteData & {
|
|
|
6604
6639
|
fromCache: boolean;
|
|
6605
6640
|
pins: BoardPin[];
|
|
6606
6641
|
};
|
|
6642
|
+
|
|
6607
6643
|
/** How worktree rows/cards are ordered. Default `created` stays put while agents run. */
|
|
6608
6644
|
type WorktreeSortMode = 'created' | 'name' | 'activity';
|
|
6609
6645
|
declare const DEFAULT_WORKTREE_SORT: WorktreeSortMode;
|
|
@@ -6613,31 +6649,9 @@ declare const DEFAULT_WORKTREE_SORT: WorktreeSortMode;
|
|
|
6613
6649
|
* One card per group — extra chat tabs do not get their own column slot.
|
|
6614
6650
|
*/
|
|
6615
6651
|
declare function groupHomeBoardWorktrees<T extends Pick<Thread, 'worktreePath' | 'updatedAt' | 'createdAt' | 'id' | 'branchName' | 'title' | 'prTitle' | 'userSetTitle'>>(threads: T[], sort?: WorktreeSortMode, labelOf?: (group: T[]) => string): T[][];
|
|
6616
|
-
|
|
6617
|
-
|
|
6618
|
-
|
|
6619
|
-
type WorktreeListBadge = {
|
|
6620
|
-
id: WorktreeListBadgeId;
|
|
6621
|
-
label: string;
|
|
6622
|
-
title: string;
|
|
6623
|
-
mod: string;
|
|
6624
|
-
};
|
|
6625
|
-
type WorktreeListBadgeThread = Pick<Thread, 'prUrl' | 'prState' | 'prIsDraft' | 'prAuthorLogin' | 'prReviewerLogins' | 'sourceType' | 'cowboy' | 'prLabels'>;
|
|
6626
|
-
/**
|
|
6627
|
-
* Ready-for-review GitHub label for a repo from Settings → Projects
|
|
6628
|
-
* (`reviewLabel`), matching exact or descendant worktree paths.
|
|
6629
|
-
*/
|
|
6630
|
-
declare function reviewLabelForRepo(labelsByRepo: Record<string, string> | null | undefined, repoPath: string): string;
|
|
6631
|
-
/**
|
|
6632
|
-
* Sidebar / board badges only while a PR is in review — same as the old
|
|
6633
|
-
* "review" pill, plus "pending" for yours. Cowboy worktrees keep the
|
|
6634
|
-
* separate cowboy badge. Drafts of yours, merged, and closed stay unbadged.
|
|
6635
|
-
*
|
|
6636
|
-
* Yours is in review when the project ready-for-review label (Settings →
|
|
6637
|
-
* Projects) is on the PR; if that label is unset, a published (non-draft)
|
|
6638
|
-
* PR counts. Someone else's open PR is always "review", including drafts.
|
|
6639
|
-
*/
|
|
6640
|
-
declare function classifyWorktreeListBadges(group: WorktreeListBadgeThread[], viewerLogin?: string, reviewLabel?: string): WorktreeListBadge[];
|
|
6652
|
+
|
|
6653
|
+
/** Column for a worktree: merged → Merged, approved open PR → Approved, other open PR → Review, draft → Draft. */
|
|
6654
|
+
declare function classifyWorktreeColumn(group: Array<Pick<Thread, 'prUrl' | 'prState' | 'prIsDraft' | 'prReviewDecision'>>): BoardColumnId;
|
|
6641
6655
|
|
|
6642
6656
|
type LiveCreateMatchThread = Pick<Thread, 'id' | 'status' | 'sourceType' | 'sourceRef' | 'title' | 'prUrl' | 'branchName' | 'repoPath' | 'cowboy'>;
|
|
6643
6657
|
type FindLiveThreadForCreateInput = {
|
package/dist/index.js
CHANGED
|
@@ -196,7 +196,7 @@ import {
|
|
|
196
196
|
worktreeCleanupSettings,
|
|
197
197
|
writeAgentBlock,
|
|
198
198
|
writeWorktreeFile
|
|
199
|
-
} from "./chunk-
|
|
199
|
+
} from "./chunk-GNX6YNNU.js";
|
|
200
200
|
import {
|
|
201
201
|
LEGACY_PLAN_FILE_REL,
|
|
202
202
|
PLAN_FILE_NAME,
|
|
@@ -292,7 +292,7 @@ import {
|
|
|
292
292
|
userMcpNamesToDisable,
|
|
293
293
|
worktreeMcpToolNames,
|
|
294
294
|
writeInjectedMcpConfig
|
|
295
|
-
} from "./chunk-
|
|
295
|
+
} from "./chunk-EB7B4D2Z.js";
|
|
296
296
|
import {
|
|
297
297
|
brightsyMcpServerName,
|
|
298
298
|
connectBrightsyTeam,
|
|
@@ -420,7 +420,7 @@ import {
|
|
|
420
420
|
workspaceAgentChatSummaries,
|
|
421
421
|
worktreeRunPortsPath,
|
|
422
422
|
wrapReviewSkillMarkdown
|
|
423
|
-
} from "./chunk-
|
|
423
|
+
} from "./chunk-MMIDAD6J.js";
|
|
424
424
|
import {
|
|
425
425
|
STDERR_EVENT_MAX_CHARS,
|
|
426
426
|
STDOUT_EVENT_MAX_CHARS,
|
|
@@ -620,7 +620,7 @@ import {
|
|
|
620
620
|
stageBuffersAsAttachments,
|
|
621
621
|
syncWorkspacesFromThreads,
|
|
622
622
|
takenTeamSlugsForOrchestration
|
|
623
|
-
} from "./chunk-
|
|
623
|
+
} from "./chunk-QB4UQA5L.js";
|
|
624
624
|
import {
|
|
625
625
|
GITHUB_PR_BODY_MAX_CHARS,
|
|
626
626
|
GITHUB_PR_BODY_SAFE_CHARS,
|
|
@@ -708,7 +708,7 @@ import {
|
|
|
708
708
|
suggestSlug,
|
|
709
709
|
switchWorktreeBranch,
|
|
710
710
|
warmGithubAgentAuth
|
|
711
|
-
} from "./chunk-
|
|
711
|
+
} from "./chunk-G52HLBQR.js";
|
|
712
712
|
import {
|
|
713
713
|
FAMOUS_SOCCER_TEAMS,
|
|
714
714
|
allocateTeamName,
|
|
@@ -5391,7 +5391,7 @@ async function handleJobStop(params, _ctx) {
|
|
|
5391
5391
|
return stopDetachedJob(jobCwd(rec), id, reason ? { reason } : void 0);
|
|
5392
5392
|
}
|
|
5393
5393
|
async function defaultTurnWait(ref, timeoutMs) {
|
|
5394
|
-
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-
|
|
5394
|
+
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-FVVDOQVD.js");
|
|
5395
5395
|
const orch = getOrchestrator2();
|
|
5396
5396
|
const thread = await orch.waitForTurn(ref, timeoutMs, {
|
|
5397
5397
|
resolveIfStillRunning: true
|
|
@@ -5826,7 +5826,7 @@ async function startMcpServer() {
|
|
|
5826
5826
|
);
|
|
5827
5827
|
server.tool(
|
|
5828
5828
|
"list_board",
|
|
5829
|
-
"Home Kanban of workspaces (New, Draft, Review, Merged) \u2014 one card per checkout; sibling chats on that card are separate agents. Same cards as desktop Home. Path to merge: no PR \u2192 draft PR \u2192 open PR \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 (ticket/PR/branch source), ownership (mine = your PRs / WIP; reviewing = someone else's PR), column, limit (default 40). create_workspace adds a workspace (and a Home card), or returns the live checkout if that ticket/PR/named branch is already checked out. That reuse is one checkout, not one agent \u2014 fork_chat to add another.",
|
|
5829
|
+
"Home Kanban of workspaces (New, Draft, Review, Approved, Merged) \u2014 one card per checkout; sibling chats on that card are separate agents. Same cards as desktop Home. 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 (ticket/PR/branch source), ownership (mine = your PRs / WIP; reviewing = someone else's PR), column, limit (default 40). create_workspace adds a workspace (and a Home card), or returns the live checkout if that ticket/PR/named branch is already checked out. That reuse is one checkout, not one agent \u2014 fork_chat to add another.",
|
|
5830
5830
|
{
|
|
5831
5831
|
query: z8.string().optional().describe("Case-insensitive token search across title, id, labels, workspace tags, repo"),
|
|
5832
5832
|
repoPath: z8.string().optional().describe("Limit to one project path from list_projects"),
|
|
@@ -5834,8 +5834,8 @@ async function startMcpServer() {
|
|
|
5834
5834
|
ownership: z8.enum(["all", "mine", "reviewing"]).optional().describe(
|
|
5835
5835
|
"Mine = PRs you authored or local WIP; reviewing = someone else's PR. Uses the gh login."
|
|
5836
5836
|
),
|
|
5837
|
-
column: z8.enum(["new", "draft", "review", "done", "needs_you"]).optional().describe(
|
|
5838
|
-
"Return cards for this column only (totals still include the rest). needs_you is a legacy alias for new."
|
|
5837
|
+
column: z8.enum(["new", "draft", "review", "approved", "done", "needs_you"]).optional().describe(
|
|
5838
|
+
"Return cards for this column only (totals still include the rest). approved is an open PR GitHub has approved. needs_you is a legacy alias for new."
|
|
5839
5839
|
),
|
|
5840
5840
|
limit: z8.number().int().positive().optional().describe("Max cards per column (default 40). hidden counts the remainder.")
|
|
5841
5841
|
},
|
|
@@ -10600,7 +10600,7 @@ function listPhoneSidebar(viewerLogin = phoneViewerLogin()) {
|
|
|
10600
10600
|
label: worktreeDisplayLabelForGroup(group),
|
|
10601
10601
|
chats: group.map(summarize),
|
|
10602
10602
|
...tags.length > 0 ? { tags } : {},
|
|
10603
|
-
...badge ? { badge: { id: badge.id, label: badge.label, title: badge.title } } : {}
|
|
10603
|
+
...badge ? { badge: { id: badge.id, label: badge.label, title: badge.title, ...badge.conflict ? { conflict: true } : {} } } : {}
|
|
10604
10604
|
};
|
|
10605
10605
|
})
|
|
10606
10606
|
}));
|
|
@@ -13529,7 +13529,7 @@ async function continueSourceThread(threadId, prompt) {
|
|
|
13529
13529
|
await continueOnReply(threadId, prompt);
|
|
13530
13530
|
return;
|
|
13531
13531
|
}
|
|
13532
|
-
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-
|
|
13532
|
+
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-FVVDOQVD.js");
|
|
13533
13533
|
await getOrchestrator2().send(threadId, prompt);
|
|
13534
13534
|
} catch {
|
|
13535
13535
|
}
|
package/dist/mcp/run-stdio.cjs
CHANGED
|
@@ -9840,7 +9840,7 @@ function coordinatorTurnReminder(opts) {
|
|
|
9840
9840
|
goal ? `- Goal / title: ${goal}` : null,
|
|
9841
9841
|
accountDefaultsPlaybookLine(),
|
|
9842
9842
|
accountContextReminderLine() || null,
|
|
9843
|
-
"- Status: list_board (worktree Kanban: New \u2192 Draft \u2192 Review \u2192 Merged) or list_chats. Link chats as `[Title](sideboard://chat/<id>)`. Merge only if the user asked. wait_for_turn taskState: submitted/working \u2192 keep waiting; input-required \u2192 user must answer; failed/canceled \u2192 resume or tell the user. blockedReason is why that agent is waiting \u2014 read it; do not send_to_chat a check-in."
|
|
9843
|
+
"- Status: list_board (worktree Kanban: New \u2192 Draft \u2192 Review \u2192 Approved \u2192 Merged) or list_chats. Link chats as `[Title](sideboard://chat/<id>)`. Merge only if the user asked. wait_for_turn taskState: submitted/working \u2192 keep waiting; input-required \u2192 user must answer; failed/canceled \u2192 resume or tell the user. blockedReason is why that agent is waiting \u2014 read it; do not send_to_chat a check-in."
|
|
9844
9844
|
].filter(Boolean).join("\n");
|
|
9845
9845
|
}
|
|
9846
9846
|
function ensureGlobalCoordinatorCwd(opts) {
|
|
@@ -9948,7 +9948,7 @@ var init_coordinator_prompt = __esm({
|
|
|
9948
9948
|
"Sideboard MCP (fleet control \u2014 prefer these for status and orchestration):",
|
|
9949
9949
|
"Discover:",
|
|
9950
9950
|
"- 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.",
|
|
9951
|
-
"- list_board \u2014 Home Kanban of workspaces (New / Draft / Review / 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 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.",
|
|
9951
|
+
"- 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.",
|
|
9952
9952
|
`- 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).`,
|
|
9953
9953
|
"- 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.",
|
|
9954
9954
|
"- 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.",
|
|
@@ -18791,12 +18791,7 @@ var init_agent_block_view = __esm({
|
|
|
18791
18791
|
}
|
|
18792
18792
|
});
|
|
18793
18793
|
|
|
18794
|
-
// src/board/
|
|
18795
|
-
function isHomeBoardThread(thread) {
|
|
18796
|
-
if (thread.sourceType === "orchestration") return false;
|
|
18797
|
-
if (thread.repoPath === GLOBAL_WORKSPACE_ID2) return false;
|
|
18798
|
-
return true;
|
|
18799
|
-
}
|
|
18794
|
+
// src/board/pr-state.ts
|
|
18800
18795
|
function isOpenPrState(prUrl, prState) {
|
|
18801
18796
|
if (!prUrl?.trim()) return false;
|
|
18802
18797
|
const state = (prState ?? "OPEN").trim().toUpperCase();
|
|
@@ -18806,6 +18801,70 @@ function isMergedPrState(prUrl, prState) {
|
|
|
18806
18801
|
if (!prUrl?.trim()) return false;
|
|
18807
18802
|
return (prState ?? "").trim().toUpperCase() === "MERGED";
|
|
18808
18803
|
}
|
|
18804
|
+
function isApprovedOpenPr(thread) {
|
|
18805
|
+
if (!isOpenPrState(thread.prUrl, thread.prState) || thread.prIsDraft) return false;
|
|
18806
|
+
return (thread.prReviewDecision ?? "").trim().toUpperCase() === "APPROVED";
|
|
18807
|
+
}
|
|
18808
|
+
var init_pr_state = __esm({
|
|
18809
|
+
"src/board/pr-state.ts"() {
|
|
18810
|
+
"use strict";
|
|
18811
|
+
}
|
|
18812
|
+
});
|
|
18813
|
+
|
|
18814
|
+
// src/board/worktree-ownership.ts
|
|
18815
|
+
function normalizeViewerLogin(login) {
|
|
18816
|
+
return (login ?? "").trim().toLowerCase();
|
|
18817
|
+
}
|
|
18818
|
+
function loginsInclude(logins, viewerLogin) {
|
|
18819
|
+
const me = normalizeViewerLogin(viewerLogin);
|
|
18820
|
+
if (!me) return false;
|
|
18821
|
+
return (logins ?? []).some((login) => normalizeViewerLogin(login) === me);
|
|
18822
|
+
}
|
|
18823
|
+
function classifyWorktreeOwnership(group, viewerLogin = "") {
|
|
18824
|
+
const me = normalizeViewerLogin(viewerLogin);
|
|
18825
|
+
if (group.some((t) => {
|
|
18826
|
+
const author = normalizeViewerLogin(t.prAuthorLogin);
|
|
18827
|
+
return Boolean(author && me && author === me);
|
|
18828
|
+
})) {
|
|
18829
|
+
return "mine";
|
|
18830
|
+
}
|
|
18831
|
+
const reviewing = group.some((t) => {
|
|
18832
|
+
const author = normalizeViewerLogin(t.prAuthorLogin);
|
|
18833
|
+
if (author && me && author !== me) return true;
|
|
18834
|
+
if (t.sourceType === "pr" && me && (!author || author !== me)) return true;
|
|
18835
|
+
if (me && loginsInclude(t.prReviewerLogins, me)) return true;
|
|
18836
|
+
return false;
|
|
18837
|
+
});
|
|
18838
|
+
return reviewing ? "reviewing" : "mine";
|
|
18839
|
+
}
|
|
18840
|
+
function worktreeMatchesOwnership(group, filter, viewerLogin = "") {
|
|
18841
|
+
if (filter === "all") return true;
|
|
18842
|
+
return classifyWorktreeOwnership(group, viewerLogin) === filter;
|
|
18843
|
+
}
|
|
18844
|
+
var DEFAULT_BOARD_OWNERSHIP;
|
|
18845
|
+
var init_worktree_ownership = __esm({
|
|
18846
|
+
"src/board/worktree-ownership.ts"() {
|
|
18847
|
+
"use strict";
|
|
18848
|
+
DEFAULT_BOARD_OWNERSHIP = "all";
|
|
18849
|
+
}
|
|
18850
|
+
});
|
|
18851
|
+
|
|
18852
|
+
// src/board/worktree-list-badges.ts
|
|
18853
|
+
var init_worktree_list_badges = __esm({
|
|
18854
|
+
"src/board/worktree-list-badges.ts"() {
|
|
18855
|
+
"use strict";
|
|
18856
|
+
init_pr_gates();
|
|
18857
|
+
init_pr_state();
|
|
18858
|
+
init_worktree_ownership();
|
|
18859
|
+
}
|
|
18860
|
+
});
|
|
18861
|
+
|
|
18862
|
+
// src/board/home-board.ts
|
|
18863
|
+
function isHomeBoardThread(thread) {
|
|
18864
|
+
if (thread.sourceType === "orchestration") return false;
|
|
18865
|
+
if (thread.repoPath === GLOBAL_WORKSPACE_ID2) return false;
|
|
18866
|
+
return true;
|
|
18867
|
+
}
|
|
18809
18868
|
function groupCreatedAt(group) {
|
|
18810
18869
|
let min = group[0]?.createdAt ?? "";
|
|
18811
18870
|
for (const t of group) {
|
|
@@ -18857,37 +18916,9 @@ function groupHomeBoardWorktrees(threads, sort = DEFAULT_WORKTREE_SORT, labelOf
|
|
|
18857
18916
|
}
|
|
18858
18917
|
return [...map.values()].map((list) => sortThreadsInWorktree(list)).sort((a, b) => compareWorktreeGroups(a, b, sort, labelOf));
|
|
18859
18918
|
}
|
|
18860
|
-
function normalizeViewerLogin(login) {
|
|
18861
|
-
return (login ?? "").trim().toLowerCase();
|
|
18862
|
-
}
|
|
18863
|
-
function loginsInclude(logins, viewerLogin) {
|
|
18864
|
-
const me = normalizeViewerLogin(viewerLogin);
|
|
18865
|
-
if (!me) return false;
|
|
18866
|
-
return (logins ?? []).some((login) => normalizeViewerLogin(login) === me);
|
|
18867
|
-
}
|
|
18868
|
-
function classifyWorktreeOwnership(group, viewerLogin = "") {
|
|
18869
|
-
const me = normalizeViewerLogin(viewerLogin);
|
|
18870
|
-
if (group.some((t) => {
|
|
18871
|
-
const author = normalizeViewerLogin(t.prAuthorLogin);
|
|
18872
|
-
return Boolean(author && me && author === me);
|
|
18873
|
-
})) {
|
|
18874
|
-
return "mine";
|
|
18875
|
-
}
|
|
18876
|
-
const reviewing = group.some((t) => {
|
|
18877
|
-
const author = normalizeViewerLogin(t.prAuthorLogin);
|
|
18878
|
-
if (author && me && author !== me) return true;
|
|
18879
|
-
if (t.sourceType === "pr" && me && (!author || author !== me)) return true;
|
|
18880
|
-
if (me && loginsInclude(t.prReviewerLogins, me)) return true;
|
|
18881
|
-
return false;
|
|
18882
|
-
});
|
|
18883
|
-
return reviewing ? "reviewing" : "mine";
|
|
18884
|
-
}
|
|
18885
|
-
function worktreeMatchesOwnership(group, filter, viewerLogin = "") {
|
|
18886
|
-
if (filter === "all") return true;
|
|
18887
|
-
return classifyWorktreeOwnership(group, viewerLogin) === filter;
|
|
18888
|
-
}
|
|
18889
18919
|
function classifyWorktreeColumn(group) {
|
|
18890
18920
|
if (group.some((t) => isMergedPrState(t.prUrl, t.prState))) return "done";
|
|
18921
|
+
if (group.some((t) => isApprovedOpenPr(t))) return "approved";
|
|
18891
18922
|
if (group.some((t) => isOpenPrState(t.prUrl, t.prState) && !t.prIsDraft)) {
|
|
18892
18923
|
return "review";
|
|
18893
18924
|
}
|
|
@@ -19136,6 +19167,7 @@ function emptyColumns() {
|
|
|
19136
19167
|
new: [],
|
|
19137
19168
|
draft: [],
|
|
19138
19169
|
review: [],
|
|
19170
|
+
approved: [],
|
|
19139
19171
|
done: []
|
|
19140
19172
|
};
|
|
19141
19173
|
}
|
|
@@ -19147,6 +19179,7 @@ function emptyHidden() {
|
|
|
19147
19179
|
new: 0,
|
|
19148
19180
|
draft: 0,
|
|
19149
19181
|
review: 0,
|
|
19182
|
+
approved: 0,
|
|
19150
19183
|
done: 0
|
|
19151
19184
|
};
|
|
19152
19185
|
}
|
|
@@ -19215,6 +19248,7 @@ function assembleHomeBoard(input) {
|
|
|
19215
19248
|
new: 0,
|
|
19216
19249
|
draft: 0,
|
|
19217
19250
|
review: 0,
|
|
19251
|
+
approved: 0,
|
|
19218
19252
|
done: 0,
|
|
19219
19253
|
tickets: 0,
|
|
19220
19254
|
prs: 0,
|
|
@@ -19227,6 +19261,7 @@ function assembleHomeBoard(input) {
|
|
|
19227
19261
|
new: [],
|
|
19228
19262
|
draft: [],
|
|
19229
19263
|
review: [],
|
|
19264
|
+
approved: [],
|
|
19230
19265
|
done: []
|
|
19231
19266
|
};
|
|
19232
19267
|
for (const group of groupHomeBoardWorktrees(live)) {
|
|
@@ -19261,27 +19296,30 @@ function assembleHomeBoard(input) {
|
|
|
19261
19296
|
}
|
|
19262
19297
|
return { columns, hidden, totals };
|
|
19263
19298
|
}
|
|
19264
|
-
var GLOBAL_WORKSPACE_ID2, BOARD_COLUMN_DEFS, HOME_BOARD_CACHE_TTL_MS, DEFAULT_WORKTREE_SORT,
|
|
19299
|
+
var GLOBAL_WORKSPACE_ID2, BOARD_COLUMN_DEFS, HOME_BOARD_CACHE_TTL_MS, DEFAULT_WORKTREE_SORT, DEFAULTISH_BRANCH, BOARD_PAGE_SIZE, HOME_BOARD_AGENT_HINT;
|
|
19265
19300
|
var init_home_board = __esm({
|
|
19266
19301
|
"src/board/home-board.ts"() {
|
|
19267
19302
|
"use strict";
|
|
19268
19303
|
init_message_parts();
|
|
19269
19304
|
init_worktree_labels();
|
|
19270
19305
|
init_agent_block_view();
|
|
19306
|
+
init_pr_state();
|
|
19307
|
+
init_worktree_ownership();
|
|
19308
|
+
init_worktree_list_badges();
|
|
19271
19309
|
init_agent_block_view();
|
|
19272
19310
|
GLOBAL_WORKSPACE_ID2 = "__global__";
|
|
19273
19311
|
BOARD_COLUMN_DEFS = [
|
|
19274
19312
|
{ id: "new", title: "New" },
|
|
19275
19313
|
{ id: "draft", title: "Draft" },
|
|
19276
19314
|
{ id: "review", title: "Review" },
|
|
19315
|
+
{ id: "approved", title: "Approved" },
|
|
19277
19316
|
{ id: "done", title: "Merged" }
|
|
19278
19317
|
];
|
|
19279
19318
|
HOME_BOARD_CACHE_TTL_MS = 15 * 60 * 1e3;
|
|
19280
19319
|
DEFAULT_WORKTREE_SORT = "created";
|
|
19281
|
-
DEFAULT_BOARD_OWNERSHIP = "all";
|
|
19282
19320
|
DEFAULTISH_BRANCH = /^(main|master|develop|development|trunk|default|head)$/;
|
|
19283
19321
|
BOARD_PAGE_SIZE = 40;
|
|
19284
|
-
HOME_BOARD_AGENT_HINT = "Home is a Kanban of workspaces (one card per checkout; sibling chats on a card are separate agents). Do not create a second workspace for a ticket, PR, or named branch that already has a live checkout \u2014 create_workspace / start_board_card return that checkout (alreadyStarted) and its chats. Add another agent with fork_chat. Creating from the default branch still opens a new isolated workspace. Columns are the path to merge: New (no PR) \u2192 Draft (draft PR) \u2192 Review (open PR) \u2192 Merged. ownership=mine is PRs you authored (or WIP with no PR); ownership=reviewing is someone else's PR (or a review-requested checkout). Viewer login comes from gh, not a setting. 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. blockedReason means an agent on that card is waiting on a person (the question, plan approval, or a reported block) \u2014 read it and do not send_to_chat a check-in. Orchestration chats stay in the sidebar. Do not invent status.";
|
|
19322
|
+
HOME_BOARD_AGENT_HINT = "Home is a Kanban of workspaces (one card per checkout; sibling chats on a card are separate agents). Do not create a second workspace for a ticket, PR, or named branch that already has a live checkout \u2014 create_workspace / start_board_card return that checkout (alreadyStarted) and its chats. Add another agent with fork_chat. Creating from the default branch still opens a new isolated workspace. Columns are the path to merge: New (no PR) \u2192 Draft (draft PR) \u2192 Review (open PR) \u2192 Approved (approved, not merged) \u2192 Merged. ownership=mine is PRs you authored (or WIP with no PR); ownership=reviewing is someone else's PR (or a review-requested checkout). Viewer login comes from gh, not a setting. 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. blockedReason means an agent on that card is waiting on a person (the question, plan approval, or a reported block) \u2014 read it and do not send_to_chat a check-in. Orchestration chats stay in the sidebar. Do not invent status.";
|
|
19285
19323
|
}
|
|
19286
19324
|
});
|
|
19287
19325
|
|
|
@@ -32848,7 +32886,7 @@ async function startMcpServer() {
|
|
|
32848
32886
|
);
|
|
32849
32887
|
server.tool(
|
|
32850
32888
|
"list_board",
|
|
32851
|
-
"Home Kanban of workspaces (New, Draft, Review, Merged) \u2014 one card per checkout; sibling chats on that card are separate agents. Same cards as desktop Home. Path to merge: no PR \u2192 draft PR \u2192 open PR \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 (ticket/PR/branch source), ownership (mine = your PRs / WIP; reviewing = someone else's PR), column, limit (default 40). create_workspace adds a workspace (and a Home card), or returns the live checkout if that ticket/PR/named branch is already checked out. That reuse is one checkout, not one agent \u2014 fork_chat to add another.",
|
|
32889
|
+
"Home Kanban of workspaces (New, Draft, Review, Approved, Merged) \u2014 one card per checkout; sibling chats on that card are separate agents. Same cards as desktop Home. 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 (ticket/PR/branch source), ownership (mine = your PRs / WIP; reviewing = someone else's PR), column, limit (default 40). create_workspace adds a workspace (and a Home card), or returns the live checkout if that ticket/PR/named branch is already checked out. That reuse is one checkout, not one agent \u2014 fork_chat to add another.",
|
|
32852
32890
|
{
|
|
32853
32891
|
query: import_zod11.z.string().optional().describe("Case-insensitive token search across title, id, labels, workspace tags, repo"),
|
|
32854
32892
|
repoPath: import_zod11.z.string().optional().describe("Limit to one project path from list_projects"),
|
|
@@ -32856,8 +32894,8 @@ async function startMcpServer() {
|
|
|
32856
32894
|
ownership: import_zod11.z.enum(["all", "mine", "reviewing"]).optional().describe(
|
|
32857
32895
|
"Mine = PRs you authored or local WIP; reviewing = someone else's PR. Uses the gh login."
|
|
32858
32896
|
),
|
|
32859
|
-
column: import_zod11.z.enum(["new", "draft", "review", "done", "needs_you"]).optional().describe(
|
|
32860
|
-
"Return cards for this column only (totals still include the rest). needs_you is a legacy alias for new."
|
|
32897
|
+
column: import_zod11.z.enum(["new", "draft", "review", "approved", "done", "needs_you"]).optional().describe(
|
|
32898
|
+
"Return cards for this column only (totals still include the rest). approved is an open PR GitHub has approved. needs_you is a legacy alias for new."
|
|
32861
32899
|
),
|
|
32862
32900
|
limit: import_zod11.z.number().int().positive().optional().describe("Max cards per column (default 40). hidden counts the remainder.")
|
|
32863
32901
|
},
|
package/dist/mcp/run-stdio.js
CHANGED
|
@@ -56,7 +56,7 @@ import {
|
|
|
56
56
|
updateSchedule,
|
|
57
57
|
workspaceTagTargetRef,
|
|
58
58
|
writeAgentBlock
|
|
59
|
-
} from "../chunk-
|
|
59
|
+
} from "../chunk-YAILSKW3.js";
|
|
60
60
|
import "../chunk-LX5R5JOR.js";
|
|
61
61
|
import {
|
|
62
62
|
commentAbleTimeTask,
|
|
@@ -99,7 +99,7 @@ import {
|
|
|
99
99
|
sideboardMcpProfile,
|
|
100
100
|
trustSystemCertificates,
|
|
101
101
|
worktreeMcpToolNames
|
|
102
|
-
} from "../chunk-
|
|
102
|
+
} from "../chunk-EB3F5AWV.js";
|
|
103
103
|
import "../chunk-WZCPZVUC.js";
|
|
104
104
|
import "../chunk-7IAMHN2N.js";
|
|
105
105
|
import "../chunk-PXMLMBMI.js";
|
|
@@ -116,7 +116,7 @@ import {
|
|
|
116
116
|
waitForDetachedJob,
|
|
117
117
|
waitForTurnToolResult,
|
|
118
118
|
workspaceAgentChatSummaries
|
|
119
|
-
} from "../chunk-
|
|
119
|
+
} from "../chunk-F3JYJ4UB.js";
|
|
120
120
|
import {
|
|
121
121
|
HUGE_TOOL_RESULT_SUMMARY,
|
|
122
122
|
clipToolResultForStore,
|
|
@@ -127,7 +127,7 @@ import {
|
|
|
127
127
|
import {
|
|
128
128
|
GLOBAL_WORKSPACE_ID,
|
|
129
129
|
isCloudCoordinatorThread
|
|
130
|
-
} from "../chunk-
|
|
130
|
+
} from "../chunk-UMALFEDS.js";
|
|
131
131
|
import {
|
|
132
132
|
canonicalizeRepoPath,
|
|
133
133
|
formatGhLandError,
|
|
@@ -4095,7 +4095,7 @@ async function startMcpServer() {
|
|
|
4095
4095
|
);
|
|
4096
4096
|
server.tool(
|
|
4097
4097
|
"list_board",
|
|
4098
|
-
"Home Kanban of workspaces (New, Draft, Review, Merged) \u2014 one card per checkout; sibling chats on that card are separate agents. Same cards as desktop Home. Path to merge: no PR \u2192 draft PR \u2192 open PR \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 (ticket/PR/branch source), ownership (mine = your PRs / WIP; reviewing = someone else's PR), column, limit (default 40). create_workspace adds a workspace (and a Home card), or returns the live checkout if that ticket/PR/named branch is already checked out. That reuse is one checkout, not one agent \u2014 fork_chat to add another.",
|
|
4098
|
+
"Home Kanban of workspaces (New, Draft, Review, Approved, Merged) \u2014 one card per checkout; sibling chats on that card are separate agents. Same cards as desktop Home. 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 (ticket/PR/branch source), ownership (mine = your PRs / WIP; reviewing = someone else's PR), column, limit (default 40). create_workspace adds a workspace (and a Home card), or returns the live checkout if that ticket/PR/named branch is already checked out. That reuse is one checkout, not one agent \u2014 fork_chat to add another.",
|
|
4099
4099
|
{
|
|
4100
4100
|
query: z8.string().optional().describe("Case-insensitive token search across title, id, labels, workspace tags, repo"),
|
|
4101
4101
|
repoPath: z8.string().optional().describe("Limit to one project path from list_projects"),
|
|
@@ -4103,8 +4103,8 @@ async function startMcpServer() {
|
|
|
4103
4103
|
ownership: z8.enum(["all", "mine", "reviewing"]).optional().describe(
|
|
4104
4104
|
"Mine = PRs you authored or local WIP; reviewing = someone else's PR. Uses the gh login."
|
|
4105
4105
|
),
|
|
4106
|
-
column: z8.enum(["new", "draft", "review", "done", "needs_you"]).optional().describe(
|
|
4107
|
-
"Return cards for this column only (totals still include the rest). needs_you is a legacy alias for new."
|
|
4106
|
+
column: z8.enum(["new", "draft", "review", "approved", "done", "needs_you"]).optional().describe(
|
|
4107
|
+
"Return cards for this column only (totals still include the rest). approved is an open PR GitHub has approved. needs_you is a legacy alias for new."
|
|
4108
4108
|
),
|
|
4109
4109
|
limit: z8.number().int().positive().optional().describe("Max cards per column (default 40). hidden counts the remainder.")
|
|
4110
4110
|
},
|
|
@@ -9,17 +9,17 @@ import {
|
|
|
9
9
|
resolveSendFollowUp,
|
|
10
10
|
startOrchestration,
|
|
11
11
|
waitForPidExit
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-GNX6YNNU.js";
|
|
13
13
|
import "./chunk-PGPSIEMW.js";
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-EB7B4D2Z.js";
|
|
15
15
|
import "./chunk-VGNLMGBK.js";
|
|
16
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-MMIDAD6J.js";
|
|
17
17
|
import "./chunk-F36QRDM4.js";
|
|
18
18
|
import "./chunk-7H655NEW.js";
|
|
19
19
|
import "./chunk-QDDTVIWE.js";
|
|
20
20
|
import "./chunk-B42H6GJR.js";
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-QB4UQA5L.js";
|
|
22
|
+
import "./chunk-G52HLBQR.js";
|
|
23
23
|
import "./chunk-K5EACGG2.js";
|
|
24
24
|
import "./chunk-2P4XKWV2.js";
|
|
25
25
|
import "./chunk-33KDPEK4.js";
|
|
@@ -11,19 +11,19 @@ import {
|
|
|
11
11
|
resolveSendFollowUp,
|
|
12
12
|
startOrchestration,
|
|
13
13
|
waitForPidExit
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-YAILSKW3.js";
|
|
15
15
|
import "./chunk-LX5R5JOR.js";
|
|
16
16
|
import "./chunk-XCXUVX7I.js";
|
|
17
17
|
import "./chunk-4GK32AYX.js";
|
|
18
18
|
import "./chunk-5DZUWGKV.js";
|
|
19
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-EB3F5AWV.js";
|
|
20
20
|
import "./chunk-WZCPZVUC.js";
|
|
21
21
|
import "./chunk-7IAMHN2N.js";
|
|
22
22
|
import "./chunk-PXMLMBMI.js";
|
|
23
23
|
import "./chunk-2GPQZZLY.js";
|
|
24
|
-
import "./chunk-
|
|
24
|
+
import "./chunk-F3JYJ4UB.js";
|
|
25
25
|
import "./chunk-5XQ43YZU.js";
|
|
26
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-UMALFEDS.js";
|
|
27
27
|
import "./chunk-3IXGI2FP.js";
|
|
28
28
|
import "./chunk-N2WW62LF.js";
|
|
29
29
|
import "./chunk-DD67JWTN.js";
|
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
removeWorkspace,
|
|
10
10
|
sameWorkspacePath,
|
|
11
11
|
syncWorkspacesFromThreads
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-QB4UQA5L.js";
|
|
13
|
+
import "./chunk-G52HLBQR.js";
|
|
14
14
|
import "./chunk-K5EACGG2.js";
|
|
15
15
|
import "./chunk-2P4XKWV2.js";
|
|
16
16
|
import "./chunk-6K64FJDD.js";
|