sortie-dogs 0.2.7 → 0.2.8
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 +13 -8
- package/dist/plugin/model-routing.d.ts +8 -6
- package/dist/plugin/model-routing.js +10 -11
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -60,8 +60,9 @@ to the `plugin` array of the OpenCode configuration the agents run under —
|
|
|
60
60
|
Restart OpenCode afterwards. A `plugin` entry must name the package, not a
|
|
61
61
|
subpath: `sortie-dogs/plugin` is an import specifier, not a plugin specifier.
|
|
62
62
|
|
|
63
|
-
`dog-coordinator`
|
|
64
|
-
|
|
63
|
+
`dog-coordinator` keeps whichever model you select for the session. `dog-scout`
|
|
64
|
+
defaults to `openai/gpt-5.6-luna`. To pin either role to another model, save this
|
|
65
|
+
as `.opencode/sortie-dogs.json`:
|
|
65
66
|
|
|
66
67
|
```json
|
|
67
68
|
{
|
|
@@ -263,13 +264,17 @@ published cost curves put a cheap model at high effort above an expensive model
|
|
|
263
264
|
at mid effort on both solve rate and price. Sortie-dogs therefore buys effort,
|
|
264
265
|
not model tiers, wherever the work allows it.
|
|
265
266
|
|
|
266
|
-
`dog-coordinator`
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
267
|
+
`dog-coordinator` has no built-in route. It is the one agent you drive directly
|
|
268
|
+
and pick a model for in the session, so it keeps the model you selected; a
|
|
269
|
+
shipped default there would silently revert your choice instead of filling an
|
|
270
|
+
absent one. Declare `modelRouting` for `dog-coordinator` if you do want a fixed
|
|
271
|
+
coordinator model.
|
|
272
|
+
|
|
273
|
+
`dog-scout` defaults to `openai/gpt-5.6-luna` with the `high` variant, since
|
|
270
274
|
gathering bounded evidence is retrieval rather than reasoning and that tier is
|
|
271
|
-
where the curve gives the most per unit of cost.
|
|
272
|
-
|
|
275
|
+
where the curve gives the most per unit of cost. Nobody selects a model for a
|
|
276
|
+
session the loop spawns, which is why delegated roles carry defaults and the
|
|
277
|
+
coordinator does not. Project-local routing can override this default.
|
|
273
278
|
|
|
274
279
|
The `implementation`, `remediation`, `blocker-resolution`, and `dog-worker`
|
|
275
280
|
roles always use the dedicated worker target, `openai/gpt-5.6-luna` with the
|
|
@@ -39,15 +39,17 @@ export declare const DEDICATED_WORKER_ROUTING: ModelRoutingConfig;
|
|
|
39
39
|
export declare const FIXED_MODEL_ROUTING: ModelRoutingConfig;
|
|
40
40
|
export declare const RECOMMENDED_LUNA_MODEL = "openai/gpt-5.6-luna";
|
|
41
41
|
/**
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
42
|
+
* The coordinator has no built-in route on purpose. It is the one agent the user drives directly and
|
|
43
|
+
* picks a model for in the session, so a shipped default here does not choose between models for an
|
|
44
|
+
* undecided user: it silently discards a choice the user already made and cannot see being reverted.
|
|
45
|
+
* Delegated roles are the opposite, because nobody selects a model for a session the loop spawns.
|
|
46
|
+
* A host that does want a fixed coordinator model still declares one through modelRouting.
|
|
47
|
+
*
|
|
48
|
+
* Evidence gathering is retrieval rather than reasoning, so the scout sits one effort tier below the
|
|
49
|
+
* worker, where the published cost curve returns the most per unit of cost.
|
|
46
50
|
*/
|
|
47
|
-
export declare const RECOMMENDED_COORDINATOR_VARIANT = "max";
|
|
48
51
|
export declare const RECOMMENDED_SCOUT_VARIANT = "high";
|
|
49
52
|
export declare const RECOMMENDED_LUNA_ROLE_VARIANTS: Readonly<{
|
|
50
|
-
readonly "dog-coordinator": "max";
|
|
51
53
|
readonly "dog-scout": "high";
|
|
52
54
|
}>;
|
|
53
55
|
export declare const RECOMMENDED_LUNA_ROLES: readonly string[];
|
|
@@ -53,15 +53,17 @@ export const FIXED_MODEL_ROUTING = DEDICATED_WORKER_ROUTING;
|
|
|
53
53
|
const fixedModelRoleSet = new Set(Object.keys(FIXED_MODEL_ROUTING));
|
|
54
54
|
export const RECOMMENDED_LUNA_MODEL = "openai/gpt-5.6-luna";
|
|
55
55
|
/**
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
56
|
+
* The coordinator has no built-in route on purpose. It is the one agent the user drives directly and
|
|
57
|
+
* picks a model for in the session, so a shipped default here does not choose between models for an
|
|
58
|
+
* undecided user: it silently discards a choice the user already made and cannot see being reverted.
|
|
59
|
+
* Delegated roles are the opposite, because nobody selects a model for a session the loop spawns.
|
|
60
|
+
* A host that does want a fixed coordinator model still declares one through modelRouting.
|
|
61
|
+
*
|
|
62
|
+
* Evidence gathering is retrieval rather than reasoning, so the scout sits one effort tier below the
|
|
63
|
+
* worker, where the published cost curve returns the most per unit of cost.
|
|
60
64
|
*/
|
|
61
|
-
export const RECOMMENDED_COORDINATOR_VARIANT = "max";
|
|
62
65
|
export const RECOMMENDED_SCOUT_VARIANT = "high";
|
|
63
66
|
export const RECOMMENDED_LUNA_ROLE_VARIANTS = Object.freeze({
|
|
64
|
-
"dog-coordinator": RECOMMENDED_COORDINATOR_VARIANT,
|
|
65
67
|
"dog-scout": RECOMMENDED_SCOUT_VARIANT,
|
|
66
68
|
});
|
|
67
69
|
export const RECOMMENDED_LUNA_ROLES = Object.freeze(Object.keys(RECOMMENDED_LUNA_ROLE_VARIANTS));
|
|
@@ -137,11 +139,8 @@ export const BUILT_IN_MODEL_CATALOG = Object.freeze({
|
|
|
137
139
|
global: Object.freeze([
|
|
138
140
|
Object.freeze({
|
|
139
141
|
model: DEDICATED_WORKER_MODEL,
|
|
140
|
-
variants: Object.freeze([
|
|
141
|
-
|
|
142
|
-
RECOMMENDED_COORDINATOR_VARIANT,
|
|
143
|
-
RECOMMENDED_SCOUT_VARIANT,
|
|
144
|
-
].filter((variant, index, all) => all.indexOf(variant) === index)),
|
|
142
|
+
variants: Object.freeze([DEDICATED_WORKER_VARIANT, RECOMMENDED_SCOUT_VARIANT]
|
|
143
|
+
.filter((variant, index, all) => all.indexOf(variant) === index)),
|
|
145
144
|
}),
|
|
146
145
|
Object.freeze({
|
|
147
146
|
model: ESCALATION_WORKER_MODEL,
|