From f04866207bcc638f090f0c9a42a6ee3a621a7075 Mon Sep 17 00:00:00 2001 From: musistudio Date: Wed, 1 Oct 2025 08:54:13 +0800 Subject: [PATCH] release v1.0.52 --- package.json | 4 +-- pnpm-lock.yaml | 70 +++++++++++++++++++-------------------- src/agents/image.agent.ts | 4 +-- 3 files changed, 39 insertions(+), 39 deletions(-) diff --git a/package.json b/package.json index b1326bf..c5f3429 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@musistudio/claude-code-router", - "version": "1.0.51", + "version": "1.0.52", "description": "Use Claude Code without an Anthropics account and route it to another LLM provider", "bin": { "ccr": "dist/cli.js" @@ -20,7 +20,7 @@ "license": "MIT", "dependencies": { "@fastify/static": "^8.2.0", - "@musistudio/llms": "^1.0.33", + "@musistudio/llms": "^1.0.34", "dotenv": "^16.4.7", "find-process": "^2.0.0", "json5": "^2.2.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 32478c4..90a7f23 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: specifier: ^8.2.0 version: 8.2.0 '@musistudio/llms': - specifier: ^1.0.33 - version: 1.0.33(ws@8.18.3) + specifier: ^1.0.34 + version: 1.0.34(ws@8.18.3) dotenv: specifier: ^16.4.7 version: 16.6.1 @@ -244,8 +244,8 @@ packages: '@fastify/static@8.2.0': resolution: {integrity: sha512-PejC/DtT7p1yo3p+W7LiUtLMsV8fEvxAK15sozHy9t8kwo5r0uLYmhV/inURmGz1SkHZFz/8CNtHLPyhKcx4SQ==} - '@google/genai@1.16.0': - resolution: {integrity: sha512-hdTYu39QgDFxv+FB6BK2zi4UIJGWhx2iPc0pHQ0C5Q/RCi+m+4gsryIzTGO+riqWcUA8/WGYp6hpqckdOBNysw==} + '@google/genai@1.21.0': + resolution: {integrity: sha512-k47DECR8BF9z7IJxQd3reKuH2eUnOH5NlJWSe+CKM6nbXx+wH3hmtWQxUQR9M8gzWW1EvFuRVgjQssEIreNZsw==} engines: {node: '>=20.0.0'} peerDependencies: '@modelcontextprotocol/sdk': ^1.11.4 @@ -269,8 +269,8 @@ packages: resolution: {integrity: sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==} engines: {node: '>=8'} - '@musistudio/llms@1.0.33': - resolution: {integrity: sha512-2xQIOlbBFFjXRl7LRKb6kteP0ldWTcOzeMD0ZgCXJrUhjI7lzGwKuPW1qiqDVvakviRm1FEpPLMve5n3vkXJXg==} + '@musistudio/llms@1.0.34': + resolution: {integrity: sha512-laQ4tZ4+8VFpGizv4S4sUUk71hFyJzBhWsRvU5ZQDG2pHd/DmRYwP7lh7BrBwSuGp5G9pV413cMkcl4b+k7EdQ==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -376,8 +376,8 @@ packages: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} - debug@4.4.1: - resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -490,8 +490,8 @@ packages: resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} engines: {node: '>=14'} - gaxios@7.1.1: - resolution: {integrity: sha512-Odju3uBUJyVCkW64nLD4wKLhbh93bh6vIg/ZIXkWiLPBrdgtc65+tls/qml+un3pr6JqYVFDZbbmLDQT68rTOQ==} + gaxios@7.1.2: + resolution: {integrity: sha512-/Szrn8nr+2TsQT1Gp8iIe/BEytJmbyfrbFh419DfGQSkEgNEhbPi7JRJuughjkTzPWgU9gBQf5AVu3DbHt0OXA==} engines: {node: '>=18'} gcp-metadata@6.1.1: @@ -515,8 +515,8 @@ packages: engines: {node: 20 || >=22} hasBin: true - google-auth-library@10.3.0: - resolution: {integrity: sha512-ylSE3RlCRZfZB56PFJSfUCuiuPq83Fx8hqu1KPWGK8FVdSaxlp/qkeMMX/DT/18xkwXIHvXEXkZsljRwfrdEfQ==} + google-auth-library@10.4.0: + resolution: {integrity: sha512-CmIrSy1bqMQUsPmA9+hcSbAXL80cFhu40cGMUjCaLpNKVzzvi+0uAHq8GNZxkoGYIsTX4ZQ7e4aInAqWxgn4fg==} engines: {node: '>=18'} google-auth-library@9.15.1: @@ -615,8 +615,8 @@ packages: engines: {node: '>=6'} hasBin: true - jsonrepair@3.13.0: - resolution: {integrity: sha512-5YRzlAQ7tuzV1nAJu3LvDlrKtBFIALHN2+a+I1MGJCt3ldRDBF/bZuvIPzae8Epot6KBXd0awRZZcuoeAsZ/mw==} + jsonrepair@3.13.1: + resolution: {integrity: sha512-WJeiE0jGfxYmtLwBTEk8+y/mYcaleyLXWaqp5bJu0/ZTSeG0KQq/wWQ8pmnkKenEdN6pdnn6QtcoSUkbqDHWNw==} hasBin: true jwa@2.0.1: @@ -695,8 +695,8 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - openai@5.16.0: - resolution: {integrity: sha512-hoEH8ZNvg1HXjU9mp88L/ZH8O082Z8r6FHCXGiWAzVRrEv443aI57qhch4snu07yQydj+AUAWLenAiBXhu89Tw==} + openai@5.23.2: + resolution: {integrity: sha512-MQBzmTulj+MM5O8SKEk/gL8a7s5mktS9zUtAkU257WjvobGc9nKcBuVwjyEEcb9SI8a8Y2G/mzn3vm9n1Jlleg==} hasBin: true peerDependencies: ws: ^8.18.0 @@ -925,8 +925,8 @@ packages: undici-types@7.10.0: resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==} - undici@7.15.0: - resolution: {integrity: sha512-7oZJCPvvMvTd0OlqWsIxTuItTpJBpU1tcbVl24FMn3xt3+VSunwUasmfPJRE57oNO1KsZ4PgA1xTdAX4hq8NyQ==} + undici@7.16.0: + resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==} engines: {node: '>=20.18.1'} uuid@11.1.0: @@ -1108,7 +1108,7 @@ snapshots: fastq: 1.19.1 glob: 11.0.3 - '@google/genai@1.16.0': + '@google/genai@1.21.0': dependencies: google-auth-library: 9.15.1 ws: 8.18.3 @@ -1135,18 +1135,18 @@ snapshots: '@lukeed/ms@2.0.2': {} - '@musistudio/llms@1.0.33(ws@8.18.3)': + '@musistudio/llms@1.0.34(ws@8.18.3)': dependencies: '@anthropic-ai/sdk': 0.54.0 '@fastify/cors': 11.1.0 - '@google/genai': 1.16.0 + '@google/genai': 1.21.0 dotenv: 16.6.1 fastify: 5.5.0 - google-auth-library: 10.3.0 + google-auth-library: 10.4.0 json5: 2.2.3 - jsonrepair: 3.13.0 - openai: 5.16.0(ws@8.18.3) - undici: 7.15.0 + jsonrepair: 3.13.1 + openai: 5.23.2(ws@8.18.3) + undici: 7.16.0 uuid: 11.1.0 transitivePeerDependencies: - '@modelcontextprotocol/sdk' @@ -1250,7 +1250,7 @@ snapshots: data-uri-to-buffer@4.0.1: {} - debug@4.4.1: + debug@4.4.3: dependencies: ms: 2.1.3 @@ -1413,7 +1413,7 @@ snapshots: - encoding - supports-color - gaxios@7.1.1: + gaxios@7.1.2: dependencies: extend: 3.0.2 https-proxy-agent: 7.0.6 @@ -1432,7 +1432,7 @@ snapshots: gcp-metadata@7.0.1: dependencies: - gaxios: 7.1.1 + gaxios: 7.1.2 google-logging-utils: 1.1.1 json-bigint: 1.0.0 transitivePeerDependencies: @@ -1455,11 +1455,11 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 2.0.0 - google-auth-library@10.3.0: + google-auth-library@10.4.0: dependencies: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 - gaxios: 7.1.1 + gaxios: 7.1.2 gcp-metadata: 7.0.1 google-logging-utils: 1.1.1 gtoken: 8.0.0 @@ -1493,7 +1493,7 @@ snapshots: gtoken@8.0.0: dependencies: - gaxios: 7.1.1 + gaxios: 7.1.2 jws: 4.0.0 transitivePeerDependencies: - supports-color @@ -1515,7 +1515,7 @@ snapshots: https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -1561,7 +1561,7 @@ snapshots: json5@2.2.3: {} - jsonrepair@3.13.0: {} + jsonrepair@3.13.1: {} jwa@2.0.1: dependencies: @@ -1627,7 +1627,7 @@ snapshots: dependencies: wrappy: 1.0.2 - openai@5.16.0(ws@8.18.3): + openai@5.23.2(ws@8.18.3): optionalDependencies: ws: 8.18.3 @@ -1811,7 +1811,7 @@ snapshots: undici-types@7.10.0: {} - undici@7.15.0: {} + undici@7.16.0: {} uuid@11.1.0: {} diff --git a/src/agents/image.agent.ts b/src/agents/image.agent.ts index 0e056ab..b905bdb 100644 --- a/src/agents/image.agent.ts +++ b/src/agents/image.agent.ts @@ -57,7 +57,7 @@ export class ImageAgent implements IAgent { shouldHandle(req: any, config: any): boolean { if (!config.Router.image || req.body.model === config.Router.image) return false; const lastMessage = req.body.messages[req.body.messages.length - 1] - if (!config.forceUseImageAgent && lastMessage.role === 'user' && Array.isArray(lastMessage.content) && lastMessage.content.find((item: any) => item.type === 'image' || item?.content?.some((sub: any) => sub.type === 'image'))) { + if (!config.forceUseImageAgent && lastMessage.role === 'user' && Array.isArray(lastMessage.content) && lastMessage.content.find((item: any) => item.type === 'image' || (Array.isArray(item?.content) && item.content.some((sub: any) => sub.type === 'image')))) { req.body.model = config.Router.image const images = [] lastMessage.content.filter((item: any) => item.type === 'tool_result').forEach((item: any) => { @@ -71,7 +71,7 @@ export class ImageAgent implements IAgent { lastMessage.content.push(...images); return false; } - return req.body.messages.some((msg: any) => msg.role === 'user' && Array.isArray(msg.content) && msg.content.some((item: any) => item.type === 'image' || item?.content?.some((sub: any) => sub.type === 'image'))) + return req.body.messages.some((msg: any) => msg.role === 'user' && Array.isArray(msg.content) && msg.content.some((item: any) => item.type === 'image' || (Array.isArray(item?.content) && item.content.some((sub: any) => sub.type === 'image')))) } appendTools() {