@sideboard-ai/core 0.1.194 → 0.1.196
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-OXDDPH2O.js → agents-2JBVL66D.js} +1 -1
- package/dist/{agents-WQL7SZY6.js → agents-CT4T6HA3.js} +1 -1
- package/dist/{chunk-VRPPFKAO.js → chunk-3IGCU4AT.js} +154 -49
- package/dist/{chunk-6H2XPPPR.js → chunk-5DY2QWVN.js} +4 -0
- package/dist/{chunk-2X6RGKLI.js → chunk-NWIBA5CP.js} +4 -0
- package/dist/{chunk-NY366OEZ.js → chunk-NXXJBRWQ.js} +155 -50
- package/dist/index.cjs +1006 -888
- package/dist/index.d.cts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2 -2
- package/dist/mcp/run-stdio.cjs +175 -57
- package/dist/mcp/run-stdio.js +2 -2
- package/dist/{orchestrator-A5KF2335.js → orchestrator-2FTS55SG.js} +2 -2
- package/dist/{orchestrator-S3M2E7O6.js → orchestrator-CT7VSL7B.js} +2 -2
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -4489,9 +4489,12 @@ declare class Orchestrator {
|
|
|
4489
4489
|
ports: number[];
|
|
4490
4490
|
}>;
|
|
4491
4491
|
stopDev(threadRef: string, scriptName?: string): void;
|
|
4492
|
+
private syncWorktreeRuns;
|
|
4492
4493
|
listThreadRunScripts(threadRef: string): RunScript[];
|
|
4493
4494
|
getActiveRuns(threadRef: string): ActiveRun[];
|
|
4494
4495
|
getSetupLog(threadRef: string): SetupLogSnapshot;
|
|
4496
|
+
private hasWorktreeSetupProcess;
|
|
4497
|
+
private writeSetupLog;
|
|
4495
4498
|
runSetup(threadRef: string, opts?: {
|
|
4496
4499
|
stampLastError?: boolean;
|
|
4497
4500
|
}): Promise<{
|
package/dist/index.d.ts
CHANGED
|
@@ -4489,9 +4489,12 @@ declare class Orchestrator {
|
|
|
4489
4489
|
ports: number[];
|
|
4490
4490
|
}>;
|
|
4491
4491
|
stopDev(threadRef: string, scriptName?: string): void;
|
|
4492
|
+
private syncWorktreeRuns;
|
|
4492
4493
|
listThreadRunScripts(threadRef: string): RunScript[];
|
|
4493
4494
|
getActiveRuns(threadRef: string): ActiveRun[];
|
|
4494
4495
|
getSetupLog(threadRef: string): SetupLogSnapshot;
|
|
4496
|
+
private hasWorktreeSetupProcess;
|
|
4497
|
+
private writeSetupLog;
|
|
4495
4498
|
runSetup(threadRef: string, opts?: {
|
|
4496
4499
|
stampLastError?: boolean;
|
|
4497
4500
|
}): Promise<{
|
package/dist/index.js
CHANGED
|
@@ -268,7 +268,7 @@ import {
|
|
|
268
268
|
worktreeCleanupSettings,
|
|
269
269
|
wrapReviewSkillMarkdown,
|
|
270
270
|
writeWorktreeFile
|
|
271
|
-
} from "./chunk-
|
|
271
|
+
} from "./chunk-NXXJBRWQ.js";
|
|
272
272
|
import {
|
|
273
273
|
LEGACY_PLAN_FILE_REL,
|
|
274
274
|
PLAN_FILE_NAME,
|
|
@@ -374,7 +374,7 @@ import {
|
|
|
374
374
|
withEventParentId,
|
|
375
375
|
withEventsParentId,
|
|
376
376
|
writeInjectedMcpConfig
|
|
377
|
-
} from "./chunk-
|
|
377
|
+
} from "./chunk-NWIBA5CP.js";
|
|
378
378
|
import {
|
|
379
379
|
CLOUD_COORDINATOR_BUSY_REPLY,
|
|
380
380
|
CLOUD_COORDINATOR_STOPPED_REPLY,
|
package/dist/mcp/run-stdio.cjs
CHANGED
|
@@ -10897,6 +10897,9 @@ function toCodexDisableUserMcpArgs(names) {
|
|
|
10897
10897
|
}
|
|
10898
10898
|
return args;
|
|
10899
10899
|
}
|
|
10900
|
+
function toCodexUnattendedAppsArgs() {
|
|
10901
|
+
return ["-c", "features.apps=false", "-c", "apps._default.enabled=false"];
|
|
10902
|
+
}
|
|
10900
10903
|
var import_node_fs28, import_node_os11, import_node_path29, import_smol_toml2;
|
|
10901
10904
|
var init_orch_mcp_isolation = __esm({
|
|
10902
10905
|
"src/agents/orch-mcp-isolation.ts"() {
|
|
@@ -11092,6 +11095,7 @@ var init_codex = __esm({
|
|
|
11092
11095
|
orchestratorThreadId: isOrchestrator ? thread.id : null
|
|
11093
11096
|
});
|
|
11094
11097
|
const mcpOverrides = [
|
|
11098
|
+
...toCodexUnattendedAppsArgs(),
|
|
11095
11099
|
...toCodexMcpConfigArgs(injected2),
|
|
11096
11100
|
...isOrchestrator ? toCodexDisableUserMcpArgs(
|
|
11097
11101
|
userMcpNamesToDisable({
|
|
@@ -13022,6 +13026,59 @@ var init_context_compact = __esm({
|
|
|
13022
13026
|
}
|
|
13023
13027
|
});
|
|
13024
13028
|
|
|
13029
|
+
// src/threads/worktree-runtime.ts
|
|
13030
|
+
function worktreeProcessPrefix(worktreePath) {
|
|
13031
|
+
return `wt:${normalizeWorktreePath(worktreePath)}`;
|
|
13032
|
+
}
|
|
13033
|
+
function worktreeSetupProcessKey(worktreePath) {
|
|
13034
|
+
return `${worktreeProcessPrefix(worktreePath)}:setup`;
|
|
13035
|
+
}
|
|
13036
|
+
function worktreeRunProcessKey(worktreePath, scriptName) {
|
|
13037
|
+
return `${worktreeProcessPrefix(worktreePath)}:run:${scriptName}`;
|
|
13038
|
+
}
|
|
13039
|
+
function worktreeDevProcessKey(worktreePath) {
|
|
13040
|
+
return `${worktreeProcessPrefix(worktreePath)}:dev`;
|
|
13041
|
+
}
|
|
13042
|
+
function isWorktreeRunProcessKey(key, worktreePath) {
|
|
13043
|
+
const prefix = worktreeProcessPrefix(worktreePath);
|
|
13044
|
+
return key.startsWith(`${prefix}:run:`) || key === `${prefix}:dev`;
|
|
13045
|
+
}
|
|
13046
|
+
function pickRichestSetupLog(snaps) {
|
|
13047
|
+
let best;
|
|
13048
|
+
for (const snap of snaps) {
|
|
13049
|
+
if (!snap.output && !snap.running && snap.exitCode == null) continue;
|
|
13050
|
+
if (!best) {
|
|
13051
|
+
best = snap;
|
|
13052
|
+
continue;
|
|
13053
|
+
}
|
|
13054
|
+
if (snap.running && !best.running) {
|
|
13055
|
+
best = snap;
|
|
13056
|
+
continue;
|
|
13057
|
+
}
|
|
13058
|
+
if (snap.running === best.running && snap.output.length > best.output.length) {
|
|
13059
|
+
best = snap;
|
|
13060
|
+
}
|
|
13061
|
+
}
|
|
13062
|
+
return best;
|
|
13063
|
+
}
|
|
13064
|
+
function mergeWorktreeActiveRuns(threads) {
|
|
13065
|
+
const byName = /* @__PURE__ */ new Map();
|
|
13066
|
+
let devPort = null;
|
|
13067
|
+
for (const thread of threads) {
|
|
13068
|
+
if (thread.devPort != null && devPort == null) devPort = thread.devPort;
|
|
13069
|
+
for (const run2 of thread.activeRuns ?? []) {
|
|
13070
|
+
if (!byName.has(run2.scriptName)) byName.set(run2.scriptName, run2);
|
|
13071
|
+
}
|
|
13072
|
+
}
|
|
13073
|
+
return { activeRuns: [...byName.values()], devPort };
|
|
13074
|
+
}
|
|
13075
|
+
var init_worktree_runtime = __esm({
|
|
13076
|
+
"src/threads/worktree-runtime.ts"() {
|
|
13077
|
+
"use strict";
|
|
13078
|
+
init_worktree_labels();
|
|
13079
|
+
}
|
|
13080
|
+
});
|
|
13081
|
+
|
|
13025
13082
|
// src/threads/chat-tabs.ts
|
|
13026
13083
|
function sameWorktreePath(a, b) {
|
|
13027
13084
|
return normalizeWorktreePath(a) === normalizeWorktreePath(b);
|
|
@@ -13118,7 +13175,8 @@ function createChatTab(input) {
|
|
|
13118
13175
|
planMode: from.planMode,
|
|
13119
13176
|
autonomy: input.autonomy ?? from.autonomy,
|
|
13120
13177
|
attachments: input.attachments ?? [],
|
|
13121
|
-
status: "idle"
|
|
13178
|
+
status: "idle",
|
|
13179
|
+
...mergeWorktreeActiveRuns(threadsSharingWorktree(binding.worktreePath))
|
|
13122
13180
|
});
|
|
13123
13181
|
writeThread(thread);
|
|
13124
13182
|
return thread;
|
|
@@ -13152,6 +13210,7 @@ var init_chat_tabs = __esm({
|
|
|
13152
13210
|
init_global_workspace();
|
|
13153
13211
|
init_orchestrator_capable();
|
|
13154
13212
|
init_thread_store();
|
|
13213
|
+
init_worktree_runtime();
|
|
13155
13214
|
init_worktree_labels();
|
|
13156
13215
|
}
|
|
13157
13216
|
});
|
|
@@ -13820,6 +13879,10 @@ var init_conductor = __esm({
|
|
|
13820
13879
|
function setupLogPath(threadId) {
|
|
13821
13880
|
return (0, import_node_path36.join)(threadsDir(), `${threadId}.setup.log.json`);
|
|
13822
13881
|
}
|
|
13882
|
+
function setupLogKeyForWorktree(worktreePath) {
|
|
13883
|
+
const norm = normalizeWorktreePath(worktreePath);
|
|
13884
|
+
return `wt-${(0, import_node_crypto8.createHash)("sha1").update(norm).digest("hex").slice(0, 16)}`;
|
|
13885
|
+
}
|
|
13823
13886
|
function emptySetupLog() {
|
|
13824
13887
|
return { ...EMPTY };
|
|
13825
13888
|
}
|
|
@@ -13910,12 +13973,14 @@ function finishSetupLog(threadId, exitCode, source) {
|
|
|
13910
13973
|
persistNow(threadId);
|
|
13911
13974
|
return clone(snap);
|
|
13912
13975
|
}
|
|
13913
|
-
var import_node_fs36, import_node_path36, EMPTY, memory, persistTimers;
|
|
13976
|
+
var import_node_crypto8, import_node_fs36, import_node_path36, EMPTY, memory, persistTimers;
|
|
13914
13977
|
var init_setup_log = __esm({
|
|
13915
13978
|
"src/store/setup-log.ts"() {
|
|
13916
13979
|
"use strict";
|
|
13980
|
+
import_node_crypto8 = require("crypto");
|
|
13917
13981
|
import_node_fs36 = require("fs");
|
|
13918
13982
|
import_node_path36 = require("path");
|
|
13983
|
+
init_worktree_labels();
|
|
13919
13984
|
init_paths();
|
|
13920
13985
|
EMPTY = {
|
|
13921
13986
|
output: "",
|
|
@@ -16384,7 +16449,7 @@ function buildQuotaHandoffAttachment(from, limitText, fallbackAgent) {
|
|
|
16384
16449
|
`- Do not wait on the limited ${from.agent} account; keep going on ${fallbackAgent}.`
|
|
16385
16450
|
].join("\n");
|
|
16386
16451
|
return {
|
|
16387
|
-
id: (0,
|
|
16452
|
+
id: (0, import_node_crypto9.randomUUID)(),
|
|
16388
16453
|
name: "Orchestration quota handoff.md",
|
|
16389
16454
|
kind: "transcript",
|
|
16390
16455
|
content: body
|
|
@@ -16405,11 +16470,11 @@ function createQuotaFailoverChat(from, fallbackAgent, limitText) {
|
|
|
16405
16470
|
sourceType: "orchestration"
|
|
16406
16471
|
});
|
|
16407
16472
|
}
|
|
16408
|
-
var
|
|
16473
|
+
var import_node_crypto9, QUOTA_CONTINUE_PROMPT, QUOTA_RESUME_PROMPT;
|
|
16409
16474
|
var init_quota_failover = __esm({
|
|
16410
16475
|
"src/orchestrator/quota-failover.ts"() {
|
|
16411
16476
|
"use strict";
|
|
16412
|
-
|
|
16477
|
+
import_node_crypto9 = require("crypto");
|
|
16413
16478
|
init_session_quota();
|
|
16414
16479
|
init_app_settings();
|
|
16415
16480
|
init_global_workspace();
|
|
@@ -19167,7 +19232,7 @@ function buildTask(input, now) {
|
|
|
19167
19232
|
const ts = nowIso2(now);
|
|
19168
19233
|
const agent = input.agent ? coerceOrchestratorAgent(input.agent) : null;
|
|
19169
19234
|
return {
|
|
19170
|
-
id: (0,
|
|
19235
|
+
id: (0, import_node_crypto10.randomUUID)(),
|
|
19171
19236
|
name: input.name?.trim() || defaultScheduleName(prompt),
|
|
19172
19237
|
prompt,
|
|
19173
19238
|
enabled: input.enabled !== false,
|
|
@@ -19254,11 +19319,11 @@ function recordScheduleRun(id, result) {
|
|
|
19254
19319
|
writeAll2(rows);
|
|
19255
19320
|
return next;
|
|
19256
19321
|
}
|
|
19257
|
-
var
|
|
19322
|
+
var import_node_crypto10, import_node_fs51, import_node_path48, import_croner, DURATION_RE, UNIT_MS;
|
|
19258
19323
|
var init_schedules = __esm({
|
|
19259
19324
|
"src/store/schedules.ts"() {
|
|
19260
19325
|
"use strict";
|
|
19261
|
-
|
|
19326
|
+
import_node_crypto10 = require("crypto");
|
|
19262
19327
|
import_node_fs51 = require("fs");
|
|
19263
19328
|
import_node_path48 = require("path");
|
|
19264
19329
|
import_croner = require("croner");
|
|
@@ -19666,6 +19731,7 @@ var init_orchestrator = __esm({
|
|
|
19666
19731
|
init_setup_last_error();
|
|
19667
19732
|
init_request_review();
|
|
19668
19733
|
init_fork_worktree();
|
|
19734
|
+
init_worktree_runtime();
|
|
19669
19735
|
init_quota_failover();
|
|
19670
19736
|
init_adopt();
|
|
19671
19737
|
init_stack_layers();
|
|
@@ -20831,22 +20897,25 @@ var init_orchestrator = __esm({
|
|
|
20831
20897
|
"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)."
|
|
20832
20898
|
);
|
|
20833
20899
|
}
|
|
20834
|
-
const
|
|
20835
|
-
const
|
|
20836
|
-
const
|
|
20900
|
+
const siblings = threadsSharingWorktree(thread.worktreePath);
|
|
20901
|
+
const shared = mergeWorktreeActiveRuns(siblings);
|
|
20902
|
+
const runKey = worktreeRunProcessKey(thread.worktreePath, resolvedName);
|
|
20903
|
+
const existing = this.processes.get(runKey) ?? siblings.map((t) => this.processes.get(`${t.id}:run:${resolvedName}`)).find(Boolean);
|
|
20904
|
+
const active = shared.activeRuns.find((r) => r.scriptName === resolvedName);
|
|
20837
20905
|
if (existing && active) {
|
|
20838
20906
|
return { port: active.port, scriptName: resolvedName, ports: active.ports };
|
|
20839
20907
|
}
|
|
20840
20908
|
if (!scriptName) {
|
|
20841
|
-
const legacy = this.processes.get(`${
|
|
20842
|
-
if (legacy &&
|
|
20843
|
-
return { port:
|
|
20909
|
+
const legacy = this.processes.get(worktreeDevProcessKey(thread.worktreePath)) ?? siblings.map((t) => this.processes.get(`${t.id}:dev`)).find(Boolean);
|
|
20910
|
+
if (legacy && shared.devPort) {
|
|
20911
|
+
return { port: shared.devPort, scriptName: resolvedName, ports: [shared.devPort] };
|
|
20844
20912
|
}
|
|
20845
20913
|
}
|
|
20846
20914
|
const mode = getRunMode(thread.worktreePath, thread.repoPath);
|
|
20847
20915
|
if (mode === "nonconcurrent") {
|
|
20916
|
+
const here = normalizeWorktreePath(thread.worktreePath);
|
|
20848
20917
|
for (const t of listThreads()) {
|
|
20849
|
-
if (t.
|
|
20918
|
+
if (normalizeWorktreePath(t.worktreePath) === here) continue;
|
|
20850
20919
|
const runs = t.activeRuns ?? [];
|
|
20851
20920
|
if (runs.length > 0 || t.devPort) {
|
|
20852
20921
|
throw new Error(
|
|
@@ -20881,7 +20950,7 @@ var init_orchestrator = __esm({
|
|
|
20881
20950
|
});
|
|
20882
20951
|
const isDefault = scripts.find((s) => s.default)?.name === resolvedName || !scripts.some((s) => s.default) && (resolvedName === "dev" || resolvedName === scripts[0]?.name);
|
|
20883
20952
|
if (isDefault) {
|
|
20884
|
-
this.processes.set(
|
|
20953
|
+
this.processes.set(worktreeDevProcessKey(thread.worktreePath), {
|
|
20885
20954
|
kind: "dev",
|
|
20886
20955
|
pid: handle.pid,
|
|
20887
20956
|
startedAt,
|
|
@@ -20896,13 +20965,14 @@ var init_orchestrator = __esm({
|
|
|
20896
20965
|
startedAt
|
|
20897
20966
|
};
|
|
20898
20967
|
const nextRuns = [
|
|
20899
|
-
...
|
|
20968
|
+
...shared.activeRuns.filter((r) => r.scriptName !== resolvedName),
|
|
20900
20969
|
run2
|
|
20901
20970
|
];
|
|
20902
|
-
|
|
20903
|
-
|
|
20904
|
-
|
|
20905
|
-
|
|
20971
|
+
this.syncWorktreeRuns(
|
|
20972
|
+
thread.worktreePath,
|
|
20973
|
+
nextRuns,
|
|
20974
|
+
isDefault ? handle.port : shared.devPort
|
|
20975
|
+
);
|
|
20906
20976
|
this.emit({
|
|
20907
20977
|
type: "dev_server_started",
|
|
20908
20978
|
threadId: thread.id,
|
|
@@ -20911,15 +20981,14 @@ var init_orchestrator = __esm({
|
|
|
20911
20981
|
});
|
|
20912
20982
|
void handle.done.then(() => {
|
|
20913
20983
|
this.processes.delete(runKey);
|
|
20914
|
-
if (isDefault) this.processes.delete(
|
|
20915
|
-
const latest =
|
|
20916
|
-
const remaining =
|
|
20917
|
-
|
|
20984
|
+
if (isDefault) this.processes.delete(worktreeDevProcessKey(thread.worktreePath));
|
|
20985
|
+
const latest = mergeWorktreeActiveRuns(threadsSharingWorktree(thread.worktreePath));
|
|
20986
|
+
const remaining = latest.activeRuns.filter((r) => r.scriptName !== resolvedName);
|
|
20987
|
+
this.syncWorktreeRuns(
|
|
20988
|
+
thread.worktreePath,
|
|
20989
|
+
remaining,
|
|
20990
|
+
isDefault ? null : latest.devPort
|
|
20918
20991
|
);
|
|
20919
|
-
updateThread(thread.id, {
|
|
20920
|
-
activeRuns: remaining,
|
|
20921
|
-
devPort: isDefault ? null : latest?.devPort ?? null
|
|
20922
|
-
});
|
|
20923
20992
|
this.emit({
|
|
20924
20993
|
type: "dev_server_stopped",
|
|
20925
20994
|
threadId: thread.id,
|
|
@@ -20930,51 +20999,82 @@ var init_orchestrator = __esm({
|
|
|
20930
20999
|
}
|
|
20931
21000
|
stopDev(threadRef, scriptName) {
|
|
20932
21001
|
const thread = this.requireThread(threadRef);
|
|
21002
|
+
const siblings = threadsSharingWorktree(thread.worktreePath);
|
|
21003
|
+
const shared = mergeWorktreeActiveRuns(siblings);
|
|
20933
21004
|
if (scriptName) {
|
|
20934
|
-
const
|
|
20935
|
-
|
|
20936
|
-
|
|
20937
|
-
|
|
20938
|
-
const
|
|
20939
|
-
|
|
20940
|
-
|
|
20941
|
-
|
|
20942
|
-
|
|
20943
|
-
|
|
21005
|
+
const keys = [
|
|
21006
|
+
worktreeRunProcessKey(thread.worktreePath, scriptName),
|
|
21007
|
+
...siblings.map((t) => `${t.id}:run:${scriptName}`)
|
|
21008
|
+
];
|
|
21009
|
+
for (const key of keys) {
|
|
21010
|
+
const proc = this.processes.get(key);
|
|
21011
|
+
if (proc) proc.kill();
|
|
21012
|
+
this.processes.delete(key);
|
|
21013
|
+
}
|
|
21014
|
+
const remaining = shared.activeRuns.filter((r) => r.scriptName !== scriptName);
|
|
21015
|
+
const isPrimary = shared.devPort != null && shared.activeRuns.find((r) => r.scriptName === scriptName)?.port === shared.devPort;
|
|
21016
|
+
this.syncWorktreeRuns(
|
|
21017
|
+
thread.worktreePath,
|
|
21018
|
+
remaining,
|
|
21019
|
+
isPrimary ? null : shared.devPort
|
|
21020
|
+
);
|
|
20944
21021
|
this.emit({ type: "dev_server_stopped", threadId: thread.id, scriptName });
|
|
20945
21022
|
return;
|
|
20946
21023
|
}
|
|
20947
21024
|
for (const [key, proc] of [...this.processes.entries()]) {
|
|
20948
|
-
if (key.startsWith(`${
|
|
21025
|
+
if (isWorktreeRunProcessKey(key, thread.worktreePath) || siblings.some((t) => key.startsWith(`${t.id}:run:`) || key === `${t.id}:dev`)) {
|
|
20949
21026
|
proc.kill();
|
|
20950
21027
|
this.processes.delete(key);
|
|
20951
21028
|
}
|
|
20952
21029
|
}
|
|
20953
|
-
|
|
21030
|
+
this.syncWorktreeRuns(thread.worktreePath, [], null);
|
|
20954
21031
|
this.emit({ type: "dev_server_stopped", threadId: thread.id });
|
|
20955
21032
|
}
|
|
21033
|
+
syncWorktreeRuns(worktreePath, activeRuns, devPort) {
|
|
21034
|
+
for (const sibling of threadsSharingWorktree(worktreePath)) {
|
|
21035
|
+
updateThread(sibling.id, { activeRuns, devPort });
|
|
21036
|
+
}
|
|
21037
|
+
}
|
|
20956
21038
|
listThreadRunScripts(threadRef) {
|
|
20957
21039
|
const thread = this.requireThread(threadRef);
|
|
20958
21040
|
return listRunScripts(thread.worktreePath, thread.repoPath);
|
|
20959
21041
|
}
|
|
20960
21042
|
getActiveRuns(threadRef) {
|
|
20961
|
-
|
|
21043
|
+
const thread = this.requireThread(threadRef);
|
|
21044
|
+
return mergeWorktreeActiveRuns(threadsSharingWorktree(thread.worktreePath)).activeRuns;
|
|
20962
21045
|
}
|
|
20963
21046
|
getSetupLog(threadRef) {
|
|
20964
21047
|
const thread = this.getThread(threadRef);
|
|
20965
21048
|
if (!thread) return readSetupLog(threadRef);
|
|
20966
|
-
const
|
|
20967
|
-
|
|
21049
|
+
const siblingIds = [
|
|
21050
|
+
thread.id,
|
|
21051
|
+
...threadsSharingWorktree(thread.worktreePath).map((t) => t.id)
|
|
21052
|
+
];
|
|
21053
|
+
const snap = pickRichestSetupLog([
|
|
21054
|
+
readSetupLog(setupLogKeyForWorktree(thread.worktreePath)),
|
|
21055
|
+
...[...new Set(siblingIds)].map((id) => readSetupLog(id))
|
|
21056
|
+
]) ?? readSetupLog(thread.id);
|
|
21057
|
+
if (snap.running && !this.hasWorktreeSetupProcess(thread.worktreePath)) {
|
|
20968
21058
|
return { ...snap, running: false };
|
|
20969
21059
|
}
|
|
20970
21060
|
return snap;
|
|
20971
21061
|
}
|
|
21062
|
+
hasWorktreeSetupProcess(worktreePath) {
|
|
21063
|
+
if (this.processes.has(worktreeSetupProcessKey(worktreePath))) return true;
|
|
21064
|
+
return threadsSharingWorktree(worktreePath).some(
|
|
21065
|
+
(t) => this.processes.has(`${t.id}:setup`)
|
|
21066
|
+
);
|
|
21067
|
+
}
|
|
21068
|
+
writeSetupLog(threadId, worktreePath, fn) {
|
|
21069
|
+
fn(setupLogKeyForWorktree(worktreePath));
|
|
21070
|
+
fn(threadId);
|
|
21071
|
+
}
|
|
20972
21072
|
async runSetup(threadRef, opts) {
|
|
20973
21073
|
const thread = this.requireThread(threadRef);
|
|
20974
21074
|
this.assertNotGlobal(thread, "Setup");
|
|
20975
|
-
const key =
|
|
20976
|
-
if (this.
|
|
20977
|
-
throw new Error("Setup already running for this
|
|
21075
|
+
const key = worktreeSetupProcessKey(thread.worktreePath);
|
|
21076
|
+
if (this.hasWorktreeSetupProcess(thread.worktreePath)) {
|
|
21077
|
+
throw new Error("Setup already running for this worktree");
|
|
20978
21078
|
}
|
|
20979
21079
|
const abort = new AbortController();
|
|
20980
21080
|
this.processes.set(key, {
|
|
@@ -20982,13 +21082,17 @@ var init_orchestrator = __esm({
|
|
|
20982
21082
|
startedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
20983
21083
|
kill: () => abort.abort()
|
|
20984
21084
|
});
|
|
20985
|
-
|
|
21085
|
+
this.writeSetupLog(thread.id, thread.worktreePath, beginSetupLog);
|
|
20986
21086
|
this.emit({ type: "setup_started", threadId: thread.id });
|
|
20987
21087
|
let finished = false;
|
|
20988
21088
|
const finish = (exitCode, source) => {
|
|
20989
21089
|
if (finished) return;
|
|
20990
21090
|
finished = true;
|
|
20991
|
-
|
|
21091
|
+
this.writeSetupLog(
|
|
21092
|
+
thread.id,
|
|
21093
|
+
thread.worktreePath,
|
|
21094
|
+
(logKey) => finishSetupLog(logKey, exitCode, source)
|
|
21095
|
+
);
|
|
20992
21096
|
this.emit({ type: "setup_finished", threadId: thread.id, exitCode });
|
|
20993
21097
|
};
|
|
20994
21098
|
try {
|
|
@@ -20996,14 +21100,22 @@ var init_orchestrator = __esm({
|
|
|
20996
21100
|
thread.repoPath,
|
|
20997
21101
|
thread.worktreePath,
|
|
20998
21102
|
(line) => {
|
|
20999
|
-
|
|
21103
|
+
this.writeSetupLog(
|
|
21104
|
+
thread.id,
|
|
21105
|
+
thread.worktreePath,
|
|
21106
|
+
(logKey) => appendSetupLog(logKey, line)
|
|
21107
|
+
);
|
|
21000
21108
|
this.emit({ type: "setup_output", threadId: thread.id, line });
|
|
21001
21109
|
},
|
|
21002
21110
|
{ signal: abort.signal }
|
|
21003
21111
|
);
|
|
21004
21112
|
if (!setup.ran) {
|
|
21005
21113
|
const line = "No setup script in .sideboard/settings.toml, .conductor/settings.toml, .cursor/worktrees.json, or script/setup (bin/setup, scripts/setup)";
|
|
21006
|
-
|
|
21114
|
+
this.writeSetupLog(
|
|
21115
|
+
thread.id,
|
|
21116
|
+
thread.worktreePath,
|
|
21117
|
+
(logKey) => appendSetupLog(logKey, line)
|
|
21118
|
+
);
|
|
21007
21119
|
this.emit({ type: "setup_output", threadId: thread.id, line });
|
|
21008
21120
|
finish(null, null);
|
|
21009
21121
|
throw new Error(line);
|
|
@@ -21031,8 +21143,14 @@ var init_orchestrator = __esm({
|
|
|
21031
21143
|
}
|
|
21032
21144
|
cancelSetup(threadRef) {
|
|
21033
21145
|
const thread = this.requireThread(threadRef);
|
|
21034
|
-
const
|
|
21035
|
-
|
|
21146
|
+
const keys = [
|
|
21147
|
+
worktreeSetupProcessKey(thread.worktreePath),
|
|
21148
|
+
...threadsSharingWorktree(thread.worktreePath).map((t) => `${t.id}:setup`)
|
|
21149
|
+
];
|
|
21150
|
+
for (const key of [...new Set(keys)]) {
|
|
21151
|
+
const proc = this.processes.get(key);
|
|
21152
|
+
if (proc) proc.kill();
|
|
21153
|
+
}
|
|
21036
21154
|
}
|
|
21037
21155
|
async applyIntoMain(threadRef, opts) {
|
|
21038
21156
|
const thread = this.requireThread(threadRef);
|
|
@@ -21782,7 +21900,7 @@ init_system_ca();
|
|
|
21782
21900
|
var import_mcp = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
21783
21901
|
var import_stdio = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
21784
21902
|
var import_zod9 = require("zod");
|
|
21785
|
-
var
|
|
21903
|
+
var import_node_crypto13 = require("crypto");
|
|
21786
21904
|
var import_node_path52 = require("path");
|
|
21787
21905
|
init_orchestrator();
|
|
21788
21906
|
init_worktree();
|
|
@@ -22209,7 +22327,7 @@ async function createGitHubIssue(input, opts) {
|
|
|
22209
22327
|
init_fetch();
|
|
22210
22328
|
|
|
22211
22329
|
// src/integrations/linear-oauth.ts
|
|
22212
|
-
var
|
|
22330
|
+
var import_node_crypto11 = require("crypto");
|
|
22213
22331
|
var import_node_http = require("http");
|
|
22214
22332
|
init_app_settings();
|
|
22215
22333
|
init_fetch();
|
|
@@ -25192,7 +25310,7 @@ init_worktree();
|
|
|
25192
25310
|
init_paths();
|
|
25193
25311
|
|
|
25194
25312
|
// src/board/board-pins.ts
|
|
25195
|
-
var
|
|
25313
|
+
var import_node_crypto12 = require("crypto");
|
|
25196
25314
|
var import_node_fs54 = require("fs");
|
|
25197
25315
|
var import_node_path50 = require("path");
|
|
25198
25316
|
init_paths();
|
|
@@ -26041,7 +26159,7 @@ async function startMcpServer() {
|
|
|
26041
26159
|
const ident = issue?.identifier ?? ref.trim();
|
|
26042
26160
|
const attachments = issue ? [
|
|
26043
26161
|
{
|
|
26044
|
-
id: (0,
|
|
26162
|
+
id: (0, import_node_crypto13.randomUUID)(),
|
|
26045
26163
|
name: issue.identifier,
|
|
26046
26164
|
kind: "issue",
|
|
26047
26165
|
content: [
|
package/dist/mcp/run-stdio.js
CHANGED
|
@@ -38,7 +38,7 @@ import {
|
|
|
38
38
|
syncBoardPins,
|
|
39
39
|
updateSchedule,
|
|
40
40
|
waitForDetachedJob
|
|
41
|
-
} from "../chunk-
|
|
41
|
+
} from "../chunk-3IGCU4AT.js";
|
|
42
42
|
import "../chunk-YWI3IBP2.js";
|
|
43
43
|
import {
|
|
44
44
|
applySystemCaEnv,
|
|
@@ -48,7 +48,7 @@ import {
|
|
|
48
48
|
materializeSystemCaBundle,
|
|
49
49
|
sideboardMcpProfile,
|
|
50
50
|
trustSystemCertificates
|
|
51
|
-
} from "../chunk-
|
|
51
|
+
} from "../chunk-5DY2QWVN.js";
|
|
52
52
|
import {
|
|
53
53
|
GLOBAL_WORKSPACE_ID,
|
|
54
54
|
isCloudCoordinatorThread,
|
|
@@ -9,9 +9,9 @@ import {
|
|
|
9
9
|
resolveSendFollowUp,
|
|
10
10
|
startOrchestration,
|
|
11
11
|
waitForPidExit
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-3IGCU4AT.js";
|
|
13
13
|
import "./chunk-YWI3IBP2.js";
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-5DY2QWVN.js";
|
|
15
15
|
import "./chunk-6YTI2HBG.js";
|
|
16
16
|
import "./chunk-3OHR73VK.js";
|
|
17
17
|
import "./chunk-Y4MIXGPA.js";
|
|
@@ -7,9 +7,9 @@ import {
|
|
|
7
7
|
resolveSendFollowUp,
|
|
8
8
|
startOrchestration,
|
|
9
9
|
waitForPidExit
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-NXXJBRWQ.js";
|
|
11
11
|
import "./chunk-DJU54RYW.js";
|
|
12
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-NWIBA5CP.js";
|
|
13
13
|
import "./chunk-HZTHWU6A.js";
|
|
14
14
|
import "./chunk-S4QCBBXS.js";
|
|
15
15
|
import "./chunk-6K64FJDD.js";
|