sortie-dogs 0.1.1 → 0.1.2

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
@@ -2,6 +2,10 @@
2
2
 
3
3
  **Give OpenCode a task; get a bounded, validated implementation loop instead of an open-ended agent run.**
4
4
 
5
+ [![npm](https://img.shields.io/npm/v/sortie-dogs)](https://www.npmjs.com/package/sortie-dogs)
6
+ [![license](https://img.shields.io/npm/l/sortie-dogs)](LICENSE)
7
+ [![Node.js](https://img.shields.io/node/v/sortie-dogs)](https://www.npmjs.com/package/sortie-dogs)
8
+
5
9
  ![Sortie-dogs coordinating a bounded implementation workflow](https://raw.githubusercontent.com/zufall-upon/Sortie-dogs/main/docs/assets/sortie-workflow.gif)
6
10
 
7
11
  Sortie-dogs is an opt-in OpenCode orchestration plugin. It turns a task into a
@@ -13,6 +17,50 @@ Requirements: Node.js 22.6 or newer, npm, and OpenCode.
13
17
 
14
18
  Guides: [日本語](docs/guide-ja.md) · [简体中文](docs/guide-zh-CN.md)
15
19
 
20
+ ## Quick start
21
+
22
+ Install the public npm package and generate the project-local runtime files:
23
+
24
+ ```sh
25
+ npm install --save-dev sortie-dogs
26
+ npx sortie-dogs init .
27
+ ```
28
+
29
+ `dog-coordinator` and `dog-scout` default to `openai/gpt-5.6-luna`. To use a
30
+ different model for both roles, save this as `.opencode/sortie-dogs.json`:
31
+
32
+ ```json
33
+ {
34
+ "modelRouting": {
35
+ "dog-coordinator": {
36
+ "preferred": { "model": "provider/model" }
37
+ },
38
+ "dog-scout": {
39
+ "preferred": { "model": "provider/model" }
40
+ }
41
+ },
42
+ "modelCatalog": {
43
+ "project": [{ "model": "provider/model" }]
44
+ }
45
+ }
46
+ ```
47
+
48
+ Replace `provider/model` with a model available to you. Then create
49
+ `.opencode/plugins/sortie-dogs.ts` as the OpenCode plugin bridge:
50
+
51
+ ```ts
52
+ export { SortieDogsPlugin } from "sortie-dogs/plugin";
53
+ ```
54
+
55
+ OpenCode discovers the bridge automatically; no `plugin` entry in
56
+ `opencode.json` is required. Restart OpenCode, then start a task:
57
+
58
+ ```text
59
+ /sortie <task>
60
+ ```
61
+
62
+ Selecting `dog-coordinator` directly also activates the workflow.
63
+
16
64
  ## Why Sortie-dogs
17
65
 
18
66
  - **Focused when invited, invisible otherwise.** Activate it with `/sortie` or
@@ -28,6 +76,20 @@ Guides: [日本語](docs/guide-ja.md) · [简体中文](docs/guide-zh-CN.md)
28
76
  - **Long work can recover.** Restart recovery and bounded compaction continue
29
77
  from retained handoff context rather than silently starting over.
30
78
 
79
+ ## Example run
80
+
81
+ An illustrative low-risk run stays bounded and reports its gates:
82
+
83
+ ```text
84
+ You: /sortie Add the requested behavior
85
+ dog-coordinator: manifest confirmed
86
+ dog-scout ×3: investigation complete
87
+ dog-worker: implementation complete
88
+ validation: npm test — PASS
89
+ review: skipped — low risk
90
+ dog-coordinator: completion evidence accepted
91
+ ```
92
+
31
93
  ## The workflow
32
94
 
33
95
  1. **Brief and plan** — `dog-coordinator` turns the request into acceptance
@@ -63,31 +125,6 @@ gets more complex.
63
125
  Validation and risk-based review happen before coordinator-owned completion, so
64
126
  the result returns with a concise record of what changed and how it was checked.
65
127
 
66
- ## Install from npm
67
-
68
- Install the public package in the target project, then generate the
69
- project-local runtime files:
70
-
71
- ```sh
72
- npm install --save-dev sortie-dogs
73
- npx sortie-dogs init .
74
- ```
75
-
76
- Create `.opencode/plugins/sortie-dogs.ts` as the OpenCode plugin bridge:
77
-
78
- ```ts
79
- export { SortieDogsPlugin } from "sortie-dogs/plugin";
80
- ```
81
-
82
- OpenCode discovers the bridge automatically; no `plugin` entry in
83
- `opencode.json` is required. Restart OpenCode, then start a task:
84
-
85
- ```text
86
- /sortie <task>
87
- ```
88
-
89
- Selecting `dog-coordinator` directly also activates the workflow.
90
-
91
128
  ## Scope and session guarantees
92
129
 
93
130
  The plugin is passive by default. It activates a session only when a message
@@ -170,31 +207,7 @@ untouched and initialization stops safely. User-owned configuration—including
170
207
 
171
208
  ## Safe manual removal
172
209
 
173
- There is no supported Sortie-dogs uninstall command. Removing the npm dependency
174
- is a separate package-manager operation: run `npm uninstall sortie-dogs` only in
175
- the directory whose `package.json` declares it. Never delete `package.json` or
176
- `package-lock.json` to remove the package.
177
-
178
- To remove generated runtime files manually, delete only these exact
179
- Sortie-dogs-owned paths:
180
-
181
- ```text
182
- .opencode/agent/dog-coordinator.md
183
- .opencode/agent/dog-worker.md
184
- .opencode/agent/dog-scout.md
185
- .opencode/agent/dog-reviewer.md
186
- .opencode/agent/dog-advisor.md
187
- .opencode/command/sortie.md
188
- .opencode/sortie-dogs.version
189
- ```
190
-
191
- Never delete the `.opencode`, `.opencode/agent`, or `.opencode/command`
192
- directories, and never use a wildcard such as `*.md`. Preserve the standard
193
- `plan`, `build`, and `builder` agents and every other user-owned file. Do not
194
- remove `.opencode/sortie-dogs.json`, the plugin bridge, other agents, or OpenCode
195
- settings as part of runtime-file removal.
196
-
197
- The legacy files `.opencode/agent/coordinator-mk2a2.md` and
198
- `.opencode/agent/sol-worker-mk2a2.md` may be removed only after an old
199
- Sortie-dogs marker or the content confirms Sortie-dogs ownership. If ownership
200
- is unclear or a filename is unexpected, stop and inspect instead of deleting.
210
+ There is no supported Sortie-dogs uninstall command. Remove the npm dependency
211
+ separately, then follow the [safe manual removal guide](docs/uninstall.md) to
212
+ delete only Sortie-dogs-owned runtime files without affecting user files or
213
+ standard OpenCode agents.
@@ -8,7 +8,7 @@ export interface RoleModelRoute {
8
8
  }
9
9
  export type ModelRoutingConfig = Readonly<Record<string, RoleModelRoute>>;
10
10
  export declare const DEDICATED_SOL_MODEL = "openai/gpt-5.6-sol";
11
- export declare const DEDICATED_SOL_ROLES: readonly ["implementation", "remediation", "blocker-resolution", "sol-worker-mk2a2"];
11
+ export declare const DEDICATED_SOL_ROLES: readonly ["implementation", "remediation", "blocker-resolution", "sol-worker-mk2a2", "dog-worker"];
12
12
  /** Fixed Mk2A2 worker routes. These deliberately contain no fallback targets. */
13
13
  export declare const DEDICATED_SOL_ROUTING: ModelRoutingConfig;
14
14
  export declare const RECOMMENDED_LUNA_MODEL = "openai/gpt-5.6-luna";
@@ -4,6 +4,7 @@ export const DEDICATED_SOL_ROLES = [
4
4
  "remediation",
5
5
  "blocker-resolution",
6
6
  "sol-worker-mk2a2",
7
+ "dog-worker",
7
8
  ];
8
9
  const dedicatedSolRoleSet = new Set(DEDICATED_SOL_ROLES);
9
10
  /** Fixed Mk2A2 worker routes. These deliberately contain no fallback targets. */
@@ -13,7 +13,7 @@ export declare const runtimeAssets: readonly [{
13
13
  readonly name: "dog-worker";
14
14
  readonly version: "0.2.0-card05";
15
15
  readonly installPath: "agent/dog-worker.md";
16
- readonly content: "---\ndescription: Dedicated Sol worker for the canonical Mk2A2 coordinator\nmode: subagent\n---\n# dog-worker\n\nYou are the dedicated implementation worker for dog-coordinator.\n\nAccept implementation, remediation, and blocker-resolution work only from dog-coordinator.\nExecute the supplied manifest within its acceptance criteria, run the requested validation,\nand return concise change and validation evidence only to dog-coordinator. Do not act as the\nuser-facing coordinator.\n";
16
+ readonly content: "---\ndescription: Dedicated Sol worker for the canonical Mk2A2 coordinator\nmode: subagent\nmodel: openai/gpt-5.6-sol\n---\n# dog-worker\n\nYou are the dedicated implementation worker for dog-coordinator.\n\nAccept implementation, remediation, and blocker-resolution work only from dog-coordinator.\nExecute the supplied manifest within its acceptance criteria, run the requested validation,\nand return concise change and validation evidence only to dog-coordinator. Do not act as the\nuser-facing coordinator.\n";
17
17
  }, {
18
18
  readonly name: "dog-scout";
19
19
  readonly version: "0.2.0-card05";
@@ -1,3 +1,4 @@
1
+ const { DEDICATED_SOL_MODEL } = await import(`./plugin/model-routing.${import.meta.url.endsWith(".ts") ? "ts" : "js"}`);
1
2
  export const runtimeAssets = [
2
3
  {
3
4
  name: "dog-coordinator",
@@ -251,6 +252,7 @@ END_TERMINAL_EVIDENCE_FIXTURE
251
252
  content: `---
252
253
  description: Dedicated Sol worker for the canonical Mk2A2 coordinator
253
254
  mode: subagent
255
+ model: ${DEDICATED_SOL_MODEL}
254
256
  ---
255
257
  # dog-worker
256
258
 
package/package.json CHANGED
@@ -1,7 +1,13 @@
1
1
  {
2
2
  "name": "sortie-dogs",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Bounded, validated orchestration loop plugin for OpenCode",
5
+ "keywords": [
6
+ "opencode",
7
+ "opencode-plugin",
8
+ "ai-orchestration",
9
+ "multi-agent"
10
+ ],
5
11
  "license": "MIT",
6
12
  "repository": {
7
13
  "type": "git",