@sideboard-ai/core 0.1.229 → 0.1.231
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/{agents-B7G4BQTS.js → agents-ENAQHQRZ.js} +4 -4
- package/dist/{agents-ZKP7QNXA.js → agents-TCTEAK6M.js} +4 -4
- package/dist/{chunk-F3GT6DQW.js → chunk-4CZ25DO2.js} +1 -1
- package/dist/{chunk-3IMSQNTS.js → chunk-4VGCG2HV.js} +17 -0
- package/dist/{chunk-T7Y5ULHM.js → chunk-6L25K7BE.js} +3 -3
- package/dist/{chunk-LULHFLPU.js → chunk-FA4CPYCY.js} +3 -3
- package/dist/{chunk-7YKXBFQE.js → chunk-HZFLKVGC.js} +2 -2
- package/dist/{chunk-UHT6OS7V.js → chunk-HZLZ34FK.js} +145 -15
- package/dist/{chunk-6HKGCUDN.js → chunk-JJRRLCCS.js} +143 -14
- package/dist/{chunk-AMMRFFB7.js → chunk-N5TX66CD.js} +1 -1
- package/dist/{chunk-N7UXGM3Y.js → chunk-UNTOZA3C.js} +2 -2
- package/dist/{chunk-HY2GFZ5S.js → chunk-XJETIO4K.js} +17 -0
- package/dist/{coordinator-prompt-DZMMCDRW.js → coordinator-prompt-DFXYTM6D.js} +3 -3
- package/dist/{coordinator-prompt-RL3GKIAQ.js → coordinator-prompt-YKLXQTWH.js} +3 -3
- package/dist/{global-workspace-QW4OXCLJ.js → global-workspace-4SPANNJT.js} +3 -3
- package/dist/{global-workspace-G3QEVRGZ.js → global-workspace-EYZKYHAO.js} +3 -3
- package/dist/index.cjs +174 -17
- package/dist/index.d.cts +53 -5
- package/dist/index.d.ts +53 -5
- package/dist/index.js +10 -6
- package/dist/mcp/run-stdio.cjs +159 -7
- package/dist/mcp/run-stdio.js +6 -6
- package/dist/{orchestrator-GKAHLGXT.js → orchestrator-HMJPNUN5.js} +7 -5
- package/dist/{orchestrator-X4VFA5WW.js → orchestrator-ZT3SJVKF.js} +7 -5
- package/dist/{thread-store-KDPPXJJ3.js → thread-store-FBK5SZ5P.js} +1 -1
- package/dist/{thread-store-N6WQIWZ4.js → thread-store-IKJD4EOK.js} +1 -1
- package/dist/{workspaces-77C5XQEY.js → workspaces-73Y7IJY2.js} +3 -3
- package/dist/{workspaces-WXRPLT2N.js → workspaces-FQCSCTNH.js} +3 -3
- package/dist/{worktree-P67WAJKH.js → worktree-36VEFUJN.js} +2 -2
- package/dist/{worktree-L6FJXFUC.js → worktree-DOPRKG7K.js} +2 -2
- package/package.json +1 -1
|
@@ -42,7 +42,7 @@ import {
|
|
|
42
42
|
summarizeTurnStderr,
|
|
43
43
|
toolDescription,
|
|
44
44
|
turnFailChatText
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-6L25K7BE.js";
|
|
46
46
|
import {
|
|
47
47
|
SLACK_REPLY_FORMATTING,
|
|
48
48
|
addWorkspace,
|
|
@@ -65,7 +65,7 @@ import {
|
|
|
65
65
|
stageAbsolutePathsAsAttachments,
|
|
66
66
|
stageBuffersAsAttachments,
|
|
67
67
|
syncWorkspacesFromThreads
|
|
68
|
-
} from "./chunk-
|
|
68
|
+
} from "./chunk-UNTOZA3C.js";
|
|
69
69
|
import {
|
|
70
70
|
addPrStackLayer,
|
|
71
71
|
allocateTeamName,
|
|
@@ -114,7 +114,7 @@ import {
|
|
|
114
114
|
worktreeDisplayLabelForGroup,
|
|
115
115
|
worktreeNameFromPath,
|
|
116
116
|
worktreeSlugForTicket
|
|
117
|
-
} from "./chunk-
|
|
117
|
+
} from "./chunk-4CZ25DO2.js";
|
|
118
118
|
import {
|
|
119
119
|
ATTACHMENTS_DIR,
|
|
120
120
|
DETACHED_JOBS_DIR,
|
|
@@ -132,7 +132,7 @@ import {
|
|
|
132
132
|
updateThread,
|
|
133
133
|
withThreadLock,
|
|
134
134
|
writeThread
|
|
135
|
-
} from "./chunk-
|
|
135
|
+
} from "./chunk-XJETIO4K.js";
|
|
136
136
|
import {
|
|
137
137
|
ensureWorktreeSideboardIgnored
|
|
138
138
|
} from "./chunk-SZJZEFTY.js";
|
|
@@ -418,7 +418,7 @@ async function continueSourceThread(threadId, prompt) {
|
|
|
418
418
|
await continueOnReply(threadId, prompt);
|
|
419
419
|
return;
|
|
420
420
|
}
|
|
421
|
-
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-
|
|
421
|
+
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-HMJPNUN5.js");
|
|
422
422
|
await getOrchestrator2().send(threadId, prompt);
|
|
423
423
|
} catch {
|
|
424
424
|
}
|
|
@@ -678,6 +678,7 @@ async function pollSlackOutboundWatches(opts) {
|
|
|
678
678
|
}
|
|
679
679
|
|
|
680
680
|
// src/orchestrator/orchestrator.ts
|
|
681
|
+
import { randomUUID as randomUUID5 } from "crypto";
|
|
681
682
|
import { existsSync as existsSync19 } from "fs";
|
|
682
683
|
|
|
683
684
|
// src/agents/spawn.ts
|
|
@@ -895,9 +896,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
|
|
|
895
896
|
`Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
|
|
896
897
|
);
|
|
897
898
|
}
|
|
898
|
-
const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-
|
|
899
|
+
const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-EYZKYHAO.js");
|
|
899
900
|
if (isGlobalThread2(thread)) {
|
|
900
|
-
const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-
|
|
901
|
+
const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-YKLXQTWH.js");
|
|
901
902
|
ensureGlobalCoordinatorCwd2(
|
|
902
903
|
isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
|
|
903
904
|
);
|
|
@@ -2895,6 +2896,11 @@ async function cloneRepoIntoSideboard(opts) {
|
|
|
2895
2896
|
return { repoPath, workspace };
|
|
2896
2897
|
}
|
|
2897
2898
|
|
|
2899
|
+
// src/types/thread.ts
|
|
2900
|
+
function isUnclaimedRunScriptRequest(req) {
|
|
2901
|
+
return Boolean(req && !req.claimedAt && !req.fulfilledAt && !req.error);
|
|
2902
|
+
}
|
|
2903
|
+
|
|
2898
2904
|
// src/store/desktop-host.ts
|
|
2899
2905
|
import { readFileSync as readFileSync6, unlinkSync, writeFileSync as writeFileSync3 } from "fs";
|
|
2900
2906
|
import { join as join11 } from "path";
|
|
@@ -4539,7 +4545,7 @@ async function adoptThread(input) {
|
|
|
4539
4545
|
messages: input.messages ?? []
|
|
4540
4546
|
});
|
|
4541
4547
|
writeThread(thread);
|
|
4542
|
-
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-
|
|
4548
|
+
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-FQCSCTNH.js");
|
|
4543
4549
|
await ensureWorkspace2(repoPath);
|
|
4544
4550
|
const { ensureWorktreeSideboardIgnored: ensureWorktreeSideboardIgnored2 } = await import("./worktree-exclude-K7QK4RI5.js");
|
|
4545
4551
|
await ensureWorktreeSideboardIgnored2(input.worktreePath);
|
|
@@ -7015,7 +7021,7 @@ function formatScheduledPrompt(name, prompt) {
|
|
|
7015
7021
|
${prompt}`;
|
|
7016
7022
|
}
|
|
7017
7023
|
async function defaultDeps() {
|
|
7018
|
-
const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-
|
|
7024
|
+
const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-HMJPNUN5.js");
|
|
7019
7025
|
const orch = getOrchestrator2();
|
|
7020
7026
|
return {
|
|
7021
7027
|
findThread: (id) => findThreadByRef(id),
|
|
@@ -7120,6 +7126,7 @@ function armSchedules() {
|
|
|
7120
7126
|
|
|
7121
7127
|
// src/orchestrator/orchestrator.ts
|
|
7122
7128
|
var LIVE_TURN_SPAWN_GRACE_MS = 15e3;
|
|
7129
|
+
var RUN_SCRIPT_DESKTOP_ADOPT_MS = 2e4;
|
|
7123
7130
|
function isPidAlive(pid) {
|
|
7124
7131
|
if (!Number.isFinite(pid) || pid <= 0) return false;
|
|
7125
7132
|
try {
|
|
@@ -7198,6 +7205,11 @@ var Orchestrator = class {
|
|
|
7198
7205
|
jobContinueNudged = /* @__PURE__ */ new Set();
|
|
7199
7206
|
/** In-flight startDev per worktree run key — agent MCP + UI Start must not double-spawn. */
|
|
7200
7207
|
startingDev = /* @__PURE__ */ new Map();
|
|
7208
|
+
/**
|
|
7209
|
+
* MCP/CLI poll budget while Electron main adopts `runScriptRequest`.
|
|
7210
|
+
* Tests shorten this so a missing desktop does not wait 20s.
|
|
7211
|
+
*/
|
|
7212
|
+
runScriptAdoptTimeoutMs = RUN_SCRIPT_DESKTOP_ADOPT_MS;
|
|
7201
7213
|
maxConcurrent;
|
|
7202
7214
|
runningCount = 0;
|
|
7203
7215
|
constructor(opts) {
|
|
@@ -7367,6 +7379,58 @@ var Orchestrator = class {
|
|
|
7367
7379
|
this.armDrain(thread.id);
|
|
7368
7380
|
}
|
|
7369
7381
|
}
|
|
7382
|
+
this.adoptPersistedRunScripts();
|
|
7383
|
+
}
|
|
7384
|
+
/**
|
|
7385
|
+
* Adopt run-script start/stop persisted by MCP/CLI while this process owns
|
|
7386
|
+
* live children (desktop host). Spawning in stdio leaves the Run tab on
|
|
7387
|
+
* "Starting…" with no logs — `run_output` never reaches the renderer.
|
|
7388
|
+
*/
|
|
7389
|
+
adoptPersistedRunScripts() {
|
|
7390
|
+
if (!this.shouldOwnRunScripts()) return;
|
|
7391
|
+
for (const thread of listThreads()) {
|
|
7392
|
+
if (thread.status === "archived") continue;
|
|
7393
|
+
const req = thread.runScriptRequest;
|
|
7394
|
+
if (!isUnclaimedRunScriptRequest(req) || !req) continue;
|
|
7395
|
+
const claimedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
7396
|
+
const claimed = { ...req, claimedAt };
|
|
7397
|
+
updateThread(thread.id, { runScriptRequest: claimed });
|
|
7398
|
+
void this.applyRunScriptRequest(thread.id, claimed);
|
|
7399
|
+
}
|
|
7400
|
+
}
|
|
7401
|
+
async applyRunScriptRequest(threadId, req) {
|
|
7402
|
+
try {
|
|
7403
|
+
if (req.op === "start") {
|
|
7404
|
+
await this.startDev(threadId, req.scriptName ?? void 0);
|
|
7405
|
+
} else {
|
|
7406
|
+
await this.stopDev(threadId, req.scriptName ?? void 0);
|
|
7407
|
+
}
|
|
7408
|
+
const latest = readThread(threadId);
|
|
7409
|
+
const current = latest?.runScriptRequest;
|
|
7410
|
+
if (current?.requestId === req.requestId && !current.error) {
|
|
7411
|
+
updateThread(threadId, {
|
|
7412
|
+
runScriptRequest: {
|
|
7413
|
+
...current,
|
|
7414
|
+
fulfilledAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
7415
|
+
}
|
|
7416
|
+
});
|
|
7417
|
+
}
|
|
7418
|
+
} catch (err) {
|
|
7419
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
7420
|
+
const latest = readThread(threadId);
|
|
7421
|
+
const current = latest?.runScriptRequest;
|
|
7422
|
+
if (!current || current.requestId !== req.requestId) return;
|
|
7423
|
+
updateThread(threadId, {
|
|
7424
|
+
runScriptRequest: { ...current, error: message }
|
|
7425
|
+
});
|
|
7426
|
+
}
|
|
7427
|
+
}
|
|
7428
|
+
/**
|
|
7429
|
+
* Same rule as agent-queue drain: MCP stdio must not own Electron children
|
|
7430
|
+
* while Sideboard.app is alive.
|
|
7431
|
+
*/
|
|
7432
|
+
shouldOwnRunScripts() {
|
|
7433
|
+
return thisProcessShouldDrainAgentQueues();
|
|
7370
7434
|
}
|
|
7371
7435
|
/**
|
|
7372
7436
|
* Mid-session: a worktree can sit at `running` after the agent process dies
|
|
@@ -8415,6 +8479,13 @@ var Orchestrator = class {
|
|
|
8415
8479
|
"No run script found for this worktree. Add [scripts.run.*] in the worktree\u2019s .sideboard/settings.toml or .conductor/settings.toml (or settings.local.toml on the main repo)."
|
|
8416
8480
|
);
|
|
8417
8481
|
}
|
|
8482
|
+
if (!this.shouldOwnRunScripts()) {
|
|
8483
|
+
const result = await this.requestDesktopRunScript(thread, "start", resolvedName);
|
|
8484
|
+
if (!result) {
|
|
8485
|
+
throw new Error("Desktop did not return a run script port.");
|
|
8486
|
+
}
|
|
8487
|
+
return result;
|
|
8488
|
+
}
|
|
8418
8489
|
const runKey = worktreeRunProcessKey(thread.worktreePath, resolvedName);
|
|
8419
8490
|
const inFlight = this.startingDev.get(runKey);
|
|
8420
8491
|
if (inFlight) return inFlight;
|
|
@@ -8537,8 +8608,65 @@ var Orchestrator = class {
|
|
|
8537
8608
|
});
|
|
8538
8609
|
return { port: handle.port, scriptName: resolvedName, ports: handle.ports };
|
|
8539
8610
|
}
|
|
8540
|
-
|
|
8611
|
+
/**
|
|
8612
|
+
* Persist a run-script intent for the desktop host (MCP/CLI while the board
|
|
8613
|
+
* is alive). Polls until Electron main adopts and fulfills it.
|
|
8614
|
+
*/
|
|
8615
|
+
async requestDesktopRunScript(thread, op, scriptName) {
|
|
8616
|
+
const latest = readThread(thread.id) ?? thread;
|
|
8617
|
+
const pending = latest.runScriptRequest;
|
|
8618
|
+
const claimedAt = pending?.claimedAt;
|
|
8619
|
+
const staleClaim = typeof claimedAt === "string" && Date.now() - Date.parse(claimedAt) > this.runScriptAdoptTimeoutMs;
|
|
8620
|
+
const sameIntent = pending && pending.op === op && (pending.scriptName ?? null) === (scriptName ?? null) && !pending.error && !pending.fulfilledAt && !staleClaim;
|
|
8621
|
+
const request = sameIntent ? pending : {
|
|
8622
|
+
op,
|
|
8623
|
+
scriptName: scriptName ?? null,
|
|
8624
|
+
requestId: randomUUID5(),
|
|
8625
|
+
requestedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
8626
|
+
};
|
|
8627
|
+
if (!sameIntent) {
|
|
8628
|
+
updateThread(thread.id, { runScriptRequest: request });
|
|
8629
|
+
}
|
|
8630
|
+
return this.waitForDesktopRunScript(thread.id, request, op, scriptName);
|
|
8631
|
+
}
|
|
8632
|
+
async waitForDesktopRunScript(threadId, request, op, scriptName) {
|
|
8633
|
+
const deadline = Date.now() + this.runScriptAdoptTimeoutMs;
|
|
8634
|
+
while (Date.now() < deadline) {
|
|
8635
|
+
const latest = readThread(threadId);
|
|
8636
|
+
if (!latest) {
|
|
8637
|
+
throw new Error("Thread disappeared while waiting for the desktop run script.");
|
|
8638
|
+
}
|
|
8639
|
+
const req = latest.runScriptRequest;
|
|
8640
|
+
if (req?.requestId === request.requestId && req.error) {
|
|
8641
|
+
throw new Error(req.error);
|
|
8642
|
+
}
|
|
8643
|
+
const shared = mergeWorktreeActiveRuns(threadsSharingWorktree(latest.worktreePath));
|
|
8644
|
+
const run2 = scriptName ? shared.activeRuns.find((r) => r.scriptName === scriptName) : shared.activeRuns[0];
|
|
8645
|
+
const fulfilled = req?.requestId === request.requestId && Boolean(req.fulfilledAt);
|
|
8646
|
+
const requestGone = !req || req.requestId !== request.requestId;
|
|
8647
|
+
if (op === "start") {
|
|
8648
|
+
if (run2 && (fulfilled || requestGone || run2.startedAt >= request.requestedAt)) {
|
|
8649
|
+
return { port: run2.port, scriptName: run2.scriptName, ports: run2.ports };
|
|
8650
|
+
}
|
|
8651
|
+
if (fulfilled && !run2) {
|
|
8652
|
+
throw new Error("Desktop reported the run script started, but it is not active.");
|
|
8653
|
+
}
|
|
8654
|
+
} else {
|
|
8655
|
+
const gone = scriptName ? !run2 : shared.activeRuns.length === 0;
|
|
8656
|
+
if (fulfilled || gone) return null;
|
|
8657
|
+
}
|
|
8658
|
+
await new Promise((r) => setTimeout(r, 40));
|
|
8659
|
+
}
|
|
8660
|
+
throw new Error(
|
|
8661
|
+
op === "start" ? "Desktop did not start the run script in time. Is Sideboard.app running this worktree?" : "Desktop did not stop the run script in time."
|
|
8662
|
+
);
|
|
8663
|
+
}
|
|
8664
|
+
async stopDev(threadRef, scriptName) {
|
|
8541
8665
|
const thread = this.requireThread(threadRef);
|
|
8666
|
+
if (!this.shouldOwnRunScripts()) {
|
|
8667
|
+
await this.requestDesktopRunScript(thread, "stop", scriptName);
|
|
8668
|
+
return;
|
|
8669
|
+
}
|
|
8542
8670
|
const siblings = threadsSharingWorktree(thread.worktreePath);
|
|
8543
8671
|
const shared = mergeWorktreeActiveRuns(siblings);
|
|
8544
8672
|
if (scriptName) {
|
|
@@ -9401,7 +9529,7 @@ var Orchestrator = class {
|
|
|
9401
9529
|
this.enforceHistoryRetention();
|
|
9402
9530
|
if (thread.repoPath && !isGlobalRepoPath(thread.repoPath)) {
|
|
9403
9531
|
try {
|
|
9404
|
-
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-
|
|
9532
|
+
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-FQCSCTNH.js");
|
|
9405
9533
|
await ensureWorkspace2(thread.repoPath);
|
|
9406
9534
|
} catch {
|
|
9407
9535
|
}
|
|
@@ -9455,7 +9583,7 @@ var Orchestrator = class {
|
|
|
9455
9583
|
`Cowboy checkout missing: ${thread.worktreePath}. Re-add the project folder, then restore.`
|
|
9456
9584
|
);
|
|
9457
9585
|
}
|
|
9458
|
-
const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-
|
|
9586
|
+
const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-DOPRKG7K.js");
|
|
9459
9587
|
const slug = thread.worktreePath.split("/").pop();
|
|
9460
9588
|
const dest = thread.worktreePath;
|
|
9461
9589
|
await withRepoGitLock(thread.repoPath, async () => {
|
|
@@ -9565,7 +9693,7 @@ async function startOrchestration(opts) {
|
|
|
9565
9693
|
sourceRef: "default",
|
|
9566
9694
|
...createOpts
|
|
9567
9695
|
}).catch(async () => {
|
|
9568
|
-
const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-
|
|
9696
|
+
const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-DOPRKG7K.js");
|
|
9569
9697
|
const repo = await resolveRepoRoot2(repoPath);
|
|
9570
9698
|
const def = await resolveDefaultBranch2(repo);
|
|
9571
9699
|
return orch.createThread({
|
|
@@ -9575,7 +9703,7 @@ async function startOrchestration(opts) {
|
|
|
9575
9703
|
repoPath: repo
|
|
9576
9704
|
});
|
|
9577
9705
|
});
|
|
9578
|
-
const { updateThread: upd } = await import("./thread-store-
|
|
9706
|
+
const { updateThread: upd } = await import("./thread-store-FBK5SZ5P.js");
|
|
9579
9707
|
const updated = upd(thread.id, {
|
|
9580
9708
|
sourceType: "orchestration",
|
|
9581
9709
|
sourceRef: goal
|
|
@@ -9624,6 +9752,7 @@ export {
|
|
|
9624
9752
|
deleteSchedule,
|
|
9625
9753
|
fireSchedule,
|
|
9626
9754
|
LIVE_TURN_SPAWN_GRACE_MS,
|
|
9755
|
+
RUN_SCRIPT_DESKTOP_ADOPT_MS,
|
|
9627
9756
|
isPidAlive,
|
|
9628
9757
|
waitForPidExit,
|
|
9629
9758
|
resolveSendFollowUp,
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
resolveRepoRoot,
|
|
9
9
|
takenSlugsFromThread,
|
|
10
10
|
teamSlugFromName
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-4CZ25DO2.js";
|
|
12
12
|
import {
|
|
13
13
|
ATTACHMENTS_DIR,
|
|
14
14
|
attachmentsGitignoreBody
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
listThreads,
|
|
19
19
|
updateThread,
|
|
20
20
|
writeThread
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-XJETIO4K.js";
|
|
22
22
|
import {
|
|
23
23
|
assertOrchestratorCapableAgent,
|
|
24
24
|
formatAccountProfilePlaybookLine,
|
|
@@ -35,6 +35,22 @@ function resolveThreadEffort(raw) {
|
|
|
35
35
|
if (raw.fast) return "low";
|
|
36
36
|
return "high";
|
|
37
37
|
}
|
|
38
|
+
function normalizeRunScriptRequest(raw) {
|
|
39
|
+
if (!raw || typeof raw !== "object") return void 0;
|
|
40
|
+
const req = raw;
|
|
41
|
+
if (req.op !== "start" && req.op !== "stop") return void 0;
|
|
42
|
+
if (typeof req.requestId !== "string" || !req.requestId.trim()) return void 0;
|
|
43
|
+
if (typeof req.requestedAt !== "string" || !req.requestedAt.trim()) return void 0;
|
|
44
|
+
return {
|
|
45
|
+
op: req.op,
|
|
46
|
+
scriptName: req.scriptName ?? null,
|
|
47
|
+
requestId: req.requestId,
|
|
48
|
+
requestedAt: req.requestedAt,
|
|
49
|
+
claimedAt: req.claimedAt ?? null,
|
|
50
|
+
fulfilledAt: req.fulfilledAt ?? null,
|
|
51
|
+
error: req.error ?? null
|
|
52
|
+
};
|
|
53
|
+
}
|
|
38
54
|
function normalizeThread(raw) {
|
|
39
55
|
return {
|
|
40
56
|
...raw,
|
|
@@ -58,6 +74,7 @@ function normalizeThread(raw) {
|
|
|
58
74
|
stackLayer: raw.stackLayer ?? null,
|
|
59
75
|
userSetTitle: Boolean(raw.userSetTitle),
|
|
60
76
|
activeRuns: Array.isArray(raw.activeRuns) ? raw.activeRuns : [],
|
|
77
|
+
runScriptRequest: normalizeRunScriptRequest(raw.runScriptRequest),
|
|
61
78
|
quotaResumeAt: raw.quotaResumeAt ?? null,
|
|
62
79
|
quotaContinuedFromId: raw.quotaContinuedFromId ?? null,
|
|
63
80
|
archivedAt: typeof raw.archivedAt === "string" && raw.archivedAt.trim() ? raw.archivedAt.trim() : void 0
|
|
@@ -7,14 +7,14 @@ import {
|
|
|
7
7
|
enrichWorkspacesWithGithub,
|
|
8
8
|
ensureGlobalCoordinatorCwd,
|
|
9
9
|
formatWorkspaceInventory
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-HZFLKVGC.js";
|
|
11
|
+
import "./chunk-N5TX66CD.js";
|
|
12
12
|
import "./chunk-6K64FJDD.js";
|
|
13
13
|
import "./chunk-PO4M4JAJ.js";
|
|
14
14
|
import "./chunk-I5NC7DWO.js";
|
|
15
15
|
import "./chunk-WDRMZKVB.js";
|
|
16
16
|
import "./chunk-JT7R45JB.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-4VGCG2HV.js";
|
|
18
18
|
import "./chunk-7J72QJOM.js";
|
|
19
19
|
import "./chunk-77WWLBCI.js";
|
|
20
20
|
import "./chunk-WFUDY6PC.js";
|
|
@@ -9,10 +9,10 @@ import {
|
|
|
9
9
|
enrichWorkspacesWithGithub,
|
|
10
10
|
ensureGlobalCoordinatorCwd,
|
|
11
11
|
formatWorkspaceInventory
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-UNTOZA3C.js";
|
|
13
|
+
import "./chunk-4CZ25DO2.js";
|
|
14
14
|
import "./chunk-D6JWYJ4P.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-XJETIO4K.js";
|
|
16
16
|
import "./chunk-X5B3OS5I.js";
|
|
17
17
|
import "./chunk-SZJZEFTY.js";
|
|
18
18
|
import "./chunk-ABOBTSO6.js";
|
|
@@ -15,14 +15,14 @@ import {
|
|
|
15
15
|
orchestratorSessionPoisonedByBuiltins,
|
|
16
16
|
slackCoordinatorSourceRef,
|
|
17
17
|
takenTeamSlugsForOrchestration
|
|
18
|
-
} from "./chunk-
|
|
19
|
-
import "./chunk-
|
|
18
|
+
} from "./chunk-HZFLKVGC.js";
|
|
19
|
+
import "./chunk-N5TX66CD.js";
|
|
20
20
|
import "./chunk-6K64FJDD.js";
|
|
21
21
|
import "./chunk-PO4M4JAJ.js";
|
|
22
22
|
import "./chunk-I5NC7DWO.js";
|
|
23
23
|
import "./chunk-WDRMZKVB.js";
|
|
24
24
|
import "./chunk-JT7R45JB.js";
|
|
25
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-4VGCG2HV.js";
|
|
26
26
|
import "./chunk-7J72QJOM.js";
|
|
27
27
|
import "./chunk-77WWLBCI.js";
|
|
28
28
|
import {
|
|
@@ -17,10 +17,10 @@ import {
|
|
|
17
17
|
orchestratorSessionPoisonedByBuiltins,
|
|
18
18
|
slackCoordinatorSourceRef,
|
|
19
19
|
takenTeamSlugsForOrchestration
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
20
|
+
} from "./chunk-UNTOZA3C.js";
|
|
21
|
+
import "./chunk-4CZ25DO2.js";
|
|
22
22
|
import "./chunk-D6JWYJ4P.js";
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-XJETIO4K.js";
|
|
24
24
|
import "./chunk-X5B3OS5I.js";
|
|
25
25
|
import "./chunk-SZJZEFTY.js";
|
|
26
26
|
import "./chunk-ABOBTSO6.js";
|