opencode-swarm 7.73.3 → 7.74.0
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 +5 -5
- package/dist/index.js +32 -10
- package/package.json +1 -1
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.
|
|
55
|
+
version: "7.74.0",
|
|
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",
|
|
@@ -14700,7 +14700,7 @@ var init_plan_schema = __esm(() => {
|
|
|
14700
14700
|
init_zod();
|
|
14701
14701
|
ExecutionProfileSchema = exports_external.object({
|
|
14702
14702
|
parallelization_enabled: exports_external.boolean().default(false),
|
|
14703
|
-
max_concurrent_tasks: exports_external.number().int().min(1).max(64).default(
|
|
14703
|
+
max_concurrent_tasks: exports_external.number().int().min(1).max(64).default(10),
|
|
14704
14704
|
council_parallel: exports_external.boolean().default(true),
|
|
14705
14705
|
locked: exports_external.boolean().default(false),
|
|
14706
14706
|
auto_proceed: exports_external.boolean().default(false)
|
|
@@ -45190,7 +45190,7 @@ function buildStatusMessage(session, plan) {
|
|
|
45190
45190
|
const overrideActive = session.maxConcurrencyOverride !== undefined;
|
|
45191
45191
|
const configuredOverride = session.maxConcurrencyOverride ?? "absent";
|
|
45192
45192
|
const hasPlan = plan !== null && plan !== undefined;
|
|
45193
|
-
const planBaseline = hasPlan ? plan.execution_profile?.max_concurrent_tasks ??
|
|
45193
|
+
const planBaseline = hasPlan ? plan.execution_profile?.max_concurrent_tasks ?? 10 : 10;
|
|
45194
45194
|
const parallelizationEnabled = hasPlan ? plan.execution_profile?.parallelization_enabled ?? false : false;
|
|
45195
45195
|
const operationalEffective = !parallelizationEnabled ? 1 : session.maxConcurrencyOverride ?? planBaseline;
|
|
45196
45196
|
let description;
|
|
@@ -45219,8 +45219,8 @@ var init_concurrency = __esm(() => {
|
|
|
45219
45219
|
init_state();
|
|
45220
45220
|
PRESETS = {
|
|
45221
45221
|
min: 1,
|
|
45222
|
-
medium:
|
|
45223
|
-
max:
|
|
45222
|
+
medium: 8,
|
|
45223
|
+
max: 16
|
|
45224
45224
|
};
|
|
45225
45225
|
});
|
|
45226
45226
|
|
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.
|
|
72
|
+
version: "7.74.0",
|
|
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",
|
|
@@ -16736,7 +16736,7 @@ var init_plan_schema = __esm(() => {
|
|
|
16736
16736
|
init_zod();
|
|
16737
16737
|
ExecutionProfileSchema = exports_external.object({
|
|
16738
16738
|
parallelization_enabled: exports_external.boolean().default(false),
|
|
16739
|
-
max_concurrent_tasks: exports_external.number().int().min(1).max(64).default(
|
|
16739
|
+
max_concurrent_tasks: exports_external.number().int().min(1).max(64).default(10),
|
|
16740
16740
|
council_parallel: exports_external.boolean().default(true),
|
|
16741
16741
|
locked: exports_external.boolean().default(false),
|
|
16742
16742
|
auto_proceed: exports_external.boolean().default(false)
|
|
@@ -42662,8 +42662,30 @@ async function buildParallelExecutionGuidance(directory, sessionID, session) {
|
|
|
42662
42662
|
}
|
|
42663
42663
|
const profile = plan.execution_profile;
|
|
42664
42664
|
const enabled = profile?.parallelization_enabled === true;
|
|
42665
|
-
const maxConcurrent = profile?.max_concurrent_tasks ??
|
|
42666
|
-
|
|
42665
|
+
const maxConcurrent = profile?.max_concurrent_tasks ?? 10;
|
|
42666
|
+
let effectiveMaxConcurrent = session?.maxConcurrencyOverride ?? maxConcurrent;
|
|
42667
|
+
const allTasks = plan.phases.flatMap((phase) => phase.tasks);
|
|
42668
|
+
const blockedTasks = allTasks.filter((task) => {
|
|
42669
|
+
if (task.status !== "blocked")
|
|
42670
|
+
return false;
|
|
42671
|
+
const reason = (task.blocked_reason ?? "").toLowerCase();
|
|
42672
|
+
return reason.includes("fail") || reason.includes("error") || reason.includes("exception");
|
|
42673
|
+
});
|
|
42674
|
+
const totalTasks = allTasks.length;
|
|
42675
|
+
let backoffTriggered = false;
|
|
42676
|
+
if (totalTasks > 0 && blockedTasks.length > 0) {
|
|
42677
|
+
const failureRate = blockedTasks.length / totalTasks;
|
|
42678
|
+
const FAILURE_RATE_THRESHOLD = 0.2;
|
|
42679
|
+
const BACKOFF_MULTIPLIER = 0.5;
|
|
42680
|
+
if (failureRate > FAILURE_RATE_THRESHOLD && blockedTasks.length >= 2) {
|
|
42681
|
+
const newConcurrency = Math.max(1, Math.floor(effectiveMaxConcurrent * BACKOFF_MULTIPLIER));
|
|
42682
|
+
if (newConcurrency < effectiveMaxConcurrent) {
|
|
42683
|
+
effectiveMaxConcurrent = newConcurrency;
|
|
42684
|
+
session.maxConcurrencyOverride = newConcurrency;
|
|
42685
|
+
backoffTriggered = true;
|
|
42686
|
+
}
|
|
42687
|
+
}
|
|
42688
|
+
}
|
|
42667
42689
|
if (!enabled || effectiveMaxConcurrent <= 1)
|
|
42668
42690
|
return null;
|
|
42669
42691
|
if (hasActiveLeanTurbo(sessionID)) {
|
|
@@ -42675,7 +42697,6 @@ async function buildParallelExecutionGuidance(directory, sessionID, session) {
|
|
|
42675
42697
|
const tasks = currentPhase.tasks;
|
|
42676
42698
|
if (tasks.length === 0)
|
|
42677
42699
|
return null;
|
|
42678
|
-
const allTasks = plan.phases.flatMap((phase) => phase.tasks);
|
|
42679
42700
|
const completed = new Set;
|
|
42680
42701
|
for (const task of allTasks) {
|
|
42681
42702
|
const taskId = task.id;
|
|
@@ -42709,7 +42730,8 @@ async function buildParallelExecutionGuidance(directory, sessionID, session) {
|
|
|
42709
42730
|
if (eligible.length === 0) {
|
|
42710
42731
|
return `[PARALLEL EXECUTION PROFILE] parallelization_enabled=true max_concurrent_tasks=${effectiveMaxConcurrent}; no dependency-ready pending tasks are available for a new coder slot. Continue the current task/gate.`;
|
|
42711
42732
|
}
|
|
42712
|
-
|
|
42733
|
+
const failureWarning = backoffTriggered ? ` (${blockedTasks.length} blocked task(s) detected — concurrency auto-reduced due to failures)` : "";
|
|
42734
|
+
return `[PARALLEL EXECUTION PROFILE] parallelization_enabled=true max_concurrent_tasks=${effectiveMaxConcurrent}; ${occupied.size} slot(s) occupied. Eligible now: ${eligible.join(", ")}. [NEXT] dispatch up to ${availableSlots} eligible coder task(s) before waiting; preserve ONE task per coder call and call declare_scope for each task.${failureWarning}`;
|
|
42713
42735
|
}
|
|
42714
42736
|
function isParallelGuidancePhaseComplete(phase) {
|
|
42715
42737
|
return phase.status === "complete" || phase.status === "completed" || phase.status === "closed";
|
|
@@ -42873,7 +42895,7 @@ function createDelegationGateHook(config2, directory) {
|
|
|
42873
42895
|
return;
|
|
42874
42896
|
const profile = plan.execution_profile;
|
|
42875
42897
|
const parallelEnabled = profile?.parallelization_enabled === true;
|
|
42876
|
-
const maxConcurrent = profile?.max_concurrent_tasks ??
|
|
42898
|
+
const maxConcurrent = profile?.max_concurrent_tasks ?? 10;
|
|
42877
42899
|
const effectiveMaxConcurrent = session.maxConcurrencyOverride ?? maxConcurrent;
|
|
42878
42900
|
if (!parallelEnabled || effectiveMaxConcurrent <= 1)
|
|
42879
42901
|
return;
|
|
@@ -68784,7 +68806,7 @@ function buildStatusMessage(session, plan) {
|
|
|
68784
68806
|
const overrideActive = session.maxConcurrencyOverride !== undefined;
|
|
68785
68807
|
const configuredOverride = session.maxConcurrencyOverride ?? "absent";
|
|
68786
68808
|
const hasPlan = plan !== null && plan !== undefined;
|
|
68787
|
-
const planBaseline = hasPlan ? plan.execution_profile?.max_concurrent_tasks ??
|
|
68809
|
+
const planBaseline = hasPlan ? plan.execution_profile?.max_concurrent_tasks ?? 10 : 10;
|
|
68788
68810
|
const parallelizationEnabled = hasPlan ? plan.execution_profile?.parallelization_enabled ?? false : false;
|
|
68789
68811
|
const operationalEffective = !parallelizationEnabled ? 1 : session.maxConcurrencyOverride ?? planBaseline;
|
|
68790
68812
|
let description;
|
|
@@ -68813,8 +68835,8 @@ var init_concurrency = __esm(() => {
|
|
|
68813
68835
|
init_state();
|
|
68814
68836
|
PRESETS = {
|
|
68815
68837
|
min: 1,
|
|
68816
|
-
medium:
|
|
68817
|
-
max:
|
|
68838
|
+
medium: 8,
|
|
68839
|
+
max: 16
|
|
68818
68840
|
};
|
|
68819
68841
|
});
|
|
68820
68842
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-swarm",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.74.0",
|
|
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",
|