@sideboard-ai/core 0.1.228 → 0.1.229
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-D6773P33.js → abletime-BGVOCEOU.js} +4 -4
- package/dist/{abletime-BF253OZT.js → abletime-WZNDTRVL.js} +4 -4
- package/dist/{abletime-oauth-KQPVVBKA.js → abletime-oauth-6M5GWEPX.js} +3 -3
- package/dist/{abletime-oauth-H4672PRH.js → abletime-oauth-ZLU2EYRK.js} +3 -3
- package/dist/{abletime-rest-DAFPXZ7H.js → abletime-rest-F7XG5NGY.js} +3 -3
- package/dist/{abletime-rest-OPEVV3XC.js → abletime-rest-WNHIATB3.js} +3 -3
- package/dist/{agents-DV5UROWB.js → agents-B7G4BQTS.js} +4 -4
- package/dist/{agents-QQ77D7VT.js → agents-ZKP7QNXA.js} +4 -4
- package/dist/{app-settings-5RQMQKSB.js → app-settings-KBL2G7M4.js} +7 -1
- package/dist/{app-settings-V2BBCX2H.js → app-settings-UXWCPDEA.js} +7 -1
- package/dist/{chunk-WHYJL7CP.js → chunk-6HKGCUDN.js} +24 -22
- package/dist/{chunk-N2VST3NL.js → chunk-7YKXBFQE.js} +2 -2
- package/dist/{chunk-KTZESHYH.js → chunk-AMMRFFB7.js} +1 -1
- package/dist/{chunk-HSYE5ID6.js → chunk-AS4UN7QL.js} +5 -5
- package/dist/{chunk-3NWUHXU3.js → chunk-C774RJJA.js} +3 -3
- package/dist/{chunk-NFWPDEN4.js → chunk-F3GT6DQW.js} +1 -1
- package/dist/{chunk-CLI5DVU4.js → chunk-GHRZNPBK.js} +2 -2
- package/dist/{chunk-EWHJNJHV.js → chunk-I5NC7DWO.js} +38 -0
- package/dist/{chunk-VUW3VKLW.js → chunk-LULHFLPU.js} +17 -4
- package/dist/{chunk-646I442S.js → chunk-MVLXDYN5.js} +5 -5
- package/dist/{chunk-P2EAAM3H.js → chunk-N7UXGM3Y.js} +2 -2
- package/dist/{chunk-RRW2XWAY.js → chunk-P6ZM5QJW.js} +2 -2
- package/dist/{chunk-THLVCXLF.js → chunk-RGNPPRZZ.js} +3 -3
- package/dist/{chunk-Y5JES2VV.js → chunk-RZTRWN2V.js} +38 -0
- package/dist/{chunk-SOGGKYFV.js → chunk-SWNEA5OZ.js} +3 -3
- package/dist/{chunk-SQHRPJ7P.js → chunk-T7Y5ULHM.js} +14 -4
- package/dist/{chunk-72XUASTH.js → chunk-UHT6OS7V.js} +24 -23
- package/dist/{coordinator-prompt-JLMQVORO.js → coordinator-prompt-DZMMCDRW.js} +3 -3
- package/dist/{coordinator-prompt-VZ7OSRLD.js → coordinator-prompt-RL3GKIAQ.js} +3 -3
- package/dist/{global-workspace-QPSJEXGR.js → global-workspace-G3QEVRGZ.js} +3 -3
- package/dist/{global-workspace-3FDAUNN2.js → global-workspace-QW4OXCLJ.js} +3 -3
- package/dist/index.cjs +820 -619
- package/dist/index.d.cts +68 -2
- package/dist/index.d.ts +68 -2
- package/dist/index.js +202 -67
- package/dist/mcp/run-stdio.cjs +131 -44
- package/dist/mcp/run-stdio.js +86 -50
- package/dist/{orchestrator-6XEWQWSM.js → orchestrator-GKAHLGXT.js} +5 -5
- package/dist/{orchestrator-QUJORSTA.js → orchestrator-X4VFA5WW.js} +5 -5
- package/dist/{workspaces-76W7IEKR.js → workspaces-77C5XQEY.js} +3 -3
- package/dist/{workspaces-TDBA64II.js → workspaces-WXRPLT2N.js} +3 -3
- package/dist/{worktree-I573UOPD.js → worktree-L6FJXFUC.js} +2 -2
- package/dist/{worktree-7V67XTEO.js → worktree-P67WAJKH.js} +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
parseAbleTimeOAuthCallbackUrl,
|
|
21
21
|
resolveAbleTimeOAuthHost,
|
|
22
22
|
startAbleTimeOAuth
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-C774RJJA.js";
|
|
24
24
|
import {
|
|
25
25
|
ableTimeDependencyTarget,
|
|
26
26
|
commentAbleTimeTask,
|
|
@@ -38,8 +38,8 @@ import {
|
|
|
38
38
|
toAbleTimeIssueInfo,
|
|
39
39
|
updateAbleTimeTask,
|
|
40
40
|
verifyAbleTimeConnection
|
|
41
|
-
} from "./chunk-
|
|
42
|
-
import "./chunk-
|
|
41
|
+
} from "./chunk-SWNEA5OZ.js";
|
|
42
|
+
import "./chunk-P6ZM5QJW.js";
|
|
43
43
|
import {
|
|
44
44
|
ABLETIME_MCP_PATH,
|
|
45
45
|
ABLETIME_MCP_PM_PATH,
|
|
@@ -60,7 +60,7 @@ import {
|
|
|
60
60
|
normalizeAbleTimeCredential,
|
|
61
61
|
normalizeAbleTimeHost,
|
|
62
62
|
rewriteAbleTimeError
|
|
63
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-MVLXDYN5.js";
|
|
64
64
|
import {
|
|
65
65
|
AGENT_GIT_ACTIONS,
|
|
66
66
|
BOARD_COLUMN_DEFS,
|
|
@@ -321,7 +321,7 @@ import {
|
|
|
321
321
|
worktreeCleanupSettings,
|
|
322
322
|
wrapReviewSkillMarkdown,
|
|
323
323
|
writeWorktreeFile
|
|
324
|
-
} from "./chunk-
|
|
324
|
+
} from "./chunk-UHT6OS7V.js";
|
|
325
325
|
import {
|
|
326
326
|
LEGACY_PLAN_FILE_REL,
|
|
327
327
|
PLAN_FILE_NAME,
|
|
@@ -438,7 +438,7 @@ import {
|
|
|
438
438
|
withEventParentId,
|
|
439
439
|
withEventsParentId,
|
|
440
440
|
writeInjectedMcpConfig
|
|
441
|
-
} from "./chunk-
|
|
441
|
+
} from "./chunk-LULHFLPU.js";
|
|
442
442
|
import {
|
|
443
443
|
CLOUD_COORDINATOR_BUSY_REPLY,
|
|
444
444
|
CLOUD_COORDINATOR_STOPPED_REPLY,
|
|
@@ -482,7 +482,7 @@ import {
|
|
|
482
482
|
stageBuffersAsAttachments,
|
|
483
483
|
syncWorkspacesFromThreads,
|
|
484
484
|
takenTeamSlugsForOrchestration
|
|
485
|
-
} from "./chunk-
|
|
485
|
+
} from "./chunk-7YKXBFQE.js";
|
|
486
486
|
import {
|
|
487
487
|
FAMOUS_SOCCER_TEAMS,
|
|
488
488
|
GITHUB_PR_BODY_MAX_CHARS,
|
|
@@ -580,7 +580,7 @@ import {
|
|
|
580
580
|
worktreeDisplayLabelForGroup,
|
|
581
581
|
worktreeNameFromPath,
|
|
582
582
|
worktreeSlugForTicket
|
|
583
|
-
} from "./chunk-
|
|
583
|
+
} from "./chunk-AMMRFFB7.js";
|
|
584
584
|
import {
|
|
585
585
|
ATTACHMENTS_DIR,
|
|
586
586
|
CLI_DIR,
|
|
@@ -633,6 +633,7 @@ import {
|
|
|
633
633
|
withMaxOldSpaceSize
|
|
634
634
|
} from "./chunk-TQBUXKIB.js";
|
|
635
635
|
import {
|
|
636
|
+
AGENT_DONE_SOUNDS,
|
|
636
637
|
FOLLOW_UP_BEHAVIORS,
|
|
637
638
|
GITHUB_GIT_AUTH_MODES,
|
|
638
639
|
HARNESS_ENV_KEYS,
|
|
@@ -646,6 +647,7 @@ import {
|
|
|
646
647
|
ORCHESTRATOR_AGENT_KINDS,
|
|
647
648
|
PROFILE_NOTES_MAX,
|
|
648
649
|
USAGE_ON_LIMIT_VALUES,
|
|
650
|
+
agentDoneSound,
|
|
649
651
|
appSettingsPath,
|
|
650
652
|
applyAppEnvironment,
|
|
651
653
|
applyTurnUsage,
|
|
@@ -700,6 +702,7 @@ import {
|
|
|
700
702
|
historyMaxCount,
|
|
701
703
|
historyMaxDays,
|
|
702
704
|
isAbleTimeConnected,
|
|
705
|
+
isAgentDoneSound,
|
|
703
706
|
isHistoryRetentionStub,
|
|
704
707
|
isIssueSourceConnected,
|
|
705
708
|
isLinearConnected,
|
|
@@ -753,7 +756,7 @@ import {
|
|
|
753
756
|
updateProjectProfileSettings,
|
|
754
757
|
usageOnLimit,
|
|
755
758
|
writeViewerContext
|
|
756
|
-
} from "./chunk-
|
|
759
|
+
} from "./chunk-I5NC7DWO.js";
|
|
757
760
|
import {
|
|
758
761
|
examplePrefixedBranch,
|
|
759
762
|
resolveGitBranchPrefix,
|
|
@@ -840,6 +843,92 @@ import {
|
|
|
840
843
|
stripNestedElectronEnv
|
|
841
844
|
} from "./chunk-4TR3HZFT.js";
|
|
842
845
|
|
|
846
|
+
// src/store/agent-done-sound.ts
|
|
847
|
+
import { copyFileSync, existsSync, mkdirSync, readdirSync, readFileSync, unlinkSync } from "fs";
|
|
848
|
+
import { basename, extname, join } from "path";
|
|
849
|
+
var AGENT_DONE_CUSTOM_SOUND_MAX_BYTES = 5 * 1024 * 1024;
|
|
850
|
+
var AUDIO_EXT_MIME = {
|
|
851
|
+
".mp3": "audio/mpeg",
|
|
852
|
+
".wav": "audio/wav",
|
|
853
|
+
".ogg": "audio/ogg",
|
|
854
|
+
".m4a": "audio/mp4",
|
|
855
|
+
".aac": "audio/aac",
|
|
856
|
+
".caf": "audio/x-caf",
|
|
857
|
+
".flac": "audio/flac"
|
|
858
|
+
};
|
|
859
|
+
var AGENT_DONE_CUSTOM_SOUND_EXTENSIONS = Object.keys(AUDIO_EXT_MIME);
|
|
860
|
+
function agentDoneSoundsDir() {
|
|
861
|
+
const dir = join(appDataDir(), "sounds");
|
|
862
|
+
mkdirSync(dir, { recursive: true });
|
|
863
|
+
return dir;
|
|
864
|
+
}
|
|
865
|
+
function normalizeExt(ext) {
|
|
866
|
+
const e = ext.trim().toLowerCase();
|
|
867
|
+
return e.startsWith(".") ? e : `.${e}`;
|
|
868
|
+
}
|
|
869
|
+
function agentDoneCustomSoundMime(extOrPath) {
|
|
870
|
+
const ext = normalizeExt(extname(extOrPath) || extOrPath);
|
|
871
|
+
return AUDIO_EXT_MIME[ext] ?? null;
|
|
872
|
+
}
|
|
873
|
+
function findAgentDoneCustomSoundPath() {
|
|
874
|
+
const dir = agentDoneSoundsDir();
|
|
875
|
+
for (const name of readdirSync(dir)) {
|
|
876
|
+
if (!name.startsWith("agent-done.")) continue;
|
|
877
|
+
const full = join(dir, name);
|
|
878
|
+
if (existsSync(full) && agentDoneCustomSoundMime(name)) return full;
|
|
879
|
+
}
|
|
880
|
+
return null;
|
|
881
|
+
}
|
|
882
|
+
function clearAgentDoneCustomSoundFile() {
|
|
883
|
+
const dir = agentDoneSoundsDir();
|
|
884
|
+
for (const name of readdirSync(dir)) {
|
|
885
|
+
if (!name.startsWith("agent-done.")) continue;
|
|
886
|
+
try {
|
|
887
|
+
unlinkSync(join(dir, name));
|
|
888
|
+
} catch {
|
|
889
|
+
}
|
|
890
|
+
}
|
|
891
|
+
}
|
|
892
|
+
function importAgentDoneCustomSound(sourcePath) {
|
|
893
|
+
const trimmed = sourcePath.trim();
|
|
894
|
+
if (!trimmed || !existsSync(trimmed)) {
|
|
895
|
+
throw new Error("Sound file not found");
|
|
896
|
+
}
|
|
897
|
+
const ext = normalizeExt(extname(trimmed));
|
|
898
|
+
const mime = AUDIO_EXT_MIME[ext];
|
|
899
|
+
if (!mime) {
|
|
900
|
+
throw new Error(
|
|
901
|
+
`Unsupported audio type (use ${AGENT_DONE_CUSTOM_SOUND_EXTENSIONS.join(", ")})`
|
|
902
|
+
);
|
|
903
|
+
}
|
|
904
|
+
const data = readFileSync(trimmed);
|
|
905
|
+
if (data.byteLength === 0) throw new Error("Sound file is empty");
|
|
906
|
+
if (data.byteLength > AGENT_DONE_CUSTOM_SOUND_MAX_BYTES) {
|
|
907
|
+
throw new Error("Sound file is too large (max 5 MB)");
|
|
908
|
+
}
|
|
909
|
+
clearAgentDoneCustomSoundFile();
|
|
910
|
+
const dest = join(agentDoneSoundsDir(), `agent-done${ext}`);
|
|
911
|
+
copyFileSync(trimmed, dest);
|
|
912
|
+
return {
|
|
913
|
+
name: basename(trimmed),
|
|
914
|
+
path: dest,
|
|
915
|
+
mime
|
|
916
|
+
};
|
|
917
|
+
}
|
|
918
|
+
function readAgentDoneCustomSound(displayName) {
|
|
919
|
+
const path2 = findAgentDoneCustomSoundPath();
|
|
920
|
+
if (!path2) return null;
|
|
921
|
+
const mime = agentDoneCustomSoundMime(path2);
|
|
922
|
+
if (!mime) return null;
|
|
923
|
+
const data = readFileSync(path2);
|
|
924
|
+
if (data.byteLength === 0) return null;
|
|
925
|
+
return {
|
|
926
|
+
name: displayName?.trim() || basename(path2),
|
|
927
|
+
mime,
|
|
928
|
+
dataBase64: data.toString("base64")
|
|
929
|
+
};
|
|
930
|
+
}
|
|
931
|
+
|
|
843
932
|
// src/store/thread-list.ts
|
|
844
933
|
var LIST_PREVIEW_MAX = 480;
|
|
845
934
|
function slimThreadForUiList(thread) {
|
|
@@ -3161,7 +3250,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
3161
3250
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3162
3251
|
import { z as z9 } from "zod";
|
|
3163
3252
|
import { randomUUID as randomUUID3 } from "crypto";
|
|
3164
|
-
import { basename } from "path";
|
|
3253
|
+
import { basename as basename2 } from "path";
|
|
3165
3254
|
|
|
3166
3255
|
// src/mcp/archive-guard.ts
|
|
3167
3256
|
function mcpArchiveBlockedReason(thread) {
|
|
@@ -3171,6 +3260,20 @@ function mcpArchiveBlockedReason(thread) {
|
|
|
3171
3260
|
return null;
|
|
3172
3261
|
}
|
|
3173
3262
|
|
|
3263
|
+
// src/mcp/run-script-ref.ts
|
|
3264
|
+
function resolveRunScriptThreadRef(ref) {
|
|
3265
|
+
const explicit = ref?.trim();
|
|
3266
|
+
if (explicit) return explicit;
|
|
3267
|
+
const siblings = threadsSharingWorktree(process.cwd());
|
|
3268
|
+
const thread = siblings[0];
|
|
3269
|
+
if (!thread) {
|
|
3270
|
+
throw new Error(
|
|
3271
|
+
"No Sideboard thread for this cwd. Pass ref (thread id), or call from a worktree chat."
|
|
3272
|
+
);
|
|
3273
|
+
}
|
|
3274
|
+
return thread.id;
|
|
3275
|
+
}
|
|
3276
|
+
|
|
3174
3277
|
// src/mcp/thread-visibility.ts
|
|
3175
3278
|
function lastMessagePreview(messages, max = 160) {
|
|
3176
3279
|
if (!messages?.length) return null;
|
|
@@ -4842,23 +4945,23 @@ function registerScheduleTools(server) {
|
|
|
4842
4945
|
}
|
|
4843
4946
|
|
|
4844
4947
|
// src/board/load-home-board.ts
|
|
4845
|
-
import { existsSync as
|
|
4846
|
-
import { join as
|
|
4948
|
+
import { existsSync as existsSync3, mkdirSync as mkdirSync3, readFileSync as readFileSync3, unlinkSync as unlinkSync3, writeFileSync as writeFileSync2 } from "fs";
|
|
4949
|
+
import { join as join3 } from "path";
|
|
4847
4950
|
|
|
4848
4951
|
// src/board/board-pins.ts
|
|
4849
4952
|
import { randomUUID as randomUUID2 } from "crypto";
|
|
4850
|
-
import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from "fs";
|
|
4851
|
-
import { join } from "path";
|
|
4953
|
+
import { existsSync as existsSync2, mkdirSync as mkdirSync2, readFileSync as readFileSync2, unlinkSync as unlinkSync2, writeFileSync } from "fs";
|
|
4954
|
+
import { join as join2 } from "path";
|
|
4852
4955
|
var FILE = "home-board-pins.json";
|
|
4853
4956
|
var VERSION = 1;
|
|
4854
4957
|
function pinsFile() {
|
|
4855
|
-
return
|
|
4958
|
+
return join2(appDataDir(), FILE);
|
|
4856
4959
|
}
|
|
4857
4960
|
function readDisk() {
|
|
4858
4961
|
const path2 = pinsFile();
|
|
4859
|
-
if (!
|
|
4962
|
+
if (!existsSync2(path2)) return [];
|
|
4860
4963
|
try {
|
|
4861
|
-
const raw = JSON.parse(
|
|
4964
|
+
const raw = JSON.parse(readFileSync2(path2, "utf8"));
|
|
4862
4965
|
if (raw?.version !== VERSION || !Array.isArray(raw.items)) return [];
|
|
4863
4966
|
return raw.items.filter((item) => item?.id && item.kind && item.ref);
|
|
4864
4967
|
} catch {
|
|
@@ -4866,7 +4969,7 @@ function readDisk() {
|
|
|
4866
4969
|
}
|
|
4867
4970
|
}
|
|
4868
4971
|
function writeDisk(items) {
|
|
4869
|
-
|
|
4972
|
+
mkdirSync2(appDataDir(), { recursive: true });
|
|
4870
4973
|
writeFileSync(pinsFile(), JSON.stringify({ version: VERSION, items }, null, 2), "utf8");
|
|
4871
4974
|
}
|
|
4872
4975
|
function listBoardPins() {
|
|
@@ -4919,7 +5022,7 @@ function replaceBoardPins(items) {
|
|
|
4919
5022
|
}
|
|
4920
5023
|
function clearBoardPins() {
|
|
4921
5024
|
try {
|
|
4922
|
-
|
|
5025
|
+
unlinkSync2(pinsFile());
|
|
4923
5026
|
} catch {
|
|
4924
5027
|
}
|
|
4925
5028
|
}
|
|
@@ -4935,7 +5038,7 @@ function homeBoardWorkspaceKey(workspaces) {
|
|
|
4935
5038
|
return workspaces.map((w) => w.path).filter(Boolean).sort().join("\n");
|
|
4936
5039
|
}
|
|
4937
5040
|
function cacheFile() {
|
|
4938
|
-
return
|
|
5041
|
+
return join3(appDataDir(), "home-board-cache.json");
|
|
4939
5042
|
}
|
|
4940
5043
|
function emptyInputs() {
|
|
4941
5044
|
return {
|
|
@@ -4961,9 +5064,9 @@ function shouldCacheHomeBoardInputs(inputs) {
|
|
|
4961
5064
|
}
|
|
4962
5065
|
function readDiskCache() {
|
|
4963
5066
|
const path2 = cacheFile();
|
|
4964
|
-
if (!
|
|
5067
|
+
if (!existsSync3(path2)) return null;
|
|
4965
5068
|
try {
|
|
4966
|
-
const raw = JSON.parse(
|
|
5069
|
+
const raw = JSON.parse(readFileSync3(path2, "utf8"));
|
|
4967
5070
|
if (raw?.version !== CACHE_VERSION || typeof raw.fetchedAt !== "number") {
|
|
4968
5071
|
return null;
|
|
4969
5072
|
}
|
|
@@ -4977,14 +5080,14 @@ function readDiskCache() {
|
|
|
4977
5080
|
}
|
|
4978
5081
|
function writeDiskCache(entry) {
|
|
4979
5082
|
try {
|
|
4980
|
-
|
|
5083
|
+
mkdirSync3(appDataDir(), { recursive: true });
|
|
4981
5084
|
writeFileSync2(cacheFile(), JSON.stringify(entry), "utf8");
|
|
4982
5085
|
} catch {
|
|
4983
5086
|
}
|
|
4984
5087
|
}
|
|
4985
5088
|
function deleteDiskCache() {
|
|
4986
5089
|
try {
|
|
4987
|
-
|
|
5090
|
+
unlinkSync3(cacheFile());
|
|
4988
5091
|
} catch {
|
|
4989
5092
|
}
|
|
4990
5093
|
}
|
|
@@ -5275,7 +5378,7 @@ async function startMcpServer() {
|
|
|
5275
5378
|
);
|
|
5276
5379
|
}
|
|
5277
5380
|
try {
|
|
5278
|
-
const { maxConcurrentAgents: maxConcurrentAgents2 } = await import("./app-settings-
|
|
5381
|
+
const { maxConcurrentAgents: maxConcurrentAgents2 } = await import("./app-settings-UXWCPDEA.js");
|
|
5279
5382
|
orch.setMaxConcurrent(maxConcurrentAgents2());
|
|
5280
5383
|
} catch {
|
|
5281
5384
|
}
|
|
@@ -5330,7 +5433,7 @@ async function startMcpServer() {
|
|
|
5330
5433
|
async () => {
|
|
5331
5434
|
const threads = orch.getThreads(true);
|
|
5332
5435
|
const lines = threads.map((t) => {
|
|
5333
|
-
const repo = t.repoPath === GLOBAL_WORKSPACE_ID ? "Orchestration" :
|
|
5436
|
+
const repo = t.repoPath === GLOBAL_WORKSPACE_ID ? "Orchestration" : basename2(t.repoPath) || t.repoPath;
|
|
5334
5437
|
const live = orch.threadLooksLive(t) ? readTurnLive(t.id) : null;
|
|
5335
5438
|
const parent = t.parentThreadId ? ` parent:${t.parentThreadId.slice(0, 8)}` : "";
|
|
5336
5439
|
const preview = lastMessagePreview(t.messages, 80);
|
|
@@ -5578,19 +5681,79 @@ async function startMcpServer() {
|
|
|
5578
5681
|
"Stop a detached job you started with detached-job.cjs when it is hanging, producing no useful output, buffering forever, or doing the wrong thing (wrong project, infinite watch, huge dump). Do not stop a pack/test/deploy that is clearly making progress. The type=log pane updates to status=failed with the last delta. Then decide the next step.",
|
|
5579
5682
|
{
|
|
5580
5683
|
id: z9.string().describe("Detached job id (same kebab-case id passed to detached-job.cjs start)"),
|
|
5581
|
-
reason: z9.string().optional().describe("Why you are stopping (hanging, no progress, wrong output, already have the
|
|
5684
|
+
reason: z9.string().optional().describe("Why you are stopping (hanging, no progress, wrong output, already have the answer)")
|
|
5582
5685
|
},
|
|
5583
5686
|
async ({ id, reason }) => {
|
|
5584
5687
|
const result = await stopDetachedJob(process.cwd(), id, { reason });
|
|
5585
5688
|
return mcpJson(result);
|
|
5586
5689
|
}
|
|
5587
5690
|
);
|
|
5691
|
+
server.tool(
|
|
5692
|
+
"list_run_scripts",
|
|
5693
|
+
"List .sideboard/.conductor run scripts for this thread (same menu as the desktop Dev button) and which are active. Worktree turns may omit ref (uses cwd).",
|
|
5694
|
+
{
|
|
5695
|
+
ref: z9.string().optional().describe("Thread id. Omit on a worktree turn (uses cwd).")
|
|
5696
|
+
},
|
|
5697
|
+
async ({ ref }) => {
|
|
5698
|
+
try {
|
|
5699
|
+
const threadRef = resolveRunScriptThreadRef(ref);
|
|
5700
|
+
const scripts = orch.listThreadRunScripts(threadRef);
|
|
5701
|
+
const active = orch.getActiveRuns(threadRef);
|
|
5702
|
+
return mcpJson({ scripts, active, ref: threadRef });
|
|
5703
|
+
} catch (err) {
|
|
5704
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
5705
|
+
return { content: [{ type: "text", text: message }], isError: true };
|
|
5706
|
+
}
|
|
5707
|
+
}
|
|
5708
|
+
);
|
|
5709
|
+
server.tool(
|
|
5710
|
+
"run_dev_script",
|
|
5711
|
+
"Start a .sideboard/.conductor run script (same as the desktop Dev / play button). Logs and Stop appear in the thread UI \u2014 do not detached-job or shell-spawn the same command. Returns the allocated port. Worktree turns may omit ref (uses cwd). Omit name for the default script.",
|
|
5712
|
+
{
|
|
5713
|
+
ref: z9.string().optional().describe("Thread id. Omit on a worktree turn (uses cwd)."),
|
|
5714
|
+
name: z9.string().optional().describe("Script name from list_run_scripts (default script if omitted).")
|
|
5715
|
+
},
|
|
5716
|
+
async ({ ref, name }) => {
|
|
5717
|
+
try {
|
|
5718
|
+
const threadRef = resolveRunScriptThreadRef(ref);
|
|
5719
|
+
const result = await orch.startDev(threadRef, name);
|
|
5720
|
+
return mcpJson({
|
|
5721
|
+
port: result.port,
|
|
5722
|
+
scriptName: result.scriptName,
|
|
5723
|
+
ports: result.ports,
|
|
5724
|
+
url: `http://localhost:${result.port}`,
|
|
5725
|
+
ref: threadRef
|
|
5726
|
+
});
|
|
5727
|
+
} catch (err) {
|
|
5728
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
5729
|
+
return { content: [{ type: "text", text: message }], isError: true };
|
|
5730
|
+
}
|
|
5731
|
+
}
|
|
5732
|
+
);
|
|
5733
|
+
server.tool(
|
|
5734
|
+
"stop_dev_script",
|
|
5735
|
+
"Stop a run script started with run_dev_script or the desktop Dev button (same as UI Stop). Omit name to stop all scripts on this worktree. Worktree turns may omit ref (uses cwd).",
|
|
5736
|
+
{
|
|
5737
|
+
ref: z9.string().optional().describe("Thread id. Omit on a worktree turn (uses cwd)."),
|
|
5738
|
+
name: z9.string().optional().describe("Script name to stop; omit to stop all active scripts.")
|
|
5739
|
+
},
|
|
5740
|
+
async ({ ref, name }) => {
|
|
5741
|
+
try {
|
|
5742
|
+
const threadRef = resolveRunScriptThreadRef(ref);
|
|
5743
|
+
orch.stopDev(threadRef, name);
|
|
5744
|
+
return mcpJson({ ok: true, ref: threadRef, stopped: name ?? "all" });
|
|
5745
|
+
} catch (err) {
|
|
5746
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
5747
|
+
return { content: [{ type: "text", text: message }], isError: true };
|
|
5748
|
+
}
|
|
5749
|
+
}
|
|
5750
|
+
);
|
|
5588
5751
|
if (!worktreeProfile) {
|
|
5589
5752
|
registerSlackTools(server);
|
|
5590
5753
|
registerConnectedIssueVendorTools(server);
|
|
5591
5754
|
registerScheduleTools(server);
|
|
5592
5755
|
const { getCaffeinateHold: getCaffeinateHold2, setCaffeinateHold: setCaffeinateHold2 } = await import("./caffeinate-hold-22VFDPSO.js");
|
|
5593
|
-
const { resolveNewThreadOptions: resolveNewThreadOptions2, resolveThreadDefaults: resolveThreadDefaults2 } = await import("./app-settings-
|
|
5756
|
+
const { resolveNewThreadOptions: resolveNewThreadOptions2, resolveThreadDefaults: resolveThreadDefaults2 } = await import("./app-settings-UXWCPDEA.js");
|
|
5594
5757
|
const accountDefaults = resolveThreadDefaults2();
|
|
5595
5758
|
const accountDefaultsHint = `Account defaults: agent=${accountDefaults.agent}, model=${accountDefaults.model?.trim() || "Auto"}, effort=${accountDefaults.effort}`;
|
|
5596
5759
|
server.tool(
|
|
@@ -6063,45 +6226,6 @@ async function startMcpServer() {
|
|
|
6063
6226
|
}
|
|
6064
6227
|
}
|
|
6065
6228
|
);
|
|
6066
|
-
server.tool(
|
|
6067
|
-
"run_dev_script",
|
|
6068
|
-
"Start a .sideboard/.conductor run script for a thread (default script if name omitted); returns port",
|
|
6069
|
-
{
|
|
6070
|
-
ref: z9.string(),
|
|
6071
|
-
name: z9.string().optional()
|
|
6072
|
-
},
|
|
6073
|
-
async ({ ref, name }) => {
|
|
6074
|
-
const result = await orch.startDev(ref, name);
|
|
6075
|
-
return mcpJson({
|
|
6076
|
-
port: result.port,
|
|
6077
|
-
scriptName: result.scriptName,
|
|
6078
|
-
ports: result.ports,
|
|
6079
|
-
url: `http://localhost:${result.port}`
|
|
6080
|
-
});
|
|
6081
|
-
}
|
|
6082
|
-
);
|
|
6083
|
-
server.tool(
|
|
6084
|
-
"list_run_scripts",
|
|
6085
|
-
"List named run scripts available for a thread",
|
|
6086
|
-
{ ref: z9.string() },
|
|
6087
|
-
async ({ ref }) => {
|
|
6088
|
-
const scripts = orch.listThreadRunScripts(ref);
|
|
6089
|
-
const active = orch.getActiveRuns(ref);
|
|
6090
|
-
return mcpJson({ scripts, active });
|
|
6091
|
-
}
|
|
6092
|
-
);
|
|
6093
|
-
server.tool(
|
|
6094
|
-
"stop_dev_script",
|
|
6095
|
-
"Stop a running script for a thread (all scripts if name omitted)",
|
|
6096
|
-
{
|
|
6097
|
-
ref: z9.string(),
|
|
6098
|
-
name: z9.string().optional()
|
|
6099
|
-
},
|
|
6100
|
-
async ({ ref, name }) => {
|
|
6101
|
-
orch.stopDev(ref, name);
|
|
6102
|
-
return { content: [{ type: "text", text: "ok" }] };
|
|
6103
|
-
}
|
|
6104
|
-
);
|
|
6105
6229
|
server.tool(
|
|
6106
6230
|
"run_setup",
|
|
6107
6231
|
"Re-run workspace setup (Sideboard/Conductor settings, .cursor/worktrees.json, or script/setup). New worktrees already run this automatically.",
|
|
@@ -8589,6 +8713,9 @@ export {
|
|
|
8589
8713
|
ABLETIME_ORG_KEY_PREFIX,
|
|
8590
8714
|
ABLETIME_PAT_PREFIX,
|
|
8591
8715
|
ABLETIME_PM_TOOL_NAMES,
|
|
8716
|
+
AGENT_DONE_CUSTOM_SOUND_EXTENSIONS,
|
|
8717
|
+
AGENT_DONE_CUSTOM_SOUND_MAX_BYTES,
|
|
8718
|
+
AGENT_DONE_SOUNDS,
|
|
8592
8719
|
AGENT_GIT_ACTIONS,
|
|
8593
8720
|
AGENT_RUNNER_MAX_OLD_SPACE_MB,
|
|
8594
8721
|
ATTACHMENTS_DIR,
|
|
@@ -8711,6 +8838,9 @@ export {
|
|
|
8711
8838
|
addStackLayerFromThread,
|
|
8712
8839
|
addWorkspace,
|
|
8713
8840
|
adoptThread,
|
|
8841
|
+
agentDoneCustomSoundMime,
|
|
8842
|
+
agentDoneSound,
|
|
8843
|
+
agentDoneSoundsDir,
|
|
8714
8844
|
agentGitPrompt,
|
|
8715
8845
|
alignQueueAttachments,
|
|
8716
8846
|
allAdapters,
|
|
@@ -8789,6 +8919,7 @@ export {
|
|
|
8789
8919
|
claudeUserSettingsPath,
|
|
8790
8920
|
cleanupArchivedHistory,
|
|
8791
8921
|
cleanupOrphanWorktrees,
|
|
8922
|
+
clearAgentDoneCustomSoundFile,
|
|
8792
8923
|
clearBoardPins,
|
|
8793
8924
|
clearHomeBoardCache,
|
|
8794
8925
|
clipAgentEventForPaint,
|
|
@@ -8891,6 +9022,7 @@ export {
|
|
|
8891
9022
|
fetchOriginForWorktree,
|
|
8892
9023
|
fetchPrHead,
|
|
8893
9024
|
finalizeParts,
|
|
9025
|
+
findAgentDoneCustomSoundPath,
|
|
8894
9026
|
findConventionSetup,
|
|
8895
9027
|
findInvalidCacheControlTtlOrder,
|
|
8896
9028
|
findLastBrightsyContextSummary,
|
|
@@ -9025,6 +9157,7 @@ export {
|
|
|
9025
9157
|
historyMaxDays,
|
|
9026
9158
|
hottestClaudeWindow,
|
|
9027
9159
|
httpFetch,
|
|
9160
|
+
importAgentDoneCustomSound,
|
|
9028
9161
|
importConductorWorkspace,
|
|
9029
9162
|
importConductorWorkspaceAsync,
|
|
9030
9163
|
initPrStack,
|
|
@@ -9040,6 +9173,7 @@ export {
|
|
|
9040
9173
|
isAbleTimeConnected,
|
|
9041
9174
|
isAbleTimeOAuthCancelled,
|
|
9042
9175
|
isAbleTimeRejectedCredential,
|
|
9176
|
+
isAgentDoneSound,
|
|
9043
9177
|
isAskUserToolName,
|
|
9044
9178
|
isBrightsyConnected,
|
|
9045
9179
|
isBrightsyNdjsonLine,
|
|
@@ -9231,6 +9365,7 @@ export {
|
|
|
9231
9365
|
primaryCheckoutFromLinkedWorktree,
|
|
9232
9366
|
promptMentionsBrightsy,
|
|
9233
9367
|
pushBranch,
|
|
9368
|
+
readAgentDoneCustomSound,
|
|
9234
9369
|
readExistingReviewRequestFile,
|
|
9235
9370
|
readKeychainVaultKey,
|
|
9236
9371
|
readPlanFile,
|