groove-dev 0.27.215 → 0.27.217

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@groove-dev/cli",
3
- "version": "0.27.215",
3
+ "version": "0.27.217",
4
4
  "description": "GROOVE CLI — manage AI coding agents from your terminal",
5
5
  "license": "FSL-1.1-Apache-2.0",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@groove-dev/daemon",
3
- "version": "0.27.215",
3
+ "version": "0.27.217",
4
4
  "description": "GROOVE daemon — agent orchestration engine",
5
5
  "license": "FSL-1.1-Apache-2.0",
6
6
  "type": "module",
@@ -39,7 +39,12 @@ export class ClaudeCodeProvider extends Provider {
39
39
  static authType = 'subscription';
40
40
  static managesOwnContext = true; // Claude Code compacts context internally (~25-37% → 2-8%)
41
41
  static models = [
42
+ // Order matters: the Router defaults to models[0] and tier lookups take the
43
+ // FIRST model of a tier. Opus 5 stays first so auto-routing doesn't silently
44
+ // move heavy agents onto the Fable price tier (2× Opus per token) — Fable is
45
+ // an explicit user choice.
42
46
  { id: 'claude-opus-5', name: 'Claude Opus 5', tier: 'heavy', contextWindow: 1_000_000 },
47
+ { id: 'claude-fable-5-1', name: 'Claude Fable 5.1', tier: 'heavy', contextWindow: 1_000_000 },
43
48
  { id: 'claude-fable-5', name: 'Claude Fable 5', tier: 'heavy', contextWindow: 1_000_000 },
44
49
  { id: 'claude-opus-4-8', name: 'Claude Opus 4.8', tier: 'heavy', contextWindow: 1_000_000 },
45
50
  { id: 'claude-opus-4-6', name: 'Claude Opus 4.6', tier: 'heavy', contextWindow: 1_000_000 },
@@ -124,5 +124,10 @@ describe('ClaudeCodeProvider resume handshake (CLI >= 2.1.212)', () => {
124
124
  describe('ClaudeCodeProvider models', () => {
125
125
  it('offers Fable 5', () => {
126
126
  assert.ok(ClaudeCodeProvider.models.some((m) => m.id === 'claude-fable-5'));
127
+ assert.ok(ClaudeCodeProvider.models.some((m) => m.id === 'claude-fable-5-1'));
128
+ // Routing guard: Opus 5 must stay models[0] — the Router defaults to it and
129
+ // putting a Fable model first would silently route heavy agents onto a tier
130
+ // priced at twice Opus.
131
+ assert.equal(ClaudeCodeProvider.models[0].id, 'claude-opus-5');
127
132
  });
128
133
  });