@askalf/dario 4.8.71 → 4.8.72
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 +24 -19
- package/dist/cc-template.d.ts +4 -0
- package/dist/cc-template.js +19 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -16,7 +16,9 @@
|
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
>
|
|
19
|
+
> 🗓️ **2026-06-15 — Anthropic splits Claude billing.** Agent-SDK and `claude -p` (headless) traffic stops counting against your subscription pool and moves to a small separate monthly credit ($20 / $100 / $200 by plan), then metered per-token API rates. Most proxies forward your requests in exactly the shape that gets reclassified into that bucket. dario rewrites every request into interactive Claude Code wire-shape before it leaves your machine, so your traffic stays in the subscription pool you already pay for — same install, no config change for the cliff. **[What changes, and how to verify it on your own machine →](#the-deadline-2026-06-15)**
|
|
20
|
+
|
|
21
|
+
> ⛔ **Claude Fable 5 / Mythos 5 — temporarily suspended for all Anthropic customers.** On 2026-06-12 a US-government legal directive disabled Fable 5 and Mythos 5 for **every** Anthropic plan and tier — `api.anthropic.com` now returns `not_found` for them, and no account or proxy can route around it ([details](https://www.anthropic.com/news/fable-mythos-access)). As of **v4.8.71**, dario filters both families out of `/v1/models` and rejects any spelling (`fable`, `fable1m`, `claude-fable-5`, `claude-fable-5[1m]`, `claude:fable`) up front with a clean `404` pointing at `claude-opus-4-8` / `claude-sonnet-4-6` — instead of forwarding into a confusing upstream error. Reversible without a code change once access is restored: set `DARIO_SUSPENDED_MODELS=` (empty) on the instance. `npm install -g @askalf/dario@latest`
|
|
20
22
|
>
|
|
21
23
|
> ⚠️ Still on a version **before 4.8.39**? Upgrade now — those could silently corrupt code/structured content routed through the proxy (the identifier scrub stripped tokens like the JS `continue` keyword). **[Details →](https://github.com/askalf/dario/issues/457)**
|
|
22
24
|
|
|
@@ -73,10 +75,9 @@ Type `dario` with no args (in another terminal) to open a full-screen control pa
|
|
|
73
75
|
│ Tokens out: 38,200 Subscription %: 98% │
|
|
74
76
|
│ │
|
|
75
77
|
│ Per-model: │
|
|
76
|
-
│
|
|
77
|
-
│
|
|
78
|
-
│
|
|
79
|
-
│ haiku-4-5 █░░░░░░░░░░░░░░░░░░░░ 6% ( 15 req) │
|
|
78
|
+
│ opus-4-8 ████████████░░░░░░░░ 60% (148 req) │
|
|
79
|
+
│ sonnet-4-6 █████░░░░░░░░░░░░░░░ 26% ( 64 req) │
|
|
80
|
+
│ haiku-4-5 ███░░░░░░░░░░░░░░░░░ 14% ( 35 req) │
|
|
80
81
|
│ │
|
|
81
82
|
│ Rate-limit: │
|
|
82
83
|
│ 5h ████░░░░░░░░░░░░░░░░░░░░░░░░ 18% │
|
|
@@ -86,18 +87,6 @@ Type `dario` with no args (in another terminal) to open a full-screen control pa
|
|
|
86
87
|
|
|
87
88
|
---
|
|
88
89
|
|
|
89
|
-
## The money
|
|
90
|
-
|
|
91
|
-
| Setup | Monthly cost — heavy user |
|
|
92
|
-
|---|---|
|
|
93
|
-
| Cursor + Anthropic API direct | **$80–$300** |
|
|
94
|
-
| Multi-tool heavy use (Cursor + Aider + Cline + Continue), per-token | **$200–$600+** |
|
|
95
|
-
| **Any of the above + dario** | **$20–$200 flat** — your existing Pro/Max plan, nothing extra |
|
|
96
|
-
|
|
97
|
-
Switching providers is a model-name change, not a reconfigure. Add a backend once and the same `localhost:3456` speaks OpenAI, Groq, OpenRouter, or a local Ollama too.
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
90
|
## The deadline: 2026-06-15
|
|
102
91
|
|
|
103
92
|
On **2026-06-15**, Anthropic splits Claude billing in two. Agentic traffic — Agent SDK, `claude -p` headless — stops counting against your subscription pool and gets a separate small monthly credit. [Announced 2026-05-13](https://support.claude.com/en/articles/15036540-use-the-claude-agent-sdk-with-your-claude-plan) via Claude's Help Center and a [@ClaudeDevs X post](https://x.com/ClaudeDevs/status/2054610152817619388) — no anthropic.com blog post, no email to most subscribers, no mention in CC release notes.
|
|
@@ -123,6 +112,18 @@ Same install, same `localhost:3456`, no config change for the cliff. Verify on y
|
|
|
123
112
|
|
|
124
113
|
---
|
|
125
114
|
|
|
115
|
+
## The money
|
|
116
|
+
|
|
117
|
+
| Setup | Monthly cost — heavy user |
|
|
118
|
+
|---|---|
|
|
119
|
+
| Cursor + Anthropic API direct | **$80–$300** |
|
|
120
|
+
| Multi-tool heavy use (Cursor + Aider + Cline + Continue), per-token | **$200–$600+** |
|
|
121
|
+
| **Any of the above + dario** | **$20–$200 flat** — your existing Pro/Max plan, nothing extra |
|
|
122
|
+
|
|
123
|
+
Switching providers is a model-name change, not a reconfigure. Add a backend once and the same `localhost:3456` speaks OpenAI, Groq, OpenRouter, or a local Ollama too.
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
126
127
|
## The principle dario operates on
|
|
127
128
|
|
|
128
129
|
Two layers, separated:
|
|
@@ -166,6 +167,7 @@ dario doesn't *guess* Claude Code's request shape — it captures it live from y
|
|
|
166
167
|
| `TodoWrite`/`TodoRead` replaced by the `Task*` family, no migration note | Clients hardcoding `todo_*` send unrecognized tools | [v3.38.6](https://github.com/askalf/dario/pull/274) — 13 min later |
|
|
167
168
|
| **Claude Fable 5** ships as CC's flagship (v2.1.170) with undocumented wire quirks: a required `fallback-credit-2026-06-01` beta, soft-refusal of `max`/`xhigh` effort, and a `[1m]`-only `context-1m` beta | Subscription fable traffic 200-refused (empty body) without the flag; wrong effort silently returns nothing | [v4.8.46–52](https://github.com/askalf/dario/pulls?q=fable) — 2026-06-09 |
|
|
168
169
|
| CC tailors the `anthropic-beta` set **per model** — opus 9, sonnet 8 (no `mid-conversation-system`), haiku 6 (also no `effort`) | Proxies sending one beta set diverge from CC for non-opus models | [v4.8.53](https://github.com/askalf/dario/pull/478) — 2026-06-09 |
|
|
170
|
+
| **Fable 5 / Mythos 5 globally suspended** by a US-government directive (2026-06-12, every customer + tier) — `api.anthropic.com` now `not_found`s them | dario kept advertising `claude-fable-5[1m]` in `/v1/models` and forwarded fable traffic into a confusing upstream 404 | [v4.8.71](https://github.com/askalf/dario/pull/518) — 2026-06-13 (filtered out + clean local 404; reversible via `DARIO_SUSPENDED_MODELS`) |
|
|
169
171
|
|
|
170
172
|
And it gets subtler: v4.2.1 (2026-05-17) shipped receipts for **same CC binary, different wire output 24 hours apart** — Anthropic ships changes through CC's *remote configuration*, not just npm releases. So dario runs **three classes of drift detection**, all auto-detecting and auto-PR'ing:
|
|
171
173
|
|
|
@@ -184,7 +186,7 @@ You point every tool at one URL. dario reads each request, decides which backend
|
|
|
184
186
|
|
|
185
187
|
| Client speaks | Model | Routes to | What happens |
|
|
186
188
|
|---|---|---|---|
|
|
187
|
-
| Anthropic Messages | `claude-*` / `
|
|
189
|
+
| Anthropic Messages | `claude-*` / `opus` / `sonnet` / `haiku` | Claude backend | OAuth swap + CC template replay → `api.anthropic.com` |
|
|
188
190
|
| Anthropic Messages | `gpt-*`, `llama-*`, … | OpenAI-compat backend | Anthropic→OpenAI translation, forwarded |
|
|
189
191
|
| OpenAI Chat | `gpt-*` / `o1-*` / `o3-*` | OpenAI-compat backend | Auth swap, body forwarded byte-for-byte |
|
|
190
192
|
| OpenAI Chat | `claude-*` | Claude backend | OpenAI→Anthropic translation, then Claude path |
|
|
@@ -192,7 +194,7 @@ You point every tool at one URL. dario reads each request, decides which backend
|
|
|
192
194
|
|
|
193
195
|
The tool doesn't know. The backend doesn't know. dario is the seam.
|
|
194
196
|
|
|
195
|
-
**The full Claude lineup, autodetected.**
|
|
197
|
+
**The full Claude lineup, autodetected.** Opus 4.8, Sonnet 4.6, and Haiku 4.5 — plus `[1m]` long-context variants, generated by one rule for every family — by full id (`claude-opus-4-8`) or shortcut (`opus` / `sonnet` / `haiku`, append `1m` for the long-context form). `GET /v1/models` asks Anthropic's live catalog (TTL-cached, baked fallback when offline), and the family shortcuts track it — a new model shows up and resolves the day it lands, no dario release needed; the model-specific wire shape (effort level, beta set, thinking config) is applied automatically. **Globally-suspended families are filtered out** of both the live catalog and the baked fallback, so `/v1/models` never advertises a model that 404s upstream and suspended ids are rejected locally with an actionable error — currently Claude Fable 5 and Mythos 5 (US-government directive, 2026-06-12); governed by `DARIO_SUSPENDED_MODELS` (default `fable`), set it empty to re-enable when access is restored.
|
|
196
198
|
|
|
197
199
|
---
|
|
198
200
|
|
|
@@ -299,6 +301,9 @@ No. `five_hour` and `seven_day` are both subscription billing — different acco
|
|
|
299
301
|
**Will the 2026-06-15 split break my setup? / What if Anthropic ships another silent change?**
|
|
300
302
|
No, and it's caught automatically — see [The deadline](#the-deadline-2026-06-15) and [How it stays working](#how-it-works-and-how-it-stays-working). dario rewrites every request to interactive-CC shape before it reaches `api.anthropic.com`, and the three-class drift watcher picks up new changes (npm-release hourly, remote-config every 30 min, classifier-rule daily). v3.38.5 + v3.38.6 — 13 minutes apart, same day as v2.1.142's silent drops — are the prior art.
|
|
301
303
|
|
|
304
|
+
**I'm getting `404 not_found` for `claude-fable-5` / `fable`. Did dario break?**
|
|
305
|
+
No — Claude Fable 5 and Mythos 5 were disabled for **all** Anthropic customers by a US-government legal directive on 2026-06-12 (every plan and tier; [details](https://www.anthropic.com/news/fable-mythos-access)). `api.anthropic.com` returns `not_found` for them, so no subscription or proxy can route them. Since v4.8.71 dario drops both families from `/v1/models` and rejects them locally with a clear 404 pointing at `claude-opus-4-8` / `claude-sonnet-4-6`, instead of forwarding into a confusing upstream error. When access is restored, set `DARIO_SUSPENDED_MODELS=` (empty) on the instance to re-enable — no upgrade needed.
|
|
306
|
+
|
|
302
307
|
Full FAQ: [`docs/faq.md`](./docs/faq.md)
|
|
303
308
|
|
|
304
309
|
---
|
package/dist/cc-template.d.ts
CHANGED
|
@@ -39,6 +39,10 @@ export declare const CC_TOOL_DEFINITIONS: {
|
|
|
39
39
|
description: string;
|
|
40
40
|
input_schema: Record<string, unknown>;
|
|
41
41
|
}[];
|
|
42
|
+
/** Lowercased CC tool name → canonical name, for identity-matching a CC client's
|
|
43
|
+
* own tools (so newer built-ins not yet in TOOL_MAP map to themselves rather
|
|
44
|
+
* than being treated as foreign and round-robined). Tracks the live bundle. */
|
|
45
|
+
export declare const CC_NATIVE_LOWER: Map<string, string>;
|
|
42
46
|
/** CC's static system prompt (~25KB). */
|
|
43
47
|
export declare const CC_SYSTEM_PROMPT: string;
|
|
44
48
|
/** CC's agent identity string. */
|
package/dist/cc-template.js
CHANGED
|
@@ -45,6 +45,10 @@ export function filterToolsForPlatform(tools, platform) {
|
|
|
45
45
|
}
|
|
46
46
|
/** CC's exact tool definitions for the current platform — filtered from the bundled union. */
|
|
47
47
|
export const CC_TOOL_DEFINITIONS = filterToolsForPlatform(TEMPLATE.tools, process.platform);
|
|
48
|
+
/** Lowercased CC tool name → canonical name, for identity-matching a CC client's
|
|
49
|
+
* own tools (so newer built-ins not yet in TOOL_MAP map to themselves rather
|
|
50
|
+
* than being treated as foreign and round-robined). Tracks the live bundle. */
|
|
51
|
+
export const CC_NATIVE_LOWER = new Map(CC_TOOL_DEFINITIONS.map((t) => [String(t.name).toLowerCase(), String(t.name)]));
|
|
48
52
|
/** CC's static system prompt (~25KB). */
|
|
49
53
|
export const CC_SYSTEM_PROMPT = TEMPLATE.system_prompt;
|
|
50
54
|
/** CC's agent identity string. */
|
|
@@ -1230,7 +1234,19 @@ export function buildCCRequest(clientBody, billingTag, cacheControl, identity, o
|
|
|
1230
1234
|
const claimedCC = new Set();
|
|
1231
1235
|
for (const tool of clientTools) {
|
|
1232
1236
|
const name = (tool.name || '').toLowerCase();
|
|
1233
|
-
|
|
1237
|
+
// A CC client's OWN tools map to THEMSELVES (identity). TOOL_MAP only
|
|
1238
|
+
// carries the legacy core surface + cross-client aliases, so it lags CC's
|
|
1239
|
+
// newer built-ins (Agent, AskUserQuestion, Cron*, Task*, NotebookEdit,
|
|
1240
|
+
// Enter/ExitPlanMode, Workflow, …). Without this, those land "unmapped",
|
|
1241
|
+
// get round-robined onto Read/Bash/etc., and the collision corrupts the
|
|
1242
|
+
// calls of the tools that DID map (the dock saw Read's `file_path` arrive
|
|
1243
|
+
// as `path`/`filePath`). Identity-matching against the live CC tool set
|
|
1244
|
+
// (CC_NATIVE_LOWER, refreshed by every capture-and-bake) fixes it for
|
|
1245
|
+
// every current-and-future CC client and keeps the canonical CC fingerprint.
|
|
1246
|
+
const mapping = TOOL_MAP[name]
|
|
1247
|
+
?? (CC_NATIVE_LOWER.get(name)
|
|
1248
|
+
? { ccTool: CC_NATIVE_LOWER.get(name), translateArgs: (a) => a, translateBack: (a) => a }
|
|
1249
|
+
: undefined);
|
|
1234
1250
|
if (mapping) {
|
|
1235
1251
|
// In hybrid mode, clone the shared mapping and attach the
|
|
1236
1252
|
// client-declared top-level field names from input_schema.
|
|
@@ -1266,8 +1282,8 @@ export function buildCCRequest(clientBody, billingTag, cacheControl, identity, o
|
|
|
1266
1282
|
const CC_FALLBACK_TOOLS = ['Bash', 'Read', 'Grep', 'Glob', 'WebSearch', 'WebFetch'];
|
|
1267
1283
|
for (const tool of clientTools) {
|
|
1268
1284
|
const name = (tool.name || '').toLowerCase();
|
|
1269
|
-
if (TOOL_MAP[name])
|
|
1270
|
-
continue;
|
|
1285
|
+
if (TOOL_MAP[name] || CC_NATIVE_LOWER.has(name))
|
|
1286
|
+
continue; // mapped, or a CC-native tool (identity in pass 1)
|
|
1271
1287
|
unmappedTools.push(tool.name);
|
|
1272
1288
|
if (opts.hybridTools)
|
|
1273
1289
|
continue; // dropped — see comment above
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@askalf/dario",
|
|
3
|
-
"version": "4.8.
|
|
3
|
+
"version": "4.8.72",
|
|
4
4
|
"description": "Use your Claude Pro/Max subscription in any tool — Cursor, Cline, Aider, the Agent SDK, your scripts — at subscription pricing, not per-token API bills. One local Anthropic + OpenAI-compatible endpoint.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|