opencode-dispatcher 0.2.11 → 0.3.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/README.md CHANGED
@@ -526,6 +526,11 @@ Use Dispatcher when the structure is worth it. Use the fast path or plain OpenCo
526
526
 
527
527
  ## Version History
528
528
 
529
+ * **v0.3.1**
530
+ * **Shipper Inspection & Release-Boundary Fixes**: Tightened shipper bash permission whitelist to eliminate pre-commit inspection prompts and fixed release-boundary routing so the shipper only commits and pushes explicitly intended changes.
531
+ * **v0.3.0**
532
+ * **Model-Config Groups**: Replaced per-agent model selection with two-tier group-based workflow (MED/LOW), excluding orchestrator and task-planner.
533
+
529
534
  * **v0.2.11**
530
535
  * **Routing Clarity**: Clarified executor routing as exact, mechanical, low-risk edits rather than file-count-based; clarified planner auto-proceed behavior when no user-facing decisions are introduced.
531
536
  * **Shipper Boundary**: Tightened shipper routing so it only commits and pushes existing intended changes.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-dispatcher",
3
- "version": "0.2.11",
3
+ "version": "0.3.1",
4
4
  "description": "A low-context OpenCode dispatcher workflow with orchestrator agents and task artifacts.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -21,10 +21,17 @@ Responsibilities:
21
21
 
22
22
  - Run `opencode models --verbose` to list available models and their variants on the system.
23
23
  - Check for an existing opencode config at `opencode.jsonc` or `.opencode/opencode.jsonc` (in that order of preference).
24
- - Present the user with the list of installed Dispatcher subagents (excluding the orchestrator, whose model is chosen directly by the user) and ask which agents they want to configure.
25
- - For each selected agent, ask which model to assign (from the available models list).
26
- - For each assigned model, parse its `variants` field from the verbose output. If the model has variants (non-empty object), present the available variant names and ask the user to pick one or skip. If the model has no variants (empty `{}`), skip silently without prompting. If the user skips, do not write a `variant` field for that agent.
27
- - Write `agent.<name>.model` and optionally `agent.<name>.variant` entries into the project's opencode config, preserving all existing config content exactly as-is. Use the target format:
24
+ - Determine the set of configurable subagents by excluding **orchestrator** (whose model is chosen directly by the user in OpenCode itself) and **task-planner** (which is intended to use the same model as the orchestrator) from the full list of installed Dispatcher subagents.
25
+ - Group the remaining configurable subagents into two hardcoded tiers:
26
+
27
+ | Group | Agents | Intended model class |
28
+ |-------|------------------------------------------------------------|-----------------------|
29
+ | MED | `validator`, `test-writer`, `documentation`, `init` | DeepSeek Pro class |
30
+ | LOW | `implementer`, `research`, `executor`, `shipper`, `model-config` | Flash / cheap class |
31
+
32
+ - Present both groups to the user with their intended model tiers. Ask the user to pick a model (and optionally a variant) for each group **once** — not per-agent.
33
+ - For the chosen model, parse its `variants` field from the verbose output. If the model has variants (non-empty object), present the available variant names and ask the user to pick one or skip. If the model has no variants (empty `{}`), skip silently without prompting. If the user skips, do not write a `variant` field for that group.
34
+ - Write `agent.<name>.model` and optionally `agent.<name>.variant` entries for every agent in each group into the project's opencode config, preserving all existing config content exactly as-is. Use the target format:
28
35
  ```jsonc
29
36
  "agent": {
30
37
  "orchestrator": {
@@ -33,7 +40,7 @@ Responsibilities:
33
40
  }
34
41
  }
35
42
  ```
36
- - If no opencode config exists, create one with only the `agent.<name>.model` (and `agent.<name>.variant` where applicable) entries.
43
+ - If no opencode config exists, create one with only the agent entries.
37
44
  - Report back to the orchestrator with a summary of what was configured.
38
45
 
39
46
  Boundaries:
@@ -24,6 +24,14 @@ permission:
24
24
  "ls *": allow
25
25
  "npm run check": allow
26
26
  "npm run check *": allow
27
+ "grep *": allow
28
+ "head *": allow
29
+ "tail *": allow
30
+ "cat *": allow
31
+ "wc *": allow
32
+ "file *": allow
33
+ "git show*": allow
34
+ "node -p *": allow
27
35
  "git reset*": deny
28
36
  "git rebase*": deny
29
37
  "git clean*": deny
@@ -55,6 +63,7 @@ Hard boundaries:
55
63
  - Only push when orchestrator/user explicitly requests a push.
56
64
  - Do not amend, force-push, reset, rebase, clean, tag, or create PRs unless explicitly requested.
57
65
  - Do not prepare changes; only commit or push existing intended changes.
66
+ - Version bump preparation, README.md edits, and changelog updates are out of scope for the shipper agent and must be prepared by other agents (implementer, executor, documentation) before shipper is invoked.
58
67
  - If branch/upstream ambiguity exists, report back to orchestrator instead of guessing.
59
68
 
60
69
  Required pre-commit inspection:
@@ -66,6 +75,7 @@ Required pre-commit inspection:
66
75
  - If multiple task artifact folders exist, include only the folders that match the current commit scope unless the user explicitly asks to commit everything.
67
76
  - Do not use `git commit -a` or `git commit -am`; explicitly stage intended files before committing.
68
77
  - Never include secrets, credentials, generated artifacts, or unrelated changes.
78
+ - Run inspection commands individually; do not combine allowed commands with shell operators like |, &&, ||, or ;.
69
79
  - If the intended file set is unclear, stop and report the ambiguity to orchestrator.
70
80
 
71
81
  Commit message rules:
@@ -29,11 +29,7 @@ Single-unit workflow:
29
29
  - Make real architectural decisions based on conventions: which patterns to use, where new files go, what to change in existing files.
30
30
  - Add decision notes under `.ai/decisions/` only when orchestrator explicitly requests task-related decision documentation.
31
31
  - Do not edit implementation files, project docs outside `.ai/`, or source code.
32
- - Write an `## Execution` section in every task spec. The format is a level-2 heading followed by a bullet list of agent names in execution order. Valid agent names: `test-writer`, `implementer`, `documentation`. Never include `validator` the orchestrator appends it automatically. Decision logic for choosing the pipeline:
33
- - Feature/fix with testable acceptance criteria → `test-writer`, then `implementer`.
34
- - Feature/fix with only inspectable acceptance criteria (no tests to write) → `implementer` only.
35
- - Documentation task → `documentation` only.
36
- - Follow-up documentation (implementation was handled by its own spec's Execution section) → `documentation` only.
32
+ - Write an `## Execution` section in every task spec. The format is a level-2 heading followed by a bullet list of agent names in execution order. Valid agent names: `test-writer`, `implementer`, `documentation`. The `## Execution` section must contain only the agent bullet list no explanatory orchestration notes.
37
33
 
38
34
  Multi-unit decomposition:
39
35
 
@@ -64,8 +60,6 @@ Multi-unit decomposition:
64
60
  task-spec.md
65
61
  ```
66
62
 
67
- - Write `.ai/tasks/current` pointer file containing the relative path to the first unit (e.g., `tasks/<NNN>-<task-id>/01-unitslug`). The format is a single line with a relative path — no JSON or multi-line structure.
68
-
69
63
  If scope is ambiguous, stop and report the missing decision to orchestrator instead of inventing requirements.
70
64
 
71
65
  Default report back: