mirror of
https://github.com/getpaseo/paseo.git
synced 2026-10-25 18:52:39 +00:00
Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bbb2b40855 | ||
|
|
c062278595 | ||
|
|
b9cdfb6528 | ||
|
|
1361da5ef6 | ||
|
|
3377ffed29 |
@@ -1,5 +1,11 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 0.7.1 - 2026-09-01
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Added Claude Fable 5.1 with a 1M context window ([#4179](https://github.com/getpaseo/paseo/pull/4179))
|
||||||
|
|
||||||
## 0.7.0 - 2026-08-31
|
## 0.7.0 - 2026-08-31
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
Added
|
||||||
|
- Added Claude Fable 5.1 with a 1M context window
|
||||||
|
|
||||||
|
Full notes: https://paseo.sh/changelog
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
Added
|
||||||
|
- Added Claude Fable 5.1 with a 1M context window
|
||||||
|
|
||||||
|
Full notes: https://paseo.sh/changelog
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
Added
|
||||||
|
- Added Claude Fable 5.1 with a 1M context window
|
||||||
|
|
||||||
|
Full notes: https://paseo.sh/changelog
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
Added
|
||||||
|
- Added Claude Fable 5.1 with a 1M context window
|
||||||
|
|
||||||
|
Full notes: https://paseo.sh/changelog
|
||||||
+1
-1
@@ -1 +1 @@
|
|||||||
sha256-YiXz9rVJxzhtKdvYsg5UhVXTaetvH0sdJ/8dyfvSGQQ=
|
sha256-HFYBrCP62r6ZofazBIGSOnMhk8IIEmv+TFJMpqTIJQ8=
|
||||||
|
|||||||
Generated
+27
-27
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "paseo",
|
"name": "paseo",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "paseo",
|
"name": "paseo",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"workspaces": [
|
"workspaces": [
|
||||||
@@ -36298,7 +36298,7 @@
|
|||||||
},
|
},
|
||||||
"packages/app": {
|
"packages/app": {
|
||||||
"name": "@getpaseo/app",
|
"name": "@getpaseo/app",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@codemirror/commands": "6.10.4",
|
"@codemirror/commands": "6.10.4",
|
||||||
"@codemirror/language": "6.12.4",
|
"@codemirror/language": "6.12.4",
|
||||||
@@ -37363,12 +37363,12 @@
|
|||||||
},
|
},
|
||||||
"packages/cli": {
|
"packages/cli": {
|
||||||
"name": "@getpaseo/cli",
|
"name": "@getpaseo/cli",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@clack/prompts": "^1.0.0",
|
"@clack/prompts": "^1.0.0",
|
||||||
"@getpaseo/client": "0.7.0",
|
"@getpaseo/client": "0.7.1",
|
||||||
"@getpaseo/protocol": "0.7.0",
|
"@getpaseo/protocol": "0.7.1",
|
||||||
"@getpaseo/server": "0.7.0",
|
"@getpaseo/server": "0.7.1",
|
||||||
"chalk": "^5.3.0",
|
"chalk": "^5.3.0",
|
||||||
"commander": "^12.0.0",
|
"commander": "^12.0.0",
|
||||||
"mime-types": "^2.1.35",
|
"mime-types": "^2.1.35",
|
||||||
@@ -37615,10 +37615,10 @@
|
|||||||
},
|
},
|
||||||
"packages/client": {
|
"packages/client": {
|
||||||
"name": "@getpaseo/client",
|
"name": "@getpaseo/client",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@getpaseo/protocol": "0.7.0",
|
"@getpaseo/protocol": "0.7.1",
|
||||||
"@getpaseo/relay": "0.7.0",
|
"@getpaseo/relay": "0.7.1",
|
||||||
"zod": "^4.4.3"
|
"zod": "^4.4.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@@ -37629,7 +37629,7 @@
|
|||||||
},
|
},
|
||||||
"packages/desktop": {
|
"packages/desktop": {
|
||||||
"name": "@getpaseo/desktop",
|
"name": "@getpaseo/desktop",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@getpaseo/cli": "*",
|
"@getpaseo/cli": "*",
|
||||||
@@ -37872,7 +37872,7 @@
|
|||||||
},
|
},
|
||||||
"packages/expo-two-way-audio": {
|
"packages/expo-two-way-audio": {
|
||||||
"name": "@getpaseo/expo-two-way-audio",
|
"name": "@getpaseo/expo-two-way-audio",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/jest": "^29.5.14",
|
"@types/jest": "^29.5.14",
|
||||||
@@ -38768,7 +38768,7 @@
|
|||||||
},
|
},
|
||||||
"packages/highlight": {
|
"packages/highlight": {
|
||||||
"name": "@getpaseo/highlight",
|
"name": "@getpaseo/highlight",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@codemirror/language": "6.12.4",
|
"@codemirror/language": "6.12.4",
|
||||||
"@codemirror/legacy-modes": "^6.5.3",
|
"@codemirror/legacy-modes": "^6.5.3",
|
||||||
@@ -38797,13 +38797,13 @@
|
|||||||
},
|
},
|
||||||
"packages/plugin": {
|
"packages/plugin": {
|
||||||
"name": "@getpaseo/plugin",
|
"name": "@getpaseo/plugin",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"use-sync-external-store": "^1.6.0"
|
"use-sync-external-store": "^1.6.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@getpaseo/client": "0.7.0",
|
"@getpaseo/client": "0.7.1",
|
||||||
"@getpaseo/protocol": "0.7.0",
|
"@getpaseo/protocol": "0.7.1",
|
||||||
"@types/node": "^20.9.0",
|
"@types/node": "^20.9.0",
|
||||||
"@types/react": "~19.2.0",
|
"@types/react": "~19.2.0",
|
||||||
"react": "19.1.0",
|
"react": "19.1.0",
|
||||||
@@ -38812,15 +38812,15 @@
|
|||||||
"zod": "^4.4.3"
|
"zod": "^4.4.3"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@getpaseo/client": "0.7.0",
|
"@getpaseo/client": "0.7.1",
|
||||||
"@getpaseo/protocol": "0.7.0",
|
"@getpaseo/protocol": "0.7.1",
|
||||||
"react": "19.1.0",
|
"react": "19.1.0",
|
||||||
"zod": "^4.4.3"
|
"zod": "^4.4.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"packages/protocol": {
|
"packages/protocol": {
|
||||||
"name": "@getpaseo/protocol",
|
"name": "@getpaseo/protocol",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"zod": "^4.4.3"
|
"zod": "^4.4.3"
|
||||||
},
|
},
|
||||||
@@ -38833,7 +38833,7 @@
|
|||||||
},
|
},
|
||||||
"packages/relay": {
|
"packages/relay": {
|
||||||
"name": "@getpaseo/relay",
|
"name": "@getpaseo/relay",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"base64-js": "^1.5.1",
|
"base64-js": "^1.5.1",
|
||||||
"tweetnacl": "^1.0.3",
|
"tweetnacl": "^1.0.3",
|
||||||
@@ -39051,17 +39051,17 @@
|
|||||||
},
|
},
|
||||||
"packages/server": {
|
"packages/server": {
|
||||||
"name": "@getpaseo/server",
|
"name": "@getpaseo/server",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@agentclientprotocol/sdk": "^0.17.1",
|
"@agentclientprotocol/sdk": "^0.17.1",
|
||||||
"@anthropic-ai/claude-agent-sdk": "0.3.246",
|
"@anthropic-ai/claude-agent-sdk": "0.3.246",
|
||||||
"@anthropic-ai/sdk": "^0.104.2",
|
"@anthropic-ai/sdk": "^0.104.2",
|
||||||
"@babel/parser": "^7.29.8",
|
"@babel/parser": "^7.29.8",
|
||||||
"@getpaseo/client": "0.7.0",
|
"@getpaseo/client": "0.7.1",
|
||||||
"@getpaseo/highlight": "0.7.0",
|
"@getpaseo/highlight": "0.7.1",
|
||||||
"@getpaseo/plugin": "0.7.0",
|
"@getpaseo/plugin": "0.7.1",
|
||||||
"@getpaseo/protocol": "0.7.0",
|
"@getpaseo/protocol": "0.7.1",
|
||||||
"@getpaseo/relay": "0.7.0",
|
"@getpaseo/relay": "0.7.1",
|
||||||
"@isaacs/ttlcache": "^2.1.4",
|
"@isaacs/ttlcache": "^2.1.4",
|
||||||
"@modelcontextprotocol/sdk": "1.29.0",
|
"@modelcontextprotocol/sdk": "1.29.0",
|
||||||
"@opencode-ai/sdk": "1.14.46",
|
"@opencode-ai/sdk": "1.14.46",
|
||||||
@@ -39985,7 +39985,7 @@
|
|||||||
},
|
},
|
||||||
"packages/website": {
|
"packages/website": {
|
||||||
"name": "@getpaseo/website",
|
"name": "@getpaseo/website",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@cloudflare/vite-plugin": "^1.29.1",
|
"@cloudflare/vite-plugin": "^1.29.1",
|
||||||
"@cloudflare/workers-types": "^4.20260317.1",
|
"@cloudflare/workers-types": "^4.20260317.1",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "paseo",
|
"name": "paseo",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"description": "Paseo: voice-controlled development environment for local AI coding agents",
|
"description": "Paseo: voice-controlled development environment for local AI coding agents",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@getpaseo/app",
|
"name": "@getpaseo/app",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"main": "index.ts",
|
"main": "index.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@getpaseo/cli",
|
"name": "@getpaseo/cli",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"description": "Paseo CLI - control your AI coding agents from the command line",
|
"description": "Paseo CLI - control your AI coding agents from the command line",
|
||||||
"bin": {
|
"bin": {
|
||||||
"paseo": "bin/paseo"
|
"paseo": "bin/paseo"
|
||||||
@@ -28,9 +28,9 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@clack/prompts": "^1.0.0",
|
"@clack/prompts": "^1.0.0",
|
||||||
"@getpaseo/client": "0.7.0",
|
"@getpaseo/client": "0.7.1",
|
||||||
"@getpaseo/protocol": "0.7.0",
|
"@getpaseo/protocol": "0.7.1",
|
||||||
"@getpaseo/server": "0.7.0",
|
"@getpaseo/server": "0.7.1",
|
||||||
"chalk": "^5.3.0",
|
"chalk": "^5.3.0",
|
||||||
"commander": "^12.0.0",
|
"commander": "^12.0.0",
|
||||||
"mime-types": "^2.1.35",
|
"mime-types": "^2.1.35",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@getpaseo/client",
|
"name": "@getpaseo/client",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"description": "Paseo client SDK package",
|
"description": "Paseo client SDK package",
|
||||||
"files": [
|
"files": [
|
||||||
"dist",
|
"dist",
|
||||||
@@ -39,8 +39,8 @@
|
|||||||
"test": "vitest run"
|
"test": "vitest run"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@getpaseo/protocol": "0.7.0",
|
"@getpaseo/protocol": "0.7.1",
|
||||||
"@getpaseo/relay": "0.7.0",
|
"@getpaseo/relay": "0.7.1",
|
||||||
"zod": "^4.4.3"
|
"zod": "^4.4.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@getpaseo/desktop",
|
"name": "@getpaseo/desktop",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"description": "Paseo desktop app (Electron wrapper)",
|
"description": "Paseo desktop app (Electron wrapper)",
|
||||||
"homepage": "https://paseo.sh",
|
"homepage": "https://paseo.sh",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@getpaseo/expo-two-way-audio",
|
"name": "@getpaseo/expo-two-way-audio",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"description": "Native module for two way audio streaming",
|
"description": "Native module for two way audio streaming",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"ExpoTwoWayAudio",
|
"ExpoTwoWayAudio",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@getpaseo/highlight",
|
"name": "@getpaseo/highlight",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"files": [
|
"files": [
|
||||||
"dist",
|
"dist",
|
||||||
"!dist/**/*.map",
|
"!dist/**/*.map",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@getpaseo/plugin",
|
"name": "@getpaseo/plugin",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"description": "Paseo plugin SDK package",
|
"description": "Paseo plugin SDK package",
|
||||||
"files": [
|
"files": [
|
||||||
"dist",
|
"dist",
|
||||||
@@ -44,8 +44,8 @@
|
|||||||
"use-sync-external-store": "^1.6.0"
|
"use-sync-external-store": "^1.6.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@getpaseo/client": "0.7.0",
|
"@getpaseo/client": "0.7.1",
|
||||||
"@getpaseo/protocol": "0.7.0",
|
"@getpaseo/protocol": "0.7.1",
|
||||||
"@types/node": "^20.9.0",
|
"@types/node": "^20.9.0",
|
||||||
"@types/react": "~19.2.0",
|
"@types/react": "~19.2.0",
|
||||||
"react": "19.1.0",
|
"react": "19.1.0",
|
||||||
@@ -54,8 +54,8 @@
|
|||||||
"zod": "^4.4.3"
|
"zod": "^4.4.3"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@getpaseo/client": "0.7.0",
|
"@getpaseo/client": "0.7.1",
|
||||||
"@getpaseo/protocol": "0.7.0",
|
"@getpaseo/protocol": "0.7.1",
|
||||||
"react": "19.1.0",
|
"react": "19.1.0",
|
||||||
"zod": "^4.4.3"
|
"zod": "^4.4.3"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@getpaseo/protocol",
|
"name": "@getpaseo/protocol",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"description": "Paseo shared protocol schemas and wire types",
|
"description": "Paseo shared protocol schemas and wire types",
|
||||||
"files": [
|
"files": [
|
||||||
"dist",
|
"dist",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@getpaseo/relay",
|
"name": "@getpaseo/relay",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"description": "Paseo relay for bridging daemon and client connections",
|
"description": "Paseo relay for bridging daemon and client connections",
|
||||||
"files": [
|
"files": [
|
||||||
"dist",
|
"dist",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@getpaseo/server",
|
"name": "@getpaseo/server",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"description": "Paseo backend server",
|
"description": "Paseo backend server",
|
||||||
"files": [
|
"files": [
|
||||||
"dist/server",
|
"dist/server",
|
||||||
@@ -72,11 +72,11 @@
|
|||||||
"@anthropic-ai/claude-agent-sdk": "0.3.246",
|
"@anthropic-ai/claude-agent-sdk": "0.3.246",
|
||||||
"@anthropic-ai/sdk": "^0.104.2",
|
"@anthropic-ai/sdk": "^0.104.2",
|
||||||
"@babel/parser": "^7.29.8",
|
"@babel/parser": "^7.29.8",
|
||||||
"@getpaseo/client": "0.7.0",
|
"@getpaseo/client": "0.7.1",
|
||||||
"@getpaseo/highlight": "0.7.0",
|
"@getpaseo/highlight": "0.7.1",
|
||||||
"@getpaseo/plugin": "0.7.0",
|
"@getpaseo/plugin": "0.7.1",
|
||||||
"@getpaseo/protocol": "0.7.0",
|
"@getpaseo/protocol": "0.7.1",
|
||||||
"@getpaseo/relay": "0.7.0",
|
"@getpaseo/relay": "0.7.1",
|
||||||
"@isaacs/ttlcache": "^2.1.4",
|
"@isaacs/ttlcache": "^2.1.4",
|
||||||
"@modelcontextprotocol/sdk": "1.29.0",
|
"@modelcontextprotocol/sdk": "1.29.0",
|
||||||
"@opencode-ai/sdk": "1.14.46",
|
"@opencode-ai/sdk": "1.14.46",
|
||||||
|
|||||||
@@ -425,6 +425,7 @@ describe("ClaudeAgentClient.fetchCatalog", () => {
|
|||||||
|
|
||||||
expect(models.map((m) => m.id)).toEqual([
|
expect(models.map((m) => m.id)).toEqual([
|
||||||
"claude-opus-5",
|
"claude-opus-5",
|
||||||
|
"claude-fable-5-1",
|
||||||
"claude-fable-5",
|
"claude-fable-5",
|
||||||
"claude-fable-5[1m]",
|
"claude-fable-5[1m]",
|
||||||
"claude-opus-4-8[1m]",
|
"claude-opus-4-8[1m]",
|
||||||
@@ -495,6 +496,7 @@ describe("ClaudeAgentClient.fetchCatalog", () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
expect(getThinkingIds("claude-opus-5")).toContain("ultracode");
|
expect(getThinkingIds("claude-opus-5")).toContain("ultracode");
|
||||||
|
expect(getThinkingIds("claude-fable-5-1")).toContain("ultracode");
|
||||||
expect(getThinkingIds("claude-fable-5")).toContain("ultracode");
|
expect(getThinkingIds("claude-fable-5")).toContain("ultracode");
|
||||||
expect(getThinkingIds("claude-opus-4-8[1m]")).toContain("ultracode");
|
expect(getThinkingIds("claude-opus-4-8[1m]")).toContain("ultracode");
|
||||||
expect(getThinkingIds("claude-opus-4-8")).toContain("ultracode");
|
expect(getThinkingIds("claude-opus-4-8")).toContain("ultracode");
|
||||||
|
|||||||
@@ -45,12 +45,19 @@ export const CLAUDE_MODEL_MANIFEST = [
|
|||||||
supportsThinkingDisabled: true,
|
supportsThinkingDisabled: true,
|
||||||
supportsFastMode: true,
|
supportsFastMode: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: "claude-fable-5-1",
|
||||||
|
label: "Fable 5.1",
|
||||||
|
description: "Fable 5.1 · Most powerful model",
|
||||||
|
contextWindowMaxTokens: 1_000_000,
|
||||||
|
effortLevels: CLAUDE_EFFORT_LEVELS.xhigh,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: "claude-fable-5",
|
id: "claude-fable-5",
|
||||||
// COMPAT(claudeFable5OneMillionId): added in v0.3.0, remove after 2027-02-06 once pre-v0.3.0 app preferences are outside support.
|
// COMPAT(claudeFable5OneMillionId): added in v0.3.0, remove after 2027-02-06 once pre-v0.3.0 app preferences are outside support.
|
||||||
aliases: ["claude-fable-5[1m]"],
|
aliases: ["claude-fable-5[1m]"],
|
||||||
label: "Fable 5",
|
label: "Fable 5",
|
||||||
description: "Fable 5 · Most powerful model",
|
description: "Fable 5 · Previous release",
|
||||||
minimumClaudeCodeVersion: "2.1.169",
|
minimumClaudeCodeVersion: "2.1.169",
|
||||||
contextWindowMaxTokens: 1_000_000,
|
contextWindowMaxTokens: 1_000_000,
|
||||||
effortLevels: CLAUDE_EFFORT_LEVELS.xhigh,
|
effortLevels: CLAUDE_EFFORT_LEVELS.xhigh,
|
||||||
@@ -326,7 +333,7 @@ export function normalizeClaudeManifestModelId(value: string | null | undefined)
|
|||||||
}
|
}
|
||||||
|
|
||||||
const runtimeMatch = trimmed.match(
|
const runtimeMatch = trimmed.match(
|
||||||
/^(?:claude[-_ ])?(opus|sonnet|haiku)[-_ ]+(\d+)[-.](\d+)(?:\[1m\])?(?:[-_ ]+\d{8})?(?:\[1m\])?$/i,
|
/^(?:claude[-_ ])?(fable|opus|sonnet|haiku)[-_ ]+(\d+)[-.](\d+)(?:\[1m\])?(?:[-_ ]+\d{8})?(?:\[1m\])?$/i,
|
||||||
);
|
);
|
||||||
if (!runtimeMatch) {
|
if (!runtimeMatch) {
|
||||||
return null;
|
return null;
|
||||||
@@ -371,7 +378,7 @@ export function normalizeClaudeRuntimeModelId(value: string | null | undefined):
|
|||||||
}
|
}
|
||||||
|
|
||||||
const runtimeMatch = trimmed.match(
|
const runtimeMatch = trimmed.match(
|
||||||
/claude[-_ ](opus|sonnet|haiku)[-_ ]+(\d+)[-.](\d+)(\[1m\])?/i,
|
/claude[-_ ](fable|opus|sonnet|haiku)[-_ ]+(\d+)[-.](\d+)(\[1m\])?/i,
|
||||||
);
|
);
|
||||||
if (!runtimeMatch) {
|
if (!runtimeMatch) {
|
||||||
return null;
|
return null;
|
||||||
@@ -417,6 +424,14 @@ function normalizeMajorMinorClaudeModelId(
|
|||||||
): string | null {
|
): string | null {
|
||||||
const family = familyValue.toLowerCase();
|
const family = familyValue.toLowerCase();
|
||||||
const suffix = hasOneMillionContext ? "[1m]" : "";
|
const suffix = hasOneMillionContext ? "[1m]" : "";
|
||||||
const candidate = `claude-${family}-${major}-${minor}${suffix}`;
|
const candidates = [
|
||||||
return isClaudeManifestModelId(candidate) ? candidate : null;
|
`claude-${family}-${major}-${minor}${suffix}`,
|
||||||
|
`claude-${family}-${major}-${minor}`,
|
||||||
|
];
|
||||||
|
for (const candidate of candidates) {
|
||||||
|
if (isClaudeManifestModelId(candidate)) {
|
||||||
|
return candidate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ describe("getClaudeModels", () => {
|
|||||||
const models = getClaudeModels();
|
const models = getClaudeModels();
|
||||||
expect(models.map((m) => m.id)).toEqual([
|
expect(models.map((m) => m.id)).toEqual([
|
||||||
"claude-opus-5",
|
"claude-opus-5",
|
||||||
|
"claude-fable-5-1",
|
||||||
"claude-fable-5",
|
"claude-fable-5",
|
||||||
"claude-fable-5[1m]",
|
"claude-fable-5[1m]",
|
||||||
"claude-opus-4-8[1m]",
|
"claude-opus-4-8[1m]",
|
||||||
@@ -82,6 +83,7 @@ describe("getClaudeModels", () => {
|
|||||||
expect(contextWindows).toEqual(
|
expect(contextWindows).toEqual(
|
||||||
new Map([
|
new Map([
|
||||||
["claude-opus-5", 1_000_000],
|
["claude-opus-5", 1_000_000],
|
||||||
|
["claude-fable-5-1", 1_000_000],
|
||||||
["claude-fable-5", 1_000_000],
|
["claude-fable-5", 1_000_000],
|
||||||
["claude-fable-5[1m]", 1_000_000],
|
["claude-fable-5[1m]", 1_000_000],
|
||||||
["claude-opus-4-8[1m]", 1_000_000],
|
["claude-opus-4-8[1m]", 1_000_000],
|
||||||
@@ -160,6 +162,9 @@ describe("getClaudeModels", () => {
|
|||||||
expect(models.get("claude-fable-5")?.thinkingOptions?.map((option) => option.id)).not.toContain(
|
expect(models.get("claude-fable-5")?.thinkingOptions?.map((option) => option.id)).not.toContain(
|
||||||
CLAUDE_DISABLED_THINKING_OPTION_ID,
|
CLAUDE_DISABLED_THINKING_OPTION_ID,
|
||||||
);
|
);
|
||||||
|
expect(
|
||||||
|
models.get("claude-fable-5-1")?.thinkingOptions?.map((option) => option.id),
|
||||||
|
).not.toContain(CLAUDE_DISABLED_THINKING_OPTION_ID);
|
||||||
expect(models.get("claude-haiku-4-5")?.thinkingOptions).toBeUndefined();
|
expect(models.get("claude-haiku-4-5")?.thinkingOptions).toBeUndefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -170,6 +175,7 @@ describe("getClaudeModels", () => {
|
|||||||
["claude-sonnet-5[1m]", true, "high"],
|
["claude-sonnet-5[1m]", true, "high"],
|
||||||
["claude-sonnet-5-20260101", true, "high"],
|
["claude-sonnet-5-20260101", true, "high"],
|
||||||
["claude-fable-5", false, "high"],
|
["claude-fable-5", false, "high"],
|
||||||
|
["claude-fable-5-1", false, "high"],
|
||||||
["claude-haiku-4-5", false, undefined],
|
["claude-haiku-4-5", false, undefined],
|
||||||
["openrouter/anthropic/claude-opus-4-8", false, undefined],
|
["openrouter/anthropic/claude-opus-4-8", false, undefined],
|
||||||
[null, false, undefined],
|
[null, false, undefined],
|
||||||
@@ -458,7 +464,7 @@ describe("Claude Opus 5 catalog", () => {
|
|||||||
describe("Claude Fable 5 catalog", () => {
|
describe("Claude Fable 5 catalog", () => {
|
||||||
it("offers one selectable Fable 5 entry and a compatibility entry for old apps", () => {
|
it("offers one selectable Fable 5 entry and a compatibility entry for old apps", () => {
|
||||||
const fable5Models = getClaudeModels()
|
const fable5Models = getClaudeModels()
|
||||||
.filter((model) => model.id.startsWith("claude-fable-5"))
|
.filter((model) => model.id === "claude-fable-5" || model.id === "claude-fable-5[1m]")
|
||||||
.map(({ id, aliases, isSelectable, label, contextWindowMaxTokens }) => ({
|
.map(({ id, aliases, isSelectable, label, contextWindowMaxTokens }) => ({
|
||||||
id,
|
id,
|
||||||
aliases,
|
aliases,
|
||||||
@@ -491,6 +497,24 @@ describe("Claude Fable 5 catalog", () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("Claude Fable 5.1 catalog", () => {
|
||||||
|
it("offers one Fable 5.1 entry with a 1M context window", () => {
|
||||||
|
const fable51Models = getClaudeModels()
|
||||||
|
.filter((model) => model.id.startsWith("claude-fable-5-1"))
|
||||||
|
.map(({ id, label, contextWindowMaxTokens }) => ({ id, label, contextWindowMaxTokens }));
|
||||||
|
|
||||||
|
expect(fable51Models).toEqual([
|
||||||
|
{ id: "claude-fable-5-1", label: "Fable 5.1", contextWindowMaxTokens: 1_000_000 },
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("resolves suffixed and dated Fable 5.1 IDs to the catalog entry", () => {
|
||||||
|
expect(findClaudeModel("claude-fable-5-1[1m]")?.id).toBe("claude-fable-5-1");
|
||||||
|
expect(findClaudeModel("claude-fable-5-1-20260901")?.id).toBe("claude-fable-5-1");
|
||||||
|
expect(findClaudeModel("claude-fable-5-1-20260901[1m]")?.id).toBe("claude-fable-5-1");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe("claudeManifestModelSupportsFastMode", () => {
|
describe("claudeManifestModelSupportsFastMode", () => {
|
||||||
it("keeps fast mode strict to first-party manifest model IDs", () => {
|
it("keeps fast mode strict to first-party manifest model IDs", () => {
|
||||||
expect(normalizeClaudeManifestModelId("openrouter/anthropic/claude-opus-4-8")).toBeNull();
|
expect(normalizeClaudeManifestModelId("openrouter/anthropic/claude-opus-4-8")).toBeNull();
|
||||||
@@ -502,5 +526,6 @@ describe("claudeManifestModelSupportsFastMode", () => {
|
|||||||
expect(claudeManifestModelSupportsFastMode("claude-opus-5")).toBe(true);
|
expect(claudeManifestModelSupportsFastMode("claude-opus-5")).toBe(true);
|
||||||
expect(claudeManifestModelSupportsFastMode("claude-sonnet-5")).toBe(false);
|
expect(claudeManifestModelSupportsFastMode("claude-sonnet-5")).toBe(false);
|
||||||
expect(claudeManifestModelSupportsFastMode("claude-fable-5")).toBe(false);
|
expect(claudeManifestModelSupportsFastMode("claude-fable-5")).toBe(false);
|
||||||
|
expect(claudeManifestModelSupportsFastMode("claude-fable-5-1")).toBe(false);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@getpaseo/website",
|
"name": "@getpaseo/website",
|
||||||
"version": "0.7.0",
|
"version": "0.7.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
Reference in New Issue
Block a user