opencode-swarm 7.76.0 → 7.76.1
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/cli/index.js
CHANGED
|
@@ -52,7 +52,7 @@ var package_default;
|
|
|
52
52
|
var init_package = __esm(() => {
|
|
53
53
|
package_default = {
|
|
54
54
|
name: "opencode-swarm",
|
|
55
|
-
version: "7.76.
|
|
55
|
+
version: "7.76.1",
|
|
56
56
|
description: "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
|
|
57
57
|
main: "dist/index.js",
|
|
58
58
|
types: "dist/index.d.ts",
|
|
@@ -37416,6 +37416,14 @@ var init_branch = __esm(() => {
|
|
|
37416
37416
|
};
|
|
37417
37417
|
});
|
|
37418
37418
|
|
|
37419
|
+
// src/hooks/abort-utils.ts
|
|
37420
|
+
function isAbortError(err) {
|
|
37421
|
+
if (typeof err !== "object" || err === null)
|
|
37422
|
+
return false;
|
|
37423
|
+
const name = err.name;
|
|
37424
|
+
return name === "AbortError" || name === "TimeoutError";
|
|
37425
|
+
}
|
|
37426
|
+
|
|
37419
37427
|
// src/hooks/curator-llm-factory.ts
|
|
37420
37428
|
function resolveCuratorAgentName(mode, sessionId) {
|
|
37421
37429
|
const suffixMap = {
|
|
@@ -37484,13 +37492,19 @@ function createCuratorLLMDelegate(directory, mode = "init", sessionId) {
|
|
|
37484
37492
|
}
|
|
37485
37493
|
};
|
|
37486
37494
|
if (signal?.aborted) {
|
|
37487
|
-
cleanup();
|
|
37488
37495
|
throw new Error("CURATOR_LLM_TIMEOUT");
|
|
37489
37496
|
}
|
|
37490
|
-
signal
|
|
37497
|
+
const sdkOpts = signal ? { signal } : {};
|
|
37491
37498
|
try {
|
|
37492
37499
|
const createResult = await client.session.create({
|
|
37493
|
-
|
|
37500
|
+
...sessionId ? {
|
|
37501
|
+
body: {
|
|
37502
|
+
parentID: sessionId,
|
|
37503
|
+
title: `curator_${mode} background`
|
|
37504
|
+
}
|
|
37505
|
+
} : {},
|
|
37506
|
+
query: { directory },
|
|
37507
|
+
...sdkOpts
|
|
37494
37508
|
});
|
|
37495
37509
|
if (!createResult.data) {
|
|
37496
37510
|
throw new Error(`Failed to create curator session: ${JSON.stringify(createResult.error)}`);
|
|
@@ -37500,30 +37514,27 @@ function createCuratorLLMDelegate(directory, mode = "init", sessionId) {
|
|
|
37500
37514
|
throw new Error("CURATOR_LLM_TIMEOUT");
|
|
37501
37515
|
}
|
|
37502
37516
|
const agentName = resolveCuratorAgentName(mode, sessionId);
|
|
37503
|
-
|
|
37504
|
-
|
|
37505
|
-
|
|
37506
|
-
|
|
37507
|
-
|
|
37508
|
-
|
|
37509
|
-
|
|
37510
|
-
|
|
37511
|
-
|
|
37512
|
-
});
|
|
37513
|
-
} catch (promptErr) {
|
|
37514
|
-
if (signal?.aborted) {
|
|
37515
|
-
throw new Error("CURATOR_LLM_TIMEOUT");
|
|
37516
|
-
}
|
|
37517
|
-
throw promptErr;
|
|
37518
|
-
}
|
|
37517
|
+
const promptResult = await client.session.prompt({
|
|
37518
|
+
path: { id: ephemeralSessionId },
|
|
37519
|
+
body: {
|
|
37520
|
+
agent: agentName,
|
|
37521
|
+
tools: { write: false, edit: false, patch: false },
|
|
37522
|
+
parts: [{ type: "text", text: userInput }]
|
|
37523
|
+
},
|
|
37524
|
+
...sdkOpts
|
|
37525
|
+
});
|
|
37519
37526
|
if (!promptResult.data) {
|
|
37520
37527
|
throw new Error(`Curator LLM prompt failed: ${JSON.stringify(promptResult.error)}`);
|
|
37521
37528
|
}
|
|
37522
37529
|
const textParts = promptResult.data.parts.filter((p) => p.type === "text");
|
|
37523
37530
|
return textParts.map((p) => p.text).join(`
|
|
37524
37531
|
`);
|
|
37532
|
+
} catch (err) {
|
|
37533
|
+
if (isAbortError(err)) {
|
|
37534
|
+
throw new Error("CURATOR_LLM_TIMEOUT");
|
|
37535
|
+
}
|
|
37536
|
+
throw err;
|
|
37525
37537
|
} finally {
|
|
37526
|
-
signal?.removeEventListener("abort", cleanup);
|
|
37527
37538
|
cleanup();
|
|
37528
37539
|
}
|
|
37529
37540
|
};
|
|
@@ -42999,13 +43010,16 @@ function createSkillImproverLLMDelegate(directory, sessionId) {
|
|
|
42999
43010
|
}
|
|
43000
43011
|
};
|
|
43001
43012
|
if (signal?.aborted) {
|
|
43002
|
-
cleanup();
|
|
43003
43013
|
throw new Error("SKILL_IMPROVER_LLM_TIMEOUT");
|
|
43004
43014
|
}
|
|
43005
|
-
signal
|
|
43015
|
+
const sdkOpts = signal ? { signal } : {};
|
|
43006
43016
|
try {
|
|
43007
43017
|
const createResult = await client.session.create({
|
|
43008
|
-
|
|
43018
|
+
...sessionId ? {
|
|
43019
|
+
body: { parentID: sessionId, title: "skill_improver background" }
|
|
43020
|
+
} : {},
|
|
43021
|
+
query: { directory },
|
|
43022
|
+
...sdkOpts
|
|
43009
43023
|
});
|
|
43010
43024
|
if (!createResult.data) {
|
|
43011
43025
|
throw new Error(`Failed to create skill_improver session: ${JSON.stringify(createResult.error)}`);
|
|
@@ -43014,34 +43028,31 @@ function createSkillImproverLLMDelegate(directory, sessionId) {
|
|
|
43014
43028
|
if (signal?.aborted)
|
|
43015
43029
|
throw new Error("SKILL_IMPROVER_LLM_TIMEOUT");
|
|
43016
43030
|
const agentName = resolveSkillImproverAgentName(sessionId);
|
|
43017
|
-
|
|
43018
|
-
try {
|
|
43019
|
-
const prelude = systemPrompt ? `${systemPrompt}
|
|
43031
|
+
const prelude = systemPrompt ? `${systemPrompt}
|
|
43020
43032
|
|
|
43021
43033
|
---
|
|
43022
43034
|
|
|
43023
43035
|
${userInput}` : userInput;
|
|
43024
|
-
|
|
43025
|
-
|
|
43026
|
-
|
|
43027
|
-
|
|
43028
|
-
|
|
43029
|
-
|
|
43030
|
-
|
|
43031
|
-
|
|
43032
|
-
}
|
|
43033
|
-
if (signal?.aborted)
|
|
43034
|
-
throw new Error("SKILL_IMPROVER_LLM_TIMEOUT");
|
|
43035
|
-
throw err;
|
|
43036
|
-
}
|
|
43036
|
+
const promptResult = await client.session.prompt({
|
|
43037
|
+
path: { id: ephemeralSessionId },
|
|
43038
|
+
body: {
|
|
43039
|
+
agent: agentName,
|
|
43040
|
+
tools: { write: false, edit: false, patch: false },
|
|
43041
|
+
parts: [{ type: "text", text: prelude }]
|
|
43042
|
+
},
|
|
43043
|
+
...sdkOpts
|
|
43044
|
+
});
|
|
43037
43045
|
if (!promptResult.data) {
|
|
43038
43046
|
throw new Error(`skill_improver LLM prompt failed: ${JSON.stringify(promptResult.error)}`);
|
|
43039
43047
|
}
|
|
43040
43048
|
const textParts = promptResult.data.parts.filter((p) => p.type === "text");
|
|
43041
43049
|
return textParts.map((p) => p.text).join(`
|
|
43042
43050
|
`);
|
|
43051
|
+
} catch (err) {
|
|
43052
|
+
if (isAbortError(err))
|
|
43053
|
+
throw new Error("SKILL_IMPROVER_LLM_TIMEOUT");
|
|
43054
|
+
throw err;
|
|
43043
43055
|
} finally {
|
|
43044
|
-
signal?.removeEventListener("abort", cleanup);
|
|
43045
43056
|
cleanup();
|
|
43046
43057
|
}
|
|
43047
43058
|
};
|
|
@@ -43573,7 +43584,7 @@ ${inv.staleActiveSkills.slice(0, 10).map((s) => `- ${s.slug} | ${s.reasons.join(
|
|
|
43573
43584
|
`) || "(none)"}
|
|
43574
43585
|
`;
|
|
43575
43586
|
}
|
|
43576
|
-
function
|
|
43587
|
+
function isAbortError2(err) {
|
|
43577
43588
|
return err instanceof Error && (err.name === "AbortError" || err.message === "skill_improver_aborted");
|
|
43578
43589
|
}
|
|
43579
43590
|
function throwIfAborted(signal) {
|
|
@@ -43721,7 +43732,7 @@ async function runSkillImprover(req) {
|
|
|
43721
43732
|
inventory = await gatherInventory(req.directory);
|
|
43722
43733
|
throwIfAborted(req.signal);
|
|
43723
43734
|
} catch (err) {
|
|
43724
|
-
if (
|
|
43735
|
+
if (isAbortError2(err)) {
|
|
43725
43736
|
return await abortResult();
|
|
43726
43737
|
}
|
|
43727
43738
|
await releaseQuota(req.directory, {
|
|
@@ -43753,7 +43764,7 @@ async function runSkillImprover(req) {
|
|
|
43753
43764
|
}
|
|
43754
43765
|
source = "llm";
|
|
43755
43766
|
} catch (err) {
|
|
43756
|
-
if (
|
|
43767
|
+
if (isAbortError2(err)) {
|
|
43757
43768
|
return await abortResult();
|
|
43758
43769
|
}
|
|
43759
43770
|
return {
|
|
@@ -43770,7 +43781,7 @@ async function runSkillImprover(req) {
|
|
|
43770
43781
|
try {
|
|
43771
43782
|
throwIfAborted(req.signal);
|
|
43772
43783
|
} catch (err) {
|
|
43773
|
-
if (
|
|
43784
|
+
if (isAbortError2(err)) {
|
|
43774
43785
|
return await abortResult();
|
|
43775
43786
|
}
|
|
43776
43787
|
throw err;
|
|
@@ -43783,7 +43794,7 @@ async function runSkillImprover(req) {
|
|
|
43783
43794
|
try {
|
|
43784
43795
|
throwIfAborted(req.signal);
|
|
43785
43796
|
} catch (err) {
|
|
43786
|
-
if (
|
|
43797
|
+
if (isAbortError2(err)) {
|
|
43787
43798
|
return await abortResult();
|
|
43788
43799
|
}
|
|
43789
43800
|
throw err;
|
|
@@ -43804,7 +43815,7 @@ async function runSkillImprover(req) {
|
|
|
43804
43815
|
try {
|
|
43805
43816
|
throwIfAborted(req.signal);
|
|
43806
43817
|
} catch (err) {
|
|
43807
|
-
if (
|
|
43818
|
+
if (isAbortError2(err)) {
|
|
43808
43819
|
return await abortResult();
|
|
43809
43820
|
}
|
|
43810
43821
|
throw err;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* True only for genuine cancellation errors (a native `AbortError` /
|
|
3
|
+
* `TimeoutError` raised when a forwarded `AbortSignal` fires). Used to map
|
|
4
|
+
* cancellation — and only cancellation — onto timeout sentinels, so a real
|
|
5
|
+
* failure that merely coincides with an aborted signal still surfaces as
|
|
6
|
+
* itself rather than being misclassified as a timeout.
|
|
7
|
+
*/
|
|
8
|
+
export declare function isAbortError(err: unknown): boolean;
|
package/dist/index.js
CHANGED
|
@@ -69,7 +69,7 @@ var package_default;
|
|
|
69
69
|
var init_package = __esm(() => {
|
|
70
70
|
package_default = {
|
|
71
71
|
name: "opencode-swarm",
|
|
72
|
-
version: "7.76.
|
|
72
|
+
version: "7.76.1",
|
|
73
73
|
description: "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
|
|
74
74
|
main: "dist/index.js",
|
|
75
75
|
types: "dist/index.d.ts",
|
|
@@ -58788,6 +58788,14 @@ var init_branch = __esm(() => {
|
|
|
58788
58788
|
};
|
|
58789
58789
|
});
|
|
58790
58790
|
|
|
58791
|
+
// src/hooks/abort-utils.ts
|
|
58792
|
+
function isAbortError(err2) {
|
|
58793
|
+
if (typeof err2 !== "object" || err2 === null)
|
|
58794
|
+
return false;
|
|
58795
|
+
const name2 = err2.name;
|
|
58796
|
+
return name2 === "AbortError" || name2 === "TimeoutError";
|
|
58797
|
+
}
|
|
58798
|
+
|
|
58791
58799
|
// src/hooks/curator-llm-factory.ts
|
|
58792
58800
|
function resolveCuratorAgentName(mode, sessionId) {
|
|
58793
58801
|
const suffixMap = {
|
|
@@ -58856,13 +58864,19 @@ function createCuratorLLMDelegate(directory, mode = "init", sessionId) {
|
|
|
58856
58864
|
}
|
|
58857
58865
|
};
|
|
58858
58866
|
if (signal?.aborted) {
|
|
58859
|
-
cleanup();
|
|
58860
58867
|
throw new Error("CURATOR_LLM_TIMEOUT");
|
|
58861
58868
|
}
|
|
58862
|
-
signal
|
|
58869
|
+
const sdkOpts = signal ? { signal } : {};
|
|
58863
58870
|
try {
|
|
58864
58871
|
const createResult = await client.session.create({
|
|
58865
|
-
|
|
58872
|
+
...sessionId ? {
|
|
58873
|
+
body: {
|
|
58874
|
+
parentID: sessionId,
|
|
58875
|
+
title: `curator_${mode} background`
|
|
58876
|
+
}
|
|
58877
|
+
} : {},
|
|
58878
|
+
query: { directory },
|
|
58879
|
+
...sdkOpts
|
|
58866
58880
|
});
|
|
58867
58881
|
if (!createResult.data) {
|
|
58868
58882
|
throw new Error(`Failed to create curator session: ${JSON.stringify(createResult.error)}`);
|
|
@@ -58872,30 +58886,27 @@ function createCuratorLLMDelegate(directory, mode = "init", sessionId) {
|
|
|
58872
58886
|
throw new Error("CURATOR_LLM_TIMEOUT");
|
|
58873
58887
|
}
|
|
58874
58888
|
const agentName = resolveCuratorAgentName(mode, sessionId);
|
|
58875
|
-
|
|
58876
|
-
|
|
58877
|
-
|
|
58878
|
-
|
|
58879
|
-
|
|
58880
|
-
|
|
58881
|
-
|
|
58882
|
-
|
|
58883
|
-
|
|
58884
|
-
});
|
|
58885
|
-
} catch (promptErr) {
|
|
58886
|
-
if (signal?.aborted) {
|
|
58887
|
-
throw new Error("CURATOR_LLM_TIMEOUT");
|
|
58888
|
-
}
|
|
58889
|
-
throw promptErr;
|
|
58890
|
-
}
|
|
58889
|
+
const promptResult = await client.session.prompt({
|
|
58890
|
+
path: { id: ephemeralSessionId },
|
|
58891
|
+
body: {
|
|
58892
|
+
agent: agentName,
|
|
58893
|
+
tools: { write: false, edit: false, patch: false },
|
|
58894
|
+
parts: [{ type: "text", text: userInput }]
|
|
58895
|
+
},
|
|
58896
|
+
...sdkOpts
|
|
58897
|
+
});
|
|
58891
58898
|
if (!promptResult.data) {
|
|
58892
58899
|
throw new Error(`Curator LLM prompt failed: ${JSON.stringify(promptResult.error)}`);
|
|
58893
58900
|
}
|
|
58894
58901
|
const textParts = promptResult.data.parts.filter((p) => p.type === "text");
|
|
58895
58902
|
return textParts.map((p) => p.text).join(`
|
|
58896
58903
|
`);
|
|
58904
|
+
} catch (err2) {
|
|
58905
|
+
if (isAbortError(err2)) {
|
|
58906
|
+
throw new Error("CURATOR_LLM_TIMEOUT");
|
|
58907
|
+
}
|
|
58908
|
+
throw err2;
|
|
58897
58909
|
} finally {
|
|
58898
|
-
signal?.removeEventListener("abort", cleanup);
|
|
58899
58910
|
cleanup();
|
|
58900
58911
|
}
|
|
58901
58912
|
};
|
|
@@ -66665,13 +66676,16 @@ function createSkillImproverLLMDelegate(directory, sessionId) {
|
|
|
66665
66676
|
}
|
|
66666
66677
|
};
|
|
66667
66678
|
if (signal?.aborted) {
|
|
66668
|
-
cleanup();
|
|
66669
66679
|
throw new Error("SKILL_IMPROVER_LLM_TIMEOUT");
|
|
66670
66680
|
}
|
|
66671
|
-
signal
|
|
66681
|
+
const sdkOpts = signal ? { signal } : {};
|
|
66672
66682
|
try {
|
|
66673
66683
|
const createResult = await client.session.create({
|
|
66674
|
-
|
|
66684
|
+
...sessionId ? {
|
|
66685
|
+
body: { parentID: sessionId, title: "skill_improver background" }
|
|
66686
|
+
} : {},
|
|
66687
|
+
query: { directory },
|
|
66688
|
+
...sdkOpts
|
|
66675
66689
|
});
|
|
66676
66690
|
if (!createResult.data) {
|
|
66677
66691
|
throw new Error(`Failed to create skill_improver session: ${JSON.stringify(createResult.error)}`);
|
|
@@ -66680,34 +66694,31 @@ function createSkillImproverLLMDelegate(directory, sessionId) {
|
|
|
66680
66694
|
if (signal?.aborted)
|
|
66681
66695
|
throw new Error("SKILL_IMPROVER_LLM_TIMEOUT");
|
|
66682
66696
|
const agentName = resolveSkillImproverAgentName(sessionId);
|
|
66683
|
-
|
|
66684
|
-
try {
|
|
66685
|
-
const prelude = systemPrompt ? `${systemPrompt}
|
|
66697
|
+
const prelude = systemPrompt ? `${systemPrompt}
|
|
66686
66698
|
|
|
66687
66699
|
---
|
|
66688
66700
|
|
|
66689
66701
|
${userInput}` : userInput;
|
|
66690
|
-
|
|
66691
|
-
|
|
66692
|
-
|
|
66693
|
-
|
|
66694
|
-
|
|
66695
|
-
|
|
66696
|
-
|
|
66697
|
-
|
|
66698
|
-
}
|
|
66699
|
-
if (signal?.aborted)
|
|
66700
|
-
throw new Error("SKILL_IMPROVER_LLM_TIMEOUT");
|
|
66701
|
-
throw err2;
|
|
66702
|
-
}
|
|
66702
|
+
const promptResult = await client.session.prompt({
|
|
66703
|
+
path: { id: ephemeralSessionId },
|
|
66704
|
+
body: {
|
|
66705
|
+
agent: agentName,
|
|
66706
|
+
tools: { write: false, edit: false, patch: false },
|
|
66707
|
+
parts: [{ type: "text", text: prelude }]
|
|
66708
|
+
},
|
|
66709
|
+
...sdkOpts
|
|
66710
|
+
});
|
|
66703
66711
|
if (!promptResult.data) {
|
|
66704
66712
|
throw new Error(`skill_improver LLM prompt failed: ${JSON.stringify(promptResult.error)}`);
|
|
66705
66713
|
}
|
|
66706
66714
|
const textParts = promptResult.data.parts.filter((p) => p.type === "text");
|
|
66707
66715
|
return textParts.map((p) => p.text).join(`
|
|
66708
66716
|
`);
|
|
66717
|
+
} catch (err2) {
|
|
66718
|
+
if (isAbortError(err2))
|
|
66719
|
+
throw new Error("SKILL_IMPROVER_LLM_TIMEOUT");
|
|
66720
|
+
throw err2;
|
|
66709
66721
|
} finally {
|
|
66710
|
-
signal?.removeEventListener("abort", cleanup);
|
|
66711
66722
|
cleanup();
|
|
66712
66723
|
}
|
|
66713
66724
|
};
|
|
@@ -67239,7 +67250,7 @@ ${inv.staleActiveSkills.slice(0, 10).map((s) => `- ${s.slug} | ${s.reasons.join(
|
|
|
67239
67250
|
`) || "(none)"}
|
|
67240
67251
|
`;
|
|
67241
67252
|
}
|
|
67242
|
-
function
|
|
67253
|
+
function isAbortError2(err2) {
|
|
67243
67254
|
return err2 instanceof Error && (err2.name === "AbortError" || err2.message === "skill_improver_aborted");
|
|
67244
67255
|
}
|
|
67245
67256
|
function throwIfAborted(signal) {
|
|
@@ -67387,7 +67398,7 @@ async function runSkillImprover(req) {
|
|
|
67387
67398
|
inventory = await gatherInventory(req.directory);
|
|
67388
67399
|
throwIfAborted(req.signal);
|
|
67389
67400
|
} catch (err2) {
|
|
67390
|
-
if (
|
|
67401
|
+
if (isAbortError2(err2)) {
|
|
67391
67402
|
return await abortResult();
|
|
67392
67403
|
}
|
|
67393
67404
|
await releaseQuota(req.directory, {
|
|
@@ -67419,7 +67430,7 @@ async function runSkillImprover(req) {
|
|
|
67419
67430
|
}
|
|
67420
67431
|
source = "llm";
|
|
67421
67432
|
} catch (err2) {
|
|
67422
|
-
if (
|
|
67433
|
+
if (isAbortError2(err2)) {
|
|
67423
67434
|
return await abortResult();
|
|
67424
67435
|
}
|
|
67425
67436
|
return {
|
|
@@ -67436,7 +67447,7 @@ async function runSkillImprover(req) {
|
|
|
67436
67447
|
try {
|
|
67437
67448
|
throwIfAborted(req.signal);
|
|
67438
67449
|
} catch (err2) {
|
|
67439
|
-
if (
|
|
67450
|
+
if (isAbortError2(err2)) {
|
|
67440
67451
|
return await abortResult();
|
|
67441
67452
|
}
|
|
67442
67453
|
throw err2;
|
|
@@ -67449,7 +67460,7 @@ async function runSkillImprover(req) {
|
|
|
67449
67460
|
try {
|
|
67450
67461
|
throwIfAborted(req.signal);
|
|
67451
67462
|
} catch (err2) {
|
|
67452
|
-
if (
|
|
67463
|
+
if (isAbortError2(err2)) {
|
|
67453
67464
|
return await abortResult();
|
|
67454
67465
|
}
|
|
67455
67466
|
throw err2;
|
|
@@ -67470,7 +67481,7 @@ async function runSkillImprover(req) {
|
|
|
67470
67481
|
try {
|
|
67471
67482
|
throwIfAborted(req.signal);
|
|
67472
67483
|
} catch (err2) {
|
|
67473
|
-
if (
|
|
67484
|
+
if (isAbortError2(err2)) {
|
|
67474
67485
|
return await abortResult();
|
|
67475
67486
|
}
|
|
67476
67487
|
throw err2;
|
|
@@ -93921,7 +93932,8 @@ ${customAppendPrompt}` : AUTONOMOUS_OVERSIGHT_PROMPT;
|
|
|
93921
93932
|
write: false,
|
|
93922
93933
|
edit: false,
|
|
93923
93934
|
patch: false
|
|
93924
|
-
}
|
|
93935
|
+
},
|
|
93936
|
+
thinking: { type: "disabled" }
|
|
93925
93937
|
}
|
|
93926
93938
|
};
|
|
93927
93939
|
}
|
|
@@ -94523,7 +94535,8 @@ ${customAppendPrompt}` : roleConfig.prompt;
|
|
|
94523
94535
|
write: false,
|
|
94524
94536
|
edit: false,
|
|
94525
94537
|
patch: false
|
|
94526
|
-
}
|
|
94538
|
+
},
|
|
94539
|
+
thinking: { type: "disabled" }
|
|
94527
94540
|
}
|
|
94528
94541
|
};
|
|
94529
94542
|
}
|
|
@@ -104589,6 +104602,12 @@ async function dispatchFullAutoOversight(input) {
|
|
|
104589
104602
|
let dispatchError;
|
|
104590
104603
|
try {
|
|
104591
104604
|
const createResult = await client.session.create({
|
|
104605
|
+
...input.sessionID ? {
|
|
104606
|
+
body: {
|
|
104607
|
+
parentID: input.sessionID,
|
|
104608
|
+
title: "full_auto_oversight background"
|
|
104609
|
+
}
|
|
104610
|
+
} : {},
|
|
104592
104611
|
query: { directory: input.directory }
|
|
104593
104612
|
});
|
|
104594
104613
|
if (!createResult.data) {
|
|
@@ -106523,6 +106542,9 @@ async function dispatchCriticAndWriteEvent(directory, architectOutput, criticCon
|
|
|
106523
106542
|
let criticResponse = "";
|
|
106524
106543
|
try {
|
|
106525
106544
|
const createResult = await client.session.create({
|
|
106545
|
+
...sessionID ? {
|
|
106546
|
+
body: { parentID: sessionID, title: "full_auto_critic background" }
|
|
106547
|
+
} : {},
|
|
106526
106548
|
query: { directory }
|
|
106527
106549
|
});
|
|
106528
106550
|
if (!createResult.data) {
|
|
@@ -113093,12 +113115,18 @@ async function writeReviewerEvidence(directory, phase, verdict, reason) {
|
|
|
113093
113115
|
}
|
|
113094
113116
|
return evidencePath;
|
|
113095
113117
|
}
|
|
113096
|
-
async function defaultDispatchReviewerAgent(directory, reviewPackage, agentName, timeoutMs) {
|
|
113118
|
+
async function defaultDispatchReviewerAgent(directory, reviewPackage, agentName, timeoutMs, parentSessionId) {
|
|
113097
113119
|
const client = swarmState.opencodeClient;
|
|
113098
113120
|
if (!client) {
|
|
113099
113121
|
throw new Error("OpencodeClient not available");
|
|
113100
113122
|
}
|
|
113101
113123
|
const sessionResult = await client.session.create({
|
|
113124
|
+
...parentSessionId ? {
|
|
113125
|
+
body: {
|
|
113126
|
+
parentID: parentSessionId,
|
|
113127
|
+
title: "lean_turbo_reviewer background"
|
|
113128
|
+
}
|
|
113129
|
+
} : {},
|
|
113102
113130
|
query: { directory }
|
|
113103
113131
|
});
|
|
113104
113132
|
if (!sessionResult.data?.id) {
|
|
@@ -113190,7 +113218,7 @@ async function dispatchPhaseReviewer(directory, phase, sessionID, config3) {
|
|
|
113190
113218
|
const pkg = await _internals70.compileReviewPackage(directory, phase, sessionID, mergedConfig.requireDiffSummary);
|
|
113191
113219
|
let responseText;
|
|
113192
113220
|
try {
|
|
113193
|
-
responseText = await _internals70.dispatchReviewerAgent(directory, pkg, agentName, mergedConfig.timeoutMs);
|
|
113221
|
+
responseText = await _internals70.dispatchReviewerAgent(directory, pkg, agentName, mergedConfig.timeoutMs, sessionID);
|
|
113194
113222
|
} catch (error93) {
|
|
113195
113223
|
const evidencePath2 = await _internals70.writeReviewerEvidence(directory, phase, "REJECTED", error93 instanceof Error ? error93.message : String(error93));
|
|
113196
113224
|
return {
|
|
@@ -125692,6 +125720,12 @@ async function generateMutants(files, ctx) {
|
|
|
125692
125720
|
};
|
|
125693
125721
|
try {
|
|
125694
125722
|
const createResult = await client.session.create({
|
|
125723
|
+
...ctx?.sessionID ? {
|
|
125724
|
+
body: {
|
|
125725
|
+
parentID: ctx.sessionID,
|
|
125726
|
+
title: "mutation_generator background"
|
|
125727
|
+
}
|
|
125728
|
+
} : {},
|
|
125695
125729
|
query: { directory }
|
|
125696
125730
|
});
|
|
125697
125731
|
if (!createResult.data) {
|
|
@@ -128687,6 +128721,12 @@ class LeanTurboRunner {
|
|
|
128687
128721
|
try {
|
|
128688
128722
|
const effectiveDirectory = worktreeDirectory ?? this._directory;
|
|
128689
128723
|
const createResult = await session.create({
|
|
128724
|
+
...this._sessionID ? {
|
|
128725
|
+
body: {
|
|
128726
|
+
parentID: this._sessionID,
|
|
128727
|
+
title: `lean_turbo_lane_${lane.laneId} background`
|
|
128728
|
+
}
|
|
128729
|
+
} : {},
|
|
128690
128730
|
query: { directory: effectiveDirectory }
|
|
128691
128731
|
});
|
|
128692
128732
|
if (!createResult.data) {
|
|
@@ -108,7 +108,7 @@ export declare const _internals: {
|
|
|
108
108
|
compileCriticPackage: typeof compileCriticPackage;
|
|
109
109
|
parseCriticVerdict: typeof parseCriticVerdict;
|
|
110
110
|
writeCriticEvidence: typeof writeCriticEvidence;
|
|
111
|
-
dispatchCriticAgent: (directory: string, pkg: CriticPackage, agentName: string, timeoutMs: number) => Promise<string>;
|
|
111
|
+
dispatchCriticAgent: (directory: string, pkg: CriticPackage, agentName: string, timeoutMs: number, parentSessionId?: string) => Promise<string>;
|
|
112
112
|
resolveDefaultCriticAgent: typeof resolveDefaultCriticAgent;
|
|
113
113
|
readReviewerEvidence: typeof readReviewerEvidence;
|
|
114
114
|
listLaneEvidence: typeof listLaneEvidence;
|
|
@@ -97,7 +97,7 @@ export declare const _internals: {
|
|
|
97
97
|
compileReviewPackage: typeof compileReviewPackage;
|
|
98
98
|
parseReviewerVerdict: typeof parseReviewerVerdict;
|
|
99
99
|
writeReviewerEvidence: typeof writeReviewerEvidence;
|
|
100
|
-
dispatchReviewerAgent: (directory: string, pkg: ReviewPackage, agentName: string, timeoutMs: number) => Promise<string>;
|
|
100
|
+
dispatchReviewerAgent: (directory: string, pkg: ReviewPackage, agentName: string, timeoutMs: number, parentSessionId?: string) => Promise<string>;
|
|
101
101
|
resolveDefaultReviewerAgent: typeof resolveDefaultReviewerAgent;
|
|
102
102
|
listLaneEvidence: typeof listLaneEvidence;
|
|
103
103
|
readPhaseEvidence: typeof readPhaseEvidence;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-swarm",
|
|
3
|
-
"version": "7.76.
|
|
3
|
+
"version": "7.76.1",
|
|
4
4
|
"description": "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|