@sideboard-ai/core 0.1.176 → 0.1.178
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-544IX5KA.js → agents-2UD26PUT.js} +4 -4
- package/dist/{agents-UENEQ6J2.js → agents-XPWZG3JU.js} +4 -4
- package/dist/{chunk-3ZFGZ7RT.js → chunk-7T5XKNOF.js} +2 -2
- package/dist/{chunk-LZQULFIT.js → chunk-GOZ6T3AG.js} +2 -0
- package/dist/{chunk-4ELBAYFW.js → chunk-GVC4IVF5.js} +83 -17
- package/dist/{chunk-NIB6BTC6.js → chunk-IVJFEB3T.js} +3 -3
- package/dist/{chunk-JUA7XEXR.js → chunk-MZOZ6PIZ.js} +82 -16
- package/dist/{chunk-7UURXPKD.js → chunk-TCQAFTSV.js} +2 -0
- package/dist/{chunk-W44EKPIR.js → chunk-VUFJ5MAN.js} +3 -3
- package/dist/{chunk-7JIYKYLL.js → chunk-WXKXSZN4.js} +10 -7
- package/dist/{chunk-7O53GXTA.js → chunk-XBLN52RZ.js} +10 -7
- package/dist/{chunk-FJWQCZ74.js → chunk-XV3EFFZ6.js} +2 -2
- package/dist/{coordinator-prompt-PRM5ARWG.js → coordinator-prompt-3NRUXH3F.js} +3 -3
- package/dist/{coordinator-prompt-BE2FERYE.js → coordinator-prompt-GKH7Q7PK.js} +3 -3
- package/dist/{global-workspace-3HIWNQ3B.js → global-workspace-2FQU62S2.js} +3 -3
- package/dist/{global-workspace-J737XNUX.js → global-workspace-C2JMJXYV.js} +3 -3
- package/dist/index.cjs +90 -12
- package/dist/index.d.cts +25 -2
- package/dist/index.d.ts +25 -2
- package/dist/index.js +15 -7
- package/dist/mcp/run-stdio.cjs +133 -12
- package/dist/mcp/run-stdio.js +59 -8
- package/dist/{orchestrator-GDKEVLFK.js → orchestrator-HOMNNKMT.js} +7 -5
- package/dist/{orchestrator-2KZD7N4X.js → orchestrator-WNFMRRQP.js} +7 -5
- package/dist/{thread-store-KBFBHT5G.js → thread-store-RXXNSRVO.js} +1 -1
- package/dist/{thread-store-MVQU6HPJ.js → thread-store-ZL6GDIDP.js} +1 -1
- package/dist/{workspaces-ULHYXM4Y.js → workspaces-J3M3IPR3.js} +3 -3
- package/dist/{workspaces-DR4UNOQC.js → workspaces-YVZYX5H2.js} +3 -3
- package/dist/{worktree-LC4VRWDM.js → worktree-7LOSSD7G.js} +2 -2
- package/dist/{worktree-UTDBQXSS.js → worktree-LPWTX2NA.js} +2 -2
- package/package.json +1 -1
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
summarizeTurnStderr,
|
|
34
34
|
toolDescription,
|
|
35
35
|
turnFailChatText
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-VUFJ5MAN.js";
|
|
37
37
|
import {
|
|
38
38
|
extractPresentedPlan,
|
|
39
39
|
readPlanFile,
|
|
@@ -64,7 +64,7 @@ import {
|
|
|
64
64
|
stageAbsolutePathsAsAttachments,
|
|
65
65
|
stageBuffersAsAttachments,
|
|
66
66
|
syncWorkspacesFromThreads
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-XV3EFFZ6.js";
|
|
68
68
|
import {
|
|
69
69
|
addPrStackLayer,
|
|
70
70
|
allocateTeamName,
|
|
@@ -114,7 +114,7 @@ import {
|
|
|
114
114
|
worktreeDisplayLabelForGroup,
|
|
115
115
|
worktreeNameFromPath,
|
|
116
116
|
worktreeSlugForTicket
|
|
117
|
-
} from "./chunk-
|
|
117
|
+
} from "./chunk-XBLN52RZ.js";
|
|
118
118
|
import {
|
|
119
119
|
ATTACHMENTS_DIR,
|
|
120
120
|
DETACHED_JOBS_DIR,
|
|
@@ -132,7 +132,7 @@ import {
|
|
|
132
132
|
updateThread,
|
|
133
133
|
withThreadLock,
|
|
134
134
|
writeThread
|
|
135
|
-
} from "./chunk-
|
|
135
|
+
} from "./chunk-GOZ6T3AG.js";
|
|
136
136
|
import {
|
|
137
137
|
ensureWorktreeSideboardIgnored
|
|
138
138
|
} from "./chunk-SYFVUF2C.js";
|
|
@@ -148,6 +148,7 @@ import {
|
|
|
148
148
|
assertOrchestratorCapableAgent,
|
|
149
149
|
childEnvWithAppSettings,
|
|
150
150
|
coerceOrchestratorAgent,
|
|
151
|
+
followUpBehavior,
|
|
151
152
|
formatViewerContextDirective,
|
|
152
153
|
formatViewerContextReminder,
|
|
153
154
|
getIssueSource,
|
|
@@ -401,7 +402,7 @@ async function continueSourceThread(threadId, prompt) {
|
|
|
401
402
|
await continueOnReply(threadId, prompt);
|
|
402
403
|
return;
|
|
403
404
|
}
|
|
404
|
-
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-
|
|
405
|
+
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-WNFMRRQP.js");
|
|
405
406
|
await getOrchestrator2().send(threadId, prompt);
|
|
406
407
|
} catch {
|
|
407
408
|
}
|
|
@@ -794,9 +795,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
|
|
|
794
795
|
`Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
|
|
795
796
|
);
|
|
796
797
|
}
|
|
797
|
-
const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-
|
|
798
|
+
const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-C2JMJXYV.js");
|
|
798
799
|
if (isGlobalThread2(thread)) {
|
|
799
|
-
const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-
|
|
800
|
+
const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-GKH7Q7PK.js");
|
|
800
801
|
ensureGlobalCoordinatorCwd2(
|
|
801
802
|
isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
|
|
802
803
|
);
|
|
@@ -1536,6 +1537,8 @@ function worktreeBindingFrom(from) {
|
|
|
1536
1537
|
prTitle: from.prTitle,
|
|
1537
1538
|
prState: from.prState,
|
|
1538
1539
|
prIsDraft: from.prIsDraft,
|
|
1540
|
+
prAuthorLogin: from.prAuthorLogin,
|
|
1541
|
+
prReviewerLogins: from.prReviewerLogins,
|
|
1539
1542
|
skipAutoArchiveOnMerge: from.skipAutoArchiveOnMerge,
|
|
1540
1543
|
stackId: from.stackId,
|
|
1541
1544
|
stackLayer: from.stackLayer,
|
|
@@ -3070,6 +3073,36 @@ function groupHomeBoardWorktrees(threads, sort = DEFAULT_WORKTREE_SORT, labelOf
|
|
|
3070
3073
|
}
|
|
3071
3074
|
return [...map.values()].map((list) => sortThreadsInWorktree(list)).sort((a, b) => compareWorktreeGroups(a, b, sort, labelOf));
|
|
3072
3075
|
}
|
|
3076
|
+
var DEFAULT_BOARD_OWNERSHIP = "all";
|
|
3077
|
+
function normalizeViewerLogin(login) {
|
|
3078
|
+
return (login ?? "").trim().toLowerCase();
|
|
3079
|
+
}
|
|
3080
|
+
function loginsInclude(logins, viewerLogin) {
|
|
3081
|
+
const me = normalizeViewerLogin(viewerLogin);
|
|
3082
|
+
if (!me) return false;
|
|
3083
|
+
return (logins ?? []).some((login) => normalizeViewerLogin(login) === me);
|
|
3084
|
+
}
|
|
3085
|
+
function classifyWorktreeOwnership(group, viewerLogin = "") {
|
|
3086
|
+
const me = normalizeViewerLogin(viewerLogin);
|
|
3087
|
+
if (group.some((t) => {
|
|
3088
|
+
const author = normalizeViewerLogin(t.prAuthorLogin);
|
|
3089
|
+
return Boolean(author && me && author === me);
|
|
3090
|
+
})) {
|
|
3091
|
+
return "mine";
|
|
3092
|
+
}
|
|
3093
|
+
const reviewing = group.some((t) => {
|
|
3094
|
+
const author = normalizeViewerLogin(t.prAuthorLogin);
|
|
3095
|
+
if (author && me && author !== me) return true;
|
|
3096
|
+
if (t.sourceType === "pr" && (!author || !me || author !== me)) return true;
|
|
3097
|
+
if (me && loginsInclude(t.prReviewerLogins, me)) return true;
|
|
3098
|
+
return false;
|
|
3099
|
+
});
|
|
3100
|
+
return reviewing ? "reviewing" : "mine";
|
|
3101
|
+
}
|
|
3102
|
+
function worktreeMatchesOwnership(group, filter, viewerLogin = "") {
|
|
3103
|
+
if (filter === "all") return true;
|
|
3104
|
+
return classifyWorktreeOwnership(group, viewerLogin) === filter;
|
|
3105
|
+
}
|
|
3073
3106
|
function classifyWorktreeColumn(group) {
|
|
3074
3107
|
if (group.some((t) => isMergedPrState(t.prUrl, t.prState))) return "done";
|
|
3075
3108
|
if (group.some((t) => isOpenPrState(t.prUrl, t.prState) && !t.prIsDraft)) {
|
|
@@ -3390,6 +3423,8 @@ function assembleHomeBoard(input) {
|
|
|
3390
3423
|
const tokens = tokenizeQuery(input.query ?? "");
|
|
3391
3424
|
const repo = input.repoPath?.trim() ?? "";
|
|
3392
3425
|
const kind = input.kind ?? "all";
|
|
3426
|
+
const ownership = input.ownership ?? DEFAULT_BOARD_OWNERSHIP;
|
|
3427
|
+
const viewerLogin = input.viewerLogin ?? "";
|
|
3393
3428
|
const limit = Math.max(1, input.limit ?? BOARD_PAGE_SIZE);
|
|
3394
3429
|
const wsName = input.workspaceName ?? (() => "");
|
|
3395
3430
|
const live = input.threads.filter((t) => t.status !== "archived" && isHomeBoardThread(t));
|
|
@@ -3418,6 +3453,7 @@ function assembleHomeBoard(input) {
|
|
|
3418
3453
|
};
|
|
3419
3454
|
for (const group of groupHomeBoardWorktrees(live)) {
|
|
3420
3455
|
if (!group.some((t) => threadMatchesKind(t, kind))) continue;
|
|
3456
|
+
if (!worktreeMatchesOwnership(group, ownership, viewerLogin)) continue;
|
|
3421
3457
|
const col = classifyWorktreeColumn(group);
|
|
3422
3458
|
if (col === "backlog") continue;
|
|
3423
3459
|
const primary = group[0];
|
|
@@ -3447,7 +3483,7 @@ function assembleHomeBoard(input) {
|
|
|
3447
3483
|
}
|
|
3448
3484
|
return { columns, hidden, totals };
|
|
3449
3485
|
}
|
|
3450
|
-
var HOME_BOARD_AGENT_HINT = "Home is a Kanban of worktrees (one card per checkout; sibling chat tabs nest as inner cards). Do not create a second worktree for a ticket, PR, or named branch that already has a live checkout \u2014 create_thread / start_board_card return that thread (alreadyStarted). Creating from the default branch still opens a new isolated worktree. Columns are the path to merge: New (no PR) \u2192 Draft (draft PR) \u2192 Review (open PR) \u2192 Merged. Archive removes the card to Settings \u2192 History. Queued/running are activity on the card, not columns. Orchestration chats stay in the sidebar. Do not invent status.";
|
|
3486
|
+
var HOME_BOARD_AGENT_HINT = "Home is a Kanban of worktrees (one card per checkout; sibling chat tabs nest as inner cards). Do not create a second worktree for a ticket, PR, or named branch that already has a live checkout \u2014 create_thread / start_board_card return that thread (alreadyStarted). Creating from the default branch still opens a new isolated worktree. 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. Queued/running are activity on the card, not columns. Orchestration chats stay in the sidebar. Do not invent status.";
|
|
3451
3487
|
|
|
3452
3488
|
// src/threads/create.ts
|
|
3453
3489
|
function persistCreateAttachments(worktreePath, attachments) {
|
|
@@ -3580,6 +3616,7 @@ async function createThread(input, _onSetupLine) {
|
|
|
3580
3616
|
}
|
|
3581
3617
|
let prUrl = null;
|
|
3582
3618
|
let prTitle = null;
|
|
3619
|
+
let prAuthorLogin2 = null;
|
|
3583
3620
|
if (sourceType === "pr") {
|
|
3584
3621
|
const num = Number(input.sourceRef.replace(/^#/, ""));
|
|
3585
3622
|
if (!Number.isFinite(num)) throw new Error(`Invalid PR number: ${input.sourceRef}`);
|
|
@@ -3595,6 +3632,7 @@ async function createThread(input, _onSetupLine) {
|
|
|
3595
3632
|
if (reusedPr) return reusedPr;
|
|
3596
3633
|
sourceIsFork = pr.isCrossRepository;
|
|
3597
3634
|
prUrl = pr.url;
|
|
3635
|
+
prAuthorLogin2 = pr.author?.login?.trim() || null;
|
|
3598
3636
|
const localFetchBranch = `sideboard-pr-${pr.number}`;
|
|
3599
3637
|
await fetchPrHead(repoPath, pr.number, localFetchBranch);
|
|
3600
3638
|
sourceRef = localFetchBranch;
|
|
@@ -3617,6 +3655,7 @@ async function createThread(input, _onSetupLine) {
|
|
|
3617
3655
|
if (existing.url) {
|
|
3618
3656
|
prUrl = existing.url;
|
|
3619
3657
|
prTitle = existing.title;
|
|
3658
|
+
prAuthorLogin2 = existing.author?.login?.trim() || null;
|
|
3620
3659
|
}
|
|
3621
3660
|
}
|
|
3622
3661
|
}
|
|
@@ -3651,7 +3690,8 @@ async function createThread(input, _onSetupLine) {
|
|
|
3651
3690
|
parentThreadId: input.parentThreadId ?? null,
|
|
3652
3691
|
status: "idle",
|
|
3653
3692
|
prUrl,
|
|
3654
|
-
prTitle
|
|
3693
|
+
prTitle,
|
|
3694
|
+
prAuthorLogin: prAuthorLogin2
|
|
3655
3695
|
});
|
|
3656
3696
|
writeThread(thread);
|
|
3657
3697
|
await ensureWorkspace(repoPath);
|
|
@@ -4068,7 +4108,7 @@ async function adoptThread(input) {
|
|
|
4068
4108
|
messages: input.messages ?? []
|
|
4069
4109
|
});
|
|
4070
4110
|
writeThread(thread);
|
|
4071
|
-
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-
|
|
4111
|
+
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-YVZYX5H2.js");
|
|
4072
4112
|
await ensureWorkspace2(repoPath);
|
|
4073
4113
|
const { ensureWorktreeSideboardIgnored: ensureWorktreeSideboardIgnored2 } = await import("./worktree-exclude-N5X5I422.js");
|
|
4074
4114
|
await ensureWorktreeSideboardIgnored2(input.worktreePath);
|
|
@@ -6344,7 +6384,7 @@ function formatScheduledPrompt(name, prompt) {
|
|
|
6344
6384
|
${prompt}`;
|
|
6345
6385
|
}
|
|
6346
6386
|
async function defaultDeps() {
|
|
6347
|
-
const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-
|
|
6387
|
+
const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-WNFMRRQP.js");
|
|
6348
6388
|
const orch = getOrchestrator2();
|
|
6349
6389
|
return {
|
|
6350
6390
|
findThread: (id) => findThreadByRef(id),
|
|
@@ -6458,6 +6498,11 @@ function isPidAlive(pid) {
|
|
|
6458
6498
|
return false;
|
|
6459
6499
|
}
|
|
6460
6500
|
}
|
|
6501
|
+
function sameLoginList(a, b) {
|
|
6502
|
+
const left = [...a ?? []].map((s) => s.trim().toLowerCase()).filter(Boolean).sort();
|
|
6503
|
+
const right = [...b ?? []].map((s) => s.trim().toLowerCase()).filter(Boolean).sort();
|
|
6504
|
+
return left.length === right.length && left.every((login, i) => login === right[i]);
|
|
6505
|
+
}
|
|
6461
6506
|
async function waitForPidExit(pid, timeoutMs) {
|
|
6462
6507
|
const start = Date.now();
|
|
6463
6508
|
while (isPidAlive(pid)) {
|
|
@@ -6466,6 +6511,10 @@ async function waitForPidExit(pid, timeoutMs) {
|
|
|
6466
6511
|
}
|
|
6467
6512
|
return true;
|
|
6468
6513
|
}
|
|
6514
|
+
function resolveSendFollowUp(thread, requested) {
|
|
6515
|
+
if (requested === "steer" || requested === "queue") return requested;
|
|
6516
|
+
return isOrchestratorThread(thread) ? followUpBehavior() : "queue";
|
|
6517
|
+
}
|
|
6469
6518
|
var STALE_AGENT_PID_WAIT_MS = 2500;
|
|
6470
6519
|
function writeLiveStatus(threadId, status, lastError) {
|
|
6471
6520
|
const latest = readThread(threadId);
|
|
@@ -6931,13 +6980,13 @@ var Orchestrator = class {
|
|
|
6931
6980
|
if (thread.status === "archived") {
|
|
6932
6981
|
throw new Error(`Thread is archived: ${thread.id}`);
|
|
6933
6982
|
}
|
|
6934
|
-
const followUp = opts?.followUp === "steer" ? "steer" : "queue";
|
|
6935
6983
|
let shouldSteer = false;
|
|
6936
6984
|
const sent = await withThreadLock(thread.id, async () => {
|
|
6937
6985
|
const current = this.requireThread(thread.id);
|
|
6938
6986
|
if (current.status === "archived") {
|
|
6939
6987
|
throw new Error(`Thread is archived: ${thread.id}`);
|
|
6940
6988
|
}
|
|
6989
|
+
const followUp = resolveSendFollowUp(current, opts?.followUp);
|
|
6941
6990
|
const queue = [...current.queue, prompt];
|
|
6942
6991
|
this.crashContinued.delete(thread.id);
|
|
6943
6992
|
this.jobContinueCount.delete(thread.id);
|
|
@@ -8103,6 +8152,14 @@ var Orchestrator = class {
|
|
|
8103
8152
|
if (nextState && nextState !== prevState) patch.prState = nextState;
|
|
8104
8153
|
const nextDraft = Boolean(meta.isDraft) && nextState !== "MERGED" && nextState !== "CLOSED";
|
|
8105
8154
|
if (nextDraft !== Boolean(thread.prIsDraft)) patch.prIsDraft = nextDraft;
|
|
8155
|
+
const nextAuthor = meta.authorLogin?.trim() || "";
|
|
8156
|
+
if (nextAuthor && nextAuthor !== (thread.prAuthorLogin ?? "").trim()) {
|
|
8157
|
+
patch.prAuthorLogin = nextAuthor;
|
|
8158
|
+
}
|
|
8159
|
+
const nextReviewers = meta.reviewerLogins ?? [];
|
|
8160
|
+
if (!sameLoginList(nextReviewers, thread.prReviewerLogins)) {
|
|
8161
|
+
patch.prReviewerLogins = nextReviewers;
|
|
8162
|
+
}
|
|
8106
8163
|
if (thread.skipAutoArchiveOnMerge && nextState && nextState !== "MERGED" && nextState !== "CLOSED") {
|
|
8107
8164
|
patch.skipAutoArchiveOnMerge = false;
|
|
8108
8165
|
}
|
|
@@ -8130,6 +8187,14 @@ var Orchestrator = class {
|
|
|
8130
8187
|
const sibPatch = { prState: "MERGED", prIsDraft: false };
|
|
8131
8188
|
if (meta.url && meta.url !== t.prUrl) sibPatch.prUrl = meta.url;
|
|
8132
8189
|
if (meta.title && meta.title !== t.prTitle) sibPatch.prTitle = meta.title;
|
|
8190
|
+
const sibAuthor = meta.authorLogin?.trim() || "";
|
|
8191
|
+
if (sibAuthor && sibAuthor !== (t.prAuthorLogin ?? "").trim()) {
|
|
8192
|
+
sibPatch.prAuthorLogin = sibAuthor;
|
|
8193
|
+
}
|
|
8194
|
+
const sibReviewers = meta.reviewerLogins ?? [];
|
|
8195
|
+
if (!sameLoginList(sibReviewers, t.prReviewerLogins)) {
|
|
8196
|
+
sibPatch.prReviewerLogins = sibReviewers;
|
|
8197
|
+
}
|
|
8133
8198
|
if (Object.keys(sibPatch).length > 0) updateThread(t.id, sibPatch);
|
|
8134
8199
|
}
|
|
8135
8200
|
for (const t of siblings) {
|
|
@@ -8430,7 +8495,7 @@ var Orchestrator = class {
|
|
|
8430
8495
|
this.emit({ type: "status_changed", threadId: archived.id, status: "archived" });
|
|
8431
8496
|
if (thread.repoPath && !isGlobalRepoPath(thread.repoPath)) {
|
|
8432
8497
|
try {
|
|
8433
|
-
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-
|
|
8498
|
+
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-YVZYX5H2.js");
|
|
8434
8499
|
await ensureWorkspace2(thread.repoPath);
|
|
8435
8500
|
} catch {
|
|
8436
8501
|
}
|
|
@@ -8484,7 +8549,7 @@ var Orchestrator = class {
|
|
|
8484
8549
|
`Cowboy checkout missing: ${thread.worktreePath}. Re-add the project folder, then restore.`
|
|
8485
8550
|
);
|
|
8486
8551
|
}
|
|
8487
|
-
const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-
|
|
8552
|
+
const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-7LOSSD7G.js");
|
|
8488
8553
|
const slug = thread.worktreePath.split("/").pop();
|
|
8489
8554
|
const dest = thread.worktreePath;
|
|
8490
8555
|
await withRepoGitLock(thread.repoPath, async () => {
|
|
@@ -8594,7 +8659,7 @@ async function startOrchestration(opts) {
|
|
|
8594
8659
|
sourceRef: "default",
|
|
8595
8660
|
...createOpts
|
|
8596
8661
|
}).catch(async () => {
|
|
8597
|
-
const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-
|
|
8662
|
+
const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-7LOSSD7G.js");
|
|
8598
8663
|
const repo = await resolveRepoRoot2(repoPath);
|
|
8599
8664
|
const def = await resolveDefaultBranch2(repo);
|
|
8600
8665
|
return orch.createThread({
|
|
@@ -8604,7 +8669,7 @@ async function startOrchestration(opts) {
|
|
|
8604
8669
|
repoPath: repo
|
|
8605
8670
|
});
|
|
8606
8671
|
});
|
|
8607
|
-
const { updateThread: upd } = await import("./thread-store-
|
|
8672
|
+
const { updateThread: upd } = await import("./thread-store-ZL6GDIDP.js");
|
|
8608
8673
|
const updated = upd(thread.id, {
|
|
8609
8674
|
sourceType: "orchestration",
|
|
8610
8675
|
sourceRef: goal
|
|
@@ -8654,6 +8719,7 @@ export {
|
|
|
8654
8719
|
LIVE_TURN_SPAWN_GRACE_MS,
|
|
8655
8720
|
isPidAlive,
|
|
8656
8721
|
waitForPidExit,
|
|
8722
|
+
resolveSendFollowUp,
|
|
8657
8723
|
Orchestrator,
|
|
8658
8724
|
getOrchestrator,
|
|
8659
8725
|
startOrchestration
|
|
@@ -73,6 +73,8 @@ function createEmptyThread(partial) {
|
|
|
73
73
|
prTitle: partial.prTitle ?? null,
|
|
74
74
|
prState: partial.prState ?? null,
|
|
75
75
|
prIsDraft: Boolean(partial.prIsDraft),
|
|
76
|
+
prAuthorLogin: partial.prAuthorLogin?.trim() || null,
|
|
77
|
+
prReviewerLogins: partial.prReviewerLogins ?? [],
|
|
76
78
|
skipAutoArchiveOnMerge: partial.skipAutoArchiveOnMerge ?? false,
|
|
77
79
|
cowboy: Boolean(partial.cowboy),
|
|
78
80
|
stackId: partial.stackId ?? null,
|
|
@@ -11,13 +11,13 @@ import {
|
|
|
11
11
|
} from "./chunk-Y4MIXGPA.js";
|
|
12
12
|
import {
|
|
13
13
|
isOrchestratorThread
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-XV3EFFZ6.js";
|
|
15
15
|
import {
|
|
16
16
|
codexUnattendedGitConfigArgs,
|
|
17
17
|
mergeAgentGitAuthEnv,
|
|
18
18
|
resolveAgentGitAuthEnv,
|
|
19
19
|
resolveCodexGitWritableRoots
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-XBLN52RZ.js";
|
|
21
21
|
import {
|
|
22
22
|
enrichPathWithNpmGlobalBin,
|
|
23
23
|
isConductorBundledCli,
|
|
@@ -2342,7 +2342,7 @@ var claudeAdapter = {
|
|
|
2342
2342
|
);
|
|
2343
2343
|
}
|
|
2344
2344
|
const mode = permissionMode(thread);
|
|
2345
|
-
const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-
|
|
2345
|
+
const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-C2JMJXYV.js");
|
|
2346
2346
|
const isOrchestrator = isOrchestratorThread2(thread);
|
|
2347
2347
|
const injectedServers = await buildInjectedMcpServers({
|
|
2348
2348
|
includeSideboard: true,
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
} from "./chunk-J7LQVLFQ.js";
|
|
8
8
|
import {
|
|
9
9
|
listThreads
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-TCQAFTSV.js";
|
|
11
11
|
import {
|
|
12
12
|
worktreesRoot
|
|
13
13
|
} from "./chunk-EFVFB2AH.js";
|
|
@@ -2117,7 +2117,7 @@ async function getPr(repoPath, number) {
|
|
|
2117
2117
|
"view",
|
|
2118
2118
|
String(number),
|
|
2119
2119
|
"--json",
|
|
2120
|
-
"number,title,headRefName,url,isCrossRepository"
|
|
2120
|
+
"number,title,headRefName,url,isCrossRepository,author"
|
|
2121
2121
|
];
|
|
2122
2122
|
if (slug) args.push("--repo", slug);
|
|
2123
2123
|
const { stdout, exitCode } = await gh(args, repoPath, { reject: false });
|
|
@@ -2163,7 +2163,7 @@ async function getPrForHeadBranch(repoPath, branch) {
|
|
|
2163
2163
|
"view",
|
|
2164
2164
|
head,
|
|
2165
2165
|
"--json",
|
|
2166
|
-
"number,title,headRefName,url,isCrossRepository"
|
|
2166
|
+
"number,title,headRefName,url,isCrossRepository,author"
|
|
2167
2167
|
];
|
|
2168
2168
|
if (slug) viewArgs.push("--repo", slug);
|
|
2169
2169
|
const viewed = await gh(viewArgs, repoPath, { reject: false });
|
|
@@ -2181,7 +2181,7 @@ async function getPrForHeadBranch(repoPath, branch) {
|
|
|
2181
2181
|
"--head",
|
|
2182
2182
|
listHead,
|
|
2183
2183
|
"--json",
|
|
2184
|
-
"number,title,headRefName,url,isCrossRepository",
|
|
2184
|
+
"number,title,headRefName,url,isCrossRepository,author",
|
|
2185
2185
|
"--limit",
|
|
2186
2186
|
"1",
|
|
2187
2187
|
"--state",
|
|
@@ -2383,7 +2383,7 @@ async function getPrMeta(cwd, selector) {
|
|
|
2383
2383
|
"view",
|
|
2384
2384
|
selector,
|
|
2385
2385
|
"--json",
|
|
2386
|
-
"number,title,url,state,isDraft,reviewDecision,baseRefName,headRefName,isInMergeQueue,mergeStateStatus,mergeable"
|
|
2386
|
+
"number,title,url,state,isDraft,reviewDecision,baseRefName,headRefName,isInMergeQueue,mergeStateStatus,mergeable,author,reviewRequests"
|
|
2387
2387
|
];
|
|
2388
2388
|
if (slug) viewArgs.push("--repo", slug);
|
|
2389
2389
|
let { stdout, exitCode, stderr } = await gh(viewArgs, cwd, { reject: false });
|
|
@@ -2393,7 +2393,7 @@ async function getPrMeta(cwd, selector) {
|
|
|
2393
2393
|
"view",
|
|
2394
2394
|
selector,
|
|
2395
2395
|
"--json",
|
|
2396
|
-
"number,title,url,state,isDraft,reviewDecision,baseRefName,headRefName,mergeStateStatus,mergeable"
|
|
2396
|
+
"number,title,url,state,isDraft,reviewDecision,baseRefName,headRefName,mergeStateStatus,mergeable,author,reviewRequests"
|
|
2397
2397
|
];
|
|
2398
2398
|
if (slug) retry.push("--repo", slug);
|
|
2399
2399
|
({ stdout, exitCode, stderr } = await gh(retry, cwd, { reject: false }));
|
|
@@ -2414,6 +2414,7 @@ async function getPrMeta(cwd, selector) {
|
|
|
2414
2414
|
};
|
|
2415
2415
|
const probed = await probeLocalMergeGate(cwd, gate);
|
|
2416
2416
|
const resolved = probed.gate ?? gate;
|
|
2417
|
+
const author = view.author ?? {};
|
|
2417
2418
|
return {
|
|
2418
2419
|
number: Number(view.number),
|
|
2419
2420
|
title: String(view.title ?? ""),
|
|
@@ -2425,7 +2426,9 @@ async function getPrMeta(cwd, selector) {
|
|
|
2425
2426
|
headRefName: String(view.headRefName ?? ""),
|
|
2426
2427
|
isInMergeQueue: Boolean(resolved.isInMergeQueue),
|
|
2427
2428
|
mergeable: resolved.mergeable,
|
|
2428
|
-
mergeStateStatus: resolved.mergeStateStatus
|
|
2429
|
+
mergeStateStatus: resolved.mergeStateStatus,
|
|
2430
|
+
authorLogin: author.login?.trim() || null,
|
|
2431
|
+
reviewerLogins: humanReviewerLogins(view.reviewRequests)
|
|
2429
2432
|
};
|
|
2430
2433
|
} catch {
|
|
2431
2434
|
return null;
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
} from "./chunk-D6JWYJ4P.js";
|
|
6
6
|
import {
|
|
7
7
|
listThreads
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-GOZ6T3AG.js";
|
|
9
9
|
import {
|
|
10
10
|
ensureWorktreeSideboardIgnored
|
|
11
11
|
} from "./chunk-SYFVUF2C.js";
|
|
@@ -2080,7 +2080,7 @@ async function getPr(repoPath, number) {
|
|
|
2080
2080
|
"view",
|
|
2081
2081
|
String(number),
|
|
2082
2082
|
"--json",
|
|
2083
|
-
"number,title,headRefName,url,isCrossRepository"
|
|
2083
|
+
"number,title,headRefName,url,isCrossRepository,author"
|
|
2084
2084
|
];
|
|
2085
2085
|
if (slug) args.push("--repo", slug);
|
|
2086
2086
|
const { stdout, exitCode } = await gh(args, repoPath, { reject: false });
|
|
@@ -2126,7 +2126,7 @@ async function getPrForHeadBranch(repoPath, branch) {
|
|
|
2126
2126
|
"view",
|
|
2127
2127
|
head,
|
|
2128
2128
|
"--json",
|
|
2129
|
-
"number,title,headRefName,url,isCrossRepository"
|
|
2129
|
+
"number,title,headRefName,url,isCrossRepository,author"
|
|
2130
2130
|
];
|
|
2131
2131
|
if (slug) viewArgs.push("--repo", slug);
|
|
2132
2132
|
const viewed = await gh(viewArgs, repoPath, { reject: false });
|
|
@@ -2144,7 +2144,7 @@ async function getPrForHeadBranch(repoPath, branch) {
|
|
|
2144
2144
|
"--head",
|
|
2145
2145
|
listHead,
|
|
2146
2146
|
"--json",
|
|
2147
|
-
"number,title,headRefName,url,isCrossRepository",
|
|
2147
|
+
"number,title,headRefName,url,isCrossRepository,author",
|
|
2148
2148
|
"--limit",
|
|
2149
2149
|
"1",
|
|
2150
2150
|
"--state",
|
|
@@ -2346,7 +2346,7 @@ async function getPrMeta(cwd, selector) {
|
|
|
2346
2346
|
"view",
|
|
2347
2347
|
selector,
|
|
2348
2348
|
"--json",
|
|
2349
|
-
"number,title,url,state,isDraft,reviewDecision,baseRefName,headRefName,isInMergeQueue,mergeStateStatus,mergeable"
|
|
2349
|
+
"number,title,url,state,isDraft,reviewDecision,baseRefName,headRefName,isInMergeQueue,mergeStateStatus,mergeable,author,reviewRequests"
|
|
2350
2350
|
];
|
|
2351
2351
|
if (slug) viewArgs.push("--repo", slug);
|
|
2352
2352
|
let { stdout, exitCode, stderr } = await gh(viewArgs, cwd, { reject: false });
|
|
@@ -2356,7 +2356,7 @@ async function getPrMeta(cwd, selector) {
|
|
|
2356
2356
|
"view",
|
|
2357
2357
|
selector,
|
|
2358
2358
|
"--json",
|
|
2359
|
-
"number,title,url,state,isDraft,reviewDecision,baseRefName,headRefName,mergeStateStatus,mergeable"
|
|
2359
|
+
"number,title,url,state,isDraft,reviewDecision,baseRefName,headRefName,mergeStateStatus,mergeable,author,reviewRequests"
|
|
2360
2360
|
];
|
|
2361
2361
|
if (slug) retry.push("--repo", slug);
|
|
2362
2362
|
({ stdout, exitCode, stderr } = await gh(retry, cwd, { reject: false }));
|
|
@@ -2377,6 +2377,7 @@ async function getPrMeta(cwd, selector) {
|
|
|
2377
2377
|
};
|
|
2378
2378
|
const probed = await probeLocalMergeGate(cwd, gate);
|
|
2379
2379
|
const resolved = probed.gate ?? gate;
|
|
2380
|
+
const author = view.author ?? {};
|
|
2380
2381
|
return {
|
|
2381
2382
|
number: Number(view.number),
|
|
2382
2383
|
title: String(view.title ?? ""),
|
|
@@ -2388,7 +2389,9 @@ async function getPrMeta(cwd, selector) {
|
|
|
2388
2389
|
headRefName: String(view.headRefName ?? ""),
|
|
2389
2390
|
isInMergeQueue: Boolean(resolved.isInMergeQueue),
|
|
2390
2391
|
mergeable: resolved.mergeable,
|
|
2391
|
-
mergeStateStatus: resolved.mergeStateStatus
|
|
2392
|
+
mergeStateStatus: resolved.mergeStateStatus,
|
|
2393
|
+
authorLogin: author.login?.trim() || null,
|
|
2394
|
+
reviewerLogins: humanReviewerLogins(view.reviewRequests)
|
|
2392
2395
|
};
|
|
2393
2396
|
} catch {
|
|
2394
2397
|
return null;
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
resolveRepoRoot,
|
|
8
8
|
takenSlugsFromThread,
|
|
9
9
|
teamSlugFromName
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-XBLN52RZ.js";
|
|
11
11
|
import {
|
|
12
12
|
ATTACHMENTS_DIR,
|
|
13
13
|
attachmentsGitignoreBody
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
listThreads,
|
|
18
18
|
updateThread,
|
|
19
19
|
writeThread
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-GOZ6T3AG.js";
|
|
21
21
|
import {
|
|
22
22
|
assertOrchestratorCapableAgent,
|
|
23
23
|
formatAccountProfilePlaybookLine,
|
|
@@ -7,13 +7,13 @@ import {
|
|
|
7
7
|
enrichWorkspacesWithGithub,
|
|
8
8
|
ensureGlobalCoordinatorCwd,
|
|
9
9
|
formatWorkspaceInventory
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-7T5XKNOF.js";
|
|
11
|
+
import "./chunk-WXKXSZN4.js";
|
|
12
12
|
import "./chunk-6K64FJDD.js";
|
|
13
13
|
import "./chunk-J7LQVLFQ.js";
|
|
14
14
|
import "./chunk-4TR3HZFT.js";
|
|
15
15
|
import "./chunk-JT7R45JB.js";
|
|
16
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-TCQAFTSV.js";
|
|
17
17
|
import "./chunk-77WWLBCI.js";
|
|
18
18
|
import "./chunk-EFVFB2AH.js";
|
|
19
19
|
import "./chunk-QQKDGPUI.js";
|
|
@@ -9,10 +9,10 @@ import {
|
|
|
9
9
|
enrichWorkspacesWithGithub,
|
|
10
10
|
ensureGlobalCoordinatorCwd,
|
|
11
11
|
formatWorkspaceInventory
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-XV3EFFZ6.js";
|
|
13
|
+
import "./chunk-XBLN52RZ.js";
|
|
14
14
|
import "./chunk-D6JWYJ4P.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-GOZ6T3AG.js";
|
|
16
16
|
import "./chunk-SYFVUF2C.js";
|
|
17
17
|
import "./chunk-FNQNJOHY.js";
|
|
18
18
|
import "./chunk-OKZFTOM2.js";
|
|
@@ -15,13 +15,13 @@ import {
|
|
|
15
15
|
orchestratorSessionPoisonedByBuiltins,
|
|
16
16
|
slackCoordinatorSourceRef,
|
|
17
17
|
takenTeamSlugsForOrchestration
|
|
18
|
-
} from "./chunk-
|
|
19
|
-
import "./chunk-
|
|
18
|
+
} from "./chunk-7T5XKNOF.js";
|
|
19
|
+
import "./chunk-WXKXSZN4.js";
|
|
20
20
|
import "./chunk-6K64FJDD.js";
|
|
21
21
|
import "./chunk-J7LQVLFQ.js";
|
|
22
22
|
import "./chunk-4TR3HZFT.js";
|
|
23
23
|
import "./chunk-JT7R45JB.js";
|
|
24
|
-
import "./chunk-
|
|
24
|
+
import "./chunk-TCQAFTSV.js";
|
|
25
25
|
import "./chunk-77WWLBCI.js";
|
|
26
26
|
import {
|
|
27
27
|
globalAgentCwd
|
|
@@ -17,10 +17,10 @@ import {
|
|
|
17
17
|
orchestratorSessionPoisonedByBuiltins,
|
|
18
18
|
slackCoordinatorSourceRef,
|
|
19
19
|
takenTeamSlugsForOrchestration
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
20
|
+
} from "./chunk-XV3EFFZ6.js";
|
|
21
|
+
import "./chunk-XBLN52RZ.js";
|
|
22
22
|
import "./chunk-D6JWYJ4P.js";
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-GOZ6T3AG.js";
|
|
24
24
|
import "./chunk-SYFVUF2C.js";
|
|
25
25
|
import "./chunk-FNQNJOHY.js";
|
|
26
26
|
import "./chunk-OKZFTOM2.js";
|