@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
|
@@ -32,9 +32,9 @@ import {
|
|
|
32
32
|
resolveLoginCommand,
|
|
33
33
|
resolveQuotaFallbackAgent,
|
|
34
34
|
whichOnPath
|
|
35
|
-
} from "./chunk-
|
|
36
|
-
import "./chunk-
|
|
37
|
-
import "./chunk-
|
|
35
|
+
} from "./chunk-IVJFEB3T.js";
|
|
36
|
+
import "./chunk-7T5XKNOF.js";
|
|
37
|
+
import "./chunk-WXKXSZN4.js";
|
|
38
38
|
import "./chunk-6K64FJDD.js";
|
|
39
39
|
import "./chunk-IEEAVWAP.js";
|
|
40
40
|
import "./chunk-AN3THU7F.js";
|
|
@@ -53,7 +53,7 @@ import {
|
|
|
53
53
|
} from "./chunk-J7LQVLFQ.js";
|
|
54
54
|
import "./chunk-4TR3HZFT.js";
|
|
55
55
|
import "./chunk-JT7R45JB.js";
|
|
56
|
-
import "./chunk-
|
|
56
|
+
import "./chunk-TCQAFTSV.js";
|
|
57
57
|
import "./chunk-77WWLBCI.js";
|
|
58
58
|
import "./chunk-EFVFB2AH.js";
|
|
59
59
|
import "./chunk-QQKDGPUI.js";
|
|
@@ -38,14 +38,14 @@ import {
|
|
|
38
38
|
resolveQuotaFallbackAgent,
|
|
39
39
|
turnCostUsdFromCursorUsage,
|
|
40
40
|
whichOnPath
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-VUFJ5MAN.js";
|
|
42
42
|
import "./chunk-HVIEYTUK.js";
|
|
43
43
|
import "./chunk-Y4MIXGPA.js";
|
|
44
44
|
import "./chunk-VKQGAWHY.js";
|
|
45
|
-
import "./chunk-
|
|
46
|
-
import "./chunk-
|
|
45
|
+
import "./chunk-XV3EFFZ6.js";
|
|
46
|
+
import "./chunk-XBLN52RZ.js";
|
|
47
47
|
import "./chunk-D6JWYJ4P.js";
|
|
48
|
-
import "./chunk-
|
|
48
|
+
import "./chunk-GOZ6T3AG.js";
|
|
49
49
|
import "./chunk-SYFVUF2C.js";
|
|
50
50
|
import {
|
|
51
51
|
conductorBundledBinDir,
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
resolveRepoRoot,
|
|
6
6
|
takenSlugsFromThread,
|
|
7
7
|
teamSlugFromName
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-WXKXSZN4.js";
|
|
9
9
|
import {
|
|
10
10
|
ATTACHMENTS_DIR,
|
|
11
11
|
attachmentsGitignoreBody
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
listThreads,
|
|
29
29
|
updateThread,
|
|
30
30
|
writeThread
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-TCQAFTSV.js";
|
|
32
32
|
import {
|
|
33
33
|
appDataDir,
|
|
34
34
|
globalAgentCwd,
|
|
@@ -75,6 +75,8 @@ function createEmptyThread(partial) {
|
|
|
75
75
|
prTitle: partial.prTitle ?? null,
|
|
76
76
|
prState: partial.prState ?? null,
|
|
77
77
|
prIsDraft: Boolean(partial.prIsDraft),
|
|
78
|
+
prAuthorLogin: partial.prAuthorLogin?.trim() || null,
|
|
79
|
+
prReviewerLogins: partial.prReviewerLogins ?? [],
|
|
78
80
|
skipAutoArchiveOnMerge: partial.skipAutoArchiveOnMerge ?? false,
|
|
79
81
|
cowboy: Boolean(partial.cowboy),
|
|
80
82
|
stackId: partial.stackId ?? null,
|
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
stripBrightsyNdjsonNoise,
|
|
25
25
|
sumUsageList,
|
|
26
26
|
toolDescription
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-IVJFEB3T.js";
|
|
28
28
|
import {
|
|
29
29
|
SLACK_REPLY_FORMATTING,
|
|
30
30
|
addWorkspace,
|
|
@@ -47,7 +47,7 @@ import {
|
|
|
47
47
|
stageAbsolutePathsAsAttachments,
|
|
48
48
|
stageBuffersAsAttachments,
|
|
49
49
|
syncWorkspacesFromThreads
|
|
50
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-7T5XKNOF.js";
|
|
51
51
|
import {
|
|
52
52
|
addPrStackLayer,
|
|
53
53
|
allocateTeamName,
|
|
@@ -97,7 +97,7 @@ import {
|
|
|
97
97
|
worktreeDisplayLabelForGroup,
|
|
98
98
|
worktreeNameFromPath,
|
|
99
99
|
worktreeSlugForTicket
|
|
100
|
-
} from "./chunk-
|
|
100
|
+
} from "./chunk-WXKXSZN4.js";
|
|
101
101
|
import {
|
|
102
102
|
ATTACHMENTS_DIR,
|
|
103
103
|
DETACHED_JOBS_DIR,
|
|
@@ -129,6 +129,7 @@ import {
|
|
|
129
129
|
assertOrchestratorCapableAgent,
|
|
130
130
|
childEnvWithAppSettings,
|
|
131
131
|
coerceOrchestratorAgent,
|
|
132
|
+
followUpBehavior,
|
|
132
133
|
formatViewerContextDirective,
|
|
133
134
|
formatViewerContextReminder,
|
|
134
135
|
getIssueSource,
|
|
@@ -169,7 +170,7 @@ import {
|
|
|
169
170
|
updateThread,
|
|
170
171
|
withThreadLock,
|
|
171
172
|
writeThread
|
|
172
|
-
} from "./chunk-
|
|
173
|
+
} from "./chunk-TCQAFTSV.js";
|
|
173
174
|
import {
|
|
174
175
|
appDataDir,
|
|
175
176
|
findConventionSetup,
|
|
@@ -466,7 +467,7 @@ async function continueSourceThread(threadId, prompt) {
|
|
|
466
467
|
await continueOnReply(threadId, prompt);
|
|
467
468
|
return;
|
|
468
469
|
}
|
|
469
|
-
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-
|
|
470
|
+
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-HOMNNKMT.js");
|
|
470
471
|
await getOrchestrator2().send(threadId, prompt);
|
|
471
472
|
} catch {
|
|
472
473
|
}
|
|
@@ -800,9 +801,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
|
|
|
800
801
|
`Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
|
|
801
802
|
);
|
|
802
803
|
}
|
|
803
|
-
const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-
|
|
804
|
+
const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-2FQU62S2.js");
|
|
804
805
|
if (isGlobalThread2(thread)) {
|
|
805
|
-
const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-
|
|
806
|
+
const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-3NRUXH3F.js");
|
|
806
807
|
ensureGlobalCoordinatorCwd2(
|
|
807
808
|
isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
|
|
808
809
|
);
|
|
@@ -1567,6 +1568,8 @@ function worktreeBindingFrom(from) {
|
|
|
1567
1568
|
prTitle: from.prTitle,
|
|
1568
1569
|
prState: from.prState,
|
|
1569
1570
|
prIsDraft: from.prIsDraft,
|
|
1571
|
+
prAuthorLogin: from.prAuthorLogin,
|
|
1572
|
+
prReviewerLogins: from.prReviewerLogins,
|
|
1570
1573
|
skipAutoArchiveOnMerge: from.skipAutoArchiveOnMerge,
|
|
1571
1574
|
stackId: from.stackId,
|
|
1572
1575
|
stackLayer: from.stackLayer,
|
|
@@ -3162,6 +3165,36 @@ function groupHomeBoardWorktrees(threads, sort = DEFAULT_WORKTREE_SORT, labelOf
|
|
|
3162
3165
|
}
|
|
3163
3166
|
return [...map.values()].map((list) => sortThreadsInWorktree(list)).sort((a, b) => compareWorktreeGroups(a, b, sort, labelOf));
|
|
3164
3167
|
}
|
|
3168
|
+
var DEFAULT_BOARD_OWNERSHIP = "all";
|
|
3169
|
+
function normalizeViewerLogin(login) {
|
|
3170
|
+
return (login ?? "").trim().toLowerCase();
|
|
3171
|
+
}
|
|
3172
|
+
function loginsInclude(logins, viewerLogin) {
|
|
3173
|
+
const me = normalizeViewerLogin(viewerLogin);
|
|
3174
|
+
if (!me) return false;
|
|
3175
|
+
return (logins ?? []).some((login) => normalizeViewerLogin(login) === me);
|
|
3176
|
+
}
|
|
3177
|
+
function classifyWorktreeOwnership(group, viewerLogin = "") {
|
|
3178
|
+
const me = normalizeViewerLogin(viewerLogin);
|
|
3179
|
+
if (group.some((t) => {
|
|
3180
|
+
const author = normalizeViewerLogin(t.prAuthorLogin);
|
|
3181
|
+
return Boolean(author && me && author === me);
|
|
3182
|
+
})) {
|
|
3183
|
+
return "mine";
|
|
3184
|
+
}
|
|
3185
|
+
const reviewing = group.some((t) => {
|
|
3186
|
+
const author = normalizeViewerLogin(t.prAuthorLogin);
|
|
3187
|
+
if (author && me && author !== me) return true;
|
|
3188
|
+
if (t.sourceType === "pr" && (!author || !me || author !== me)) return true;
|
|
3189
|
+
if (me && loginsInclude(t.prReviewerLogins, me)) return true;
|
|
3190
|
+
return false;
|
|
3191
|
+
});
|
|
3192
|
+
return reviewing ? "reviewing" : "mine";
|
|
3193
|
+
}
|
|
3194
|
+
function worktreeMatchesOwnership(group, filter, viewerLogin = "") {
|
|
3195
|
+
if (filter === "all") return true;
|
|
3196
|
+
return classifyWorktreeOwnership(group, viewerLogin) === filter;
|
|
3197
|
+
}
|
|
3165
3198
|
function classifyWorktreeColumn(group) {
|
|
3166
3199
|
if (group.some((t) => isMergedPrState(t.prUrl, t.prState))) return "done";
|
|
3167
3200
|
if (group.some((t) => isOpenPrState(t.prUrl, t.prState) && !t.prIsDraft)) {
|
|
@@ -3519,6 +3552,8 @@ function assembleHomeBoard(input) {
|
|
|
3519
3552
|
const tokens = tokenizeQuery(input.query ?? "");
|
|
3520
3553
|
const repo = input.repoPath?.trim() ?? "";
|
|
3521
3554
|
const kind = input.kind ?? "all";
|
|
3555
|
+
const ownership = input.ownership ?? DEFAULT_BOARD_OWNERSHIP;
|
|
3556
|
+
const viewerLogin = input.viewerLogin ?? "";
|
|
3522
3557
|
const limit = Math.max(1, input.limit ?? BOARD_PAGE_SIZE);
|
|
3523
3558
|
const wsName = input.workspaceName ?? (() => "");
|
|
3524
3559
|
const live = input.threads.filter((t) => t.status !== "archived" && isHomeBoardThread(t));
|
|
@@ -3547,6 +3582,7 @@ function assembleHomeBoard(input) {
|
|
|
3547
3582
|
};
|
|
3548
3583
|
for (const group of groupHomeBoardWorktrees(live)) {
|
|
3549
3584
|
if (!group.some((t) => threadMatchesKind(t, kind))) continue;
|
|
3585
|
+
if (!worktreeMatchesOwnership(group, ownership, viewerLogin)) continue;
|
|
3550
3586
|
const col = classifyWorktreeColumn(group);
|
|
3551
3587
|
if (col === "backlog") continue;
|
|
3552
3588
|
const primary = group[0];
|
|
@@ -3576,7 +3612,7 @@ function assembleHomeBoard(input) {
|
|
|
3576
3612
|
}
|
|
3577
3613
|
return { columns, hidden, totals };
|
|
3578
3614
|
}
|
|
3579
|
-
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.";
|
|
3615
|
+
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.";
|
|
3580
3616
|
|
|
3581
3617
|
// src/threads/create.ts
|
|
3582
3618
|
function persistCreateAttachments(worktreePath, attachments) {
|
|
@@ -3709,6 +3745,7 @@ async function createThread(input, _onSetupLine) {
|
|
|
3709
3745
|
}
|
|
3710
3746
|
let prUrl = null;
|
|
3711
3747
|
let prTitle = null;
|
|
3748
|
+
let prAuthorLogin2 = null;
|
|
3712
3749
|
if (sourceType === "pr") {
|
|
3713
3750
|
const num = Number(input.sourceRef.replace(/^#/, ""));
|
|
3714
3751
|
if (!Number.isFinite(num)) throw new Error(`Invalid PR number: ${input.sourceRef}`);
|
|
@@ -3724,6 +3761,7 @@ async function createThread(input, _onSetupLine) {
|
|
|
3724
3761
|
if (reusedPr) return reusedPr;
|
|
3725
3762
|
sourceIsFork = pr.isCrossRepository;
|
|
3726
3763
|
prUrl = pr.url;
|
|
3764
|
+
prAuthorLogin2 = pr.author?.login?.trim() || null;
|
|
3727
3765
|
const localFetchBranch = `sideboard-pr-${pr.number}`;
|
|
3728
3766
|
await fetchPrHead(repoPath, pr.number, localFetchBranch);
|
|
3729
3767
|
sourceRef = localFetchBranch;
|
|
@@ -3746,6 +3784,7 @@ async function createThread(input, _onSetupLine) {
|
|
|
3746
3784
|
if (existing.url) {
|
|
3747
3785
|
prUrl = existing.url;
|
|
3748
3786
|
prTitle = existing.title;
|
|
3787
|
+
prAuthorLogin2 = existing.author?.login?.trim() || null;
|
|
3749
3788
|
}
|
|
3750
3789
|
}
|
|
3751
3790
|
}
|
|
@@ -3780,14 +3819,15 @@ async function createThread(input, _onSetupLine) {
|
|
|
3780
3819
|
parentThreadId: input.parentThreadId ?? null,
|
|
3781
3820
|
status: "idle",
|
|
3782
3821
|
prUrl,
|
|
3783
|
-
prTitle
|
|
3822
|
+
prTitle,
|
|
3823
|
+
prAuthorLogin: prAuthorLogin2
|
|
3784
3824
|
});
|
|
3785
3825
|
writeThread(thread);
|
|
3786
3826
|
await ensureWorkspace(repoPath);
|
|
3787
3827
|
return readThread(thread.id) ?? thread;
|
|
3788
3828
|
}
|
|
3789
3829
|
async function listLinearIssues(agent, repoPath) {
|
|
3790
|
-
const { getAdapter: getAdapter2 } = await import("./agents-
|
|
3830
|
+
const { getAdapter: getAdapter2 } = await import("./agents-2UD26PUT.js");
|
|
3791
3831
|
await requireAgent(agent, { requireLinear: true });
|
|
3792
3832
|
const adapter = getAdapter2(agent);
|
|
3793
3833
|
if (!adapter.listLinearIssues) {
|
|
@@ -4209,7 +4249,7 @@ async function adoptThread(input) {
|
|
|
4209
4249
|
messages: input.messages ?? []
|
|
4210
4250
|
});
|
|
4211
4251
|
writeThread(thread);
|
|
4212
|
-
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-
|
|
4252
|
+
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-J3M3IPR3.js");
|
|
4213
4253
|
await ensureWorkspace2(repoPath);
|
|
4214
4254
|
const { ensureWorktreeSideboardIgnored: ensureWorktreeSideboardIgnored2 } = await import("./worktree-exclude-X54WSOXM.js");
|
|
4215
4255
|
await ensureWorktreeSideboardIgnored2(input.worktreePath);
|
|
@@ -6691,7 +6731,7 @@ function formatScheduledPrompt(name, prompt) {
|
|
|
6691
6731
|
${prompt}`;
|
|
6692
6732
|
}
|
|
6693
6733
|
async function defaultDeps() {
|
|
6694
|
-
const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-
|
|
6734
|
+
const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-HOMNNKMT.js");
|
|
6695
6735
|
const orch = getOrchestrator2();
|
|
6696
6736
|
return {
|
|
6697
6737
|
findThread: (id) => findThreadByRef(id),
|
|
@@ -6805,6 +6845,11 @@ function isPidAlive(pid) {
|
|
|
6805
6845
|
return false;
|
|
6806
6846
|
}
|
|
6807
6847
|
}
|
|
6848
|
+
function sameLoginList(a, b) {
|
|
6849
|
+
const left = [...a ?? []].map((s) => s.trim().toLowerCase()).filter(Boolean).sort();
|
|
6850
|
+
const right = [...b ?? []].map((s) => s.trim().toLowerCase()).filter(Boolean).sort();
|
|
6851
|
+
return left.length === right.length && left.every((login, i) => login === right[i]);
|
|
6852
|
+
}
|
|
6808
6853
|
async function waitForPidExit(pid, timeoutMs) {
|
|
6809
6854
|
const start = Date.now();
|
|
6810
6855
|
while (isPidAlive(pid)) {
|
|
@@ -6813,6 +6858,10 @@ async function waitForPidExit(pid, timeoutMs) {
|
|
|
6813
6858
|
}
|
|
6814
6859
|
return true;
|
|
6815
6860
|
}
|
|
6861
|
+
function resolveSendFollowUp(thread, requested) {
|
|
6862
|
+
if (requested === "steer" || requested === "queue") return requested;
|
|
6863
|
+
return isOrchestratorThread(thread) ? followUpBehavior() : "queue";
|
|
6864
|
+
}
|
|
6816
6865
|
var STALE_AGENT_PID_WAIT_MS = 2500;
|
|
6817
6866
|
function writeLiveStatus(threadId, status, lastError) {
|
|
6818
6867
|
const latest = readThread(threadId);
|
|
@@ -7278,13 +7327,13 @@ var Orchestrator = class {
|
|
|
7278
7327
|
if (thread.status === "archived") {
|
|
7279
7328
|
throw new Error(`Thread is archived: ${thread.id}`);
|
|
7280
7329
|
}
|
|
7281
|
-
const followUp = opts?.followUp === "steer" ? "steer" : "queue";
|
|
7282
7330
|
let shouldSteer = false;
|
|
7283
7331
|
const sent = await withThreadLock(thread.id, async () => {
|
|
7284
7332
|
const current = this.requireThread(thread.id);
|
|
7285
7333
|
if (current.status === "archived") {
|
|
7286
7334
|
throw new Error(`Thread is archived: ${thread.id}`);
|
|
7287
7335
|
}
|
|
7336
|
+
const followUp = resolveSendFollowUp(current, opts?.followUp);
|
|
7288
7337
|
const queue = [...current.queue, prompt];
|
|
7289
7338
|
this.crashContinued.delete(thread.id);
|
|
7290
7339
|
this.jobContinueCount.delete(thread.id);
|
|
@@ -8450,6 +8499,14 @@ var Orchestrator = class {
|
|
|
8450
8499
|
if (nextState && nextState !== prevState) patch.prState = nextState;
|
|
8451
8500
|
const nextDraft = Boolean(meta.isDraft) && nextState !== "MERGED" && nextState !== "CLOSED";
|
|
8452
8501
|
if (nextDraft !== Boolean(thread.prIsDraft)) patch.prIsDraft = nextDraft;
|
|
8502
|
+
const nextAuthor = meta.authorLogin?.trim() || "";
|
|
8503
|
+
if (nextAuthor && nextAuthor !== (thread.prAuthorLogin ?? "").trim()) {
|
|
8504
|
+
patch.prAuthorLogin = nextAuthor;
|
|
8505
|
+
}
|
|
8506
|
+
const nextReviewers = meta.reviewerLogins ?? [];
|
|
8507
|
+
if (!sameLoginList(nextReviewers, thread.prReviewerLogins)) {
|
|
8508
|
+
patch.prReviewerLogins = nextReviewers;
|
|
8509
|
+
}
|
|
8453
8510
|
if (thread.skipAutoArchiveOnMerge && nextState && nextState !== "MERGED" && nextState !== "CLOSED") {
|
|
8454
8511
|
patch.skipAutoArchiveOnMerge = false;
|
|
8455
8512
|
}
|
|
@@ -8477,6 +8534,14 @@ var Orchestrator = class {
|
|
|
8477
8534
|
const sibPatch = { prState: "MERGED", prIsDraft: false };
|
|
8478
8535
|
if (meta.url && meta.url !== t.prUrl) sibPatch.prUrl = meta.url;
|
|
8479
8536
|
if (meta.title && meta.title !== t.prTitle) sibPatch.prTitle = meta.title;
|
|
8537
|
+
const sibAuthor = meta.authorLogin?.trim() || "";
|
|
8538
|
+
if (sibAuthor && sibAuthor !== (t.prAuthorLogin ?? "").trim()) {
|
|
8539
|
+
sibPatch.prAuthorLogin = sibAuthor;
|
|
8540
|
+
}
|
|
8541
|
+
const sibReviewers = meta.reviewerLogins ?? [];
|
|
8542
|
+
if (!sameLoginList(sibReviewers, t.prReviewerLogins)) {
|
|
8543
|
+
sibPatch.prReviewerLogins = sibReviewers;
|
|
8544
|
+
}
|
|
8480
8545
|
if (Object.keys(sibPatch).length > 0) updateThread(t.id, sibPatch);
|
|
8481
8546
|
}
|
|
8482
8547
|
for (const t of siblings) {
|
|
@@ -8777,7 +8842,7 @@ var Orchestrator = class {
|
|
|
8777
8842
|
this.emit({ type: "status_changed", threadId: archived.id, status: "archived" });
|
|
8778
8843
|
if (thread.repoPath && !isGlobalRepoPath(thread.repoPath)) {
|
|
8779
8844
|
try {
|
|
8780
|
-
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-
|
|
8845
|
+
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-J3M3IPR3.js");
|
|
8781
8846
|
await ensureWorkspace2(thread.repoPath);
|
|
8782
8847
|
} catch {
|
|
8783
8848
|
}
|
|
@@ -8831,7 +8896,7 @@ var Orchestrator = class {
|
|
|
8831
8896
|
`Cowboy checkout missing: ${thread.worktreePath}. Re-add the project folder, then restore.`
|
|
8832
8897
|
);
|
|
8833
8898
|
}
|
|
8834
|
-
const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-
|
|
8899
|
+
const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-LPWTX2NA.js");
|
|
8835
8900
|
const slug = thread.worktreePath.split("/").pop();
|
|
8836
8901
|
const dest = thread.worktreePath;
|
|
8837
8902
|
await withRepoGitLock(thread.repoPath, async () => {
|
|
@@ -8941,7 +9006,7 @@ async function startOrchestration(opts) {
|
|
|
8941
9006
|
sourceRef: "default",
|
|
8942
9007
|
...createOpts
|
|
8943
9008
|
}).catch(async () => {
|
|
8944
|
-
const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-
|
|
9009
|
+
const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-LPWTX2NA.js");
|
|
8945
9010
|
const repo = await resolveRepoRoot2(repoPath);
|
|
8946
9011
|
const def = await resolveDefaultBranch2(repo);
|
|
8947
9012
|
return orch.createThread({
|
|
@@ -8951,7 +9016,7 @@ async function startOrchestration(opts) {
|
|
|
8951
9016
|
repoPath: repo
|
|
8952
9017
|
});
|
|
8953
9018
|
});
|
|
8954
|
-
const { updateThread: upd } = await import("./thread-store-
|
|
9019
|
+
const { updateThread: upd } = await import("./thread-store-RXXNSRVO.js");
|
|
8955
9020
|
const updated = upd(thread.id, {
|
|
8956
9021
|
sourceType: "orchestration",
|
|
8957
9022
|
sourceRef: goal
|
|
@@ -9195,6 +9260,7 @@ export {
|
|
|
9195
9260
|
LIVE_TURN_SPAWN_GRACE_MS,
|
|
9196
9261
|
isPidAlive,
|
|
9197
9262
|
waitForPidExit,
|
|
9263
|
+
resolveSendFollowUp,
|
|
9198
9264
|
Orchestrator,
|
|
9199
9265
|
getOrchestrator,
|
|
9200
9266
|
startOrchestration,
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isOrchestratorThread
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7T5XKNOF.js";
|
|
4
4
|
import {
|
|
5
5
|
codexUnattendedGitConfigArgs,
|
|
6
6
|
mergeAgentGitAuthEnv,
|
|
7
7
|
resolveAgentGitAuthEnv,
|
|
8
8
|
resolveCodexGitWritableRoots
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-WXKXSZN4.js";
|
|
10
10
|
import {
|
|
11
11
|
applyConnectedTeamToCli,
|
|
12
12
|
brightsyMcpServerName,
|
|
@@ -1898,7 +1898,7 @@ var claudeAdapter = {
|
|
|
1898
1898
|
);
|
|
1899
1899
|
}
|
|
1900
1900
|
const mode = permissionMode(thread);
|
|
1901
|
-
const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-
|
|
1901
|
+
const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-2FQU62S2.js");
|
|
1902
1902
|
const isOrchestrator = isOrchestratorThread2(thread);
|
|
1903
1903
|
const injectedServers = await buildInjectedMcpServers({
|
|
1904
1904
|
includeSideboard: true,
|