@sideboard-ai/core 0.1.303 → 0.1.304
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-APP3DZ4P.js → abletime-SJUVZVRU.js} +6 -6
- package/dist/{abletime-RYDAQ3FE.js → abletime-T5YSJLNZ.js} +6 -6
- package/dist/{abletime-oauth-ZURGXSY6.js → abletime-oauth-2TOOZ2FN.js} +5 -5
- package/dist/{abletime-oauth-KTERKARA.js → abletime-oauth-73TFJME4.js} +5 -5
- package/dist/{abletime-rest-4TVIWLZK.js → abletime-rest-5TDRIFEV.js} +5 -5
- package/dist/{abletime-rest-EUB6RW7K.js → abletime-rest-PNUGH2FS.js} +5 -5
- package/dist/agents/claude-runner.js +2 -2
- package/dist/agents/cursor-runner.js +5 -5
- package/dist/{agents-3GN4E2X3.js → agents-IWNQOQOU.js} +12 -12
- package/dist/{agents-XLHFVC64.js → agents-PGU5WVSO.js} +10 -10
- package/dist/{app-settings-2IH42VA5.js → app-settings-CC65VPBL.js} +3 -3
- package/dist/{app-settings-3OQWRKOK.js → app-settings-DZ5AY7N5.js} +3 -3
- package/dist/{caffeinate-hold-7JM5H5P3.js → caffeinate-hold-H7TTUDGM.js} +2 -2
- package/dist/{caffeinate-hold-DYJGWK6Y.js → caffeinate-hold-ZNUEZGHB.js} +2 -2
- package/dist/{chunk-545DY7CQ.js → chunk-33HIBNSF.js} +106 -64
- package/dist/{chunk-FA3V56KF.js → chunk-3UDRWMIM.js} +2 -2
- package/dist/{chunk-7IAMHN2N.js → chunk-42JGPPVS.js} +1 -1
- package/dist/{chunk-BRFDPV7Z.js → chunk-5QX2NYXL.js} +4 -4
- package/dist/{chunk-DW6NNYUJ.js → chunk-5SFA27CF.js} +61 -8
- package/dist/{chunk-XCXUVX7I.js → chunk-62ESCTJ4.js} +1 -1
- package/dist/{chunk-SSETL5EX.js → chunk-6424BACS.js} +2 -2
- package/dist/{chunk-RSATPXU4.js → chunk-A2YXQC65.js} +264 -2
- package/dist/{chunk-GEFH4QFX.js → chunk-BIPXOHZI.js} +3 -3
- package/dist/{chunk-HSF2RQSQ.js → chunk-CFTOKVQN.js} +5 -5
- package/dist/{chunk-3D3GGL6X.js → chunk-CW4FIIDE.js} +3 -3
- package/dist/{chunk-5DZUWGKV.js → chunk-DC3VZXMA.js} +1 -1
- package/dist/{chunk-5MVOZLN7.js → chunk-DLGGLV2M.js} +3 -3
- package/dist/{chunk-WZCPZVUC.js → chunk-EGTCXNQM.js} +3 -3
- package/dist/{chunk-3TZRSKFJ.js → chunk-EZYZGDWU.js} +422 -175
- package/dist/{chunk-7AYOOG77.js → chunk-G2L3CR3A.js} +471 -107
- package/dist/{chunk-EHT2DRT4.js → chunk-H4UEFJRI.js} +4 -0
- package/dist/{chunk-P2GHFJOB.js → chunk-HG25AYBV.js} +2 -2
- package/dist/{chunk-GS6O65Q2.js → chunk-I34DCC4L.js} +104 -62
- package/dist/{chunk-UN5Q7POQ.js → chunk-J2LNLI4S.js} +1 -1
- package/dist/{chunk-MOP5L5QZ.js → chunk-JARCAPKL.js} +3 -3
- package/dist/{chunk-FAXOEKQR.js → chunk-JWW66PO3.js} +5 -5
- package/dist/{chunk-3HO2OY5T.js → chunk-KI45T4DI.js} +1 -1
- package/dist/{chunk-NOT4SEAM.js → chunk-LAWLUOWQ.js} +1 -1
- package/dist/{chunk-UWQ6UCIB.js → chunk-LG6RJBIY.js} +1 -1
- package/dist/{chunk-IOY2LF3Y.js → chunk-MMVMQ34G.js} +1 -1
- package/dist/{chunk-LZVWKJXY.js → chunk-OLSLE3LO.js} +3 -3
- package/dist/{chunk-RAGDMEIB.js → chunk-OVNIP265.js} +59 -8
- package/dist/{chunk-BU6HH5VA.js → chunk-PHMFAU35.js} +66 -2
- package/dist/{chunk-ISEYRGMP.js → chunk-RU6DTCCV.js} +2 -2
- package/dist/{chunk-R3R3ZDFC.js → chunk-SZ3XS2WM.js} +2 -2
- package/dist/{chunk-B42H6GJR.js → chunk-U4WACWBC.js} +3 -3
- package/dist/{chunk-VGNLMGBK.js → chunk-VEVFHO6K.js} +5 -5
- package/dist/{chunk-4RZRHTSZ.js → chunk-WMZIANPV.js} +1 -1
- package/dist/{chunk-H5XL4KUS.js → chunk-WOU343SI.js} +4 -0
- package/dist/{chunk-QDDTVIWE.js → chunk-WRZRX4Q7.js} +2 -2
- package/dist/{chunk-YCDHLK2Z.js → chunk-X3FSWWW2.js} +4 -4
- package/dist/{chunk-QDA6NXRA.js → chunk-YDUHLWI5.js} +1 -1
- package/dist/{chunk-J54UPHXZ.js → chunk-YJBUYGPN.js} +1 -1
- package/dist/{conductor-ATST6OMC.js → conductor-YBXURAUL.js} +10 -8
- package/dist/{conductor-2AVFGSQJ.js → conductor-ZFRXTVGP.js} +10 -8
- package/dist/{connected-teams-BJ6PMIST.js → connected-teams-BBNYTR3I.js} +2 -2
- package/dist/{connected-teams-AB7ZHJVO.js → connected-teams-WLWIVYGD.js} +2 -2
- package/dist/{coordinator-prompt-TIAI6A47.js → coordinator-prompt-GZCWQAAV.js} +7 -7
- package/dist/{coordinator-prompt-CQPUNMRX.js → coordinator-prompt-YAZRQ4BI.js} +7 -7
- package/dist/{cursor-recover-A6V5UVFT.js → cursor-recover-OWPQUHFH.js} +2 -2
- package/dist/{cursor-recover-MB3T2K5T.js → cursor-recover-TEBFKAZ4.js} +2 -2
- package/dist/{global-workspace-7YABMLQG.js → global-workspace-BZAVBOH3.js} +7 -7
- package/dist/{global-workspace-UZJUHGQP.js → global-workspace-H6X32IJZ.js} +7 -7
- package/dist/index.cjs +13486 -12609
- package/dist/index.d.cts +94 -14
- package/dist/index.d.ts +94 -14
- package/dist/index.js +11807 -11663
- package/dist/{managed-accounts-2AK5RIAF.js → managed-accounts-JJTAKHMG.js} +2 -2
- package/dist/{managed-accounts-46A4KRUE.js → managed-accounts-PITLFLKU.js} +2 -2
- package/dist/mcp/run-stdio.cjs +1037 -616
- package/dist/mcp/run-stdio.js +20 -20
- package/dist/{optional-cli-JQVNSMSU.js → optional-cli-QDIT57VD.js} +5 -5
- package/dist/{optional-cli-PZXDOVJJ.js → optional-cli-QY6V5S5N.js} +6 -6
- package/dist/{orchestrator-CZPRDLHV.js → orchestrator-IKKSYIQ3.js} +16 -16
- package/dist/{orchestrator-COX6QO2B.js → orchestrator-JGHYZDDB.js} +14 -14
- package/dist/{paths-HYT5WOOX.js → paths-HAAJNTTE.js} +1 -1
- package/dist/{paths-5JYXTAPC.js → paths-PHWEVXD5.js} +1 -1
- package/dist/{thread-store-PNX4HVLO.js → thread-store-HY22M5A7.js} +3 -3
- package/dist/{thread-store-VC4AIKN3.js → thread-store-XMUQDO5O.js} +3 -3
- package/dist/{workspaces-GZ7F5EJR.js → workspaces-AGOLRBYZ.js} +7 -7
- package/dist/{workspaces-6DJL4IST.js → workspaces-BQUDYTBX.js} +7 -7
- package/dist/{worktree-2BYVRYPJ.js → worktree-C5VI46RZ.js} +6 -6
- package/dist/{worktree-VXPOY2LE.js → worktree-FMK57ULT.js} +6 -6
- package/package.json +4 -1
|
@@ -282,6 +282,8 @@ function parseSettingsFile(path, source) {
|
|
|
282
282
|
if (Array.isArray(copySection?.paths)) {
|
|
283
283
|
filesToCopy.push(...copySection.paths.map(String));
|
|
284
284
|
}
|
|
285
|
+
const worktree = data.worktree;
|
|
286
|
+
const sharedDirectories = Array.isArray(worktree?.shared_directories) ? worktree.shared_directories.map(String).map((item) => item.trim()).filter(Boolean) : [];
|
|
285
287
|
const fileIncludeGlobs = [];
|
|
286
288
|
if (Array.isArray(data.file_include_globs)) {
|
|
287
289
|
fileIncludeGlobs.push(...data.file_include_globs.map(String));
|
|
@@ -333,6 +335,7 @@ function parseSettingsFile(path, source) {
|
|
|
333
335
|
fileIncludeGlobs: fileIncludeGlobs.length ? fileIncludeGlobs : void 0,
|
|
334
336
|
runScripts,
|
|
335
337
|
worktreesRoot: worktreesRoot2,
|
|
338
|
+
sharedDirectories: sharedDirectories.length ? sharedDirectories : void 0,
|
|
336
339
|
editor,
|
|
337
340
|
prompts: hasPrompts ? prompts : void 0
|
|
338
341
|
};
|
|
@@ -364,6 +367,7 @@ function mergeSettings(base, overlay) {
|
|
|
364
367
|
fileIncludeGlobs: overlay.fileIncludeGlobs ?? base.fileIncludeGlobs,
|
|
365
368
|
runScripts: mergeRunScripts(base.runScripts, overlay.runScripts),
|
|
366
369
|
worktreesRoot: overlay.worktreesRoot ?? base.worktreesRoot,
|
|
370
|
+
sharedDirectories: overlay.sharedDirectories ?? base.sharedDirectories,
|
|
367
371
|
editor: overlay.editor ?? base.editor,
|
|
368
372
|
prompts: hasPrompts ? prompts : void 0
|
|
369
373
|
};
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-F2PVRF3B.js";
|
|
4
4
|
import {
|
|
5
5
|
cursorSdkStoreDir
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-LG6RJBIY.js";
|
|
7
7
|
import {
|
|
8
8
|
normalizeThinkingEffort
|
|
9
9
|
} from "./chunk-77WWLBCI.js";
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
threadFilePath,
|
|
12
12
|
threadLockPath,
|
|
13
13
|
threadsDir
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-H4UEFJRI.js";
|
|
15
15
|
|
|
16
16
|
// src/store/thread-store.ts
|
|
17
17
|
import { randomUUID } from "crypto";
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
import {
|
|
7
7
|
formatOptionalServicesDirectiveForTurn,
|
|
8
8
|
formatOptionalServicesReminderForTurn
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-62ESCTJ4.js";
|
|
10
10
|
import {
|
|
11
11
|
extractPresentedPlan,
|
|
12
12
|
isPresentPlanToolName,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
} from "./chunk-4GK32AYX.js";
|
|
16
16
|
import {
|
|
17
17
|
releaseCaffeinateHoldForThread
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-DC3VZXMA.js";
|
|
19
19
|
import {
|
|
20
20
|
SIDEBOARD_THREAD_ID_ENV,
|
|
21
21
|
adjustBrightsyTurnExit,
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
parseSessionQuotaResetAt,
|
|
28
28
|
planModeTurnInstruction,
|
|
29
29
|
resolveQuotaFallbackAgent
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-EZYZGDWU.js";
|
|
31
31
|
import {
|
|
32
32
|
REVIEW_TAB_TITLE,
|
|
33
33
|
applyWorktreePkgCacheEnv,
|
|
@@ -55,7 +55,9 @@ import {
|
|
|
55
55
|
listRunningDetachedJobs,
|
|
56
56
|
maybeCompactContext,
|
|
57
57
|
mergeWorktreeActiveRuns,
|
|
58
|
+
parsePlanQuestionsInput,
|
|
58
59
|
planJobContinue,
|
|
60
|
+
planQuestionsSignature,
|
|
59
61
|
requestReview,
|
|
60
62
|
resolveWorktreeSetupLog,
|
|
61
63
|
runArchiveScript,
|
|
@@ -66,7 +68,7 @@ import {
|
|
|
66
68
|
worktreeDevProcessKey,
|
|
67
69
|
worktreeRunProcessKey,
|
|
68
70
|
worktreeSetupProcessKey
|
|
69
|
-
} from "./chunk-
|
|
71
|
+
} from "./chunk-5SFA27CF.js";
|
|
70
72
|
import {
|
|
71
73
|
applyAgentEvent,
|
|
72
74
|
clipAgentEventForPaint,
|
|
@@ -118,7 +120,7 @@ import {
|
|
|
118
120
|
stageAbsolutePathsAsAttachments,
|
|
119
121
|
stageBuffersAsAttachments,
|
|
120
122
|
syncWorkspacesFromThreads
|
|
121
|
-
} from "./chunk-
|
|
123
|
+
} from "./chunk-X3FSWWW2.js";
|
|
122
124
|
import {
|
|
123
125
|
addPrStackLayer,
|
|
124
126
|
allocateTeamSlug,
|
|
@@ -160,7 +162,7 @@ import {
|
|
|
160
162
|
resolveRepoRoot,
|
|
161
163
|
switchWorktreeBranch,
|
|
162
164
|
withRepoGitLock
|
|
163
|
-
} from "./chunk-
|
|
165
|
+
} from "./chunk-DLGGLV2M.js";
|
|
164
166
|
import {
|
|
165
167
|
clearStaleIndexLocks,
|
|
166
168
|
enrichPathWithNpmGlobalBin,
|
|
@@ -201,7 +203,7 @@ import {
|
|
|
201
203
|
usageOnLimit,
|
|
202
204
|
withTurnScopedCost,
|
|
203
205
|
writeViewerContext
|
|
204
|
-
} from "./chunk-
|
|
206
|
+
} from "./chunk-PHMFAU35.js";
|
|
205
207
|
import {
|
|
206
208
|
writePrivateFile
|
|
207
209
|
} from "./chunk-NSTQ6QKD.js";
|
|
@@ -214,7 +216,7 @@ import {
|
|
|
214
216
|
applyManagedAccountEnv,
|
|
215
217
|
nextManagedAccount,
|
|
216
218
|
resolveAccountForThread
|
|
217
|
-
} from "./chunk-
|
|
219
|
+
} from "./chunk-J2LNLI4S.js";
|
|
218
220
|
import {
|
|
219
221
|
agentNicknameFromWorktreePath,
|
|
220
222
|
appendMessage,
|
|
@@ -238,7 +240,7 @@ import {
|
|
|
238
240
|
worktreeNameFromPath,
|
|
239
241
|
worktreeSlugForTicket,
|
|
240
242
|
writeThread
|
|
241
|
-
} from "./chunk-
|
|
243
|
+
} from "./chunk-3UDRWMIM.js";
|
|
242
244
|
import {
|
|
243
245
|
annotateDevAccessRuns,
|
|
244
246
|
appDataDir,
|
|
@@ -248,7 +250,7 @@ import {
|
|
|
248
250
|
threadLivePath,
|
|
249
251
|
threadsDir,
|
|
250
252
|
worktreesRoot
|
|
251
|
-
} from "./chunk-
|
|
253
|
+
} from "./chunk-WOU343SI.js";
|
|
252
254
|
|
|
253
255
|
// src/orchestrator/orchestrator.ts
|
|
254
256
|
import { EventEmitter } from "events";
|
|
@@ -503,9 +505,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
|
|
|
503
505
|
`Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
|
|
504
506
|
);
|
|
505
507
|
}
|
|
506
|
-
const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-
|
|
508
|
+
const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-H6X32IJZ.js");
|
|
507
509
|
if (isGlobalThread2(thread)) {
|
|
508
|
-
const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-
|
|
510
|
+
const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-GZCWQAAV.js");
|
|
509
511
|
ensureGlobalCoordinatorCwd2(
|
|
510
512
|
isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
|
|
511
513
|
);
|
|
@@ -1522,6 +1524,44 @@ function denyPendingToolPermissions(threadId) {
|
|
|
1522
1524
|
if (last) clearPrompt(threadId, last.id);
|
|
1523
1525
|
}
|
|
1524
1526
|
|
|
1527
|
+
// src/board/agent-block-view.ts
|
|
1528
|
+
function worktreeBoardStatus(group) {
|
|
1529
|
+
const order = ["running", "queued", "error", "broken"];
|
|
1530
|
+
for (const status of order) {
|
|
1531
|
+
if (group.some((t) => t.status === status)) return status;
|
|
1532
|
+
}
|
|
1533
|
+
return group[0]?.status ?? "idle";
|
|
1534
|
+
}
|
|
1535
|
+
function isDismissedAskUserBlock(block, dismissedQuestionSignature) {
|
|
1536
|
+
if (!block || block.source !== "ask_user") return false;
|
|
1537
|
+
const dismissed = dismissedQuestionSignature?.trim();
|
|
1538
|
+
if (!dismissed) return false;
|
|
1539
|
+
if (!block.questionSignature) return true;
|
|
1540
|
+
return block.questionSignature === dismissed;
|
|
1541
|
+
}
|
|
1542
|
+
function visibleAgentBlock(thread) {
|
|
1543
|
+
if (thread.status === "archived" || thread.status === "error" || thread.status === "broken") {
|
|
1544
|
+
return null;
|
|
1545
|
+
}
|
|
1546
|
+
const block = thread.agentBlock;
|
|
1547
|
+
if (!block?.reason?.trim()) return null;
|
|
1548
|
+
if (isDismissedAskUserBlock(block, thread.dismissedQuestionSignature)) return null;
|
|
1549
|
+
return block;
|
|
1550
|
+
}
|
|
1551
|
+
function worktreeAgentBlock(group) {
|
|
1552
|
+
let best = null;
|
|
1553
|
+
for (const thread of group) {
|
|
1554
|
+
const block = visibleAgentBlock(thread);
|
|
1555
|
+
if (!block) continue;
|
|
1556
|
+
if (!best || block.at > best.at) best = block;
|
|
1557
|
+
}
|
|
1558
|
+
return best;
|
|
1559
|
+
}
|
|
1560
|
+
function threadCardBlockFields(group) {
|
|
1561
|
+
const block = worktreeAgentBlock(group);
|
|
1562
|
+
return block ? { blockedReason: block.reason, blockedSource: block.source } : null;
|
|
1563
|
+
}
|
|
1564
|
+
|
|
1525
1565
|
// src/threads/connected-orchestrator.ts
|
|
1526
1566
|
function connectedOrchestrator(thread, find) {
|
|
1527
1567
|
if (isOrchestratorThread(thread)) return null;
|
|
@@ -1661,7 +1701,10 @@ function decisionBlockFromParts(parts, planMode, at = (/* @__PURE__ */ new Date(
|
|
|
1661
1701
|
if (last?.type === "tool" && isAskUserToolName(last.name)) {
|
|
1662
1702
|
const pending = extractPendingPlanQuestions(parts);
|
|
1663
1703
|
const reason = pending ? formatAskUserNotifyMessage(pending.questions) : "Waiting for an answer in that chat.";
|
|
1664
|
-
return
|
|
1704
|
+
return {
|
|
1705
|
+
...makeAgentBlock("ask_user", reason, at),
|
|
1706
|
+
...pending ? { questionSignature: pending.signature } : {}
|
|
1707
|
+
};
|
|
1665
1708
|
}
|
|
1666
1709
|
if (!planMode || last?.type !== "tool") return null;
|
|
1667
1710
|
const exited = /exitplanmode/i.test(last.name ?? "");
|
|
@@ -1678,16 +1721,34 @@ function decisionBlockFromParts(parts, planMode, at = (/* @__PURE__ */ new Date(
|
|
|
1678
1721
|
function agentBlockAfterTurn(input) {
|
|
1679
1722
|
if (input.failed) return null;
|
|
1680
1723
|
const decision = decisionBlockFromParts(input.parts, input.planMode);
|
|
1681
|
-
if (decision)
|
|
1724
|
+
if (decision) {
|
|
1725
|
+
if (isDismissedAskUserBlock(decision, input.dismissedQuestionSignature)) {
|
|
1726
|
+
return input.existing?.source === "reported" ? input.existing : null;
|
|
1727
|
+
}
|
|
1728
|
+
return decision;
|
|
1729
|
+
}
|
|
1682
1730
|
if (input.existing && input.existing.source !== "reported" && lastTopLevelTool(input.parts)) {
|
|
1683
1731
|
return null;
|
|
1684
1732
|
}
|
|
1733
|
+
if (isDismissedAskUserBlock(input.existing, input.dismissedQuestionSignature)) return null;
|
|
1685
1734
|
return input.existing ?? null;
|
|
1686
1735
|
}
|
|
1687
1736
|
function clearAgentBlock(threadId) {
|
|
1688
1737
|
const thread = readThread(threadId);
|
|
1689
|
-
if (!thread?.agentBlock) return;
|
|
1690
|
-
updateThread(threadId, { agentBlock: null });
|
|
1738
|
+
if (!thread?.agentBlock && !thread?.dismissedQuestionSignature) return;
|
|
1739
|
+
updateThread(threadId, { agentBlock: null, dismissedQuestionSignature: null });
|
|
1740
|
+
}
|
|
1741
|
+
function dismissAskUserQuestion(threadId, signature) {
|
|
1742
|
+
const thread = readThread(threadId);
|
|
1743
|
+
if (!thread || thread.status === "archived") return;
|
|
1744
|
+
const sig = signature.trim();
|
|
1745
|
+
if (!sig) return;
|
|
1746
|
+
const clearBlock = thread.agentBlock?.source === "ask_user";
|
|
1747
|
+
if (thread.dismissedQuestionSignature === sig && !clearBlock) return;
|
|
1748
|
+
updateThread(threadId, {
|
|
1749
|
+
dismissedQuestionSignature: sig,
|
|
1750
|
+
...clearBlock ? { agentBlock: null } : {}
|
|
1751
|
+
});
|
|
1691
1752
|
}
|
|
1692
1753
|
function writeAgentBlock(threadId, block) {
|
|
1693
1754
|
const thread = readThread(threadId);
|
|
@@ -1702,11 +1763,12 @@ function settleAgentBlock(threadId, parts, failed) {
|
|
|
1702
1763
|
existing: thread.agentBlock,
|
|
1703
1764
|
parts,
|
|
1704
1765
|
planMode: Boolean(thread.planMode),
|
|
1705
|
-
failed
|
|
1766
|
+
failed,
|
|
1767
|
+
dismissedQuestionSignature: thread.dismissedQuestionSignature
|
|
1706
1768
|
});
|
|
1707
1769
|
const prev = thread.agentBlock ?? null;
|
|
1708
1770
|
if (prev === next) return;
|
|
1709
|
-
if (prev && next && prev.source === next.source && prev.reason === next.reason && prev.at === next.at) {
|
|
1771
|
+
if (prev && next && prev.source === next.source && prev.reason === next.reason && prev.at === next.at && prev.questionSignature === next.questionSignature) {
|
|
1710
1772
|
return;
|
|
1711
1773
|
}
|
|
1712
1774
|
updateThread(threadId, { agentBlock: next });
|
|
@@ -1724,8 +1786,13 @@ function agentBlockFields(thread) {
|
|
|
1724
1786
|
}
|
|
1725
1787
|
function stampAskUserBlock(resolveCaller, questions) {
|
|
1726
1788
|
const asked = formatAskUserNotifyMessage(questions);
|
|
1789
|
+
const parsed = parsePlanQuestionsInput({ questions });
|
|
1790
|
+
const block = makeAgentBlock("ask_user", asked);
|
|
1727
1791
|
try {
|
|
1728
|
-
writeAgentBlock(
|
|
1792
|
+
writeAgentBlock(
|
|
1793
|
+
resolveCaller().id,
|
|
1794
|
+
parsed.length ? { ...block, questionSignature: planQuestionsSignature(parsed) } : block
|
|
1795
|
+
);
|
|
1729
1796
|
} catch {
|
|
1730
1797
|
}
|
|
1731
1798
|
return asked;
|
|
@@ -1881,36 +1948,6 @@ async function requireAgent(agent, opts) {
|
|
|
1881
1948
|
return status;
|
|
1882
1949
|
}
|
|
1883
1950
|
|
|
1884
|
-
// src/board/agent-block-view.ts
|
|
1885
|
-
function worktreeBoardStatus(group) {
|
|
1886
|
-
const order = ["running", "queued", "error", "broken"];
|
|
1887
|
-
for (const status of order) {
|
|
1888
|
-
if (group.some((t) => t.status === status)) return status;
|
|
1889
|
-
}
|
|
1890
|
-
return group[0]?.status ?? "idle";
|
|
1891
|
-
}
|
|
1892
|
-
function visibleAgentBlock(thread) {
|
|
1893
|
-
if (thread.status === "archived" || thread.status === "error" || thread.status === "broken") {
|
|
1894
|
-
return null;
|
|
1895
|
-
}
|
|
1896
|
-
const block = thread.agentBlock;
|
|
1897
|
-
if (!block?.reason?.trim()) return null;
|
|
1898
|
-
return block;
|
|
1899
|
-
}
|
|
1900
|
-
function worktreeAgentBlock(group) {
|
|
1901
|
-
let best = null;
|
|
1902
|
-
for (const thread of group) {
|
|
1903
|
-
const block = visibleAgentBlock(thread);
|
|
1904
|
-
if (!block) continue;
|
|
1905
|
-
if (!best || block.at > best.at) best = block;
|
|
1906
|
-
}
|
|
1907
|
-
return best;
|
|
1908
|
-
}
|
|
1909
|
-
function threadCardBlockFields(group) {
|
|
1910
|
-
const block = worktreeAgentBlock(group);
|
|
1911
|
-
return block ? { blockedReason: block.reason, blockedSource: block.source } : null;
|
|
1912
|
-
}
|
|
1913
|
-
|
|
1914
1951
|
// src/board/pr-state.ts
|
|
1915
1952
|
function isOpenPrState(prUrl, prState) {
|
|
1916
1953
|
if (!prUrl?.trim()) return false;
|
|
@@ -2513,7 +2550,7 @@ async function createThread(input, _onSetupLine) {
|
|
|
2513
2550
|
});
|
|
2514
2551
|
await requireAgent(resolved.agent);
|
|
2515
2552
|
if (input.cowboy) {
|
|
2516
|
-
const { cowboyModeEnabled } = await import("./app-settings-
|
|
2553
|
+
const { cowboyModeEnabled } = await import("./app-settings-CC65VPBL.js");
|
|
2517
2554
|
if (!cowboyModeEnabled()) {
|
|
2518
2555
|
throw new Error(
|
|
2519
2556
|
"Cowboy mode is off. Enable it in Settings \u2192 Advanced."
|
|
@@ -2572,7 +2609,7 @@ async function createThread(input, _onSetupLine) {
|
|
|
2572
2609
|
let sourceIsFork = false;
|
|
2573
2610
|
if (!input.cowboy && sourceType === "branch" && (!sourceRef || sourceRef === "HEAD" || sourceRef === "default")) {
|
|
2574
2611
|
if (isAbleTimeConnected() && getIssueSource() === "abletime") {
|
|
2575
|
-
const { ensureAbleTimeTask, issueAttachmentForAbleTimeTask } = await import("./abletime-
|
|
2612
|
+
const { ensureAbleTimeTask, issueAttachmentForAbleTimeTask } = await import("./abletime-SJUVZVRU.js");
|
|
2576
2613
|
const task = await ensureAbleTimeTask({
|
|
2577
2614
|
title: title?.trim() || "Untitled work",
|
|
2578
2615
|
description: input.prompt?.trim() || void 0
|
|
@@ -3444,7 +3481,7 @@ async function adoptThread(input) {
|
|
|
3444
3481
|
messages: input.messages ?? []
|
|
3445
3482
|
});
|
|
3446
3483
|
writeThread(thread);
|
|
3447
|
-
const { addWorkspace: addWorkspace2 } = await import("./workspaces-
|
|
3484
|
+
const { addWorkspace: addWorkspace2 } = await import("./workspaces-AGOLRBYZ.js");
|
|
3448
3485
|
await addWorkspace2(repoPath);
|
|
3449
3486
|
const { ensureWorktreeSideboardIgnored } = await import("./worktree-exclude-5N2KTYIT.js");
|
|
3450
3487
|
await ensureWorktreeSideboardIgnored(input.worktreePath);
|
|
@@ -6329,7 +6366,7 @@ function formatScheduledPrompt(name, prompt) {
|
|
|
6329
6366
|
${prompt}`;
|
|
6330
6367
|
}
|
|
6331
6368
|
async function defaultDeps() {
|
|
6332
|
-
const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-
|
|
6369
|
+
const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-JGHYZDDB.js");
|
|
6333
6370
|
const orch = getOrchestrator2();
|
|
6334
6371
|
return {
|
|
6335
6372
|
findThread: (id) => findThreadByRef(id),
|
|
@@ -6647,7 +6684,7 @@ var Orchestrator = class {
|
|
|
6647
6684
|
orphans: orphans.map((o) => ({ path: o.path, repoPath: o.repoPath }))
|
|
6648
6685
|
});
|
|
6649
6686
|
}
|
|
6650
|
-
const { autoCleanupOrphansEnabled } = await import("./app-settings-
|
|
6687
|
+
const { autoCleanupOrphansEnabled } = await import("./app-settings-CC65VPBL.js");
|
|
6651
6688
|
if (autoCleanupOrphansEnabled() && shouldRunWorktreeCleanup() && orphans.length > 0) {
|
|
6652
6689
|
await cleanupOrphanWorktrees({ repoPaths });
|
|
6653
6690
|
}
|
|
@@ -7041,7 +7078,7 @@ var Orchestrator = class {
|
|
|
7041
7078
|
}
|
|
7042
7079
|
await setup;
|
|
7043
7080
|
if (skipSetup) return;
|
|
7044
|
-
const { autoRunAfterSetupEnabled } = await import("./app-settings-
|
|
7081
|
+
const { autoRunAfterSetupEnabled } = await import("./app-settings-CC65VPBL.js");
|
|
7045
7082
|
if (autoRunAfterSetupEnabled()) {
|
|
7046
7083
|
try {
|
|
7047
7084
|
await this.startDev(threadId);
|
|
@@ -7433,7 +7470,7 @@ ${formatEnvReminder(projectNameForRepoPath(thread.repoPath || thread.worktreePat
|
|
|
7433
7470
|
}
|
|
7434
7471
|
const isBrightsy = fresh.agent === "brightsy";
|
|
7435
7472
|
const isOrchestration = isOrchestratorThread(fresh);
|
|
7436
|
-
const { autoRenameBranchEnabled, getGithubGitAuthMode, gitBranchPrefixSetting } = await import("./app-settings-
|
|
7473
|
+
const { autoRenameBranchEnabled, getGithubGitAuthMode, gitBranchPrefixSetting } = await import("./app-settings-CC65VPBL.js");
|
|
7437
7474
|
const gitAuthMode = getGithubGitAuthMode();
|
|
7438
7475
|
const worktreeDirective = isBrightsy || isOrchestration ? null : formatWorktreeDirective(fresh, {
|
|
7439
7476
|
githubSlug: await withTimeout(
|
|
@@ -7588,7 +7625,7 @@ ${formatEnvReminder(projectNameForRepoPath(thread.repoPath || thread.worktreePat
|
|
|
7588
7625
|
if (!this.stoppedTurns.has(threadId) && this.requireThread(threadId).agent === "cursor" && exitCode !== 0 && !assistantText && parts.length === 0) {
|
|
7589
7626
|
const sessionId = result.sessionId || this.requireThread(threadId).sessionId || "";
|
|
7590
7627
|
if (sessionId) {
|
|
7591
|
-
const { recoverFinishedCursorRun } = await import("./cursor-recover-
|
|
7628
|
+
const { recoverFinishedCursorRun } = await import("./cursor-recover-TEBFKAZ4.js");
|
|
7592
7629
|
for (let i = 0; i < 8; i++) {
|
|
7593
7630
|
const recovered = recoverFinishedCursorRun({
|
|
7594
7631
|
agentId: sessionId,
|
|
@@ -8749,7 +8786,7 @@ ${formatEnvReminder(projectNameForRepoPath(thread.repoPath || thread.worktreePat
|
|
|
8749
8786
|
if (Object.keys(patch).length === 0) continue;
|
|
8750
8787
|
updateThread(t.id, patch);
|
|
8751
8788
|
}
|
|
8752
|
-
const { autoArchiveOnMergeEnabled } = await import("./app-settings-
|
|
8789
|
+
const { autoArchiveOnMergeEnabled } = await import("./app-settings-CC65VPBL.js");
|
|
8753
8790
|
const latest = this.requireThread(thread.id);
|
|
8754
8791
|
if (!shouldAutoArchiveOnPrMerge({
|
|
8755
8792
|
previousPrState: prevState || null,
|
|
@@ -8958,6 +8995,11 @@ ${formatEnvReminder(projectNameForRepoPath(thread.repoPath || thread.worktreePat
|
|
|
8958
8995
|
if (!next) throw new Error("Title cannot be empty");
|
|
8959
8996
|
return updateThread(thread.id, { title: next, userSetTitle: true });
|
|
8960
8997
|
}
|
|
8998
|
+
dismissAskUser(threadRef, signature) {
|
|
8999
|
+
const thread = this.requireThread(threadRef);
|
|
9000
|
+
dismissAskUserQuestion(thread.id, signature);
|
|
9001
|
+
return this.requireThread(thread.id);
|
|
9002
|
+
}
|
|
8961
9003
|
setWorkspaceTags(threadRef, tags) {
|
|
8962
9004
|
return applyWorkspaceTags(threadRef, tags, "replace");
|
|
8963
9005
|
}
|
|
@@ -9068,7 +9110,7 @@ ${formatEnvReminder(projectNameForRepoPath(thread.repoPath || thread.worktreePat
|
|
|
9068
9110
|
await runArchiveScript(thread.repoPath, thread.worktreePath);
|
|
9069
9111
|
} catch {
|
|
9070
9112
|
}
|
|
9071
|
-
const { deleteBranchOnPurgeEnabled } = await import("./app-settings-
|
|
9113
|
+
const { deleteBranchOnPurgeEnabled } = await import("./app-settings-CC65VPBL.js");
|
|
9072
9114
|
const deleteBranch = opts?.deleteBranch ?? deleteBranchOnPurgeEnabled();
|
|
9073
9115
|
await removeWorktree(thread.repoPath, thread.worktreePath, {
|
|
9074
9116
|
deleteBranch: deleteBranch ? thread.branchName : void 0
|
|
@@ -9083,7 +9125,7 @@ ${formatEnvReminder(projectNameForRepoPath(thread.repoPath || thread.worktreePat
|
|
|
9083
9125
|
throw new Error("Thread is not archived");
|
|
9084
9126
|
}
|
|
9085
9127
|
if (isGlobalThread(thread)) {
|
|
9086
|
-
const { globalAgentCwd } = await import("./paths-
|
|
9128
|
+
const { globalAgentCwd } = await import("./paths-HAAJNTTE.js");
|
|
9087
9129
|
updateThread(thread.id, { worktreePath: globalAgentCwd() });
|
|
9088
9130
|
const restored2 = setStatus(thread.id, "idle");
|
|
9089
9131
|
this.emit({ type: "status_changed", threadId: restored2.id, status: restored2.status });
|
|
@@ -9204,7 +9246,7 @@ async function startOrchestration(opts) {
|
|
|
9204
9246
|
sourceRef: "default",
|
|
9205
9247
|
...createOpts
|
|
9206
9248
|
}).catch(async () => {
|
|
9207
|
-
const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-
|
|
9249
|
+
const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-FMK57ULT.js");
|
|
9208
9250
|
const repo = await resolveRepoRoot2(repoPath);
|
|
9209
9251
|
const def = await resolveDefaultBranch2(repo);
|
|
9210
9252
|
return orch.createThread({
|
|
@@ -9214,7 +9256,7 @@ async function startOrchestration(opts) {
|
|
|
9214
9256
|
repoPath: repo
|
|
9215
9257
|
});
|
|
9216
9258
|
});
|
|
9217
|
-
const { updateThread: upd } = await import("./thread-store-
|
|
9259
|
+
const { updateThread: upd } = await import("./thread-store-XMUQDO5O.js");
|
|
9218
9260
|
const updated = upd(thread.id, {
|
|
9219
9261
|
sourceType: "orchestration",
|
|
9220
9262
|
sourceRef: goal
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
import {
|
|
4
4
|
abletimeRestUrl,
|
|
5
5
|
textFromAbleTimeDoc
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-6424BACS.js";
|
|
7
7
|
import {
|
|
8
8
|
assertAbleTimeCredential,
|
|
9
9
|
callAbleTimeTool,
|
|
10
10
|
normalizeAbleTimeHost,
|
|
11
11
|
rewriteAbleTimeError
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-CFTOKVQN.js";
|
|
13
13
|
import {
|
|
14
14
|
httpFetch
|
|
15
15
|
} from "./chunk-2GPQZZLY.js";
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
getAbleTimeHost,
|
|
23
23
|
isAbleTimeConnected,
|
|
24
24
|
saveAbleTimeConnection
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-PHMFAU35.js";
|
|
26
26
|
|
|
27
27
|
// src/integrations/issue-attachments.ts
|
|
28
28
|
import { existsSync, mkdirSync, writeFileSync } from "fs";
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
getAbleTimeHost,
|
|
6
6
|
isAbleTimeConnected
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-A2YXQC65.js";
|
|
8
8
|
|
|
9
9
|
// src/integrations/abletime-mcp.ts
|
|
10
10
|
var DEFAULT_ABLETIME_HOST = "https://track.abletime.com";
|
|
@@ -153,7 +153,7 @@ function textsFromUnknown(value) {
|
|
|
153
153
|
return "";
|
|
154
154
|
}
|
|
155
155
|
async function abletimeMcpRequest(method, params, opts) {
|
|
156
|
-
const rawToken = opts?.token ?? await import("./abletime-oauth-
|
|
156
|
+
const rawToken = opts?.token ?? await import("./abletime-oauth-73TFJME4.js").then((m) => m.ensureAbleTimeAccessToken());
|
|
157
157
|
if (!rawToken?.trim()) {
|
|
158
158
|
throw new Error("AbleTime is not connected \u2014 paste a personal access token in Account settings");
|
|
159
159
|
}
|
|
@@ -224,9 +224,9 @@ async function callAbleTimeTool(name, args = {}, opts) {
|
|
|
224
224
|
if (!opts?.token && !isAbleTimeConnected()) {
|
|
225
225
|
throw new Error("AbleTime is not connected \u2014 paste a personal access token in Account settings");
|
|
226
226
|
}
|
|
227
|
-
const rawToken = opts?.token ?? await import("./abletime-oauth-
|
|
227
|
+
const rawToken = opts?.token ?? await import("./abletime-oauth-73TFJME4.js").then((m) => m.ensureAbleTimeAccessToken());
|
|
228
228
|
if (rawToken && ableTimeUsesRest(rawToken)) {
|
|
229
|
-
const { callAbleTimeRestTool } = await import("./abletime-rest-
|
|
229
|
+
const { callAbleTimeRestTool } = await import("./abletime-rest-PNUGH2FS.js");
|
|
230
230
|
return callAbleTimeRestTool(name, args, { ...opts, token: rawToken });
|
|
231
231
|
}
|
|
232
232
|
const requestOpts = { ...opts, pm: opts?.pm ?? abletimeToolUsesPm(name) };
|
|
@@ -242,7 +242,7 @@ async function callAbleTimeTool(name, args = {}, opts) {
|
|
|
242
242
|
return await call();
|
|
243
243
|
}
|
|
244
244
|
if (rawToken && ableTimeUsesRest(rawToken) && isAbleTimeRejectedCredential(message)) {
|
|
245
|
-
const { callAbleTimeRestTool } = await import("./abletime-rest-
|
|
245
|
+
const { callAbleTimeRestTool } = await import("./abletime-rest-PNUGH2FS.js");
|
|
246
246
|
return callAbleTimeRestTool(name, args, { ...opts, token: rawToken });
|
|
247
247
|
}
|
|
248
248
|
throw err instanceof Error ? new Error(rewriteAbleTimeError(err.message)) : err;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
abletimeRestUrl,
|
|
3
3
|
textFromAbleTimeDoc
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-SZ3XS2WM.js";
|
|
5
5
|
import {
|
|
6
6
|
assertAbleTimeCredential,
|
|
7
7
|
callAbleTimeTool,
|
|
8
8
|
normalizeAbleTimeHost,
|
|
9
9
|
rewriteAbleTimeError
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-JWW66PO3.js";
|
|
11
11
|
import {
|
|
12
12
|
httpFetch
|
|
13
13
|
} from "./chunk-JAT3JFOS.js";
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
getAbleTimeHost,
|
|
21
21
|
isAbleTimeConnected,
|
|
22
22
|
saveAbleTimeConnection
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-A2YXQC65.js";
|
|
24
24
|
|
|
25
25
|
// src/integrations/issue-attachments.ts
|
|
26
26
|
import { existsSync, mkdirSync, writeFileSync } from "fs";
|