@sideboard-ai/core 0.1.302 → 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.cjs +28 -7
- package/dist/agents/claude-runner.js +24 -10
- package/dist/agents/cursor-runner.js +5 -5
- package/dist/{agents-V2SRC2LH.js → agents-IWNQOQOU.js} +13 -13
- package/dist/{agents-ETD2LWP4.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-JTW4CZEQ.js → chunk-33HIBNSF.js} +107 -65
- package/dist/{chunk-FBZODCO4.js → chunk-3UDRWMIM.js} +2 -2
- package/dist/{chunk-7IAMHN2N.js → chunk-42JGPPVS.js} +1 -1
- package/dist/{chunk-7SEWZXPT.js → chunk-5QX2NYXL.js} +4 -4
- package/dist/{chunk-EP4IIKP4.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-KIWICTLW.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-3XDU7RIE.js → chunk-DLGGLV2M.js} +3 -3
- package/dist/{chunk-WZCPZVUC.js → chunk-EGTCXNQM.js} +3 -3
- package/dist/{chunk-FUXOZHHF.js → chunk-EZYZGDWU.js} +422 -175
- package/dist/{chunk-FO3NKZVJ.js → chunk-F2PVRF3B.js} +9 -0
- package/dist/{chunk-2KJE53ZJ.js → chunk-G2L3CR3A.js} +473 -108
- package/dist/{chunk-EHT2DRT4.js → chunk-H4UEFJRI.js} +4 -0
- package/dist/{chunk-WV33I2GC.js → chunk-HG25AYBV.js} +3 -3
- package/dist/{chunk-FPJFK4LB.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-OJKSDRZU.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-LZ744H2I.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-57KZLWTB.js → conductor-YBXURAUL.js} +11 -9
- package/dist/{conductor-57UKACQA.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-2TBRFJZ5.js → coordinator-prompt-GZCWQAAV.js} +7 -7
- package/dist/{coordinator-prompt-VOWUJRVJ.js → coordinator-prompt-YAZRQ4BI.js} +8 -8
- 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-V6SOEETA.js → global-workspace-BZAVBOH3.js} +8 -8
- package/dist/{global-workspace-T5C7EMVV.js → global-workspace-H6X32IJZ.js} +7 -7
- package/dist/index.cjs +13562 -12201
- package/dist/index.d.cts +190 -8
- package/dist/index.d.ts +190 -8
- package/dist/index.js +11783 -11168
- 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-JEF7JC3S.js → orchestrator-IKKSYIQ3.js} +17 -17
- package/dist/{orchestrator-C43M3JDK.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-POAYB2ID.js → thread-store-HY22M5A7.js} +4 -4
- package/dist/{thread-store-BMNJEJUH.js → thread-store-XMUQDO5O.js} +3 -3
- package/dist/{workspaces-7ZYTTB4A.js → workspaces-AGOLRBYZ.js} +7 -7
- package/dist/{workspaces-EWVIEJ4O.js → workspaces-BQUDYTBX.js} +8 -8
- package/dist/{worktree-2Q6J2VWZ.js → worktree-C5VI46RZ.js} +7 -7
- package/dist/{worktree-ZAJGYKCB.js → worktree-FMK57ULT.js} +6 -6
- package/package.json +4 -1
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
parseSessionQuotaResetAt,
|
|
15
15
|
planModeTurnInstruction,
|
|
16
16
|
resolveQuotaFallbackAgent
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-G2L3CR3A.js";
|
|
18
18
|
import {
|
|
19
19
|
REVIEW_TAB_TITLE,
|
|
20
20
|
applyWorktreePkgCacheEnv,
|
|
@@ -42,7 +42,9 @@ import {
|
|
|
42
42
|
listRunningDetachedJobs,
|
|
43
43
|
maybeCompactContext,
|
|
44
44
|
mergeWorktreeActiveRuns,
|
|
45
|
+
parsePlanQuestionsInput,
|
|
45
46
|
planJobContinue,
|
|
47
|
+
planQuestionsSignature,
|
|
46
48
|
requestReview,
|
|
47
49
|
resolveWorktreeSetupLog,
|
|
48
50
|
runArchiveScript,
|
|
@@ -53,7 +55,7 @@ import {
|
|
|
53
55
|
worktreeDevProcessKey,
|
|
54
56
|
worktreeRunProcessKey,
|
|
55
57
|
worktreeSetupProcessKey
|
|
56
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-OVNIP265.js";
|
|
57
59
|
import {
|
|
58
60
|
applyAgentEvent,
|
|
59
61
|
clipAgentEventForPaint,
|
|
@@ -75,7 +77,7 @@ import {
|
|
|
75
77
|
import {
|
|
76
78
|
formatOptionalServicesDirectiveForTurn,
|
|
77
79
|
formatOptionalServicesReminderForTurn
|
|
78
|
-
} from "./chunk-
|
|
80
|
+
} from "./chunk-WRZRX4Q7.js";
|
|
79
81
|
import {
|
|
80
82
|
SLACK_REPLY_FORMATTING,
|
|
81
83
|
addWorkspace,
|
|
@@ -100,7 +102,7 @@ import {
|
|
|
100
102
|
stageAbsolutePathsAsAttachments,
|
|
101
103
|
stageBuffersAsAttachments,
|
|
102
104
|
syncWorkspacesFromThreads
|
|
103
|
-
} from "./chunk-
|
|
105
|
+
} from "./chunk-5QX2NYXL.js";
|
|
104
106
|
import {
|
|
105
107
|
addPrStackLayer,
|
|
106
108
|
allocateTeamSlug,
|
|
@@ -144,7 +146,7 @@ import {
|
|
|
144
146
|
resolveRepoRoot,
|
|
145
147
|
switchWorktreeBranch,
|
|
146
148
|
withRepoGitLock
|
|
147
|
-
} from "./chunk-
|
|
149
|
+
} from "./chunk-BIPXOHZI.js";
|
|
148
150
|
import {
|
|
149
151
|
agentNicknameFromWorktreePath,
|
|
150
152
|
appendMessage,
|
|
@@ -168,18 +170,18 @@ import {
|
|
|
168
170
|
worktreeNameFromPath,
|
|
169
171
|
worktreeSlugForTicket,
|
|
170
172
|
writeThread
|
|
171
|
-
} from "./chunk-
|
|
173
|
+
} from "./chunk-HG25AYBV.js";
|
|
172
174
|
import {
|
|
173
175
|
mcpServerIdForPermission,
|
|
174
176
|
mcpServerPermissionUpdate
|
|
175
|
-
} from "./chunk-
|
|
177
|
+
} from "./chunk-F2PVRF3B.js";
|
|
176
178
|
import {
|
|
177
179
|
createAgentStreamCoalescer
|
|
178
180
|
} from "./chunk-AXQ4ZWHK.js";
|
|
179
181
|
import {
|
|
180
182
|
applyAgentRunnerHeapEnv,
|
|
181
183
|
packagedMcpDir
|
|
182
|
-
} from "./chunk-
|
|
184
|
+
} from "./chunk-MMVMQ34G.js";
|
|
183
185
|
import {
|
|
184
186
|
fallbackTurnFailDetail,
|
|
185
187
|
formatAgentErrorContinuePrompt,
|
|
@@ -235,7 +237,7 @@ import {
|
|
|
235
237
|
usageOnLimit,
|
|
236
238
|
withTurnScopedCost,
|
|
237
239
|
writeViewerContext
|
|
238
|
-
} from "./chunk-
|
|
240
|
+
} from "./chunk-A2YXQC65.js";
|
|
239
241
|
import {
|
|
240
242
|
examplePrefixedBranch,
|
|
241
243
|
sanitizeGitBranchPrefix
|
|
@@ -245,10 +247,10 @@ import {
|
|
|
245
247
|
applyManagedAccountEnv,
|
|
246
248
|
nextManagedAccount,
|
|
247
249
|
resolveAccountForThread
|
|
248
|
-
} from "./chunk-
|
|
250
|
+
} from "./chunk-KI45T4DI.js";
|
|
249
251
|
import {
|
|
250
252
|
releaseCaffeinateHoldForThread
|
|
251
|
-
} from "./chunk-
|
|
253
|
+
} from "./chunk-LAWLUOWQ.js";
|
|
252
254
|
import {
|
|
253
255
|
writePrivateFile
|
|
254
256
|
} from "./chunk-JT7R45JB.js";
|
|
@@ -261,7 +263,7 @@ import {
|
|
|
261
263
|
threadLivePath,
|
|
262
264
|
threadsDir,
|
|
263
265
|
worktreesRoot
|
|
264
|
-
} from "./chunk-
|
|
266
|
+
} from "./chunk-H4UEFJRI.js";
|
|
265
267
|
|
|
266
268
|
// src/orchestrator/orchestrator.ts
|
|
267
269
|
import { EventEmitter } from "events";
|
|
@@ -457,9 +459,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
|
|
|
457
459
|
`Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
|
|
458
460
|
);
|
|
459
461
|
}
|
|
460
|
-
const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-
|
|
462
|
+
const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-BZAVBOH3.js");
|
|
461
463
|
if (isGlobalThread2(thread)) {
|
|
462
|
-
const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-
|
|
464
|
+
const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-YAZRQ4BI.js");
|
|
463
465
|
ensureGlobalCoordinatorCwd2(
|
|
464
466
|
isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
|
|
465
467
|
);
|
|
@@ -1619,6 +1621,44 @@ function denyPendingToolPermissions(threadId) {
|
|
|
1619
1621
|
if (last) clearPrompt(threadId, last.id);
|
|
1620
1622
|
}
|
|
1621
1623
|
|
|
1624
|
+
// src/board/agent-block-view.ts
|
|
1625
|
+
function worktreeBoardStatus(group) {
|
|
1626
|
+
const order = ["running", "queued", "error", "broken"];
|
|
1627
|
+
for (const status of order) {
|
|
1628
|
+
if (group.some((t) => t.status === status)) return status;
|
|
1629
|
+
}
|
|
1630
|
+
return group[0]?.status ?? "idle";
|
|
1631
|
+
}
|
|
1632
|
+
function isDismissedAskUserBlock(block, dismissedQuestionSignature) {
|
|
1633
|
+
if (!block || block.source !== "ask_user") return false;
|
|
1634
|
+
const dismissed = dismissedQuestionSignature?.trim();
|
|
1635
|
+
if (!dismissed) return false;
|
|
1636
|
+
if (!block.questionSignature) return true;
|
|
1637
|
+
return block.questionSignature === dismissed;
|
|
1638
|
+
}
|
|
1639
|
+
function visibleAgentBlock(thread) {
|
|
1640
|
+
if (thread.status === "archived" || thread.status === "error" || thread.status === "broken") {
|
|
1641
|
+
return null;
|
|
1642
|
+
}
|
|
1643
|
+
const block = thread.agentBlock;
|
|
1644
|
+
if (!block?.reason?.trim()) return null;
|
|
1645
|
+
if (isDismissedAskUserBlock(block, thread.dismissedQuestionSignature)) return null;
|
|
1646
|
+
return block;
|
|
1647
|
+
}
|
|
1648
|
+
function worktreeAgentBlock(group) {
|
|
1649
|
+
let best = null;
|
|
1650
|
+
for (const thread of group) {
|
|
1651
|
+
const block = visibleAgentBlock(thread);
|
|
1652
|
+
if (!block) continue;
|
|
1653
|
+
if (!best || block.at > best.at) best = block;
|
|
1654
|
+
}
|
|
1655
|
+
return best;
|
|
1656
|
+
}
|
|
1657
|
+
function threadCardBlockFields(group) {
|
|
1658
|
+
const block = worktreeAgentBlock(group);
|
|
1659
|
+
return block ? { blockedReason: block.reason, blockedSource: block.source } : null;
|
|
1660
|
+
}
|
|
1661
|
+
|
|
1622
1662
|
// src/threads/connected-orchestrator.ts
|
|
1623
1663
|
function connectedOrchestrator(thread, find) {
|
|
1624
1664
|
if (isOrchestratorThread(thread)) return null;
|
|
@@ -1758,7 +1798,10 @@ function decisionBlockFromParts(parts, planMode, at = (/* @__PURE__ */ new Date(
|
|
|
1758
1798
|
if (last?.type === "tool" && isAskUserToolName(last.name)) {
|
|
1759
1799
|
const pending = extractPendingPlanQuestions(parts);
|
|
1760
1800
|
const reason = pending ? formatAskUserNotifyMessage(pending.questions) : "Waiting for an answer in that chat.";
|
|
1761
|
-
return
|
|
1801
|
+
return {
|
|
1802
|
+
...makeAgentBlock("ask_user", reason, at),
|
|
1803
|
+
...pending ? { questionSignature: pending.signature } : {}
|
|
1804
|
+
};
|
|
1762
1805
|
}
|
|
1763
1806
|
if (!planMode || last?.type !== "tool") return null;
|
|
1764
1807
|
const exited = /exitplanmode/i.test(last.name ?? "");
|
|
@@ -1775,16 +1818,34 @@ function decisionBlockFromParts(parts, planMode, at = (/* @__PURE__ */ new Date(
|
|
|
1775
1818
|
function agentBlockAfterTurn(input) {
|
|
1776
1819
|
if (input.failed) return null;
|
|
1777
1820
|
const decision = decisionBlockFromParts(input.parts, input.planMode);
|
|
1778
|
-
if (decision)
|
|
1821
|
+
if (decision) {
|
|
1822
|
+
if (isDismissedAskUserBlock(decision, input.dismissedQuestionSignature)) {
|
|
1823
|
+
return input.existing?.source === "reported" ? input.existing : null;
|
|
1824
|
+
}
|
|
1825
|
+
return decision;
|
|
1826
|
+
}
|
|
1779
1827
|
if (input.existing && input.existing.source !== "reported" && lastTopLevelTool(input.parts)) {
|
|
1780
1828
|
return null;
|
|
1781
1829
|
}
|
|
1830
|
+
if (isDismissedAskUserBlock(input.existing, input.dismissedQuestionSignature)) return null;
|
|
1782
1831
|
return input.existing ?? null;
|
|
1783
1832
|
}
|
|
1784
1833
|
function clearAgentBlock(threadId) {
|
|
1785
1834
|
const thread = readThread(threadId);
|
|
1786
|
-
if (!thread?.agentBlock) return;
|
|
1787
|
-
updateThread(threadId, { agentBlock: null });
|
|
1835
|
+
if (!thread?.agentBlock && !thread?.dismissedQuestionSignature) return;
|
|
1836
|
+
updateThread(threadId, { agentBlock: null, dismissedQuestionSignature: null });
|
|
1837
|
+
}
|
|
1838
|
+
function dismissAskUserQuestion(threadId, signature) {
|
|
1839
|
+
const thread = readThread(threadId);
|
|
1840
|
+
if (!thread || thread.status === "archived") return;
|
|
1841
|
+
const sig = signature.trim();
|
|
1842
|
+
if (!sig) return;
|
|
1843
|
+
const clearBlock = thread.agentBlock?.source === "ask_user";
|
|
1844
|
+
if (thread.dismissedQuestionSignature === sig && !clearBlock) return;
|
|
1845
|
+
updateThread(threadId, {
|
|
1846
|
+
dismissedQuestionSignature: sig,
|
|
1847
|
+
...clearBlock ? { agentBlock: null } : {}
|
|
1848
|
+
});
|
|
1788
1849
|
}
|
|
1789
1850
|
function writeAgentBlock(threadId, block) {
|
|
1790
1851
|
const thread = readThread(threadId);
|
|
@@ -1799,11 +1860,12 @@ function settleAgentBlock(threadId, parts, failed) {
|
|
|
1799
1860
|
existing: thread.agentBlock,
|
|
1800
1861
|
parts,
|
|
1801
1862
|
planMode: Boolean(thread.planMode),
|
|
1802
|
-
failed
|
|
1863
|
+
failed,
|
|
1864
|
+
dismissedQuestionSignature: thread.dismissedQuestionSignature
|
|
1803
1865
|
});
|
|
1804
1866
|
const prev = thread.agentBlock ?? null;
|
|
1805
1867
|
if (prev === next) return;
|
|
1806
|
-
if (prev && next && prev.source === next.source && prev.reason === next.reason && prev.at === next.at) {
|
|
1868
|
+
if (prev && next && prev.source === next.source && prev.reason === next.reason && prev.at === next.at && prev.questionSignature === next.questionSignature) {
|
|
1807
1869
|
return;
|
|
1808
1870
|
}
|
|
1809
1871
|
updateThread(threadId, { agentBlock: next });
|
|
@@ -1821,8 +1883,13 @@ function agentBlockFields(thread) {
|
|
|
1821
1883
|
}
|
|
1822
1884
|
function stampAskUserBlock(resolveCaller, questions) {
|
|
1823
1885
|
const asked = formatAskUserNotifyMessage(questions);
|
|
1886
|
+
const parsed = parsePlanQuestionsInput({ questions });
|
|
1887
|
+
const block = makeAgentBlock("ask_user", asked);
|
|
1824
1888
|
try {
|
|
1825
|
-
writeAgentBlock(
|
|
1889
|
+
writeAgentBlock(
|
|
1890
|
+
resolveCaller().id,
|
|
1891
|
+
parsed.length ? { ...block, questionSignature: planQuestionsSignature(parsed) } : block
|
|
1892
|
+
);
|
|
1826
1893
|
} catch {
|
|
1827
1894
|
}
|
|
1828
1895
|
return asked;
|
|
@@ -1983,36 +2050,6 @@ async function requireAgent(agent, opts) {
|
|
|
1983
2050
|
return status;
|
|
1984
2051
|
}
|
|
1985
2052
|
|
|
1986
|
-
// src/board/agent-block-view.ts
|
|
1987
|
-
function worktreeBoardStatus(group) {
|
|
1988
|
-
const order = ["running", "queued", "error", "broken"];
|
|
1989
|
-
for (const status of order) {
|
|
1990
|
-
if (group.some((t) => t.status === status)) return status;
|
|
1991
|
-
}
|
|
1992
|
-
return group[0]?.status ?? "idle";
|
|
1993
|
-
}
|
|
1994
|
-
function visibleAgentBlock(thread) {
|
|
1995
|
-
if (thread.status === "archived" || thread.status === "error" || thread.status === "broken") {
|
|
1996
|
-
return null;
|
|
1997
|
-
}
|
|
1998
|
-
const block = thread.agentBlock;
|
|
1999
|
-
if (!block?.reason?.trim()) return null;
|
|
2000
|
-
return block;
|
|
2001
|
-
}
|
|
2002
|
-
function worktreeAgentBlock(group) {
|
|
2003
|
-
let best = null;
|
|
2004
|
-
for (const thread of group) {
|
|
2005
|
-
const block = visibleAgentBlock(thread);
|
|
2006
|
-
if (!block) continue;
|
|
2007
|
-
if (!best || block.at > best.at) best = block;
|
|
2008
|
-
}
|
|
2009
|
-
return best;
|
|
2010
|
-
}
|
|
2011
|
-
function threadCardBlockFields(group) {
|
|
2012
|
-
const block = worktreeAgentBlock(group);
|
|
2013
|
-
return block ? { blockedReason: block.reason, blockedSource: block.source } : null;
|
|
2014
|
-
}
|
|
2015
|
-
|
|
2016
2053
|
// src/board/pr-state.ts
|
|
2017
2054
|
function isOpenPrState(prUrl, prState) {
|
|
2018
2055
|
if (!prUrl?.trim()) return false;
|
|
@@ -2789,7 +2826,7 @@ async function createThread(input, _onSetupLine) {
|
|
|
2789
2826
|
});
|
|
2790
2827
|
await requireAgent(resolved.agent);
|
|
2791
2828
|
if (input.cowboy) {
|
|
2792
|
-
const { cowboyModeEnabled } = await import("./app-settings-
|
|
2829
|
+
const { cowboyModeEnabled } = await import("./app-settings-DZ5AY7N5.js");
|
|
2793
2830
|
if (!cowboyModeEnabled()) {
|
|
2794
2831
|
throw new Error(
|
|
2795
2832
|
"Cowboy mode is off. Enable it in Settings \u2192 Advanced."
|
|
@@ -2848,7 +2885,7 @@ async function createThread(input, _onSetupLine) {
|
|
|
2848
2885
|
let sourceIsFork = false;
|
|
2849
2886
|
if (!input.cowboy && sourceType === "branch" && (!sourceRef || sourceRef === "HEAD" || sourceRef === "default")) {
|
|
2850
2887
|
if (isAbleTimeConnected() && getIssueSource() === "abletime") {
|
|
2851
|
-
const { ensureAbleTimeTask, issueAttachmentForAbleTimeTask } = await import("./abletime-
|
|
2888
|
+
const { ensureAbleTimeTask, issueAttachmentForAbleTimeTask } = await import("./abletime-T5YSJLNZ.js");
|
|
2852
2889
|
const task = await ensureAbleTimeTask({
|
|
2853
2890
|
title: title?.trim() || "Untitled work",
|
|
2854
2891
|
description: input.prompt?.trim() || void 0
|
|
@@ -2959,7 +2996,7 @@ async function createThread(input, _onSetupLine) {
|
|
|
2959
2996
|
return readThread(thread.id) ?? thread;
|
|
2960
2997
|
}
|
|
2961
2998
|
async function listLinearIssues(agent, repoPath) {
|
|
2962
|
-
const { getAdapter: getAdapter2 } = await import("./agents-
|
|
2999
|
+
const { getAdapter: getAdapter2 } = await import("./agents-IWNQOQOU.js");
|
|
2963
3000
|
await requireAgent(agent, { requireLinear: true });
|
|
2964
3001
|
const adapter = getAdapter2(agent);
|
|
2965
3002
|
if (!adapter.listLinearIssues) {
|
|
@@ -3735,7 +3772,7 @@ async function adoptThread(input) {
|
|
|
3735
3772
|
messages: input.messages ?? []
|
|
3736
3773
|
});
|
|
3737
3774
|
writeThread(thread);
|
|
3738
|
-
const { addWorkspace: addWorkspace2 } = await import("./workspaces-
|
|
3775
|
+
const { addWorkspace: addWorkspace2 } = await import("./workspaces-BQUDYTBX.js");
|
|
3739
3776
|
await addWorkspace2(repoPath);
|
|
3740
3777
|
const { ensureWorktreeSideboardIgnored } = await import("./worktree-exclude-RXZPTCNH.js");
|
|
3741
3778
|
await ensureWorktreeSideboardIgnored(input.worktreePath);
|
|
@@ -6664,7 +6701,7 @@ function formatScheduledPrompt(name, prompt) {
|
|
|
6664
6701
|
${prompt}`;
|
|
6665
6702
|
}
|
|
6666
6703
|
async function defaultDeps() {
|
|
6667
|
-
const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-
|
|
6704
|
+
const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-IKKSYIQ3.js");
|
|
6668
6705
|
const orch = getOrchestrator2();
|
|
6669
6706
|
return {
|
|
6670
6707
|
findThread: (id) => findThreadByRef(id),
|
|
@@ -6982,7 +7019,7 @@ var Orchestrator = class {
|
|
|
6982
7019
|
orphans: orphans.map((o) => ({ path: o.path, repoPath: o.repoPath }))
|
|
6983
7020
|
});
|
|
6984
7021
|
}
|
|
6985
|
-
const { autoCleanupOrphansEnabled } = await import("./app-settings-
|
|
7022
|
+
const { autoCleanupOrphansEnabled } = await import("./app-settings-DZ5AY7N5.js");
|
|
6986
7023
|
if (autoCleanupOrphansEnabled() && shouldRunWorktreeCleanup() && orphans.length > 0) {
|
|
6987
7024
|
await cleanupOrphanWorktrees({ repoPaths });
|
|
6988
7025
|
}
|
|
@@ -7376,7 +7413,7 @@ var Orchestrator = class {
|
|
|
7376
7413
|
}
|
|
7377
7414
|
await setup;
|
|
7378
7415
|
if (skipSetup) return;
|
|
7379
|
-
const { autoRunAfterSetupEnabled } = await import("./app-settings-
|
|
7416
|
+
const { autoRunAfterSetupEnabled } = await import("./app-settings-DZ5AY7N5.js");
|
|
7380
7417
|
if (autoRunAfterSetupEnabled()) {
|
|
7381
7418
|
try {
|
|
7382
7419
|
await this.startDev(threadId);
|
|
@@ -7768,7 +7805,7 @@ ${formatEnvReminder(projectNameForRepoPath(thread.repoPath || thread.worktreePat
|
|
|
7768
7805
|
}
|
|
7769
7806
|
const isBrightsy = fresh.agent === "brightsy";
|
|
7770
7807
|
const isOrchestration = isOrchestratorThread(fresh);
|
|
7771
|
-
const { autoRenameBranchEnabled, getGithubGitAuthMode, gitBranchPrefixSetting } = await import("./app-settings-
|
|
7808
|
+
const { autoRenameBranchEnabled, getGithubGitAuthMode, gitBranchPrefixSetting } = await import("./app-settings-DZ5AY7N5.js");
|
|
7772
7809
|
const gitAuthMode = getGithubGitAuthMode();
|
|
7773
7810
|
const worktreeDirective = isBrightsy || isOrchestration ? null : formatWorktreeDirective(fresh, {
|
|
7774
7811
|
githubSlug: await withTimeout(
|
|
@@ -7923,7 +7960,7 @@ ${formatEnvReminder(projectNameForRepoPath(thread.repoPath || thread.worktreePat
|
|
|
7923
7960
|
if (!this.stoppedTurns.has(threadId) && this.requireThread(threadId).agent === "cursor" && exitCode !== 0 && !assistantText && parts.length === 0) {
|
|
7924
7961
|
const sessionId = result.sessionId || this.requireThread(threadId).sessionId || "";
|
|
7925
7962
|
if (sessionId) {
|
|
7926
|
-
const { recoverFinishedCursorRun } = await import("./cursor-recover-
|
|
7963
|
+
const { recoverFinishedCursorRun } = await import("./cursor-recover-OWPQUHFH.js");
|
|
7927
7964
|
for (let i = 0; i < 8; i++) {
|
|
7928
7965
|
const recovered = recoverFinishedCursorRun({
|
|
7929
7966
|
agentId: sessionId,
|
|
@@ -9084,7 +9121,7 @@ ${formatEnvReminder(projectNameForRepoPath(thread.repoPath || thread.worktreePat
|
|
|
9084
9121
|
if (Object.keys(patch).length === 0) continue;
|
|
9085
9122
|
updateThread(t.id, patch);
|
|
9086
9123
|
}
|
|
9087
|
-
const { autoArchiveOnMergeEnabled } = await import("./app-settings-
|
|
9124
|
+
const { autoArchiveOnMergeEnabled } = await import("./app-settings-DZ5AY7N5.js");
|
|
9088
9125
|
const latest = this.requireThread(thread.id);
|
|
9089
9126
|
if (!shouldAutoArchiveOnPrMerge({
|
|
9090
9127
|
previousPrState: prevState || null,
|
|
@@ -9293,6 +9330,11 @@ ${formatEnvReminder(projectNameForRepoPath(thread.repoPath || thread.worktreePat
|
|
|
9293
9330
|
if (!next) throw new Error("Title cannot be empty");
|
|
9294
9331
|
return updateThread(thread.id, { title: next, userSetTitle: true });
|
|
9295
9332
|
}
|
|
9333
|
+
dismissAskUser(threadRef, signature) {
|
|
9334
|
+
const thread = this.requireThread(threadRef);
|
|
9335
|
+
dismissAskUserQuestion(thread.id, signature);
|
|
9336
|
+
return this.requireThread(thread.id);
|
|
9337
|
+
}
|
|
9296
9338
|
setWorkspaceTags(threadRef, tags) {
|
|
9297
9339
|
return applyWorkspaceTags(threadRef, tags, "replace");
|
|
9298
9340
|
}
|
|
@@ -9403,7 +9445,7 @@ ${formatEnvReminder(projectNameForRepoPath(thread.repoPath || thread.worktreePat
|
|
|
9403
9445
|
await runArchiveScript(thread.repoPath, thread.worktreePath);
|
|
9404
9446
|
} catch {
|
|
9405
9447
|
}
|
|
9406
|
-
const { deleteBranchOnPurgeEnabled } = await import("./app-settings-
|
|
9448
|
+
const { deleteBranchOnPurgeEnabled } = await import("./app-settings-DZ5AY7N5.js");
|
|
9407
9449
|
const deleteBranch = opts?.deleteBranch ?? deleteBranchOnPurgeEnabled();
|
|
9408
9450
|
await removeWorktree(thread.repoPath, thread.worktreePath, {
|
|
9409
9451
|
deleteBranch: deleteBranch ? thread.branchName : void 0
|
|
@@ -9418,7 +9460,7 @@ ${formatEnvReminder(projectNameForRepoPath(thread.repoPath || thread.worktreePat
|
|
|
9418
9460
|
throw new Error("Thread is not archived");
|
|
9419
9461
|
}
|
|
9420
9462
|
if (isGlobalThread(thread)) {
|
|
9421
|
-
const { globalAgentCwd } = await import("./paths-
|
|
9463
|
+
const { globalAgentCwd } = await import("./paths-PHWEVXD5.js");
|
|
9422
9464
|
updateThread(thread.id, { worktreePath: globalAgentCwd() });
|
|
9423
9465
|
const restored2 = setStatus(thread.id, "idle");
|
|
9424
9466
|
this.emit({ type: "status_changed", threadId: restored2.id, status: restored2.status });
|
|
@@ -9539,7 +9581,7 @@ async function startOrchestration(opts) {
|
|
|
9539
9581
|
sourceRef: "default",
|
|
9540
9582
|
...createOpts
|
|
9541
9583
|
}).catch(async () => {
|
|
9542
|
-
const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-
|
|
9584
|
+
const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-C5VI46RZ.js");
|
|
9543
9585
|
const repo = await resolveRepoRoot2(repoPath);
|
|
9544
9586
|
const def = await resolveDefaultBranch2(repo);
|
|
9545
9587
|
return orch.createThread({
|
|
@@ -9549,7 +9591,7 @@ async function startOrchestration(opts) {
|
|
|
9549
9591
|
repoPath: repo
|
|
9550
9592
|
});
|
|
9551
9593
|
});
|
|
9552
|
-
const { updateThread: upd } = await import("./thread-store-
|
|
9594
|
+
const { updateThread: upd } = await import("./thread-store-HY22M5A7.js");
|
|
9553
9595
|
const updated = upd(thread.id, {
|
|
9554
9596
|
sourceType: "orchestration",
|
|
9555
9597
|
sourceRef: goal
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
cursorSdkStoreDir
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-WMZIANPV.js";
|
|
6
6
|
import {
|
|
7
7
|
normalizeThinkingEffort
|
|
8
8
|
} from "./chunk-KGZBYWZ3.js";
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
threadFilePath,
|
|
11
11
|
threadLockPath,
|
|
12
12
|
threadsDir
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-WOU343SI.js";
|
|
14
14
|
|
|
15
15
|
// src/store/thread-store.ts
|
|
16
16
|
import { randomUUID } from "crypto";
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
ensureGhPreferOrigin,
|
|
4
4
|
resolveGithubRepoSlug,
|
|
5
5
|
resolveRepoRoot
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-BIPXOHZI.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-HG25AYBV.js";
|
|
16
16
|
import {
|
|
17
17
|
ATTACHMENTS_DIR,
|
|
18
18
|
attachmentsGitignoreBody
|
|
@@ -29,13 +29,13 @@ import {
|
|
|
29
29
|
resolveThreadDefaults,
|
|
30
30
|
resolveViewerProfile,
|
|
31
31
|
resolveViewerProfileForRepo
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-A2YXQC65.js";
|
|
33
33
|
import {
|
|
34
34
|
appDataDir,
|
|
35
35
|
globalAgentCwd,
|
|
36
36
|
loadRepoSettings,
|
|
37
37
|
sideboardReposDir
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-H4UEFJRI.js";
|
|
39
39
|
|
|
40
40
|
// src/store/workspaces.ts
|
|
41
41
|
import { existsSync as existsSync2, mkdirSync as mkdirSync3, readFileSync as readFileSync3, statSync as statSync2, writeFileSync as writeFileSync3 } from "fs";
|
|
@@ -11,11 +11,11 @@ import {
|
|
|
11
11
|
isGlobalThread,
|
|
12
12
|
isOrchestratorThread,
|
|
13
13
|
isSlackCoordinatorThread
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-X3FSWWW2.js";
|
|
15
15
|
import {
|
|
16
16
|
mergeAgentGitAuthEnv,
|
|
17
17
|
resolveAgentGitAuthEnv
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-DLGGLV2M.js";
|
|
19
19
|
import {
|
|
20
20
|
ATTACHMENTS_DIR,
|
|
21
21
|
DETACHED_JOBS_DIR,
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
import {
|
|
33
33
|
assertOrchestratorCapableAgent,
|
|
34
34
|
contextTokens
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-PHMFAU35.js";
|
|
36
36
|
import {
|
|
37
37
|
stripNestedElectronEnv
|
|
38
38
|
} from "./chunk-WWUABK6B.js";
|
|
@@ -46,26 +46,28 @@ import {
|
|
|
46
46
|
updateThread,
|
|
47
47
|
worktreeNameFromPath,
|
|
48
48
|
writeThread
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-3UDRWMIM.js";
|
|
50
50
|
import {
|
|
51
51
|
findConventionSetup,
|
|
52
52
|
loadRepoSettings,
|
|
53
53
|
loadWorkspaceSettings,
|
|
54
54
|
runCursorWorktreeSetup,
|
|
55
55
|
workspaceSettingsSourceLabel
|
|
56
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-WOU343SI.js";
|
|
57
57
|
|
|
58
58
|
// src/hook/conductor.ts
|
|
59
59
|
import {
|
|
60
60
|
copyFileSync,
|
|
61
61
|
existsSync as existsSync4,
|
|
62
|
+
lstatSync,
|
|
62
63
|
mkdirSync as mkdirSync5,
|
|
63
64
|
readdirSync as readdirSync2,
|
|
64
65
|
readFileSync as readFileSync4,
|
|
65
|
-
realpathSync
|
|
66
|
+
realpathSync,
|
|
67
|
+
symlinkSync
|
|
66
68
|
} from "fs";
|
|
67
69
|
import { execFileSync } from "child_process";
|
|
68
|
-
import { basename, dirname as dirname4, join as join5, resolve, sep } from "path";
|
|
70
|
+
import { basename, dirname as dirname4, isAbsolute, join as join5, resolve, sep } from "path";
|
|
69
71
|
import { execa } from "execa";
|
|
70
72
|
import { createInterface } from "readline";
|
|
71
73
|
|
|
@@ -1674,7 +1676,7 @@ var PORT_RANGE_SIZE = 10;
|
|
|
1674
1676
|
var RECLAIM_RETRY_DELAY_MS = 40;
|
|
1675
1677
|
var RECLAIM_TRIES = 8;
|
|
1676
1678
|
async function killReclaimable(ports, worktreePath, signal) {
|
|
1677
|
-
const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-
|
|
1679
|
+
const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-ZFRXTVGP.js");
|
|
1678
1680
|
if (worktreePath) killStaleWorktreeListeners2(ports, worktreePath, signal);
|
|
1679
1681
|
else killListenersOnPorts2(ports);
|
|
1680
1682
|
}
|
|
@@ -1926,8 +1928,56 @@ function copyConfiguredFiles(repoPath, worktreePath) {
|
|
|
1926
1928
|
copyFileSync(src, dest);
|
|
1927
1929
|
copied.push(rel);
|
|
1928
1930
|
}
|
|
1931
|
+
linkSharedDirectories(repoPath, worktreePath);
|
|
1929
1932
|
return copied;
|
|
1930
1933
|
}
|
|
1934
|
+
function linkSharedDirectories(repoPath, worktreePath) {
|
|
1935
|
+
const dirs = loadRepoSettings(repoPath)?.sharedDirectories ?? [];
|
|
1936
|
+
if (!dirs.length || samePath(repoPath, worktreePath)) return [];
|
|
1937
|
+
const linked = [];
|
|
1938
|
+
for (const rel of dirs) {
|
|
1939
|
+
if (!isSafeRelativeDir(rel)) continue;
|
|
1940
|
+
if (!isGitignored(repoPath, rel)) continue;
|
|
1941
|
+
const src = join5(repoPath, rel);
|
|
1942
|
+
let srcStat;
|
|
1943
|
+
try {
|
|
1944
|
+
srcStat = lstatSync(src);
|
|
1945
|
+
} catch {
|
|
1946
|
+
continue;
|
|
1947
|
+
}
|
|
1948
|
+
if (!srcStat.isDirectory()) continue;
|
|
1949
|
+
const dest = join5(worktreePath, rel);
|
|
1950
|
+
if (existsSync4(dest)) continue;
|
|
1951
|
+
mkdirSync5(dirname4(dest), { recursive: true });
|
|
1952
|
+
try {
|
|
1953
|
+
symlinkSync(src, dest);
|
|
1954
|
+
} catch {
|
|
1955
|
+
continue;
|
|
1956
|
+
}
|
|
1957
|
+
linked.push(rel);
|
|
1958
|
+
}
|
|
1959
|
+
return linked;
|
|
1960
|
+
}
|
|
1961
|
+
function samePath(a, b) {
|
|
1962
|
+
try {
|
|
1963
|
+
return realpathSync(a) === realpathSync(b);
|
|
1964
|
+
} catch {
|
|
1965
|
+
return resolve(a) === resolve(b);
|
|
1966
|
+
}
|
|
1967
|
+
}
|
|
1968
|
+
function isSafeRelativeDir(rel) {
|
|
1969
|
+
if (!rel || isAbsolute(rel)) return false;
|
|
1970
|
+
const parts = rel.split(/[\\/]/).filter(Boolean);
|
|
1971
|
+
return parts.length > 0 && parts.every((part) => part !== "." && part !== "..");
|
|
1972
|
+
}
|
|
1973
|
+
function isGitignored(repoPath, rel) {
|
|
1974
|
+
try {
|
|
1975
|
+
execFileSync("git", ["-C", repoPath, "check-ignore", "-q", "--", rel], { stdio: "ignore" });
|
|
1976
|
+
return true;
|
|
1977
|
+
} catch {
|
|
1978
|
+
return false;
|
|
1979
|
+
}
|
|
1980
|
+
}
|
|
1931
1981
|
var cachedLoginEnv = null;
|
|
1932
1982
|
async function captureLoginEnv() {
|
|
1933
1983
|
if (cachedLoginEnv) return { ...cachedLoginEnv };
|
|
@@ -2307,6 +2357,8 @@ async function startDevServer(repoPath, worktreePath, onLine, opts) {
|
|
|
2307
2357
|
}
|
|
2308
2358
|
|
|
2309
2359
|
export {
|
|
2360
|
+
planQuestionsSignature,
|
|
2361
|
+
parsePlanQuestionsInput,
|
|
2310
2362
|
isAskUserToolName,
|
|
2311
2363
|
extractPendingPlanQuestions,
|
|
2312
2364
|
needsCoordinatorAction,
|
|
@@ -2357,6 +2409,7 @@ export {
|
|
|
2357
2409
|
readWorktreeInclude,
|
|
2358
2410
|
resolveFilesToCopy,
|
|
2359
2411
|
copyConfiguredFiles,
|
|
2412
|
+
linkSharedDirectories,
|
|
2360
2413
|
captureLoginEnv,
|
|
2361
2414
|
buildWorkspaceScriptEnv,
|
|
2362
2415
|
killableListenerPids,
|
|
@@ -125,7 +125,7 @@ async function connectedCliPresence(integrations) {
|
|
|
125
125
|
const ids = connectedOptionalServices(integrations).filter((spec) => spec.cli).map((spec) => spec.id);
|
|
126
126
|
if (ids.length === 0) return void 0;
|
|
127
127
|
try {
|
|
128
|
-
const { optionalCliPresence } = await import("./optional-cli-
|
|
128
|
+
const { optionalCliPresence } = await import("./optional-cli-QDIT57VD.js");
|
|
129
129
|
return await optionalCliPresence(ids);
|
|
130
130
|
} catch {
|
|
131
131
|
return void 0;
|
|
@@ -6,14 +6,14 @@ import {
|
|
|
6
6
|
normalizeAbleTimeCredential,
|
|
7
7
|
normalizeAbleTimeHost,
|
|
8
8
|
rewriteAbleTimeError
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-CFTOKVQN.js";
|
|
10
10
|
import {
|
|
11
11
|
httpFetch
|
|
12
12
|
} from "./chunk-2GPQZZLY.js";
|
|
13
13
|
import {
|
|
14
14
|
getAbleTimeAccessToken,
|
|
15
15
|
getAbleTimeHost
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-PHMFAU35.js";
|
|
17
17
|
|
|
18
18
|
// src/integrations/abletime-rest.ts
|
|
19
19
|
var ABLETIME_REST_PREFIX = "/api/public/v2";
|