opencode-herdr-orchestration 0.1.5 → 0.1.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
@@ -43,7 +43,7 @@ npx -y opencode-herdr-orchestration@latest uninstall --with-hooks
43
43
 
44
44
  After installation or update, quit and restart OpenCode intentionally when ready. Existing processes keep their already-loaded configuration.
45
45
 
46
- `configure-agents` updates the same model choices after installation. Press Enter to keep the displayed value, or enter `-` to restore that role's package default. Model names must include their provider prefix, such as `anthropic/claude-sonnet-4-6`.
46
+ `configure-agents` updates the same model choices after installation. Press Enter to keep the displayed value, or enter `-` to restore that role's package default. Model names must include their provider prefix, such as `anthropic/claude-sonnet-4-6`. The sheep worker reasoning effort accepts the provider's variant names, such as `low`, `medium`, or `high`; leaving it unset uses the model's default reasoning behavior. Shepherd agents always inherit the active model and its reasoning behavior, and reviewer reasoning stays fixed at `low` and `medium`.
47
47
 
48
48
  ## Manual Installation
49
49
 
@@ -154,6 +154,7 @@ Plugin tuple options can override model defaults:
154
154
  {
155
155
  "shepherdModel": "anthropic/claude-sonnet-4-6",
156
156
  "workerModel": "litellm/glm-5.3-flash",
157
+ "workerVariant": "medium",
157
158
  "reviewerModel": "litellm-responses/gpt-5.6-terra"
158
159
  }
159
160
  ]
@@ -28,9 +28,10 @@ const installedHook = join(hooksPath, "pre-push");
28
28
  const [command, ...flags] = process.argv.slice(2);
29
29
 
30
30
  const MODEL_ROLES = [
31
- ["shepherdModel", "Shepherd agents", "OpenCode active model"],
32
- ["workerModel", "Sheep worker agents", "litellm/glm-5.3-flash"],
33
- ["reviewerModel", "Shearer review agents", "litellm-responses/gpt-5.6-terra"],
31
+ ["shepherdModel", "Shepherd agents", "OpenCode active model", "model"],
32
+ ["workerModel", "Sheep worker agents", "litellm/glm-5.3-flash", "model"],
33
+ ["workerVariant", "Sheep worker reasoning effort", "model default", "variant"],
34
+ ["reviewerModel", "Shearer review agents", "litellm-responses/gpt-5.6-terra", "model"],
34
35
  ];
35
36
 
36
37
  function git(args, options = {}) {
@@ -82,11 +83,13 @@ async function promptForModels(configDir) {
82
83
  const prompt = createInterface({ input: process.stdin, output: process.stdout });
83
84
  process.stdout.write("Configure agent models. Press Enter to keep the shown value; enter - to restore the package default.\n");
84
85
  try {
85
- for (const [key, label, packageDefault] of MODEL_ROLES) {
86
+ for (const [key, label, packageDefault, kind] of MODEL_ROLES) {
86
87
  const shown = existing[key] || packageDefault;
87
88
  const answer = (await prompt.question(`${label} [${shown}]: `)).trim();
88
89
  const value = answer === "-" ? "" : (answer || existing[key] || "");
89
- if (value && !value.includes("/")) throw new Error(`${label} model must include a provider prefix, for example provider/model.`);
90
+ if (value && kind === "model" && !value.includes("/")) {
91
+ throw new Error(`${label} model must include a provider prefix, for example provider/model.`);
92
+ }
90
93
  answers[key] = value;
91
94
  }
92
95
  } finally {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-herdr-orchestration",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "description": "Capability-separated Herdr orchestration agents for OpenCode",
5
5
  "author": "CodingJinxx",
6
6
  "repository": {
package/src/agents.js CHANGED
@@ -83,6 +83,7 @@ export function mergeAgent(defaults, override) {
83
83
  export function createAgents(options = {}) {
84
84
  const shepherdModel = options.shepherdModel;
85
85
  const workerModel = options.workerModel ?? "litellm/glm-5.3-flash";
86
+ const workerVariant = options.workerVariant;
86
87
  const reviewerModel = options.reviewerModel ?? "litellm-responses/gpt-5.6-terra";
87
88
  const shepherdBuildPermissions = options.shepherdBuildPermissions ?? {};
88
89
  const shepherdBuildPrompt = appendPrompt(SHEPHERD_BUILD_PROMPT, options.shepherdBuildPromptAppend);
@@ -191,6 +192,7 @@ export function createAgents(options = {}) {
191
192
  "sheep-plan": {
192
193
  mode: "primary",
193
194
  model: workerModel,
195
+ ...(workerVariant ? { variant: workerVariant } : {}),
194
196
  description: "Performs read-only repository research for a shepherd.",
195
197
  prompt: SHEEP_PLAN_PROMPT,
196
198
  permission: {
@@ -210,6 +212,7 @@ export function createAgents(options = {}) {
210
212
  "sheep-build": {
211
213
  mode: "primary",
212
214
  model: workerModel,
215
+ ...(workerVariant ? { variant: workerVariant } : {}),
213
216
  description: "Implements a bounded task, verifies it, and hands a local commit to shepherd-build.",
214
217
  prompt: SHEEP_BUILD_PROMPT,
215
218
  permission: {