opencode-swarm 6.84.5 → 6.84.6

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/README.md CHANGED
@@ -173,7 +173,7 @@ No API key required. Excellent starting point:
173
173
  "agents": {
174
174
  "coder": { "model": "opencode/minimax-m2.5-free" },
175
175
  "reviewer": { "model": "opencode/big-pickle" },
176
- "explorer": { "model": "opencode/trinity-large-preview-free" }
176
+ "explorer": { "model": "opencode/big-pickle" }
177
177
  }
178
178
  }
179
179
  ```
@@ -195,7 +195,7 @@ For production, mix providers by role:
195
195
 
196
196
  | Provider | Format | Example |
197
197
  |---|---|---|
198
- | OpenCode Zen | `opencode/<model>` | `opencode/trinity-large-preview-free` |
198
+ | OpenCode Zen | `opencode/<model>` | `opencode/big-pickle` |
199
199
  | Anthropic | `anthropic/<model>` | `anthropic/claude-sonnet-4-20250514` |
200
200
  | Google | `google/<model>` | `google/gemini-2.5-flash` |
201
201
  | Z.ai | `zai-coding-plan/<model>` | `zai-coding-plan/glm-5` |
@@ -11,6 +11,10 @@ export declare function stripSwarmPrefix(agentName: string, swarmPrefix?: string
11
11
  /**
12
12
  * Resolve the fallback model for an agent based on its config and fallback index.
13
13
  * Called by guardrails at runtime when a transient model error is detected.
14
+ *
15
+ * Fallback inheritance:
16
+ * - curator_init/curator_phase inherit fallback_models from explorer if not explicitly configured
17
+ * - This matches the model inheritance: curator agents default to explorer's model
14
18
  */
15
19
  export declare function resolveFallbackModel(agentBaseName: string, fallbackIndex: number, swarmAgents?: Record<string, {
16
20
  model?: string;
package/dist/cli/index.js CHANGED
@@ -18976,6 +18976,13 @@ var AgentOverrideConfigSchema = exports_external.object({
18976
18976
  temperature: exports_external.number().min(0).max(2).optional(),
18977
18977
  disabled: exports_external.boolean().optional(),
18978
18978
  fallback_models: exports_external.array(exports_external.string()).max(3).optional()
18979
+ }).refine((data) => {
18980
+ if (data.model && !data.fallback_models) {
18981
+ console.warn(`[opencode-swarm] WARNING: Agent configured with custom model "${data.model}" but no fallback_models. This means if the custom model fails, there is no fallback protection. Consider adding fallback_models for reliability.`);
18982
+ }
18983
+ return true;
18984
+ }, {
18985
+ message: "Agent configuration warning: Custom model without fallback protection"
18979
18986
  });
18980
18987
  var SwarmConfigSchema = exports_external.object({
18981
18988
  name: exports_external.string().optional(),
@@ -45139,14 +45146,70 @@ async function install() {
45139
45146
  if (!fs23.existsSync(PLUGIN_CONFIG_PATH)) {
45140
45147
  const defaultConfig = {
45141
45148
  agents: {
45142
- coder: { model: "opencode/minimax-m2.5-free" },
45143
- reviewer: { model: "opencode/big-pickle" },
45144
- test_engineer: { model: "opencode/gpt-5-nano" },
45145
- explorer: { model: "opencode/trinity-large-preview-free" },
45146
- sme: { model: "opencode/trinity-large-preview-free" },
45147
- critic: { model: "opencode/trinity-large-preview-free" },
45148
- docs: { model: "opencode/trinity-large-preview-free" },
45149
- designer: { model: "opencode/trinity-large-preview-free" }
45149
+ coder: {
45150
+ model: "opencode/minimax-m2.5-free",
45151
+ fallback_models: ["opencode/gpt-5-nano", "opencode/big-pickle"]
45152
+ },
45153
+ reviewer: {
45154
+ model: "opencode/big-pickle",
45155
+ fallback_models: ["opencode/gpt-5-nano", "opencode/big-pickle"]
45156
+ },
45157
+ test_engineer: {
45158
+ model: "opencode/gpt-5-nano",
45159
+ fallback_models: ["opencode/big-pickle"]
45160
+ },
45161
+ explorer: {
45162
+ model: "opencode/big-pickle",
45163
+ fallback_models: ["opencode/gpt-5-nano", "opencode/big-pickle"]
45164
+ },
45165
+ sme: {
45166
+ model: "opencode/big-pickle",
45167
+ fallback_models: ["opencode/gpt-5-nano", "opencode/big-pickle"]
45168
+ },
45169
+ critic: {
45170
+ model: "opencode/big-pickle",
45171
+ fallback_models: ["opencode/gpt-5-nano", "opencode/big-pickle"]
45172
+ },
45173
+ docs: {
45174
+ model: "opencode/big-pickle",
45175
+ fallback_models: ["opencode/gpt-5-nano", "opencode/big-pickle"]
45176
+ },
45177
+ designer: {
45178
+ model: "opencode/big-pickle",
45179
+ fallback_models: ["opencode/gpt-5-nano", "opencode/big-pickle"]
45180
+ },
45181
+ critic_sounding_board: {
45182
+ model: "opencode/gpt-5-nano",
45183
+ fallback_models: ["opencode/big-pickle"]
45184
+ },
45185
+ critic_drift_verifier: {
45186
+ model: "opencode/gpt-5-nano",
45187
+ fallback_models: ["opencode/big-pickle"]
45188
+ },
45189
+ critic_hallucination_verifier: {
45190
+ model: "opencode/gpt-5-nano",
45191
+ fallback_models: ["opencode/big-pickle"]
45192
+ },
45193
+ critic_oversight: {
45194
+ model: "opencode/gpt-5-nano",
45195
+ fallback_models: ["opencode/big-pickle"]
45196
+ },
45197
+ curator_init: {
45198
+ model: "opencode/gpt-5-nano",
45199
+ fallback_models: ["opencode/big-pickle"]
45200
+ },
45201
+ curator_phase: {
45202
+ model: "opencode/gpt-5-nano",
45203
+ fallback_models: ["opencode/big-pickle"]
45204
+ },
45205
+ council_member: {
45206
+ model: "opencode/gpt-5-nano",
45207
+ fallback_models: ["opencode/big-pickle"]
45208
+ },
45209
+ council_moderator: {
45210
+ model: "opencode/gpt-5-nano",
45211
+ fallback_models: ["opencode/big-pickle"]
45212
+ }
45150
45213
  },
45151
45214
  max_iterations: 5
45152
45215
  };
package/dist/index.js CHANGED
@@ -478,23 +478,23 @@ var init_constants = __esm(() => {
478
478
  }
479
479
  }
480
480
  DEFAULT_MODELS = {
481
- explorer: "opencode/trinity-large-preview-free",
481
+ explorer: "opencode/big-pickle",
482
482
  coder: "opencode/minimax-m2.5-free",
483
483
  reviewer: "opencode/big-pickle",
484
484
  test_engineer: "opencode/gpt-5-nano",
485
- sme: "opencode/trinity-large-preview-free",
486
- critic: "opencode/trinity-large-preview-free",
487
- critic_sounding_board: "opencode/trinity-large-preview-free",
488
- critic_drift_verifier: "opencode/trinity-large-preview-free",
489
- critic_hallucination_verifier: "opencode/trinity-large-preview-free",
490
- critic_oversight: "opencode/trinity-large-preview-free",
491
- docs: "opencode/trinity-large-preview-free",
492
- designer: "opencode/trinity-large-preview-free",
493
- curator_init: "opencode/trinity-large-preview-free",
494
- curator_phase: "opencode/trinity-large-preview-free",
495
- council_member: "opencode/trinity-large-preview-free",
496
- council_moderator: "opencode/trinity-large-preview-free",
497
- default: "opencode/trinity-large-preview-free"
485
+ sme: "opencode/big-pickle",
486
+ critic: "opencode/big-pickle",
487
+ critic_sounding_board: "opencode/big-pickle",
488
+ critic_drift_verifier: "opencode/big-pickle",
489
+ critic_hallucination_verifier: "opencode/big-pickle",
490
+ critic_oversight: "opencode/big-pickle",
491
+ docs: "opencode/big-pickle",
492
+ designer: "opencode/big-pickle",
493
+ curator_init: "opencode/big-pickle",
494
+ curator_phase: "opencode/big-pickle",
495
+ council_member: "opencode/big-pickle",
496
+ council_moderator: "opencode/big-pickle",
497
+ default: "opencode/big-pickle"
498
498
  };
499
499
  DEFAULT_SCORING_CONFIG = {
500
500
  enabled: false,
@@ -14724,6 +14724,13 @@ var init_schema = __esm(() => {
14724
14724
  temperature: exports_external.number().min(0).max(2).optional(),
14725
14725
  disabled: exports_external.boolean().optional(),
14726
14726
  fallback_models: exports_external.array(exports_external.string()).max(3).optional()
14727
+ }).refine((data) => {
14728
+ if (data.model && !data.fallback_models) {
14729
+ console.warn(`[opencode-swarm] WARNING: Agent configured with custom model "${data.model}" but no fallback_models. This means if the custom model fails, there is no fallback protection. Consider adding fallback_models for reliability.`);
14730
+ }
14731
+ return true;
14732
+ }, {
14733
+ message: "Agent configuration warning: Custom model without fallback protection"
14727
14734
  });
14728
14735
  SwarmConfigSchema = exports_external.object({
14729
14736
  name: exports_external.string().optional(),
@@ -57662,7 +57669,11 @@ function getModelForAgent(agentName, swarmAgents, swarmPrefix) {
57662
57669
  return resolvedModel;
57663
57670
  }
57664
57671
  function resolveFallbackModel(agentBaseName, fallbackIndex, swarmAgents) {
57665
- const fallbackModels = swarmAgents?.[agentBaseName]?.fallback_models;
57672
+ const agentConfig = swarmAgents?.[agentBaseName];
57673
+ let fallbackModels = agentConfig?.fallback_models;
57674
+ if (fallbackModels === undefined && (agentBaseName === "curator_init" || agentBaseName === "curator_phase")) {
57675
+ fallbackModels = swarmAgents?.explorer?.fallback_models;
57676
+ }
57666
57677
  if (!fallbackModels || fallbackModels.length === 0)
57667
57678
  return null;
57668
57679
  if (fallbackIndex < 1 || fallbackIndex > fallbackModels.length)
@@ -81016,6 +81027,7 @@ async function captureOrMergeBaseline(directory, phase, findings, engine, scanne
81016
81027
  };
81017
81028
  }
81018
81029
  fs69.mkdirSync(path83.dirname(baselinePath), { recursive: true });
81030
+ fs69.mkdirSync(path83.dirname(tempPath), { recursive: true });
81019
81031
  const releaseLock = await acquireLock(lockPath);
81020
81032
  try {
81021
81033
  let existing = null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-swarm",
3
- "version": "6.84.5",
3
+ "version": "6.84.6",
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",