@sideboard-ai/core 0.1.205 → 0.1.207
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-TONBQP4O.js → abletime-I4IYZBKU.js} +4 -4
- package/dist/{abletime-S3UHQZVW.js → abletime-UWSSLXH3.js} +4 -4
- package/dist/{abletime-oauth-SD4SZY5U.js → abletime-oauth-C3BQXKW3.js} +5 -3
- package/dist/{abletime-oauth-AVCEO2DY.js → abletime-oauth-UZHPB3W2.js} +14 -4
- package/dist/{abletime-rest-J2OBB4VA.js → abletime-rest-5YPPEOKK.js} +3 -3
- package/dist/{abletime-rest-6ODSXV7G.js → abletime-rest-HYNYDYK3.js} +3 -3
- package/dist/agents/cursor-runner.js +1 -1
- package/dist/{agents-67K4BQFJ.js → agents-7MULGRPU.js} +5 -5
- package/dist/{agents-BVOJNHV6.js → agents-KCBCFMFW.js} +6 -6
- package/dist/{app-settings-YEPF46IJ.js → app-settings-GJ6KDYEF.js} +1 -1
- package/dist/{app-settings-LGHMNHSP.js → app-settings-R2KNCT37.js} +1 -1
- package/dist/{chunk-FO45DMJ5.js → chunk-2GPZ4BAU.js} +81 -34
- package/dist/{chunk-X743YN5Y.js → chunk-4EGK47WV.js} +1 -0
- package/dist/{chunk-ULZLWQBS.js → chunk-5UQTT4S7.js} +79 -32
- package/dist/{chunk-6Q7DFVDQ.js → chunk-6J4OQ6TF.js} +14 -4
- package/dist/{chunk-WVATAIF4.js → chunk-6KH4OBEW.js} +2 -2
- package/dist/{chunk-FO2NTJ7L.js → chunk-6YZLSZLK.js} +3 -3
- package/dist/{chunk-YOSTWSNC.js → chunk-A2BRWIEM.js} +18 -11
- package/dist/{chunk-DFUES6QU.js → chunk-ARR4OGLY.js} +1 -0
- package/dist/{chunk-INNLWYXW.js → chunk-DWGEBZ3C.js} +1 -0
- package/dist/{chunk-CYLDJWRK.js → chunk-F4LZUEIO.js} +37 -7
- package/dist/{chunk-KZ7PI7FE.js → chunk-JZHRZ3DR.js} +6 -1
- package/dist/{chunk-QUW5D62C.js → chunk-N4A4NWFO.js} +2 -2
- package/dist/{chunk-VIPA75ZA.js → chunk-PAQPT3JO.js} +3 -3
- package/dist/{chunk-5SMS6QTO.js → chunk-QOJB5PC7.js} +3 -3
- package/dist/{chunk-3K257PCS.js → chunk-TEDEVD4O.js} +37 -7
- package/dist/{chunk-QAVWH2RQ.js → chunk-W6X4GZJG.js} +3 -3
- package/dist/{chunk-SGUVAK66.js → chunk-WXWJ5MJ4.js} +5 -5
- package/dist/{chunk-W6VM36YO.js → chunk-X45BV4VX.js} +5 -5
- package/dist/{chunk-QFBBUFD4.js → chunk-Y4CF7LHH.js} +1 -0
- package/dist/{chunk-WF33LOP4.js → chunk-ZU7R35NY.js} +23 -11
- package/dist/{coordinator-prompt-WEPXXLLX.js → coordinator-prompt-6A3D7BV3.js} +4 -4
- package/dist/{coordinator-prompt-NPT555BO.js → coordinator-prompt-6NV2IHEX.js} +4 -4
- package/dist/{global-workspace-2I2T7FL5.js → global-workspace-I2X6UQMX.js} +4 -4
- package/dist/{global-workspace-NSILADOM.js → global-workspace-VS6HZF2I.js} +4 -4
- package/dist/index.cjs +125 -24
- package/dist/index.d.cts +16 -3
- package/dist/index.d.ts +16 -3
- package/dist/index.js +15 -13
- package/dist/mcp/run-stdio.cjs +123 -24
- package/dist/mcp/run-stdio.js +11 -11
- package/dist/{orchestrator-I7GFXLHF.js → orchestrator-7WF32ZXJ.js} +6 -6
- package/dist/{orchestrator-CMAVNELS.js → orchestrator-CXQY5YRG.js} +7 -7
- package/dist/{thread-store-ZGVWPVHP.js → thread-store-LS2T6RVH.js} +1 -1
- package/dist/{thread-store-2SS5V5CN.js → thread-store-XGYWXR2P.js} +1 -1
- package/dist/{workspaces-BOC6M7BW.js → workspaces-7PM7UGLG.js} +4 -4
- package/dist/{workspaces-RFGZBUAR.js → workspaces-CEU25ANO.js} +4 -4
- package/dist/{worktree-G3ZLM4DC.js → worktree-T6PCOIHZ.js} +3 -3
- package/dist/{worktree-WSUQMMK4.js → worktree-YD7Y6NRY.js} +3 -3
- package/package.json +1 -1
|
@@ -37,13 +37,14 @@ import {
|
|
|
37
37
|
pushTurnStderr,
|
|
38
38
|
resolveQuotaFallbackAgent,
|
|
39
39
|
shouldFeedErrorBackToAgent,
|
|
40
|
+
shouldRetryCodexPluginIsolate,
|
|
40
41
|
shouldRetryFailedAgentTurn,
|
|
41
42
|
stripBrightsyNdjsonNoise,
|
|
42
43
|
sumUsageList,
|
|
43
44
|
summarizeTurnStderr,
|
|
44
45
|
toolDescription,
|
|
45
46
|
turnFailChatText
|
|
46
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-ZU7R35NY.js";
|
|
47
48
|
import {
|
|
48
49
|
SLACK_REPLY_FORMATTING,
|
|
49
50
|
addWorkspace,
|
|
@@ -66,7 +67,7 @@ import {
|
|
|
66
67
|
stageAbsolutePathsAsAttachments,
|
|
67
68
|
stageBuffersAsAttachments,
|
|
68
69
|
syncWorkspacesFromThreads
|
|
69
|
-
} from "./chunk-
|
|
70
|
+
} from "./chunk-QOJB5PC7.js";
|
|
70
71
|
import {
|
|
71
72
|
addPrStackLayer,
|
|
72
73
|
allocateTeamName,
|
|
@@ -116,7 +117,7 @@ import {
|
|
|
116
117
|
worktreeDisplayLabelForGroup,
|
|
117
118
|
worktreeNameFromPath,
|
|
118
119
|
worktreeSlugForTicket
|
|
119
|
-
} from "./chunk-
|
|
120
|
+
} from "./chunk-N4A4NWFO.js";
|
|
120
121
|
import {
|
|
121
122
|
ATTACHMENTS_DIR,
|
|
122
123
|
DETACHED_JOBS_DIR,
|
|
@@ -134,7 +135,7 @@ import {
|
|
|
134
135
|
updateThread,
|
|
135
136
|
withThreadLock,
|
|
136
137
|
writeThread
|
|
137
|
-
} from "./chunk-
|
|
138
|
+
} from "./chunk-DWGEBZ3C.js";
|
|
138
139
|
import {
|
|
139
140
|
ensureWorktreeSideboardIgnored
|
|
140
141
|
} from "./chunk-SYFVUF2C.js";
|
|
@@ -170,7 +171,7 @@ import {
|
|
|
170
171
|
updateAdvancedSettings,
|
|
171
172
|
usageOnLimit,
|
|
172
173
|
writeSecureJson
|
|
173
|
-
} from "./chunk-
|
|
174
|
+
} from "./chunk-4EGK47WV.js";
|
|
174
175
|
import {
|
|
175
176
|
writePrivateFile
|
|
176
177
|
} from "./chunk-NSTQ6QKD.js";
|
|
@@ -408,7 +409,7 @@ async function continueSourceThread(threadId, prompt) {
|
|
|
408
409
|
await continueOnReply(threadId, prompt);
|
|
409
410
|
return;
|
|
410
411
|
}
|
|
411
|
-
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-
|
|
412
|
+
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-7WF32ZXJ.js");
|
|
412
413
|
await getOrchestrator2().send(threadId, prompt);
|
|
413
414
|
} catch {
|
|
414
415
|
}
|
|
@@ -801,9 +802,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
|
|
|
801
802
|
`Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
|
|
802
803
|
);
|
|
803
804
|
}
|
|
804
|
-
const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-
|
|
805
|
+
const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-I2X6UQMX.js");
|
|
805
806
|
if (isGlobalThread2(thread)) {
|
|
806
|
-
const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-
|
|
807
|
+
const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-6NV2IHEX.js");
|
|
807
808
|
ensureGlobalCoordinatorCwd2(
|
|
808
809
|
isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
|
|
809
810
|
);
|
|
@@ -1011,6 +1012,24 @@ var FIX_CI_RE = /^Fix CI: .+\.$/;
|
|
|
1011
1012
|
function normalizePrState(state) {
|
|
1012
1013
|
return (state ?? "").trim().toUpperCase();
|
|
1013
1014
|
}
|
|
1015
|
+
function samePrIdentity(a, b) {
|
|
1016
|
+
const left = (a ?? "").trim().replace(/\/+$/, "");
|
|
1017
|
+
const right = (b ?? "").trim().replace(/\/+$/, "");
|
|
1018
|
+
if (!left || !right) return false;
|
|
1019
|
+
if (left === right) return true;
|
|
1020
|
+
const ln = left.match(/\/pull\/(\d+)/i)?.[1];
|
|
1021
|
+
const rn = right.match(/\/pull\/(\d+)/i)?.[1];
|
|
1022
|
+
return Boolean(ln && rn && ln === rn);
|
|
1023
|
+
}
|
|
1024
|
+
function shouldPersistFetchedPrMeta(opts) {
|
|
1025
|
+
const meta = opts.metaUrl?.trim() || "";
|
|
1026
|
+
if (!meta) return false;
|
|
1027
|
+
const head = opts.headPrUrl?.trim() || "";
|
|
1028
|
+
if (head) return samePrIdentity(meta, head);
|
|
1029
|
+
const live = opts.livePrUrl?.trim() || "";
|
|
1030
|
+
if (live) return samePrIdentity(meta, live);
|
|
1031
|
+
return true;
|
|
1032
|
+
}
|
|
1014
1033
|
function sameLoginList(a, b) {
|
|
1015
1034
|
const left = [...a ?? []].map((s) => s.trim().toLowerCase()).filter(Boolean).sort();
|
|
1016
1035
|
const right = [...b ?? []].map((s) => s.trim().toLowerCase()).filter(Boolean).sort();
|
|
@@ -3629,7 +3648,7 @@ async function createThread(input, _onSetupLine) {
|
|
|
3629
3648
|
});
|
|
3630
3649
|
await requireAgent(resolved.agent);
|
|
3631
3650
|
if (input.cowboy) {
|
|
3632
|
-
const { cowboyModeEnabled } = await import("./app-settings-
|
|
3651
|
+
const { cowboyModeEnabled } = await import("./app-settings-R2KNCT37.js");
|
|
3633
3652
|
if (!cowboyModeEnabled()) {
|
|
3634
3653
|
throw new Error(
|
|
3635
3654
|
"Cowboy mode is off. Enable it in Settings \u2192 Advanced."
|
|
@@ -3687,7 +3706,7 @@ async function createThread(input, _onSetupLine) {
|
|
|
3687
3706
|
let sourceIsFork = false;
|
|
3688
3707
|
if (!input.cowboy && sourceType === "branch" && (!sourceRef || sourceRef === "HEAD" || sourceRef === "default")) {
|
|
3689
3708
|
if (isAbleTimeConnected() && getIssueSource() === "abletime") {
|
|
3690
|
-
const { ensureAbleTimeTask, issueAttachmentForAbleTimeTask } = await import("./abletime-
|
|
3709
|
+
const { ensureAbleTimeTask, issueAttachmentForAbleTimeTask } = await import("./abletime-UWSSLXH3.js");
|
|
3691
3710
|
const task = await ensureAbleTimeTask({
|
|
3692
3711
|
title: title?.trim() || "Untitled work",
|
|
3693
3712
|
description: input.prompt?.trim() || void 0
|
|
@@ -4223,7 +4242,7 @@ async function adoptThread(input) {
|
|
|
4223
4242
|
messages: input.messages ?? []
|
|
4224
4243
|
});
|
|
4225
4244
|
writeThread(thread);
|
|
4226
|
-
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-
|
|
4245
|
+
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-CEU25ANO.js");
|
|
4227
4246
|
await ensureWorkspace2(repoPath);
|
|
4228
4247
|
const { ensureWorktreeSideboardIgnored: ensureWorktreeSideboardIgnored2 } = await import("./worktree-exclude-N5X5I422.js");
|
|
4229
4248
|
await ensureWorktreeSideboardIgnored2(input.worktreePath);
|
|
@@ -6601,7 +6620,7 @@ function formatScheduledPrompt(name, prompt) {
|
|
|
6601
6620
|
${prompt}`;
|
|
6602
6621
|
}
|
|
6603
6622
|
async function defaultDeps() {
|
|
6604
|
-
const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-
|
|
6623
|
+
const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-7WF32ZXJ.js");
|
|
6605
6624
|
const orch = getOrchestrator2();
|
|
6606
6625
|
return {
|
|
6607
6626
|
findThread: (id) => findThreadByRef(id),
|
|
@@ -6871,7 +6890,7 @@ var Orchestrator = class {
|
|
|
6871
6890
|
orphans: orphans.map((o) => ({ path: o.path, repoPath: o.repoPath }))
|
|
6872
6891
|
});
|
|
6873
6892
|
}
|
|
6874
|
-
const { autoCleanupOrphansEnabled } = await import("./app-settings-
|
|
6893
|
+
const { autoCleanupOrphansEnabled } = await import("./app-settings-R2KNCT37.js");
|
|
6875
6894
|
if (autoCleanupOrphansEnabled() && shouldRunWorktreeCleanup() && orphans.length > 0) {
|
|
6876
6895
|
await cleanupOrphanWorktrees({ repoPaths });
|
|
6877
6896
|
}
|
|
@@ -7163,7 +7182,7 @@ var Orchestrator = class {
|
|
|
7163
7182
|
}
|
|
7164
7183
|
await setup;
|
|
7165
7184
|
if (skipSetup) return;
|
|
7166
|
-
const { autoRunAfterSetupEnabled } = await import("./app-settings-
|
|
7185
|
+
const { autoRunAfterSetupEnabled } = await import("./app-settings-R2KNCT37.js");
|
|
7167
7186
|
if (autoRunAfterSetupEnabled()) {
|
|
7168
7187
|
try {
|
|
7169
7188
|
await this.startDev(threadId);
|
|
@@ -7487,7 +7506,7 @@ var Orchestrator = class {
|
|
|
7487
7506
|
}
|
|
7488
7507
|
const isBrightsy = fresh.agent === "brightsy";
|
|
7489
7508
|
const isOrchestration = isOrchestratorThread(fresh);
|
|
7490
|
-
const { autoRenameBranchEnabled, getGithubGitAuthMode, gitBranchPrefixSetting } = await import("./app-settings-
|
|
7509
|
+
const { autoRenameBranchEnabled, getGithubGitAuthMode, gitBranchPrefixSetting } = await import("./app-settings-R2KNCT37.js");
|
|
7491
7510
|
const gitAuthMode = getGithubGitAuthMode();
|
|
7492
7511
|
const worktreeDirective = isBrightsy || isOrchestration ? null : formatWorktreeDirective(fresh, {
|
|
7493
7512
|
githubSlug: await resolveGithubRepoSlug(fresh.worktreePath).catch(
|
|
@@ -7571,7 +7590,12 @@ var Orchestrator = class {
|
|
|
7571
7590
|
const stderrTail = [];
|
|
7572
7591
|
const handle = await spawnAgentTurn(
|
|
7573
7592
|
fresh,
|
|
7574
|
-
{
|
|
7593
|
+
{
|
|
7594
|
+
cachedPrefix,
|
|
7595
|
+
prompt: agentPrompt,
|
|
7596
|
+
systemPrompt: turnReminders,
|
|
7597
|
+
isolateCodexPlugins: fresh.isolateCodexPlugins === true
|
|
7598
|
+
},
|
|
7575
7599
|
(event) => {
|
|
7576
7600
|
this.emit({ type: "turn_output", threadId, event });
|
|
7577
7601
|
noteTurnLiveEvent(threadId, event);
|
|
@@ -7645,10 +7669,21 @@ var Orchestrator = class {
|
|
|
7645
7669
|
}
|
|
7646
7670
|
let lastStderr = summarizeTurnStderr(stderrTail);
|
|
7647
7671
|
let detail = lastStderr || (exitCode !== 0 ? fallbackTurnFailDetail(assistantText) : "");
|
|
7648
|
-
|
|
7672
|
+
const liveThread = this.requireThread(threadId);
|
|
7673
|
+
const isolateCodexPluginRetry = liveThread.agent === "codex" && shouldRetryCodexPluginIsolate(detail, {
|
|
7674
|
+
// Coordinators already pass toCodexUnattendedAppsArgs — a second
|
|
7675
|
+
// isolate exec keeps sessionId and burns the crash/OOM retry.
|
|
7676
|
+
alreadyIsolated: liveThread.isolateCodexPlugins === true || isOrchestratorThread(liveThread)
|
|
7677
|
+
});
|
|
7678
|
+
if (isolateCodexPluginRetry) {
|
|
7679
|
+
updateThread(threadId, { isolateCodexPlugins: true });
|
|
7680
|
+
}
|
|
7681
|
+
if (exitCode !== 0 && !assistantText && parts.length === 0 && !this.stoppedTurns.has(threadId) && (isolateCodexPluginRetry || shouldRetryFailedAgentTurn(detail, {
|
|
7649
7682
|
hasSession: Boolean(this.requireThread(threadId).sessionId)
|
|
7650
|
-
})) {
|
|
7651
|
-
|
|
7683
|
+
}))) {
|
|
7684
|
+
if (!isolateCodexPluginRetry) {
|
|
7685
|
+
updateThread(threadId, { sessionId: null });
|
|
7686
|
+
}
|
|
7652
7687
|
try {
|
|
7653
7688
|
const gitDirs = await resolveGitDirsForLockRecovery(thread.worktreePath);
|
|
7654
7689
|
const clearedLocks = clearStaleIndexLocks(gitDirs, 2e3);
|
|
@@ -7657,7 +7692,7 @@ var Orchestrator = class {
|
|
|
7657
7692
|
}
|
|
7658
7693
|
} catch {
|
|
7659
7694
|
}
|
|
7660
|
-
const retryNote = looksLikeInvalidAgentSession(detail) ? "Agent session missing \u2014 starting a fresh session" : looksLikeV8Oom(detail) ? "Agent ran out of memory \u2014 starting a fresh session" : "Agent runner crashed \u2014 restarting Node once";
|
|
7695
|
+
const retryNote = isolateCodexPluginRetry ? "Codex plugin/MCP failed \u2014 continuing without that vendor plugin (Settings \u2192 Connectors + HTTP API)" : looksLikeInvalidAgentSession(detail) ? "Agent session missing \u2014 starting a fresh session" : looksLikeV8Oom(detail) ? "Agent ran out of memory \u2014 starting a fresh session" : "Agent runner crashed \u2014 restarting Node once";
|
|
7661
7696
|
pushTurnStderr(stderrTail, retryNote);
|
|
7662
7697
|
this.emit({
|
|
7663
7698
|
type: "turn_output",
|
|
@@ -7681,7 +7716,12 @@ var Orchestrator = class {
|
|
|
7681
7716
|
].filter(Boolean).join("\n\n---\n\n");
|
|
7682
7717
|
const retryHandle = await spawnAgentTurn(
|
|
7683
7718
|
retryThread,
|
|
7684
|
-
{
|
|
7719
|
+
{
|
|
7720
|
+
cachedPrefix: retryPrefix,
|
|
7721
|
+
prompt: agentPrompt,
|
|
7722
|
+
systemPrompt: turnReminders,
|
|
7723
|
+
isolateCodexPlugins: isolateCodexPluginRetry || retryThread.isolateCodexPlugins === true
|
|
7724
|
+
},
|
|
7685
7725
|
(event) => {
|
|
7686
7726
|
this.emit({ type: "turn_output", threadId, event });
|
|
7687
7727
|
if (event.type === "session_id") {
|
|
@@ -8436,7 +8476,7 @@ var Orchestrator = class {
|
|
|
8436
8476
|
} catch {
|
|
8437
8477
|
headUrl = null;
|
|
8438
8478
|
}
|
|
8439
|
-
return { thread, selectors: connectedPrSelectors(thread, headUrl), cwd };
|
|
8479
|
+
return { thread, selectors: connectedPrSelectors(thread, headUrl), cwd, headUrl };
|
|
8440
8480
|
}
|
|
8441
8481
|
async getPrChecks(threadRef) {
|
|
8442
8482
|
const { selectors, cwd } = await this.withPrSelector(threadRef);
|
|
@@ -8447,13 +8487,20 @@ var Orchestrator = class {
|
|
|
8447
8487
|
return null;
|
|
8448
8488
|
}
|
|
8449
8489
|
async getPrMeta(threadRef) {
|
|
8450
|
-
const { thread, selectors, cwd } = await this.withPrSelector(threadRef);
|
|
8490
|
+
const { thread, selectors, cwd, headUrl } = await this.withPrSelector(threadRef);
|
|
8451
8491
|
for (const selector of selectors) {
|
|
8452
8492
|
const meta = await getPrMeta(cwd, selector);
|
|
8453
|
-
if (meta)
|
|
8454
|
-
|
|
8455
|
-
|
|
8493
|
+
if (!meta) continue;
|
|
8494
|
+
const live = this.requireThread(thread.id);
|
|
8495
|
+
if (!shouldPersistFetchedPrMeta({
|
|
8496
|
+
metaUrl: meta.url,
|
|
8497
|
+
livePrUrl: live.prUrl,
|
|
8498
|
+
headPrUrl: headUrl
|
|
8499
|
+
})) {
|
|
8500
|
+
continue;
|
|
8456
8501
|
}
|
|
8502
|
+
await this.persistPrMetaAndMaybeArchive(live, meta);
|
|
8503
|
+
return meta;
|
|
8457
8504
|
}
|
|
8458
8505
|
return null;
|
|
8459
8506
|
}
|
|
@@ -8475,7 +8522,7 @@ var Orchestrator = class {
|
|
|
8475
8522
|
if (!titled.userSetTitle && meta.title && titled.title !== meta.title) {
|
|
8476
8523
|
updateThread(thread.id, { title: meta.title });
|
|
8477
8524
|
}
|
|
8478
|
-
const { autoArchiveOnMergeEnabled } = await import("./app-settings-
|
|
8525
|
+
const { autoArchiveOnMergeEnabled } = await import("./app-settings-R2KNCT37.js");
|
|
8479
8526
|
const latest = this.requireThread(thread.id);
|
|
8480
8527
|
if (!shouldAutoArchiveOnPrMerge({
|
|
8481
8528
|
previousPrState: prevState || null,
|
|
@@ -8752,7 +8799,7 @@ var Orchestrator = class {
|
|
|
8752
8799
|
this.emit({ type: "status_changed", threadId: archived.id, status: "archived" });
|
|
8753
8800
|
if (thread.repoPath && !isGlobalRepoPath(thread.repoPath)) {
|
|
8754
8801
|
try {
|
|
8755
|
-
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-
|
|
8802
|
+
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-CEU25ANO.js");
|
|
8756
8803
|
await ensureWorkspace2(thread.repoPath);
|
|
8757
8804
|
} catch {
|
|
8758
8805
|
}
|
|
@@ -8779,7 +8826,7 @@ var Orchestrator = class {
|
|
|
8779
8826
|
await runArchiveScript(thread.repoPath, thread.worktreePath);
|
|
8780
8827
|
} catch {
|
|
8781
8828
|
}
|
|
8782
|
-
const { deleteBranchOnPurgeEnabled } = await import("./app-settings-
|
|
8829
|
+
const { deleteBranchOnPurgeEnabled } = await import("./app-settings-R2KNCT37.js");
|
|
8783
8830
|
const deleteBranch = opts?.deleteBranch ?? deleteBranchOnPurgeEnabled();
|
|
8784
8831
|
await removeWorktree(thread.repoPath, thread.worktreePath, {
|
|
8785
8832
|
deleteBranch: deleteBranch ? thread.branchName : void 0
|
|
@@ -8806,7 +8853,7 @@ var Orchestrator = class {
|
|
|
8806
8853
|
`Cowboy checkout missing: ${thread.worktreePath}. Re-add the project folder, then restore.`
|
|
8807
8854
|
);
|
|
8808
8855
|
}
|
|
8809
|
-
const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-
|
|
8856
|
+
const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-YD7Y6NRY.js");
|
|
8810
8857
|
const slug = thread.worktreePath.split("/").pop();
|
|
8811
8858
|
const dest = thread.worktreePath;
|
|
8812
8859
|
await withRepoGitLock(thread.repoPath, async () => {
|
|
@@ -8916,7 +8963,7 @@ async function startOrchestration(opts) {
|
|
|
8916
8963
|
sourceRef: "default",
|
|
8917
8964
|
...createOpts
|
|
8918
8965
|
}).catch(async () => {
|
|
8919
|
-
const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-
|
|
8966
|
+
const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-YD7Y6NRY.js");
|
|
8920
8967
|
const repo = await resolveRepoRoot2(repoPath);
|
|
8921
8968
|
const def = await resolveDefaultBranch2(repo);
|
|
8922
8969
|
return orch.createThread({
|
|
@@ -8926,7 +8973,7 @@ async function startOrchestration(opts) {
|
|
|
8926
8973
|
repoPath: repo
|
|
8927
8974
|
});
|
|
8928
8975
|
});
|
|
8929
|
-
const { updateThread: upd } = await import("./thread-store-
|
|
8976
|
+
const { updateThread: upd } = await import("./thread-store-LS2T6RVH.js");
|
|
8930
8977
|
const updated = upd(thread.id, {
|
|
8931
8978
|
sourceType: "orchestration",
|
|
8932
8979
|
sourceRef: goal
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DEFAULT_ABLETIME_HOST,
|
|
3
3
|
normalizeAbleTimeHost
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-X45BV4VX.js";
|
|
5
5
|
import {
|
|
6
6
|
httpFetch
|
|
7
7
|
} from "./chunk-N7WZ6NIN.js";
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
getAbleTimeHost,
|
|
11
11
|
loadAppSettings,
|
|
12
12
|
saveAbleTimeConnection
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-Y4CF7LHH.js";
|
|
14
14
|
|
|
15
15
|
// src/integrations/abletime-oauth.ts
|
|
16
16
|
import { createHash, randomBytes } from "crypto";
|
|
@@ -72,6 +72,12 @@ function ableTimeOAuthClientId() {
|
|
|
72
72
|
function ableTimeOAuthResource(host) {
|
|
73
73
|
return `${normalizeAbleTimeHost(host)}/api/public/v2/mcp`;
|
|
74
74
|
}
|
|
75
|
+
function resolveAbleTimeOAuthHost(requested, saved) {
|
|
76
|
+
const fromRequest = requested?.trim();
|
|
77
|
+
if (fromRequest) return fromRequest;
|
|
78
|
+
const fromSaved = saved?.trim();
|
|
79
|
+
return fromSaved || void 0;
|
|
80
|
+
}
|
|
75
81
|
function createAbleTimePkce() {
|
|
76
82
|
const verifier = randomBytes(32).toString("base64url");
|
|
77
83
|
const challenge = createHash("sha256").update(verifier).digest("base64url");
|
|
@@ -183,7 +189,10 @@ async function startAbleTimeOAuth(opts) {
|
|
|
183
189
|
`AbleTime browser sign-in needs a Client ID Metadata Document URL. Host ${BAKED_ABLETIME_OAUTH_CLIENT_ID} (see site/oauth/abletime-client.json), or set SIDEBOARD_ABLETIME_OAUTH_CLIENT_ID.`
|
|
184
190
|
);
|
|
185
191
|
}
|
|
186
|
-
const host =
|
|
192
|
+
const host = resolveAbleTimeOAuthHost(
|
|
193
|
+
opts?.host,
|
|
194
|
+
loadAppSettings().integrations.abletimeHost
|
|
195
|
+
);
|
|
187
196
|
const state = randomBytes(16).toString("hex");
|
|
188
197
|
const pkce = createAbleTimePkce();
|
|
189
198
|
const authorizeUrl = ableTimeOAuthAuthorizeUrl(clientId, state, pkce.challenge, host);
|
|
@@ -271,7 +280,7 @@ async function startAbleTimeOAuth(opts) {
|
|
|
271
280
|
persistAbleTimeTokens(data, { host });
|
|
272
281
|
const token = data.access_token.trim();
|
|
273
282
|
try {
|
|
274
|
-
const { getAbleTimeOrientation } = await import("./abletime-
|
|
283
|
+
const { getAbleTimeOrientation } = await import("./abletime-I4IYZBKU.js");
|
|
275
284
|
const orientation = await getAbleTimeOrientation({ token, host });
|
|
276
285
|
return saveAbleTimeConnection({
|
|
277
286
|
accessToken: token,
|
|
@@ -299,6 +308,7 @@ export {
|
|
|
299
308
|
hasBakedAbleTimeOAuth,
|
|
300
309
|
ableTimeOAuthClientId,
|
|
301
310
|
ableTimeOAuthResource,
|
|
311
|
+
resolveAbleTimeOAuthHost,
|
|
302
312
|
createAbleTimePkce,
|
|
303
313
|
ableTimeOAuthAuthorizeUrl,
|
|
304
314
|
ensureAbleTimeAccessToken,
|
|
@@ -7,10 +7,10 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
getGithubGitAuthMode,
|
|
9
9
|
getGithubPat
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-Y4CF7LHH.js";
|
|
11
11
|
import {
|
|
12
12
|
listThreads
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-ARR4OGLY.js";
|
|
14
14
|
import {
|
|
15
15
|
worktreesRoot
|
|
16
16
|
} from "./chunk-WFUDY6PC.js";
|
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
textFromAbleTimeDoc
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-TEDEVD4O.js";
|
|
6
6
|
import {
|
|
7
7
|
assertAbleTimeCredential,
|
|
8
8
|
callAbleTimeTool,
|
|
9
9
|
normalizeAbleTimeHost,
|
|
10
10
|
rewriteAbleTimeError
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-WXWJ5MJ4.js";
|
|
12
12
|
import {
|
|
13
13
|
isAbleTimeConnected,
|
|
14
14
|
saveAbleTimeConnection
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-4EGK47WV.js";
|
|
16
16
|
|
|
17
17
|
// src/integrations/abletime.ts
|
|
18
18
|
var CLOSED_STATES = /* @__PURE__ */ new Set([
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isOrchestratorThread
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-PAQPT3JO.js";
|
|
4
4
|
import {
|
|
5
5
|
codexUnattendedGitConfigArgs,
|
|
6
6
|
mergeAgentGitAuthEnv,
|
|
7
7
|
resolveAgentGitAuthEnv,
|
|
8
8
|
resolveCodexGitWritableRoots
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-6KH4OBEW.js";
|
|
10
10
|
import {
|
|
11
11
|
applyConnectedTeamToCli,
|
|
12
12
|
brightsyMcpServerName,
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
packagedMcpStdioPath,
|
|
34
34
|
parseCursorRunnerLine,
|
|
35
35
|
resolveNodeLaunch
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-JZHRZ3DR.js";
|
|
37
37
|
import {
|
|
38
38
|
claudeChromeEnabled,
|
|
39
39
|
isAbleTimeConnected,
|
|
@@ -41,7 +41,7 @@ import {
|
|
|
41
41
|
loadAppSettings,
|
|
42
42
|
resolveAgentExecutable,
|
|
43
43
|
resolveClaudeExecutable
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-Y4CF7LHH.js";
|
|
45
45
|
import {
|
|
46
46
|
isElectronLikeCommand,
|
|
47
47
|
unwrapStrippedElectronLaunch
|
|
@@ -178,13 +178,18 @@ function normalizeTurnInput(input) {
|
|
|
178
178
|
return {
|
|
179
179
|
prompt: input.prompt,
|
|
180
180
|
cachedPrefix: input.cachedPrefix?.trim() || void 0,
|
|
181
|
-
systemPrompt: input.systemPrompt?.trim() || void 0
|
|
181
|
+
systemPrompt: input.systemPrompt?.trim() || void 0,
|
|
182
|
+
...input.isolateCodexPlugins ? { isolateCodexPlugins: true } : {}
|
|
182
183
|
};
|
|
183
184
|
}
|
|
184
185
|
function dropCachedPrefixOnResume(input, sessionId) {
|
|
185
186
|
const turn = normalizeTurnInput(input);
|
|
186
187
|
if (sessionId) {
|
|
187
|
-
return
|
|
188
|
+
return {
|
|
189
|
+
prompt: turn.prompt,
|
|
190
|
+
...turn.systemPrompt ? { systemPrompt: turn.systemPrompt } : {},
|
|
191
|
+
...turn.isolateCodexPlugins ? { isolateCodexPlugins: true } : {}
|
|
192
|
+
};
|
|
188
193
|
}
|
|
189
194
|
return turn;
|
|
190
195
|
}
|
|
@@ -1937,7 +1942,7 @@ var claudeAdapter = {
|
|
|
1937
1942
|
);
|
|
1938
1943
|
}
|
|
1939
1944
|
const mode = permissionMode(thread);
|
|
1940
|
-
const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-
|
|
1945
|
+
const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-VS6HZF2I.js");
|
|
1941
1946
|
const isOrchestrator = isOrchestratorThread2(thread);
|
|
1942
1947
|
const injectedServers = await buildInjectedMcpServers({
|
|
1943
1948
|
includeSideboard: true,
|
|
@@ -2341,9 +2346,7 @@ function toCodexUnattendedAppsArgs() {
|
|
|
2341
2346
|
"-c",
|
|
2342
2347
|
"apps.posthog.enabled=false",
|
|
2343
2348
|
"-c",
|
|
2344
|
-
"features.plugins=false"
|
|
2345
|
-
"-c",
|
|
2346
|
-
"mcp_servers.posthog.enabled=false"
|
|
2349
|
+
"features.plugins=false"
|
|
2347
2350
|
];
|
|
2348
2351
|
}
|
|
2349
2352
|
|
|
@@ -2512,8 +2515,12 @@ var codexAdapter = {
|
|
|
2512
2515
|
}),
|
|
2513
2516
|
orchestratorThreadId: isOrchestrator ? thread.id : null
|
|
2514
2517
|
});
|
|
2518
|
+
const isolatePlugins = isOrchestrator || Boolean(thread.isolateCodexPlugins) || Boolean(normalizeTurnInput(input).isolateCodexPlugins);
|
|
2515
2519
|
const mcpOverrides = [
|
|
2516
|
-
|
|
2520
|
+
// Worktree first try keeps plugins (Claude connectors). Coordinators
|
|
2521
|
+
// isolate. After a fatal plugin MCP, the orchestrator retries with
|
|
2522
|
+
// isolateCodexPlugins so the turn continues. Never invent mcp_servers.posthog.
|
|
2523
|
+
...isolatePlugins ? toCodexUnattendedAppsArgs() : [],
|
|
2517
2524
|
...toCodexMcpConfigArgs(injected),
|
|
2518
2525
|
...isOrchestrator ? toCodexDisableUserMcpArgs(
|
|
2519
2526
|
userMcpNamesToDisable({
|
|
@@ -36,6 +36,7 @@ function normalizeThread(raw) {
|
|
|
36
36
|
effort: resolveThreadEffort(raw),
|
|
37
37
|
fast: Boolean(raw.fast),
|
|
38
38
|
planMode: Boolean(raw.planMode),
|
|
39
|
+
isolateCodexPlugins: raw.isolateCodexPlugins === true ? true : void 0,
|
|
39
40
|
autonomy: raw.autonomy ?? "default",
|
|
40
41
|
lastError: raw.lastError ?? null,
|
|
41
42
|
agentPid: raw.agentPid ?? null,
|
|
@@ -38,6 +38,7 @@ function normalizeThread(raw) {
|
|
|
38
38
|
effort: resolveThreadEffort(raw),
|
|
39
39
|
fast: Boolean(raw.fast),
|
|
40
40
|
planMode: Boolean(raw.planMode),
|
|
41
|
+
isolateCodexPlugins: raw.isolateCodexPlugins === true ? true : void 0,
|
|
41
42
|
autonomy: raw.autonomy ?? "default",
|
|
42
43
|
lastError: raw.lastError ?? null,
|
|
43
44
|
agentPid: raw.agentPid ?? null,
|
|
@@ -4,14 +4,14 @@ import {
|
|
|
4
4
|
normalizeAbleTimeCredential,
|
|
5
5
|
normalizeAbleTimeHost,
|
|
6
6
|
rewriteAbleTimeError
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-X45BV4VX.js";
|
|
8
8
|
import {
|
|
9
9
|
httpFetch
|
|
10
10
|
} from "./chunk-N7WZ6NIN.js";
|
|
11
11
|
import {
|
|
12
12
|
getAbleTimeAccessToken,
|
|
13
13
|
getAbleTimeHost
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-Y4CF7LHH.js";
|
|
15
15
|
|
|
16
16
|
// src/integrations/abletime-rest.ts
|
|
17
17
|
var ABLETIME_REST_PREFIX = "/api/public/v2";
|
|
@@ -153,6 +153,7 @@ function restTaskToRaw(raw, users) {
|
|
|
153
153
|
description: textFromAbleTimeDoc(rec.description) || asString(rec.descriptionSanitized),
|
|
154
154
|
projectId: asString(rec.projectId),
|
|
155
155
|
categoryId: asString(rec.projectCategoryId) || asString(rec.categoryId),
|
|
156
|
+
parentId: asString(rec.parentTaskId) || asString(rec.parentId),
|
|
156
157
|
tags: rec.tags,
|
|
157
158
|
comments,
|
|
158
159
|
createdAt: asString(rec.dateCreated) || asString(rec.createdAt),
|
|
@@ -243,6 +244,19 @@ function firstStringArg(args, keys) {
|
|
|
243
244
|
}
|
|
244
245
|
return "";
|
|
245
246
|
}
|
|
247
|
+
function isNoneToken(value) {
|
|
248
|
+
return value.trim().toLowerCase() === "none";
|
|
249
|
+
}
|
|
250
|
+
function findRestProject(projects, projectId) {
|
|
251
|
+
const wanted = projectId.trim().toLowerCase();
|
|
252
|
+
return projects.find(
|
|
253
|
+
(item) => asString(item.id).toLowerCase() === wanted || asString(item.name).toLowerCase() === wanted
|
|
254
|
+
) ?? null;
|
|
255
|
+
}
|
|
256
|
+
async function resolveRestParentTaskId(parent, opts) {
|
|
257
|
+
if (isNoneToken(parent)) return null;
|
|
258
|
+
return resolveTaskId(parent, opts);
|
|
259
|
+
}
|
|
246
260
|
async function callAbleTimeRestTool(name, args = {}, opts) {
|
|
247
261
|
const token = normalizeAbleTimeCredential(opts?.token ?? getAbleTimeAccessToken() ?? "");
|
|
248
262
|
if (!token) {
|
|
@@ -288,9 +302,7 @@ async function callAbleTimeRestTool(name, args = {}, opts) {
|
|
|
288
302
|
const projectId = firstStringArg(args, ["project_id", "projectId", "project"]);
|
|
289
303
|
if (!projectId) throw new Error("AbleTime project is required");
|
|
290
304
|
const projects = await listProjectsRaw(requestOpts);
|
|
291
|
-
const project = projects
|
|
292
|
-
(item) => String(item.id).toLowerCase() === projectId.toLowerCase() || String(item.name).toLowerCase() === projectId.toLowerCase()
|
|
293
|
-
) ?? projects[0];
|
|
305
|
+
const project = findRestProject(projects, projectId) ?? projects[0];
|
|
294
306
|
if (!project) throw new Error("AbleTime has no projects to create a task in");
|
|
295
307
|
const categories = asList(project.categories);
|
|
296
308
|
const wantedCategory = firstStringArg(args, ["category_id", "categoryId", "category"]);
|
|
@@ -298,13 +310,16 @@ async function callAbleTimeRestTool(name, args = {}, opts) {
|
|
|
298
310
|
if (!item || !wantedCategory) return false;
|
|
299
311
|
return asString(item.id).toLowerCase() === wantedCategory.toLowerCase() || asString(item.name).toLowerCase() === wantedCategory.toLowerCase();
|
|
300
312
|
}) ?? asRecord(categories[0]);
|
|
313
|
+
const parentArg = firstStringArg(args, ["parent", "parent_id", "parentId", "related_task_id"]);
|
|
314
|
+
const parentTaskId = parentArg ? await resolveRestParentTaskId(parentArg, requestOpts) : void 0;
|
|
301
315
|
const created = await abletimeRestRequest("/tasks", {
|
|
302
316
|
...requestOpts,
|
|
303
317
|
method: "POST",
|
|
304
318
|
body: {
|
|
305
|
-
projectId: project.id,
|
|
319
|
+
projectId: asString(project.id),
|
|
306
320
|
projectCategoryId: category ? asString(category.id) : void 0,
|
|
307
|
-
title
|
|
321
|
+
title,
|
|
322
|
+
...parentTaskId ? { parentTaskId } : {}
|
|
308
323
|
}
|
|
309
324
|
});
|
|
310
325
|
const state = firstStringArg(args, ["state"]);
|
|
@@ -337,6 +352,21 @@ async function callAbleTimeRestTool(name, args = {}, opts) {
|
|
|
337
352
|
if (args.tags !== void 0 || args.labels !== void 0) {
|
|
338
353
|
patch.tags = args.tags ?? args.labels ?? args.tag_names;
|
|
339
354
|
}
|
|
355
|
+
const projectArg = firstStringArg(args, ["project", "project_id", "projectId"]);
|
|
356
|
+
if (projectArg) {
|
|
357
|
+
if (isNoneToken(projectArg)) {
|
|
358
|
+
throw new Error("AbleTime tasks stay in a project \u2014 pass a project name or id");
|
|
359
|
+
}
|
|
360
|
+
const projects = await listProjectsRaw(requestOpts);
|
|
361
|
+
const project = findRestProject(projects, projectArg);
|
|
362
|
+
const nextProjectId = project ? asString(project.id) : "";
|
|
363
|
+
if (!nextProjectId) throw new Error(`AbleTime project not found: ${projectArg}`);
|
|
364
|
+
patch.projectId = nextProjectId;
|
|
365
|
+
}
|
|
366
|
+
const parentArg = firstStringArg(args, ["parent", "parent_id", "parentId", "related_task_id"]);
|
|
367
|
+
if (parentArg) {
|
|
368
|
+
patch.parentTaskId = await resolveRestParentTaskId(parentArg, requestOpts);
|
|
369
|
+
}
|
|
340
370
|
if (Object.keys(patch).length > 0) {
|
|
341
371
|
await abletimeRestRequest(`/tasks/${encodeURIComponent(id)}`, {
|
|
342
372
|
...requestOpts,
|
|
@@ -324,6 +324,10 @@ function turnFailChatText(opts) {
|
|
|
324
324
|
|
|
325
325
|
${fail}`;
|
|
326
326
|
}
|
|
327
|
+
function shouldRetryCodexPluginIsolate(detail, opts) {
|
|
328
|
+
if (opts?.alreadyIsolated) return false;
|
|
329
|
+
return looksLikeCodexMcpError(detail);
|
|
330
|
+
}
|
|
327
331
|
function looksLikeCodexMcpError(text) {
|
|
328
332
|
const t = text.trim().toLowerCase();
|
|
329
333
|
if (!t) return false;
|
|
@@ -336,7 +340,7 @@ function looksLikeCodexMcpError(text) {
|
|
|
336
340
|
if (/\brmcp\b/.test(t) && /fatal|quit|transport|error|died|kill|auth/.test(t)) {
|
|
337
341
|
return true;
|
|
338
342
|
}
|
|
339
|
-
return /
|
|
343
|
+
return /invalid transport in mcp_servers/.test(t);
|
|
340
344
|
}
|
|
341
345
|
function shouldFeedErrorBackToAgent(opts) {
|
|
342
346
|
const detail = opts.detail.trim();
|
|
@@ -1134,6 +1138,7 @@ export {
|
|
|
1134
1138
|
looksLikeAgentFailureMessage,
|
|
1135
1139
|
fallbackTurnFailDetail,
|
|
1136
1140
|
turnFailChatText,
|
|
1141
|
+
shouldRetryCodexPluginIsolate,
|
|
1137
1142
|
shouldFeedErrorBackToAgent,
|
|
1138
1143
|
formatAgentErrorContinuePrompt,
|
|
1139
1144
|
formatTurnExitError,
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
} from "./chunk-D6JWYJ4P.js";
|
|
6
6
|
import {
|
|
7
7
|
listThreads
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-DWGEBZ3C.js";
|
|
9
9
|
import {
|
|
10
10
|
ensureWorktreeSideboardIgnored
|
|
11
11
|
} from "./chunk-SYFVUF2C.js";
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
import {
|
|
23
23
|
getGithubGitAuthMode,
|
|
24
24
|
getGithubPat
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-4EGK47WV.js";
|
|
26
26
|
import {
|
|
27
27
|
worktreesRoot
|
|
28
28
|
} from "./chunk-EQNRWDLN.js";
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
resolveRepoRoot,
|
|
6
6
|
takenSlugsFromThread,
|
|
7
7
|
teamSlugFromName
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-6KH4OBEW.js";
|
|
9
9
|
import {
|
|
10
10
|
ATTACHMENTS_DIR,
|
|
11
11
|
attachmentsGitignoreBody
|
|
@@ -22,13 +22,13 @@ import {
|
|
|
22
22
|
resolveThreadDefaults,
|
|
23
23
|
resolveViewerProfile,
|
|
24
24
|
resolveViewerProfileForRepo
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-Y4CF7LHH.js";
|
|
26
26
|
import {
|
|
27
27
|
createEmptyThread,
|
|
28
28
|
listThreads,
|
|
29
29
|
updateThread,
|
|
30
30
|
writeThread
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-ARR4OGLY.js";
|
|
32
32
|
import {
|
|
33
33
|
appDataDir,
|
|
34
34
|
globalAgentCwd,
|