@sideboard-ai/core 0.1.315 → 0.1.317
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/{abletime-QQZWYJXC.js → abletime-NZ2ABWAL.js} +3 -3
- package/dist/{abletime-QK3KMRQD.js → abletime-TKAFNXCM.js} +3 -3
- package/dist/{abletime-oauth-CAHTMB4V.js → abletime-oauth-CBFFBINA.js} +2 -2
- package/dist/{abletime-oauth-I2RRPVKT.js → abletime-oauth-S4AXA4WR.js} +2 -2
- package/dist/{abletime-rest-5V4KGMSY.js → abletime-rest-NSOP72AI.js} +2 -2
- package/dist/{abletime-rest-W5TLQK7C.js → abletime-rest-ORBELZQO.js} +2 -2
- package/dist/{agents-Y3M3EKLY.js → agents-BJVSYC6Y.js} +4 -4
- package/dist/{agents-5XJ7EHGU.js → agents-KABJUDPI.js} +4 -4
- package/dist/{chunk-IODJCVMN.js → chunk-4XZJYBO2.js} +6 -34
- package/dist/{chunk-JRZTJ4F7.js → chunk-7SCVGGF6.js} +4 -4
- package/dist/{chunk-5CTG5W7S.js → chunk-A46CIARU.js} +1 -1
- package/dist/{chunk-PN32Z4JL.js → chunk-A6C67DY5.js} +2 -2
- package/dist/{chunk-CYPFOIUK.js → chunk-BXTISNKW.js} +16 -16
- package/dist/{chunk-7J2KOIYD.js → chunk-CCUGIVYN.js} +2 -2
- package/dist/{chunk-DV6ID6CK.js → chunk-ELBK34TY.js} +4 -4
- package/dist/{chunk-FVTR54LY.js → chunk-GH7UMULC.js} +4 -4
- package/dist/{chunk-MKGSMPWB.js → chunk-GXSV3X3L.js} +2 -2
- package/dist/{chunk-U35AHE2P.js → chunk-HOLB6ZFZ.js} +33 -2
- package/dist/{chunk-72OWKHFJ.js → chunk-I5CLCWUK.js} +2 -2
- package/dist/{chunk-YR7NZYUT.js → chunk-NRSC4N5X.js} +6 -34
- package/dist/{chunk-GFM63DTU.js → chunk-PX324N7P.js} +2 -2
- package/dist/{chunk-BMORGDYI.js → chunk-U53JICJ2.js} +18 -17
- package/dist/{chunk-NZVD5EVX.js → chunk-VVV7EI6T.js} +2 -1
- package/dist/{chunk-Y4WARKPW.js → chunk-VZAJVX36.js} +2 -1
- package/dist/{chunk-NKVNHBDB.js → chunk-XWUDFLBX.js} +3 -3
- package/dist/{chunk-CHUPIJP7.js → chunk-YEIHCSZS.js} +63 -2
- package/dist/{chunk-BPBDGJ43.js → chunk-YN6XONV5.js} +1 -1
- package/dist/{conductor-IMKNYQWZ.js → conductor-NIUBJLTS.js} +4 -4
- package/dist/{conductor-DKWTQADV.js → conductor-TP2NA44I.js} +4 -4
- package/dist/{coordinator-prompt-HUZC4DZ2.js → coordinator-prompt-3CT3D5UM.js} +3 -3
- package/dist/{coordinator-prompt-SPOYUZG5.js → coordinator-prompt-FQC2SZPP.js} +3 -3
- package/dist/{global-workspace-3NNDDTFD.js → global-workspace-72K6D354.js} +3 -3
- package/dist/{global-workspace-SK4JQBPN.js → global-workspace-BUWMRNW5.js} +3 -3
- package/dist/index.cjs +360 -42
- package/dist/index.d.cts +11 -5
- package/dist/index.d.ts +11 -5
- package/dist/index.js +301 -21
- package/dist/mcp/run-stdio.cjs +38 -34
- package/dist/mcp/run-stdio.js +9 -9
- package/dist/{orchestrator-4XFRK57E.js → orchestrator-E72HYGTB.js} +6 -6
- package/dist/{orchestrator-ZRMZ4TCL.js → orchestrator-N54V3B76.js} +6 -6
- package/dist/{thread-store-5OF6M6VZ.js → thread-store-7BBA63KV.js} +1 -1
- package/dist/{thread-store-GOVVXQV2.js → thread-store-PLNIWFZ4.js} +1 -1
- package/dist/{workspaces-EYNZDL45.js → workspaces-2V5UYPYC.js} +3 -3
- package/dist/{workspaces-52L6NZ3P.js → workspaces-GAUHXBUL.js} +3 -3
- package/dist/{worktree-BP5ICYQ2.js → worktree-6FUQ7FEF.js} +2 -2
- package/dist/{worktree-UCOSAI7J.js → worktree-XJKLDYOL.js} +2 -2
- package/package.json +1 -1
|
@@ -11,11 +11,11 @@ import {
|
|
|
11
11
|
isGlobalThread,
|
|
12
12
|
isOrchestratorThread,
|
|
13
13
|
isSlackCoordinatorThread
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-A6C67DY5.js";
|
|
15
15
|
import {
|
|
16
16
|
mergeAgentGitAuthEnv,
|
|
17
17
|
resolveAgentGitAuthEnv
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-A46CIARU.js";
|
|
19
19
|
import {
|
|
20
20
|
ATTACHMENTS_DIR,
|
|
21
21
|
DETACHED_JOBS_DIR,
|
|
@@ -37,6 +37,7 @@ import {
|
|
|
37
37
|
stripNestedElectronEnv
|
|
38
38
|
} from "./chunk-WWUABK6B.js";
|
|
39
39
|
import {
|
|
40
|
+
REVIEW_TAB_TITLE,
|
|
40
41
|
allocateTeamName,
|
|
41
42
|
createEmptyThread,
|
|
42
43
|
findThreadByRef,
|
|
@@ -46,7 +47,7 @@ import {
|
|
|
46
47
|
updateThread,
|
|
47
48
|
worktreeNameFromPath,
|
|
48
49
|
writeThread
|
|
49
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-HOLB6ZFZ.js";
|
|
50
51
|
import {
|
|
51
52
|
findConventionSetup,
|
|
52
53
|
loadRepoSettings,
|
|
@@ -665,6 +666,7 @@ function worktreeBindingFrom(from) {
|
|
|
665
666
|
prIsInMergeQueue: from.prIsInMergeQueue,
|
|
666
667
|
prLabels: from.prLabels,
|
|
667
668
|
prChecksFailed: from.prChecksFailed,
|
|
669
|
+
issueBlockedBy: from.issueBlockedBy,
|
|
668
670
|
skipAutoArchiveOnMerge: from.skipAutoArchiveOnMerge,
|
|
669
671
|
stackId: from.stackId,
|
|
670
672
|
stackLayer: from.stackLayer,
|
|
@@ -761,32 +763,6 @@ function forkChatTab(input) {
|
|
|
761
763
|
return tab;
|
|
762
764
|
}
|
|
763
765
|
|
|
764
|
-
// src/review/review-write-gate.ts
|
|
765
|
-
var REVIEW_TAB_TITLE = "Review";
|
|
766
|
-
function hasLiveReviewSibling(thread, siblings = []) {
|
|
767
|
-
const selfId = thread.id;
|
|
768
|
-
return siblings.some(
|
|
769
|
-
(t) => t.id !== selfId && t.status !== "archived" && t.title.trim() === REVIEW_TAB_TITLE
|
|
770
|
-
);
|
|
771
|
-
}
|
|
772
|
-
function isReviewWriteGatedThread(thread, siblings) {
|
|
773
|
-
if (thread.sourceType === "pr" || thread.title.trim() === REVIEW_TAB_TITLE) {
|
|
774
|
-
return true;
|
|
775
|
-
}
|
|
776
|
-
return hasLiveReviewSibling(thread, siblings);
|
|
777
|
-
}
|
|
778
|
-
function formatReviewWriteGateDirective() {
|
|
779
|
-
return [
|
|
780
|
-
"Review writes are public. The PR or ticket author sees GitHub/Linear/AbleTime comments, ticket updates, and submitted reviews immediately \u2014 a draft will confuse them.",
|
|
781
|
-
"Write the recommendation in chat so the user can work through the feedback first. Do not call github_comment, linear_comment, abletime_comment, github_update_issue, linear_update_issue, abletime_update_task, or run `gh pr review` / `gh pr comment`, until they type a next step that asks you to post.",
|
|
782
|
-
"After the review is in chat, stop. Do not call ask_user. The user needs time to read and will type the next steps. If they already asked you to post a specific comment or update in this turn, that is confirmation.",
|
|
783
|
-
"Do not request reviewers, change labels, or assign yourself unless they asked \u2014 those also notify the author."
|
|
784
|
-
].join("\n");
|
|
785
|
-
}
|
|
786
|
-
function formatReviewWriteGateReminder() {
|
|
787
|
-
return "Review writes: keep the review in chat. Do not ask_user after it \u2014 they read and type next steps. Do not github_comment / linear_comment / *_update_* / `gh pr review` on the PR or ticket until they ask. Authors see those immediately.";
|
|
788
|
-
}
|
|
789
|
-
|
|
790
766
|
// src/review/review-request-template.ts
|
|
791
767
|
var REVIEW_REQUEST_TEMPLATE = `# Review guidelines:
|
|
792
768
|
|
|
@@ -1702,7 +1678,7 @@ var PORT_RANGE_SIZE = 10;
|
|
|
1702
1678
|
var RECLAIM_RETRY_DELAY_MS = 40;
|
|
1703
1679
|
var RECLAIM_TRIES = 8;
|
|
1704
1680
|
async function killReclaimable(ports, worktreePath, signal) {
|
|
1705
|
-
const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-
|
|
1681
|
+
const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-NIUBJLTS.js");
|
|
1706
1682
|
if (worktreePath) killStaleWorktreeListeners2(ports, worktreePath, signal);
|
|
1707
1683
|
else killListenersOnPorts2(ports);
|
|
1708
1684
|
}
|
|
@@ -2410,10 +2386,6 @@ export {
|
|
|
2410
2386
|
buildForkTranscriptAttachment,
|
|
2411
2387
|
createChatTab,
|
|
2412
2388
|
forkChatTab,
|
|
2413
|
-
REVIEW_TAB_TITLE,
|
|
2414
|
-
isReviewWriteGatedThread,
|
|
2415
|
-
formatReviewWriteGateDirective,
|
|
2416
|
-
formatReviewWriteGateReminder,
|
|
2417
2389
|
requestReview,
|
|
2418
2390
|
RUN_PORTS_REL,
|
|
2419
2391
|
worktreeRunPortsPath,
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
ensureGhPreferOrigin,
|
|
4
4
|
resolveGithubRepoSlug,
|
|
5
5
|
resolveRepoRoot
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-YN6XONV5.js";
|
|
7
7
|
import {
|
|
8
8
|
allocateTeamName,
|
|
9
9
|
createEmptyThread,
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
teamSlugFromName,
|
|
13
13
|
updateThread,
|
|
14
14
|
writeThread
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-YEIHCSZS.js";
|
|
16
16
|
import {
|
|
17
17
|
ATTACHMENTS_DIR,
|
|
18
18
|
attachmentsGitignoreBody
|
|
@@ -14,9 +14,8 @@ import {
|
|
|
14
14
|
parseSessionQuotaResetAt,
|
|
15
15
|
planModeTurnInstruction,
|
|
16
16
|
resolveQuotaFallbackAgent
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-XWUDFLBX.js";
|
|
18
18
|
import {
|
|
19
|
-
REVIEW_TAB_TITLE,
|
|
20
19
|
applyWorktreePkgCacheEnv,
|
|
21
20
|
askBlockStillWaiting,
|
|
22
21
|
buildBrightsySessionSeed,
|
|
@@ -28,13 +27,10 @@ import {
|
|
|
28
27
|
extractPendingPlanQuestions,
|
|
29
28
|
forkChatTab,
|
|
30
29
|
forkMessageSlice,
|
|
31
|
-
formatReviewWriteGateDirective,
|
|
32
|
-
formatReviewWriteGateReminder,
|
|
33
30
|
getDefaultRunScript,
|
|
34
31
|
getRunMode,
|
|
35
32
|
isAskUserToolName,
|
|
36
33
|
isJobContinuePrompt,
|
|
37
|
-
isReviewWriteGatedThread,
|
|
38
34
|
isWorktreeRunProcessKey,
|
|
39
35
|
killDetachedRunTree,
|
|
40
36
|
killListenersOnPorts,
|
|
@@ -56,7 +52,7 @@ import {
|
|
|
56
52
|
worktreeDevProcessKey,
|
|
57
53
|
worktreeRunProcessKey,
|
|
58
54
|
worktreeSetupProcessKey
|
|
59
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-4XZJYBO2.js";
|
|
60
56
|
import {
|
|
61
57
|
applyAgentEvent,
|
|
62
58
|
clipAgentEventForPaint,
|
|
@@ -103,7 +99,7 @@ import {
|
|
|
103
99
|
stageAbsolutePathsAsAttachments,
|
|
104
100
|
stageBuffersAsAttachments,
|
|
105
101
|
syncWorkspacesFromThreads
|
|
106
|
-
} from "./chunk-
|
|
102
|
+
} from "./chunk-PX324N7P.js";
|
|
107
103
|
import {
|
|
108
104
|
addPrStackLayer,
|
|
109
105
|
allocateTeamSlug,
|
|
@@ -147,14 +143,18 @@ import {
|
|
|
147
143
|
resolveRepoRoot,
|
|
148
144
|
switchWorktreeBranch,
|
|
149
145
|
withRepoGitLock
|
|
150
|
-
} from "./chunk-
|
|
146
|
+
} from "./chunk-YN6XONV5.js";
|
|
151
147
|
import {
|
|
148
|
+
REVIEW_TAB_TITLE,
|
|
152
149
|
agentNicknameFromWorktreePath,
|
|
153
150
|
appendMessage,
|
|
154
151
|
createEmptyThread,
|
|
155
152
|
deleteThreadRecord,
|
|
156
153
|
findThreadByRef,
|
|
154
|
+
formatReviewWriteGateDirective,
|
|
155
|
+
formatReviewWriteGateReminder,
|
|
157
156
|
isPlaceholderBranch,
|
|
157
|
+
isReviewWriteGatedThread,
|
|
158
158
|
isWorktreeIdentityTitle,
|
|
159
159
|
listThreads,
|
|
160
160
|
normalizeWorkspaceTags,
|
|
@@ -171,7 +171,7 @@ import {
|
|
|
171
171
|
worktreeNameFromPath,
|
|
172
172
|
worktreeSlugForTicket,
|
|
173
173
|
writeThread
|
|
174
|
-
} from "./chunk-
|
|
174
|
+
} from "./chunk-YEIHCSZS.js";
|
|
175
175
|
import {
|
|
176
176
|
mcpServerIdForPermission,
|
|
177
177
|
mcpServerPermissionUpdate
|
|
@@ -461,9 +461,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
|
|
|
461
461
|
`Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
|
|
462
462
|
);
|
|
463
463
|
}
|
|
464
|
-
const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-
|
|
464
|
+
const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-72K6D354.js");
|
|
465
465
|
if (isGlobalThread2(thread)) {
|
|
466
|
-
const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-
|
|
466
|
+
const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-FQC2SZPP.js");
|
|
467
467
|
ensureGlobalCoordinatorCwd2(
|
|
468
468
|
isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
|
|
469
469
|
);
|
|
@@ -2989,7 +2989,7 @@ async function createThread(input, _onSetupLine) {
|
|
|
2989
2989
|
let sourceIsFork = false;
|
|
2990
2990
|
if (!input.cowboy && sourceType === "branch" && (!sourceRef || sourceRef === "HEAD" || sourceRef === "default")) {
|
|
2991
2991
|
if (isAbleTimeConnected() && getIssueSource() === "abletime") {
|
|
2992
|
-
const { ensureAbleTimeTask, issueAttachmentForAbleTimeTask } = await import("./abletime-
|
|
2992
|
+
const { ensureAbleTimeTask, issueAttachmentForAbleTimeTask } = await import("./abletime-NZ2ABWAL.js");
|
|
2993
2993
|
const task = await ensureAbleTimeTask({
|
|
2994
2994
|
title: title?.trim() || "Untitled work",
|
|
2995
2995
|
description: input.prompt?.trim() || void 0
|
|
@@ -3100,7 +3100,7 @@ async function createThread(input, _onSetupLine) {
|
|
|
3100
3100
|
return readThread(thread.id) ?? thread;
|
|
3101
3101
|
}
|
|
3102
3102
|
async function listLinearIssues(agent, repoPath) {
|
|
3103
|
-
const { getAdapter: getAdapter2 } = await import("./agents-
|
|
3103
|
+
const { getAdapter: getAdapter2 } = await import("./agents-BJVSYC6Y.js");
|
|
3104
3104
|
await requireAgent(agent, { requireLinear: true });
|
|
3105
3105
|
const adapter = getAdapter2(agent);
|
|
3106
3106
|
if (!adapter.listLinearIssues) {
|
|
@@ -3877,7 +3877,7 @@ async function adoptThread(input) {
|
|
|
3877
3877
|
messages: input.messages ?? []
|
|
3878
3878
|
});
|
|
3879
3879
|
writeThread(thread);
|
|
3880
|
-
const { addWorkspace: addWorkspace2 } = await import("./workspaces-
|
|
3880
|
+
const { addWorkspace: addWorkspace2 } = await import("./workspaces-GAUHXBUL.js");
|
|
3881
3881
|
await addWorkspace2(repoPath);
|
|
3882
3882
|
const { ensureWorktreeSideboardIgnored } = await import("./worktree-exclude-RXZPTCNH.js");
|
|
3883
3883
|
await ensureWorktreeSideboardIgnored(input.worktreePath);
|
|
@@ -6815,7 +6815,7 @@ function formatScheduledPrompt(name, prompt) {
|
|
|
6815
6815
|
${prompt}`;
|
|
6816
6816
|
}
|
|
6817
6817
|
async function defaultDeps() {
|
|
6818
|
-
const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-
|
|
6818
|
+
const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-E72HYGTB.js");
|
|
6819
6819
|
const orch = getOrchestrator2();
|
|
6820
6820
|
return {
|
|
6821
6821
|
findThread: (id) => findThreadByRef(id),
|
|
@@ -9697,7 +9697,7 @@ async function startOrchestration(opts) {
|
|
|
9697
9697
|
sourceRef: "default",
|
|
9698
9698
|
...createOpts
|
|
9699
9699
|
}).catch(async () => {
|
|
9700
|
-
const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-
|
|
9700
|
+
const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-6FUQ7FEF.js");
|
|
9701
9701
|
const repo = await resolveRepoRoot2(repoPath);
|
|
9702
9702
|
const def = await resolveDefaultBranch2(repo);
|
|
9703
9703
|
return orch.createThread({
|
|
@@ -9707,7 +9707,7 @@ async function startOrchestration(opts) {
|
|
|
9707
9707
|
repoPath: repo
|
|
9708
9708
|
});
|
|
9709
9709
|
});
|
|
9710
|
-
const { updateThread: upd } = await import("./thread-store-
|
|
9710
|
+
const { updateThread: upd } = await import("./thread-store-7BBA63KV.js");
|
|
9711
9711
|
const updated = upd(thread.id, {
|
|
9712
9712
|
sourceType: "orchestration",
|
|
9713
9713
|
sourceRef: goal
|
|
@@ -9730,6 +9730,7 @@ export {
|
|
|
9730
9730
|
sidebarRowAgentBlock,
|
|
9731
9731
|
sidebarParentSelectId,
|
|
9732
9732
|
sidebarQuestionThreadId,
|
|
9733
|
+
issueBlockedByIds,
|
|
9733
9734
|
reviewLabelForRepo,
|
|
9734
9735
|
classifyWorktreeListBadges,
|
|
9735
9736
|
isHomeBoardThread,
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
normalizeAbleTimeCredential,
|
|
5
5
|
normalizeAbleTimeHost,
|
|
6
6
|
rewriteAbleTimeError
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-ELBK34TY.js";
|
|
8
8
|
import {
|
|
9
9
|
httpFetch
|
|
10
10
|
} from "./chunk-JAT3JFOS.js";
|
|
@@ -153,6 +153,7 @@ function restTaskToRaw(raw, users) {
|
|
|
153
153
|
projectId: asString(rec.projectId),
|
|
154
154
|
categoryId: asString(rec.projectCategoryId) || asString(rec.categoryId),
|
|
155
155
|
parentId: asString(rec.parentTaskId) || asString(rec.parentId),
|
|
156
|
+
depends_on: rec.dependencyParentTimeflowTaskId ?? null,
|
|
156
157
|
tags: rec.tags,
|
|
157
158
|
comments,
|
|
158
159
|
attachments: rec.attachments ?? rec.files ?? rec.media,
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
normalizeAbleTimeCredential,
|
|
7
7
|
normalizeAbleTimeHost,
|
|
8
8
|
rewriteAbleTimeError
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-7SCVGGF6.js";
|
|
10
10
|
import {
|
|
11
11
|
httpFetch
|
|
12
12
|
} from "./chunk-2GPQZZLY.js";
|
|
@@ -155,6 +155,7 @@ function restTaskToRaw(raw, users) {
|
|
|
155
155
|
projectId: asString(rec.projectId),
|
|
156
156
|
categoryId: asString(rec.projectCategoryId) || asString(rec.categoryId),
|
|
157
157
|
parentId: asString(rec.parentTaskId) || asString(rec.parentId),
|
|
158
|
+
depends_on: rec.dependencyParentTimeflowTaskId ?? null,
|
|
158
159
|
tags: rec.tags,
|
|
159
160
|
comments,
|
|
160
161
|
attachments: rec.attachments ?? rec.files ?? rec.media,
|
|
@@ -12,13 +12,13 @@ import {
|
|
|
12
12
|
} from "./chunk-7Q327QF2.js";
|
|
13
13
|
import {
|
|
14
14
|
isOrchestratorThread
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-PX324N7P.js";
|
|
16
16
|
import {
|
|
17
17
|
codexUnattendedGitConfigArgs,
|
|
18
18
|
mergeAgentGitAuthEnv,
|
|
19
19
|
resolveAgentGitAuthEnv,
|
|
20
20
|
resolveCodexGitWritableRoots
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-YN6XONV5.js";
|
|
22
22
|
import {
|
|
23
23
|
loadBrightsyConfig
|
|
24
24
|
} from "./chunk-RSA47QYR.js";
|
|
@@ -2609,7 +2609,7 @@ var claudeAdapter = {
|
|
|
2609
2609
|
);
|
|
2610
2610
|
}
|
|
2611
2611
|
const mode = permissionMode(thread);
|
|
2612
|
-
const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-
|
|
2612
|
+
const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-72K6D354.js");
|
|
2613
2613
|
const isOrchestrator = isOrchestratorThread2(thread);
|
|
2614
2614
|
const rpc = worktreeAgentRpc(isOrchestrator);
|
|
2615
2615
|
const injectedServers = await buildInjectedMcpServers({
|
|
@@ -16,6 +16,32 @@ import {
|
|
|
16
16
|
// src/store/thread-store.ts
|
|
17
17
|
import { randomUUID } from "crypto";
|
|
18
18
|
|
|
19
|
+
// src/review/review-write-gate.ts
|
|
20
|
+
var REVIEW_TAB_TITLE = "Review";
|
|
21
|
+
function hasLiveReviewSibling(thread, siblings = []) {
|
|
22
|
+
const selfId = thread.id;
|
|
23
|
+
return siblings.some(
|
|
24
|
+
(t) => t.id !== selfId && t.status !== "archived" && t.title.trim() === REVIEW_TAB_TITLE
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
function isReviewWriteGatedThread(thread, siblings) {
|
|
28
|
+
if (thread.sourceType === "pr" || thread.title.trim() === REVIEW_TAB_TITLE) {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
return hasLiveReviewSibling(thread, siblings);
|
|
32
|
+
}
|
|
33
|
+
function formatReviewWriteGateDirective() {
|
|
34
|
+
return [
|
|
35
|
+
"Review writes are public. The PR or ticket author sees GitHub/Linear/AbleTime comments, ticket updates, and submitted reviews immediately \u2014 a draft will confuse them.",
|
|
36
|
+
"Write the recommendation in chat so the user can work through the feedback first. Do not call github_comment, linear_comment, abletime_comment, github_update_issue, linear_update_issue, abletime_update_task, or run `gh pr review` / `gh pr comment`, until they type a next step that asks you to post.",
|
|
37
|
+
"After the review is in chat, stop. Do not call ask_user. The user needs time to read and will type the next steps. If they already asked you to post a specific comment or update in this turn, that is confirmation.",
|
|
38
|
+
"Do not request reviewers, change labels, or assign yourself unless they asked \u2014 those also notify the author."
|
|
39
|
+
].join("\n");
|
|
40
|
+
}
|
|
41
|
+
function formatReviewWriteGateReminder() {
|
|
42
|
+
return "Review writes: keep the review in chat. Do not ask_user after it \u2014 they read and type next steps. Do not github_comment / linear_comment / *_update_* / `gh pr review` on the PR or ticket until they ask. Authors see those immediately.";
|
|
43
|
+
}
|
|
44
|
+
|
|
19
45
|
// src/git/team-meta.ts
|
|
20
46
|
var SOCCER_TEAM_META = {
|
|
21
47
|
"aalborg": { location: "Aalborg, Denmark", league: "Danish Superliga" },
|
|
@@ -876,11 +902,12 @@ function branchDisplayLabel(branchName, worktreePath) {
|
|
|
876
902
|
}
|
|
877
903
|
function taskPurposeTitle(title) {
|
|
878
904
|
const trimmed = title?.trim() ?? "";
|
|
879
|
-
if (!trimmed || teamSlugFromName(trimmed)) return null;
|
|
905
|
+
if (!trimmed || teamSlugFromName(trimmed) || trimmed === REVIEW_TAB_TITLE) return null;
|
|
880
906
|
return trimmed;
|
|
881
907
|
}
|
|
882
908
|
function threadDisplayLabel(thread) {
|
|
883
|
-
|
|
909
|
+
const titled = thread.title?.trim() ?? "";
|
|
910
|
+
if (thread.userSetTitle && titled && titled !== REVIEW_TAB_TITLE) return titled;
|
|
884
911
|
if (thread.prTitle?.trim()) return thread.prTitle.trim();
|
|
885
912
|
if (isPlaceholderBranch(thread.branchName, thread.worktreePath)) {
|
|
886
913
|
const purpose = taskPurposeTitle(thread.title);
|
|
@@ -896,6 +923,35 @@ function worktreeDisplayLabelForGroup(threads) {
|
|
|
896
923
|
const canonical = [...threads].sort((a, b) => a.createdAt.localeCompare(b.createdAt))[0];
|
|
897
924
|
return threadDisplayLabel(canonical);
|
|
898
925
|
}
|
|
926
|
+
function worktreeAnchorLabel(threads) {
|
|
927
|
+
if (threads.length === 0) return { title: "Worktree", subtitle: null };
|
|
928
|
+
const canonical = [...threads].sort((a, b) => a.createdAt.localeCompare(b.createdAt))[0];
|
|
929
|
+
const pr = threads.map((t) => t.prTitle?.trim()).find((v) => Boolean(v)) ?? "";
|
|
930
|
+
const branch = (canonical.branchName ?? "").trim();
|
|
931
|
+
const placeholder = isPlaceholderBranch(branch, canonical.worktreePath);
|
|
932
|
+
const display = branchDisplayLabel(canonical.branchName, canonical.worktreePath);
|
|
933
|
+
const realBranch = !placeholder && branch && branch !== "HEAD" ? branch : null;
|
|
934
|
+
if (pr) {
|
|
935
|
+
return {
|
|
936
|
+
title: pr,
|
|
937
|
+
subtitle: realBranch && realBranch !== pr ? realBranch : null
|
|
938
|
+
};
|
|
939
|
+
}
|
|
940
|
+
if (placeholder) {
|
|
941
|
+
const purpose = taskPurposeTitle(canonical.title);
|
|
942
|
+
if (purpose) return { title: purpose, subtitle: null };
|
|
943
|
+
}
|
|
944
|
+
if (display) {
|
|
945
|
+
return {
|
|
946
|
+
title: display,
|
|
947
|
+
subtitle: realBranch && realBranch !== display ? realBranch : null
|
|
948
|
+
};
|
|
949
|
+
}
|
|
950
|
+
return {
|
|
951
|
+
title: worktreeNameFromPath(canonical.worktreePath),
|
|
952
|
+
subtitle: realBranch
|
|
953
|
+
};
|
|
954
|
+
}
|
|
899
955
|
function agentNicknameFromWorktreePath(worktreePath) {
|
|
900
956
|
const dir = worktreeNameFromPath(worktreePath);
|
|
901
957
|
if (!soccerTokenFromTakenSlug(dir)) return null;
|
|
@@ -1246,6 +1302,10 @@ function findThreadByRef(ref) {
|
|
|
1246
1302
|
}
|
|
1247
1303
|
|
|
1248
1304
|
export {
|
|
1305
|
+
REVIEW_TAB_TITLE,
|
|
1306
|
+
isReviewWriteGatedThread,
|
|
1307
|
+
formatReviewWriteGateDirective,
|
|
1308
|
+
formatReviewWriteGateReminder,
|
|
1249
1309
|
FAMOUS_SOCCER_TEAMS,
|
|
1250
1310
|
lookupSoccerTeam,
|
|
1251
1311
|
teamSlugFromName,
|
|
@@ -1263,6 +1323,7 @@ export {
|
|
|
1263
1323
|
threadDisplayLabel,
|
|
1264
1324
|
worktreeDisplayLabel,
|
|
1265
1325
|
worktreeDisplayLabelForGroup,
|
|
1326
|
+
worktreeAnchorLabel,
|
|
1266
1327
|
agentNicknameFromWorktreePath,
|
|
1267
1328
|
workspaceNameLabel,
|
|
1268
1329
|
worktreeIdentityTitles,
|
|
@@ -34,10 +34,10 @@ import {
|
|
|
34
34
|
tryReservePort,
|
|
35
35
|
tryReservePorts,
|
|
36
36
|
worktreeRunPortsPath
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-NRSC4N5X.js";
|
|
38
38
|
import "./chunk-I5TESHDN.js";
|
|
39
|
-
import "./chunk-
|
|
40
|
-
import "./chunk-
|
|
39
|
+
import "./chunk-A6C67DY5.js";
|
|
40
|
+
import "./chunk-A46CIARU.js";
|
|
41
41
|
import "./chunk-N2WW62LF.js";
|
|
42
42
|
import "./chunk-DD67JWTN.js";
|
|
43
43
|
import "./chunk-2UG25RMK.js";
|
|
@@ -48,7 +48,7 @@ import {
|
|
|
48
48
|
} from "./chunk-WWUABK6B.js";
|
|
49
49
|
import "./chunk-FJZWM2ON.js";
|
|
50
50
|
import "./chunk-J2LNLI4S.js";
|
|
51
|
-
import "./chunk-
|
|
51
|
+
import "./chunk-HOLB6ZFZ.js";
|
|
52
52
|
import "./chunk-WMZIANPV.js";
|
|
53
53
|
import "./chunk-KGZBYWZ3.js";
|
|
54
54
|
import {
|
|
@@ -32,11 +32,11 @@ import {
|
|
|
32
32
|
tryReservePort,
|
|
33
33
|
tryReservePorts,
|
|
34
34
|
worktreeRunPortsPath
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-4XZJYBO2.js";
|
|
36
36
|
import "./chunk-7Q327QF2.js";
|
|
37
|
-
import "./chunk-
|
|
38
|
-
import "./chunk-
|
|
39
|
-
import "./chunk-
|
|
37
|
+
import "./chunk-PX324N7P.js";
|
|
38
|
+
import "./chunk-YN6XONV5.js";
|
|
39
|
+
import "./chunk-YEIHCSZS.js";
|
|
40
40
|
import "./chunk-2P4XKWV2.js";
|
|
41
41
|
import "./chunk-F2PVRF3B.js";
|
|
42
42
|
import "./chunk-5XNT6BCG.js";
|
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
enrichWorkspacesWithGithub,
|
|
10
10
|
ensureGlobalCoordinatorCwd,
|
|
11
11
|
formatWorkspaceInventory
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-A6C67DY5.js";
|
|
13
|
+
import "./chunk-A46CIARU.js";
|
|
14
14
|
import "./chunk-N2WW62LF.js";
|
|
15
15
|
import "./chunk-DD67JWTN.js";
|
|
16
16
|
import "./chunk-2UG25RMK.js";
|
|
@@ -19,7 +19,7 @@ import "./chunk-NSTQ6QKD.js";
|
|
|
19
19
|
import "./chunk-WWUABK6B.js";
|
|
20
20
|
import "./chunk-FJZWM2ON.js";
|
|
21
21
|
import "./chunk-J2LNLI4S.js";
|
|
22
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-HOLB6ZFZ.js";
|
|
23
23
|
import "./chunk-WMZIANPV.js";
|
|
24
24
|
import "./chunk-KGZBYWZ3.js";
|
|
25
25
|
import "./chunk-WOU343SI.js";
|
|
@@ -7,9 +7,9 @@ import {
|
|
|
7
7
|
enrichWorkspacesWithGithub,
|
|
8
8
|
ensureGlobalCoordinatorCwd,
|
|
9
9
|
formatWorkspaceInventory
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-PX324N7P.js";
|
|
11
|
+
import "./chunk-YN6XONV5.js";
|
|
12
|
+
import "./chunk-YEIHCSZS.js";
|
|
13
13
|
import "./chunk-2P4XKWV2.js";
|
|
14
14
|
import "./chunk-F2PVRF3B.js";
|
|
15
15
|
import "./chunk-6K64FJDD.js";
|
|
@@ -18,9 +18,9 @@ import {
|
|
|
18
18
|
remoteCoordinatorSourceRef,
|
|
19
19
|
slackCoordinatorSourceRef,
|
|
20
20
|
takenTeamSlugsForOrchestration
|
|
21
|
-
} from "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
21
|
+
} from "./chunk-PX324N7P.js";
|
|
22
|
+
import "./chunk-YN6XONV5.js";
|
|
23
|
+
import "./chunk-YEIHCSZS.js";
|
|
24
24
|
import "./chunk-2P4XKWV2.js";
|
|
25
25
|
import "./chunk-F2PVRF3B.js";
|
|
26
26
|
import "./chunk-6K64FJDD.js";
|
|
@@ -20,8 +20,8 @@ import {
|
|
|
20
20
|
remoteCoordinatorSourceRef,
|
|
21
21
|
slackCoordinatorSourceRef,
|
|
22
22
|
takenTeamSlugsForOrchestration
|
|
23
|
-
} from "./chunk-
|
|
24
|
-
import "./chunk-
|
|
23
|
+
} from "./chunk-A6C67DY5.js";
|
|
24
|
+
import "./chunk-A46CIARU.js";
|
|
25
25
|
import "./chunk-N2WW62LF.js";
|
|
26
26
|
import "./chunk-DD67JWTN.js";
|
|
27
27
|
import "./chunk-2UG25RMK.js";
|
|
@@ -30,7 +30,7 @@ import "./chunk-NSTQ6QKD.js";
|
|
|
30
30
|
import "./chunk-WWUABK6B.js";
|
|
31
31
|
import "./chunk-FJZWM2ON.js";
|
|
32
32
|
import "./chunk-J2LNLI4S.js";
|
|
33
|
-
import "./chunk-
|
|
33
|
+
import "./chunk-HOLB6ZFZ.js";
|
|
34
34
|
import "./chunk-WMZIANPV.js";
|
|
35
35
|
import "./chunk-KGZBYWZ3.js";
|
|
36
36
|
import {
|