diff --git a/CHANGELOG.md b/CHANGELOG.md index 31074d9..fdb54fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,24 @@ All notable changes to @blockrun/llm will be documented in this file. +## [3.13.2] - 2026-08-16 + +### Changed + +- **`@blockrun/router-core` pinned forward to `18bf4ab`** (was `d430804`). Upstream retired `free/deepseek-v4-flash` from the eco SIMPLE fallback chain after NVIDIA EOL'd it (HTTP 410, 2026-08-12), alongside `seed-oss-36b` which went the same way on 2026-08-03. `free/gpt-oss-120b` and `-20b` already headed that chain, so the rungs are dropped rather than retargeted and eco routing is unchanged for every request that was already being served. Before this, an eco SIMPLE request that fell past the two gpt-oss entries walked into a dead model and burned a hop. + + This is also the commit the Python SDK's Router Core port tracks (`blockrun-llm` 1.11.0), so both SDKs and the gateway now route from the same configuration. Verified: 24 request shapes (chat, reasoning, MCQ, math, code edit, tool/code agent, terminal, retail, airline, web research, long context, vision, structured output, and the eco/premium profiles) produce identical model, tier, task type and full candidate chain across both SDKs against the live catalog. + +### Fixed + +- **`VERSION` was left at 3.13.0 when 3.13.1 shipped**, and 3.13.1 was never recorded in this changelog — so `main` has been failing the version-consistency guard since 2026-08-12. The release workflow publishes on a GitHub Release and does not run the test suite, so the red was only visible on the push-triggered CI run, after the fact. Both files are corrected here; the 3.13.1 entry below is written retroactively. + +## [3.13.1] - 2026-08-12 + +### Changed + +- Docs-only patch: the README's free-tier section was refreshed after NVIDIA EOL'd `deepseek-v4-flash` (HTTP 410, 2026-08-12) and the brand markers were re-synced to the live catalog (70 chat / 93 total / 5 free). No runtime change — recorded here after the fact, see the note in 3.13.2. + ## [3.13.0] - 2026-08-11 ### Changed diff --git a/CLAUDE.md b/CLAUDE.md index d7bf459..7af67b9 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,6 +1,6 @@ # @blockrun/llm (TypeScript SDK) -TypeScript SDK for 71 LLMs with streaming, smart routing, and automatic USDC micropayments via x402. No API keys — wallet signature is authentication. +TypeScript SDK for 70 LLMs with streaming, smart routing, and automatic USDC micropayments via x402. No API keys — wallet signature is authentication. ## Commands diff --git a/VERSION b/VERSION index 4eba2a6..3e388a4 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.13.0 +3.13.2 diff --git a/package.json b/package.json index aaeb998..2817fe2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@blockrun/llm", - "version": "3.13.1", + "version": "3.13.2", "type": "module", "description": "BlockRun SDK - Pay-per-request AI (LLM, Image, Video, Music, Voice) via x402 on Base and Solana", "main": "dist/index.cjs", @@ -56,7 +56,7 @@ }, "devDependencies": { "@blockrun/core": "^0.1.0", - "@blockrun/router-core": "https://codeload.github.com/BlockRunAI/router-core/tar.gz/d4308049348e11e17ed08a254676a34949be80f9", + "@blockrun/router-core": "https://codeload.github.com/BlockRunAI/router-core/tar.gz/18bf4abc7e34599e51595b90703c385f53d4f4a6", "@eslint/js": "^9.39.4", "@types/node": "^20.19.41", "eslint": "^9.39.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e994fd3..cd18b90 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,8 +34,8 @@ importers: specifier: ^0.1.0 version: 0.1.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@3.25.76) '@blockrun/router-core': - specifier: https://codeload.github.com/BlockRunAI/router-core/tar.gz/d4308049348e11e17ed08a254676a34949be80f9 - version: https://codeload.github.com/BlockRunAI/router-core/tar.gz/d4308049348e11e17ed08a254676a34949be80f9 + specifier: https://codeload.github.com/BlockRunAI/router-core/tar.gz/18bf4abc7e34599e51595b90703c385f53d4f4a6 + version: https://codeload.github.com/BlockRunAI/router-core/tar.gz/18bf4abc7e34599e51595b90703c385f53d4f4a6 '@eslint/js': specifier: ^9.39.4 version: 9.39.4 @@ -73,8 +73,8 @@ packages: '@blockrun/core@0.1.1': resolution: {integrity: sha512-mXeF/XCFc9z+2Mxq4zGrhrFkEjpYprnuHOp20naE6YhouBu2SwHuaWaYec4gb7yJ+uU8S7aqUf6UIXkD5xDTvA==} - '@blockrun/router-core@https://codeload.github.com/BlockRunAI/router-core/tar.gz/d4308049348e11e17ed08a254676a34949be80f9': - resolution: {tarball: https://codeload.github.com/BlockRunAI/router-core/tar.gz/d4308049348e11e17ed08a254676a34949be80f9} + '@blockrun/router-core@https://codeload.github.com/BlockRunAI/router-core/tar.gz/18bf4abc7e34599e51595b90703c385f53d4f4a6': + resolution: {tarball: https://codeload.github.com/BlockRunAI/router-core/tar.gz/18bf4abc7e34599e51595b90703c385f53d4f4a6} version: 0.1.0 engines: {node: '>=20.19.0'} @@ -1975,7 +1975,7 @@ snapshots: - utf-8-validate - zod - '@blockrun/router-core@https://codeload.github.com/BlockRunAI/router-core/tar.gz/d4308049348e11e17ed08a254676a34949be80f9': {} + '@blockrun/router-core@https://codeload.github.com/BlockRunAI/router-core/tar.gz/18bf4abc7e34599e51595b90703c385f53d4f4a6': {} '@esbuild/aix-ppc64@0.21.5': optional: true diff --git a/src/version.ts b/src/version.ts index b9578d6..b49820b 100644 --- a/src/version.ts +++ b/src/version.ts @@ -10,7 +10,7 @@ * "SDK_VERSION matches package.json" case in test/unit/version-consistency.test.ts * fails the build if a release bumps the package and forgets this file. */ -export const SDK_VERSION = "3.13.1"; +export const SDK_VERSION = "3.13.2"; /** Client identification sent on every gateway request. */ export const USER_AGENT = `blockrun-ts/${SDK_VERSION}`; diff --git a/test/unit/smart-chat-fallbacks.test.ts b/test/unit/smart-chat-fallbacks.test.ts index d730679..cb38f7e 100644 --- a/test/unit/smart-chat-fallbacks.test.ts +++ b/test/unit/smart-chat-fallbacks.test.ts @@ -51,14 +51,19 @@ describe("Router Core SDK integration", () => { // free/* namespace; the gateway serves those models as nvidia/*. The // adapter must map — dropping them silently converts eco to a paid // profile (the v3.11.0 regression this guards against). + // + // The vehicle used to be free/deepseek-v4-flash; router-core dropped it + // from this chain in 18bf4ab after NVIDIA EOL'd it (410, 2026-08-12), so + // the mapping is now exercised through the gpt-oss pair that heads the + // chain. The assertion is about the namespace mapping, not the model. const pricing = routerPricing(); - pricing.set("nvidia/deepseek-v4-flash", { inputPrice: 0, outputPrice: 0 }); + pricing.set("nvidia/gpt-oss-120b", { inputPrice: 0, outputPrice: 0 }); const decision = routeWithCatalog("Name the capital of France. One word.", undefined, 50, pricing, { routingProfile: "eco", }); - expect(decision.model).toBe("nvidia/deepseek-v4-flash"); + expect(decision.model).toBe("nvidia/gpt-oss-120b"); expect(decision.costEstimate).toBe(0); // free models settle at $0 — no payment floor expect(decision.savings).toBe(1); });